👤

Fişierul atestat.in conţine două linii.Pe prima linie este scris un număr natural nenul n,(5<n<30). Pe cea de-a doua linie a fişierului sunt scrise n numere naturale separate prin câte un spaţiu, formate fiecare din cel mult 4 cifre şi cel puţin 2 cifre, reprezentând un şir de n numere naturale. Cel puţin unul din cele n numere din şir este număr par. Să se scrie un program, în limbajul C++, care:
a) afişează pe ecran, în linie, separate printr-un spaţiu, toate numerele pare din şir;
b) scrie în fişierul atestat.out, pe o linie separate prin câte un spaţiu, toate numerele perfecte
din şir. Un număr natural se numeşte perfect dacă suma divizorilor săi, exceptând numărul însuşi, este egală cu numărul dat, de exemplu: 28=1+2+4+7+14. Dacă nu există astfel de numere, se va scrie pe prima linie a fişierului mesajul “NU EXISTA NUMERE PERFECTE”.


Fişierul Atestatin Conţine Două LiniiPe Prima Linie Este Scris Un Număr Natural Nenul N5ltnlt30 Pe Cea Dea Doua Linie A Fişierului Sunt Scrise N Numere Naturale class=

Răspuns :

a)
#include <iostream>
#include <fstream>
using namespace std;
int main(){
    ifstream f("atestat.in");
    int n, i, t;
    f>>n;
    for(i=0;i<n;i++){
        f>>t;
        if(t%2==0) cout<<t<<" ";
    }
}

*****************************************************************
b)
#include <iostream>
#include <fstream>
using namespace std;
int main(){
    ifstream f("atestat.in");
    ofstream g("atestat.out");
    int n, i, t, d, sd, nr=0;
    f>>n;
    for(i=0;i<n;i++){
        f>>t;
        sd=0;
        for(d=1;d<=t/2;d++)
            if(t%d==0)
                sd=sd+d;
        if(t==sd){
            g<<t<<" ";
            nr++;
        }
    }
    if(nr==0)
        g<<"NU EXISTA NUMERE PERFECTE";
}