Salut. Am o problema care suna cam asa:
Scrieti un program C++ care, utilizand un algoritm eficient din punct de vedere al spatiului de memorare si al timpului de executare, determina si afiseaza pe ecran penultimul numar impar din fisier precum si numarul de ordine al acestuia. Numerele se gasesc in fisierul "BAC.TXT", car contine 10000 de numere naturale (cel putin 2 impare) cu cel mult 9 cifre fiecare, numerele fiind separate prin spatiu.
Am incercat cu un caz particular, cu 20 de numere. Codul functioneaza, doar ca nu cred ca e eficient, asa cum cere problema. Spuneti-mi va rog in ce consta aceasta eficienta, multumesc.
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream f("BAC.txt");
int v[10001], k[10001];
for(int i =0;i<10000;i++)
f>>v[i];
for(int i =0;i<10000;i++)
{
if(v[i]%2==1)
k[i]=v[i];
else k[i]=0;
}
for(int i =9999;i>=0;i--)
if(k[i]%2==1)
{
k[i]=0;
break;
}
for(int i =9999;i>=0;i--)
if(k[i]%2==1)
{cout<<k[i]<<" "<<i+1; break;}
}