Sunteți pe pagina 1din 4

Subiectul nr.

1
Fiierul atestat.in conine dou linii. Pe prima linie este scris un numr natural nenul n, (5<n<10). Pe cea de-a doua linie a fiierului sunt scrise n numere ntregi separate prin cte un spaiu, formate fiecare din cel mult 4 cifre, reprezentnd un ir de n ntregi . S se scrie un program n limbajul Pascal/C/C++, care: a) s afieze pe ecran, n linie, valorile absolute ale numerelor din ir, separate prin cte un spaiu; b) s afieze pe ecran, n linie, numrul de divizori pozitivi proprii pentru fiecare numr din ir, separai prin cte un spaiu; c) s scrie n fiierul atestat.out, pe prima linie, toate numerele impare din ir, n ordine cresctoare, separate prin cte un spaiu. Not: Programul va conine cel puin un subprogram definit de utilizator. Exemplu: atestat.in
6 12 -14 -7 15 27 5 a) b) c)

Date de ieire:
12 4 -7 14 2 5 7 0 15 15 2 27 27 2 5 0

Fiierul atestat.out conine:

PSEUDOCODUL PROGRAMULUI : Program_p1: Intreg v[nmax]; Intreg n,i,j; @functia citeste() citeste n; pentru(i=1;i<=n;i++) citeste v[i]; sfarsit_pentru ; sfarsit _citeste ;

@functia scrie() Pentru(i=1;i<=n;i++) scrie abs(v[i]); sfarsit _pentru; sfarsit_scrie; @functia nrdiv() Intreg nr,d; pentru(i=1;i<=n;i++) d=2 nr=0 cat_timp(d<=abs(v[i])/2) 1

daca(v[i]%d==0) nr++; d++; sfarsit_daca; scrie nr; sfarsit cat_timp; sfarsit_pentru; sfarsit_nrdiv; @nrcip() Intreg aux; Pentru(j=1;i<=n-1;j++) Pentru(j=i+1;j<=n;j++) Daca(v[i]>v[j]) Aux=v[i]; V[i]=v[j]; V[j]=aux; Sfarsit_daca; Pentru(i=1;i<=n;i++) Daca(v[i]%2!=0) Scrie v[i]; Sfarsit_daca; Sfarsit_pentru; Sfarsit_nrcip; @main() Citeste(); Scrie(); Nrdiv(); Nrcip(); f.close(); g.close(); sfarsit_main;

Explicitarea subprogramelor : @citeste(n,v) -citeste dimensiunea n a vectorului si elementele din fis.in @scrie(v[i]) -scrie in fis.out rezultatul sau pe ecran. @nr div(v[i]) -va calcula numarul de divizori pentru fiecare numar din sir(vector) @nr cip(v[i]) -afiseaza cifrele impare din sir.

#include <iostream> #include<fstream> #include<cmath> #include<stdlib.h> #define nmax 100 using namespace std; ifstream f("fis.in"); ofstream g("fis.out"); int v[nmax]; int n,i,j;

int citeste() { f>>n; for(i=1;i<=n;i++) f>>v[i]; return 0; } int scrie() { for(i=1;i<=n;i++) cout<abs(v[i])<<" "; return 0; } int nrdiv() { int nr,d; cout<<endl; for(i=1;i<n;i++) { d=2; nr=0; while(d<=abs(v[i])/2) { if(v[i]%d==0) nr++; d++; } cout<<nr<<" "; } return 0; } int nrcip() { int aux; cout<<endl; for(i=1;i<=n-i;i++) for(j=i+1;j<=n;j++) 3

if(v[i]>v[j]) { aux=v[i]; v[i]=v[j]; v[j]=aux; } for(i=1;i<=n;i++) if(v[i]%2!=0) g<<v[i]<<" "; return 0; } int main() { citeste(); scrie(); nrdiv(); nrcip(); f.close(); g.close(); return 0; }

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