Sunteți pe pagina 1din 5

SIMULARE 2020

1) Pe prima linie a fişierului text DATE.TXT se află un şir de cel mult 10000 de numere
întregi,având cel mult 6 cifre fiecare. Numerele sunt despărţite prin câte un spaţiu.
Scrieţi un program C/C++ care citeşte numerele din fişier şi afişează pe ecran doar acele
numere care au ultimele cifre 2 si 0.
Ex. Daca avem 9731 50 112 20 8 16 8520 3 2520 1520
Se va afisa 20 8520 2520 1520
#include <iostream>
#include <fstream>
using namespace std;
int main()
{int m,n,c;
ifstream f("bac.in");
f>>n;
while(f>>n)
{
c=n%100;
m=n;
if(c==20)
cout<<m<<" ";}
f.close();

return 0;
}
Var 41
Fişierul text numere.txt conţine pe prima linie un număr natural n (0<n<100000), iar pe a
doua linie un şir format din n cifre, separate prin câte un spaţiu.
a) Scrieţi un program C/C++ care determină în mod eficient din punct de vedere al
timpului de executare, cea mai mare cifră dintre cele situate pe a doua linie a fişierului,
precum şi numărul de apariţii ale acesteia. Cele două numere vor fi afişate pe o singură
linie a ecranului, separate printr-un spaţiu.
Exemplu: daca fişierul numere.txt are următorul conţinut:
7
3521531
atunci pe ecran se va afişa: 5 2.
#include <iostream>
#include <fstream>
using namespace std;

int main()
{int x,i,n,max=0,k=0;
ifstream f("tt.in");f>>n;f>>x;
for (i=1;i<=n;i++)
{f>>x;
if(x==max)
k++;
else
if(x>max)
{
max=x;k=1;}
}
cout<<max<<' '<<k;
f.close();
return 0;
}
Var 82
Fişierul text NUMERE.IN conţine, pe mai multe linii, cel mult 30000 de numere naturale
nenule mai mici sau egale cu 500, numerele de pe fiecare linie fiind despărţite prin câte un
spaţiu. Fişierul conţine cel puţin două numere distincte, fiecare având două cifre.
a) Scrieţi programul C/C++ care citeşte toate numerele din fişierul NUMERE.IN şi creează
fişierul text NUMERE.OUT care să conţină pe prima linie cel mai mare număr de două cifre
din fişierul NUMERE.IN, şi de câte ori apare el în acest fişier, iar pe a doua linie, cel mai
mic
număr de două cifre din fişierul NUMERE.IN şi de câte ori apare el în acest fişier. Alegeţi o
metodă de rezolvare eficientă din punct de vedere al memoriei utilizate şi al timpului de
executare.
b) Descrieţi succint, în limbaj natural, metoda de rezolvare folosită la punctul a), explicând în
ce constă eficienţa ei (3 – 4 rânduri).
Exemplu: dacă fişierul
NUMERE.IN are conţinutul
alăturat:
2 253 34 3
6 88 9 2 3
4 54 34 88
atunci fişierul NUMERE.OUT va
avea următorul conţinut:
88 2
34 2
using namespace std;
int v[100];
int main()
{int x,i,min=501,max=9,k=0,t=0;
ifstream f("tt.in");
ofstream g("t.out");
while(f>>x)
{
if(x>=10 && x<=99)

{
if(x>max)
{max=x;
k=1;}
else
if(x==max)
k++;
if(x<min)
{min=x;
t=1;}
else
if(x==min)
t++;
}}

g<<max<<" "<<k<<" "<<endl;


g<<min<<" "<<t;

f.close();g.close();
return 0;
}
Secvente de numere
1. Pe prima linie a fisierul bac.txt se afla un numar natural nenul n, format din maxim 6 cifre,
iar pe a doua linie a fisierului se afla un sir format din n numere naturale nenule, fiecare numar
fiind format din maxim 4 cifre.Sa se afiseze lungimea maxima a unei secvente ce are toate
numerele egale..
Ex.

14
34444477566999
Se afiseaza 5,
Secvenţa cu cele mai multe numere egale este
4 4 4 4 4 şi are 5 numere.

Indicatie de rezolvare:
pas1. Se citeşte n, numărul de numere. Citim primul număr în variabila a şi iniţializăm
lungimea secvenţei curente (secvenţa ce începe cu numărul citit în variabila a) cu 1 şi
lungimea secvenţei maxime cu 1 (lc=1,lmax=1).
pas2. Cât timp mai există numere necitite (i<n), citim un nou număr în variabila b.
Comparăm a cu b. Avem două situaţii:
- a=b, caz în care creşte lungimea secvenţei curente (lc=lc+1) şi o comparăm cu lmax, iar
dacă lc>lmax, actualizăm lmax cu lc (lmax=lc).
- a!=b, în acest caz iniţializăm a cu b (a=b) si lc cu 1 (lc=1).

pas3. În ambele situaţii incrementăm variabila i cu 1 (i=i+1) şi reluăm pas1.


După ce au fost citite toate numerele, se afişează lungimea secvenţei maxime.
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("p.in");
int n,i,a,b,lc,lmax;
int main()
{ f>>n; f>>a;
lmax = 1;
lc = 1;
for ( i = 1; i < n; i++ )
{ f>>b;
if ( b == a )
{ lc++;
if ( lc > lmax )
lmax = lc; }
else
{ a = b;
lc = 1; }
}
cout<<lmax; f.close();
return 0;
}

2) Pe prima linie a fisierul bac.txt se afla un numar natural nenul n, format din maxim 6 cifre,
iar pe a doua linie a fisierului se afla un sir format din n numere naturale nenule, fiecare numar
fiind format din maxim 4 cifre.Sa se afiseze lungimea maxima a unei secvente strict crescatoare
din sirul dat.
ex
15
8 4 6 7 9 12 7 23 5 6 1 2 3 5 9
Se afiseaza
5

#include <iostream>
#include <fstream>
using namespace std;
int main()
{ int lmax=0, c,a,b,n,i;
ifstream f("bac.in");
f>>n;f>>a;l=1;
for(i=2;i<=n;i++)
{f>>b;
if (a<b)
l++;
else
l=1;
if (l>lmax)
lmax=c;

a=b;
}

cout<<lmax<<" ";
f.close();

return 0;
}
P3 Pe prima linie a fisierul bac.txt se afla un numar natural nenul n, format din maxim 6 cifre,
iar pe a doua linie a fisierului se afla un sir format din n numere naturale nenule, fiecare numar
fiind format din maxim 4 cifre.Stiind ca in fisier exista cel putin un numar strict pozitiv, sa se
afiseze lungimea maxima a unei secvente formate doar din valori pozitive.
Ex.
10
7 22 -3 10 3 14 0 21 10 8
Se afiseaza 3
#include <iostream>
#include <fstream>
using namespace std;
int main()
{ int lmax=0, l=0,a,b,n,i;
ifstream f("bac.in");
f>>n;
for(i=1;i<=n;i++)
{f>>b;
if (b>0)
l++;
else
l=0;
if (l>lmax)
lmax=l;

}
cout<<lmax<<" ";
f.close();

return 0;
}

S-ar putea să vă placă și