Problema C++

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++
Post Reply
BeatriceB
Junior
Junior
Posts: 4
Joined: 18 Mar 2016, 16:37
Judet: Iaşi

Problema C++

Post by BeatriceB » 04 Aug 2016, 12:06

Deci enuntul suna asa:
Fişierul text "date.in" conţine pe prima linie , separate prin câte un spaţiu, cel mult 1000 de numere naturale, fiecare dintre ele având maximum 9 cifre.
a) Scrieţi un program C/C++ care citeşte numerele din fişierul date.txt şi determină cea mai lungă secvenţă ordonată strict descrescător, formată din valori citite consecutiv din fişier. Numerele din secvenţa găsită vor fi afişate pe ecran, pe o linie, separate prin câte un spaţiu. Dacă sunt mai multe secvenţe care respectă condiţia impusă, se va afişa doar prima dintre acestea. Alegeţi o metodă de rezolvare eficientă din punctul de vedere al timpului de executare.
Exemplu: dacă fişierul date.in conţine 5 2 19 4 3 6 3 2 1 0 8 pe ecran se afişează: 6 3 2 1 0.
Am incercat sa il rezolv:

Code: Select all

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    int v1[100], v2[100], i=0, j=0, a, b;
    ifstream f("date.in");
    f>>a;
    i++;
    v1[i]=a;
    for(;;)
    {
        f>>b;
        if(!f)break;
        if(a>b)
        {
            i++;
            v1[i]=b;   //in primul vector formam secvente descrescatoare

        }
        else if (i>j)  // in cazul in care secventa formata e mai mare decat prima
                       
        {
            for(int k=1; k<=i; k++)
            {
                v2[k]=v1[k];    //va fi mutata in al doilea vector
                v1[k]=0;        //iar primul initializat cu zero
            }
            j=i;                // se va actualiza si lungimea vectorilor
            i=0;
        }
            a=b;                
    }
    f.close();
    for(int k=1; k<=j; k++)
    {
        cout<<v2[k]<<" " ;
    }
    return 0;
}
Dar se pare ca nu este bine, fiindca pentru exemplul dat se afiseaza 4 3 3 2 1 0 .
Ce este gresit in rezolvare?



Post Reply