am nevoie de ajutor
Fişierul atestat.in conţine două linii. Pe prima linie este scris un număr natural nenul n, (5
Să se scrie un program în limbajul C++, care:
a) să afişeze pe prima linie a ecranului valorile pare din fişier, separate prin câte un spaţiu;
b) să afişeze pe ecran, pe linii diferite, cel mai mic număr a şi cel mai mare număr b din şirul dat;
c) să scrie în fişierul atestat.out cel mai mare divizor comun al numerelor a şi b, determinate la punctul b).
Exemplu:
atestat.in Date de ieşire:
6
123 55 372 3465 242 44
a) 372 242 44
b) 44
3465
Fişierul atestat.out conţine:
c) 11
Răspunsuri la întrebare
#include <iostream>
#include <bits/stdc++.h>
#include <fstream>
#include <string>
using namespace std;
int main()
{
int k=0, n, max=0, min=0;
string line, numere;
ifstream fileIn("atestat.in");
if (fileIn.is_open())
{
while ( getline (fileIn, line) )
{
if(k!=1){
n=stoi(line);
k++;
} else {
numere=line;
}
}
}
int sirNr[n];
istringstream ss(numere);
int i=0;
do {
string number;
ss>>number;
if(number!="" && number!=" "){
sirNr[i]=stoi(number);
i++;
}
} while (ss);
fileIn.close();
min=sirNr[0];
max=sirNr[0];
for(int i=0; i<n; i++){
if(sirNr[i]%2==0){
cout<<sirNr[i]<<" ";
}
if(sirNr[i]<min){
min=sirNr[i];
}
if(sirNr[i]>max){
max=sirNr[i];
}
}
cout<<"\na="<<min;
cout<<"\nb="<<max;
ofstream fout("atestat.out");
int a = max;
int b = min;
while(b != 0){
int r = a % b;
a = b;
b = r;
}
fout<<a;
fout.close();
return 0;
}