Informatică, întrebare adresată de Diuva, 8 ani în urmă

Cerința
Scrieți un program care citește un șir de cel mult 106 numere naturale din intervalul [0,109 ] ordonate crescător și determină cel mai mic număr din șir care apare de un număr impar de ori. Dacă în șir nu se află o astfel de valoare, se afișează mesajul nu exista.

Date de intrare
Fișierul de intrare crescator1.in conține cel mult 106 numere naturale din intervalul [0,109], ordonate crescător, separate prin spații.

Date de ieșire
Fișierul de ieșire crescator1.out va conține pe prima linie cel mai mic număr din fișierul de intrare care apare de un număr impar de ori sau mesajul nu exista dacă în fișier nu se află o astfel de valoare.

Restricții și precizări
Proiectați un algoritm eficient din punctul de vedere al spațiului de memorie utilizat şi al timpului de executare:
se recomandă o soluție care să nu memoreze elementele șirului într-un tablou sau altă structură de date similară.
STITI CUM SE REZOLVA? SAU CE GRESESC IAU DOAR 80P
#include
#include
using namespace std;
ifstream f("crescator1.in");
ofstream g("crescator1.out");
int main()
{ unsigned int x,y,ls,gasit=0;
f>>x;
ls=1;
while(!gasit && f>>y)
{
if(x==y)
{
ls++;
}
else
{ if(ls%2==1)
{
g< gasit=1;
}
x=y;
ls=1;
}
}
if(!gasit)
g<<"nu exista";
return 0;

}

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

Explicație:

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("crescator1.in");

ofstream g("crescator1.out");

int num, num2, contor, caut=-1;

int main()

{

   f >> num;

   contor=1;

   while (f >> num2)

   {

       if (num2==num)

           ++contor;

       else

       {

           if (contor%2)

           {

               caut=num; break;

           }

           contor=1;

       }

       num=num2;

   }

   if (contor%2) caut=num;

   if (caut==-1) g << "nu exista";

   else g << caut;

}


Diuva: mersi...am pus 2 probleme pe biti la care nu ma descurc..
boiustef: tema asta incă nu am învăţat-o ... :))) Dar mă uit..
boiustef: tu luiai 80, cred din faptul că nu verificai valoarea contorului la ieşire din ciclu, după ce au fost citite toate numerele... Cele egale căutate pot fi ultimele în şir
Alte întrebări interesante