Sunteți pe pagina 1din 4

testul 8 /2021

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, separate printr-un spațiu,
ultimele două numere
impare (nu neapărat distincte) din șirul aflat în fișier, sau mesajul nu exista,
dacă nu există două
astfel de numere. Proiectați un algoritm eficient din punctul de vedere al memoriei
utilizate și al timpului
de executare.
Exemplu: dacă fișierul conține valorile 122 1635 628 1413 1647 900 3001 4252
se afișează pe ecran 1647 3001
#include<iostream>

Rezolvare:

#include<fstream>

using namespace std;

int main(){

int x,y,z;

ifstream f("bac.txt");

while(f>>x)
{
if(x%2==1)
{
y=z;
z=x;
}
}
if(y%2==1 && z%2==1)
cout<<y<<' '<<z;
else

cout<<"nu exista";
f.close();

return 0;
}

Testul 7 /2021

Fișierul bac.txt conține cel mult 106 cifre, separate prin câte un spațiu.
Se cere să se afișeze pe ecran, separate prin câte un spațiu, toate cifrele pare
care apar în fișier sau
mesajul nu exista, dacă nu există astfel de cifre. Proiectați un algoritm eficient
din punctul de vedere
al timpului de executare.
Exemplu: dacă fișierul conține cifrele 3 3 0 8 2 1 2 1 3 7 1 5 2 7 1 0 3 2 3
pe ecran se afișează, de exemplu în ordine crescătoare, cifrele 0 0 2 2 2 2 8

#include<iostream>
#include<fstream>

using namespace std;

int main(){

int x , k=0;

ifstream f("bac.txt");

while(f>>x)
{
if(x%2==0)
{
cout<<x<<" ";
k=k+1;}
else
{
k=-1;}

}
if(k==-1)
cout<<"nu exista";

f.close();

return 0;
}

Testul 5 / 2021

Fişierul bac.txt conține numere naturale din intervalul [2,106]: pe prima linie n,
iar pe a doua linie
un șir de n numere, separate prin câte un spațiu.
Se cere să se afișeze pe ecran, pentru fiecare număr natural i (i[1,n]), cea mai
mare dintre primele
i valori ale șirului aflat în fișier. Numerele afișate sunt separate prin câte un
spațiu. Proiectați un
algoritm eficient din punctul de vedere al memoriei utilizate şi al timpului de
executare.
Exemplu: dacă fișierul are conținutul alăturat, se afișează pe ecran
4 6 6 7 8 8 8 8 8 9 10 10

12
4 6 3 7 8 1 6 2 7 9 10 8

#include<iostream>

#include<fstream>

using namespace std;

int main()
{
ifstream f("bac.txt");
int n,x,y;

f>>n;
y=1;
while(n!=0)
{
f>>x;

if(x>y)
y=x;

cout<<y<<' ';

n=n-1;

f.close();

return 0;

Testul 4 / 2021

Fişierele bac1.txt și bac2.txt conţin numere naturale din intervalul [1,105]:


fișierul bac1.txt
conține pe prima linie un număr n1, iar pe a doua linie un șir de n1 numere, iar
fișierul bac2.txt
conține pe prima linie un număr n2, iar pe a doua linie un șir de n2 numere.
Numerele aflate pe
aceeași linie a unui fișier sunt ordonate crescător și sunt separate prin câte un
spațiu.
Se cere să se afișeze pe ecran, în ordine crescătoare, separate prin câte un
spațiu, numerele divizibile
cu 5 care se găsesc doar în unul dintre șirurile aflate în cele două fișiere. Dacă
nu există niciun astfel de
număr, se afișează pe ecran mesajul nu exista. Proiectați un algoritm eficient din
punctul de vedere
al memoriei utilizate şi al timpului de executare.
Exemplu: dacă fişierul
bac1.txt conţine numerele
7
1 2 3 4 7 20 60
iar fişierul bac2.txt
conţine numerele
9
3 5 7 8 9 10 12 20 24
pe ecran se afișează, în această ordine, numerele 5 10 60.

rezolvare
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ifstream f("bac1.txt");
ifstream g("bac2.txt");
int x,y,k=1,p=1,n,m;
f >> n >> x;
g >> m >> y;
while(k <= n && p <= m){
if(x<y){
if(x%5==0) cout << x << " ";
f >> x;
k++;
}
if(y<x){
if(y%5==0) cout << y << " ";
g >> y;
p++;
}
if(x==y){
f >> x;
g>> y;
k++;
p++;
}

}
while(k<= n){
f >> x;
k++;
if(x%5==0) cout << x << " ";
}
while(p <= m){
g >> y;
p++;
if(y%5==0) cout << y << " ";
}
f.close();
return 0;
}

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