Informatică
nevrenceanovidiu
2023-02-14 16:12:45
Fi şierul date.in con ţine un şir de cel mult un milion de numere naturale din intervalul [0,10 9], separate prin câte un spa țiu. Șirul are cel pu țin doi termeni pari și cel pu țin doi termeni impari. Se cere s ă se afi șeze pe ecran mesajul DA dac ă șirul aflat în fi șier are un sub șir ordonat cresc ător, format din to ți termenii pari ai s ăi, și un sub șir ordonat descresc ător, format din to ți termenii impari ai s ăi. Dac ă nu exist ă dou ă astfel de sub șiruri, programul afi șeaz ă pe ecran mesajul NU . Pentru verificarea propriet ății cerute utiliza ți un algoritm eficient din punctul de vedere al timpului de executare și al memoriei necesare. Exemplu: dac ă fi şierul date.in con ţine numerele 7 2 5 2 4 3 8 se afi şează pe ecran mesajul DA iar dac ă fi șierul con ține numerele 5 2 7 2 4 3 8 se afi şează pe ecran mesajul NU a) Descrie ți în limbaj natural algoritmul utilizat, justificând eficien ța acestuia. (4p.) b) Scrie ți programul C/C++ corespunz ător algoritmului descris.
Răspunsuri la întrebare
ZTedy
2023-02-14 19:13:51

#include  #include  using namespace std; int main(){     ifstream f("date.in");     int n, j, t;     f>>n;     int p[n], i[n], k1=0, k2=0, ok=1;     for(j=0;j>t;         if(t%2==0){             p[k1]=t;             if(k1>0&&p[k1]0&&i[k2]>i[k2-1]){                 //Daca nu suntem la primul termen                 //si nu este respectata ordinea descrescatoare, iesim din for                 ok=0;  break;             }             k2++;         }     }     if(ok) cout<<"DA";     else cout<<"NU";     return 0; } *************************************************************** Algoritmul funcționează astfel: Citim din fisier de pe prima linie numarul de numere in variabila n, si setam o variabila ok=1; Declaram 2 vectori cu n elemente i, si p, reprezentand numerele pare si impare Intram intr-un for, pentru a citi toate elementele din fisier.     Daca elementul citit este par, il scriem in p, daca este impar il scriem in i     Daca am trecut de citirea primului element, si un se respecta ordinea(ultimul element par scris este mai mic decat penultimul, sau ultimul element impar scris este mai mare decat penultimul), atunci setam ok=0, si iesim din for Daca sunt corect ordonate sirurile variabila ok va ramane 1. La sfarsit, daca ok este 1 afisam DA, altfel afisam NU

Adăugați un răspuns