Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Ajutor problema secventa maximala cls a X-a  (Citit de 1672 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
AdrianT
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« : Octombrie 09, 2014, 15:16:03 »

Buna ziua. Am nevoie de ajutor la o problema la care ma chinui de vreo 2 zile si nu iese. Enuntul suna asa: Fisierul "date.in" contine mai multe valori. Mutati intr-un vector secventa cuprinsa intre primul si ultimul numar negativ ( se presupune ca sunt cel putin 2 numere negative ).
Problema ar fi usoara daca as putea la citirea fisierului ( while(f>>x) ) sa le mut intr-un vector. Ideea e ca trebuie sa o fac direct din citire , asta nu-mi iese.
Multumesc anticipat !
Memorat
Owlree
Strain
*

Karma: 16
Deconectat Deconectat

Mesaje: 27



Vezi Profilul
« Răspunde #1 : Decembrie 14, 2014, 14:31:21 »

Nu poți face acest lucru direct din citire deoarece nu știi când vine ultimul număr negativ. Tot ce poți face e să salvezi începând de la primul număr negativ și după să scapi de tot ce este după ultimul număr negativ. Ai mai jos un exemplu cum ai putea face acest lucru.

Cod:
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

int main() {

  ifstream f("date.in");

  int x;

  bool on = false;
  int last = -1;

  vector <int> secv;

  while (f >> x) {
    if (x < 0) {
      on = true;
    }

    if (on) {
      secv.push_back(x);
    }
  }

  while (secv[secv.size() - 1] > 0) {
    secv.pop_back();
  }

  for (int i = 0; i < (int)secv.size(); ++i) {
    cout << secv[i] << " ";
  }
  cout << "\n";

  return 0;
}

Edit: scuze, acum abia acum am văzut că postul e de acum 7000 de ani.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines