As avea nevoie azi dacă ma poate ajuta cineva. Mulțumesc!
Fișierul bac.txt conține un șir de cel mult 106 numere naturale din intervalul [0,109].
Se cere să se determine și să se afișeze pe ecran ultimul număr impar din șirul aflat în fișier, sau
mesajul nu exista, dacă nu există un astfel de număr. Proiectați un algoritm eficient din punctul de
vedere al memoriei utilizate și al timpului de executare.
Exemplu: dacă fișierul bac.txt conține valorile 122 1635 628 1413 1647 900 3001 4252
se afișează pe ecran 3001
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia.
b. Scrieți programul C/C++ corespunzător algoritmului proiectat.
Răspunsuri la întrebare
coroana te rog!
a)
Programul citeste din fisier numar cu numar, iar daca numarul curent este impar, se memoreaza in variabila imp, procesul repetandu-se pana la ultimul numar din fisier. La final, daca imp este -1 inseamna ca nu exista numar impar in fisier, altfel se va afisa imp.
Algoritmul este eficient din punct de vedere al memoriei utilizate deoarece foloseste un numar restrans de variabile simple. Este eficient si din punct de vedere al timpului de executare deoarece acesta rezolva problema in n pasi, n fiind numarul de numere din fisier, rezultand o complexitate liniara O(n).
b)
#include<iostream>
#include<fstream>
using namespace std;
int main(){
int x,imp=-1;
ifstream f("bac.txt");
while(f>>x)
if(x%2==1)
imp=x;
f.close();
if(imp==-1)
cout<<"nu exista";
else
cout<<imp;
return 0;
}