Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Problema sir de numere  (Citit de 12664 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Broke
Strain
*

Karma: -10
Deconectat Deconectat

Mesaje: 37



Vezi Profilul
« : Iunie 18, 2014, 08:35:14 »

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.

Cod:
#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;}
}
Memorat
romyk
Strain
*

Karma: 5
Deconectat Deconectat

Mesaje: 40



Vezi Profilul
« Răspunde #1 : Iunie 18, 2014, 11:33:35 »

Nu trebuie neaparat sa memorezi toate numerele intr-un vector si apoi sa cauti.

Cod:
int main()
{
 ifstream f("BAC.txt");
 int penultim,ultim,nr,poz_p=0,poz_u=0,poz=0;
 f>>nr;
 while(nr%2==0) {  //cauta primul numar impar
    f>>nr;
    poz++;
  }
 penultim=nr;  // memoreaza primul numar impar
 poz_p=poz;  // memoreaza pozitia
 f>>nr;
 poz++;
 while(nr%2==0) { // cauta al doilea numar impar
   f>>nr;
   poz++;
}
ultim=nr;  // memoreaza al doilea numar impar
poz_u=poz; // memoreaza pozitia
 for( ;poz<10000;poz++)  //cauta dupa alte numere impare
 { f>>nr;                     
   if(nr%2==1)
   {penultim=ultim;
   poz_p=poz_u;
   poz_u=poz;
   ultim=nr;     
  }
 }
 cout<<penultim<<"  "<<poz_p;
}
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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