algoritmi_2010

14
1/14 ATESTAT 2010 ALGORITMI 1. Scrieţi un program Pascal/C/C++ care citeşte de la tastatură un vector a cu n (n<100) elemente numere reale pozitive şi afişează pe ecran pentru fiecare element al vectorului cel mai mic număr natural mai mare sau egal cu el şi cel mai mare număr natural mai mic sau egal cu el. Valorile vor fi afişate pe ecran despărţite printr-un spaţiu. Exemplu: Dacă vectorul a conţine elementele: 12.3 1.98 14.67 1 3.11 2.08 3.9 12.89 7.99912 8 6.7 1.001 13 8.9909 4.7 pe ecran se vor afişa numerele: 13 12 2 1 15 14 1 1 4 3 3 2 4 3 13 12 8 7 8 8 7 6 2 1 13 13 9 8 5 4 #include <iostream> using namespace std; int main() { float v[100]; int n,i; cout<<"n="; cin>>n; for(i=1;i<=n;i++) cin>>v[i]; for(i=1;i<=n;i++) { if (int(v[i])==v[i]) cout<<v[i]<<" "<<v[i]<<" "; else cout<<int(v[i]+1)<<" "<<int(v[i])<<" "; } return 0; } 2. Se citesc de la tastatură două valori naturale m şi n (m,n<=100), iar apoi m+n numere întregi de cel mult 9 cifre fiecare. Dintre cele m+n numere citite primele m sunt ordonate strict crescător, iar următoarele n sunt deasemenea ordonate strict crescător. Se cere să se afişeze pe ecran care din cele m+n numere au fost citite de două ori. De exemplu pentru m=7 şi n=10 şi valorile 1,2,3,4,5,6,20,3,5,7,8, 9,10,12,20, 24,35 se vor afişa valorile 3 5 20. #include <iostream> using namespace std; int main() { int n,m,v[100],i,j; cout<<"m="; cin>>m; cout<<"n="; cin>>n; for(i=1;i<=n+m;i++) cin>>v[i]; cout<<"Numerele care se repeta sunt: "<<endl; for (i=1;i<=m;i++) for (j=m+1;j<=n+m;j++) if (v[i]==v[j]) cout<<v[i]<<" "; return 0; }

description

algoritmi_2010

Transcript of algoritmi_2010

  • 1/14

    ATESTAT 2010 ALGORITMI

    1. Scriei un program Pascal/C/C++ care citete de la tastatur un vector a cu n (nv[i]; for(i=1;i

  • 2/14

    3. Scriei un program Pascal/C/C++ care citete de la tastatur un numr natural nenul n (n1000),

    construiete n memorie i apoi afieaz pe ecran un tablou unidimensional a, avnd n elemente.

    Tabloul a se completeaz cu numerele naturale de la 1 la n, astfel: se memoreaz valoarea 1 pe poziia 1, valoarea 2 pe poziia n, 3 pe poziia 2, 4 pe poziia n-1, 5 pe poziia 3, etc. Elementele

    tabloului se afieaz pe ecran cu cte un spaiu ntre ele. Exemplu: pentru n=9 tabloul afiat este: 1 3 5 7 9 8 6 4 2

    #include using namespace std; int main() { int n,i,k=1,v[100]; coutn; for(i=1;i

  • 3/14

    5. Se citete de la tastatur un numr natural nenul n care are cel mult 9 cifre. S se afieze pe ecran numrul k, natural, astfel nct produsul 1*2*3*...*(k-1)*k s aib o valoare ct mai apropiat

    de numrul n.

    Exemple: dac se citete numarul n=25 pe ecran se va afia 4

    dac se citete numrul n=119 pe ecran se va afia 5

    #include using namespace std; int main() { int n,fact=1,pfact=1,k=1; coutn; while (fact

  • 4/14

    } return 0; }

    7. Scriei programul Pascal/C/C++ care citete de la tastatur un numr natural n (2

  • 5/14

    8. Se citesc de la tastatur dou valori naturale m i n (m,n

  • 6/14

    10. Scriei programul Pascal/C/C++ care citete de la tastatur un cuvnt de cel mult 15 litere mici ale

    alfabetului englez i care afieaz pe ecran, pe linii distincte, cuvintele obinute prin tergerea succesiv a vocalelor din cuvntul citit, de la stnga la dreapta, ca n exemplu de mai jos: Exemplu: Dac se citete cuvntul examen se afieaz: xamen

    xmen

    Xmn

    #include #include using namespace std; int main() { char cuv[100],voc[7]="aeiou"; int i=0; coutcuv; while (i

  • 7/14

    12. O matrice ptrat este mprit de cele dou diagonale n patru zone notate A, B, C, D, conform figurii

    alturate. Elementele de pe cele 2 diagonale nu aparin

    nici uneia dintre cele 4 zone. Scriei un program Pascal/C/C++ care citete de la tastatur un numr

    natural n (n

  • 8/14

    14. Scriei programul Pascal/C/C++ care citete de la tastatur dou iruri de cel mult 30 de litere ale alfabetului englez i afieaz pe ecran mesajul DA dac cele dou iruri de caractere sunt anagrama celuilalt, sau NU, n caz contrar. De exemplu, dac se citesc irurile secetos i cetoses, se va afia DA.

    #include #include using namespace std; int main() { char cuv[30],cuv1[30],i,*p,sw=1; coutcuv; coutcuv1; for (i=0;i

  • 9/14

    16.

    Scriei un program Pascal/C/C++ care citete de la tastatur n iruri de caractere formate din litere

    mici. S se afiseze toate perechile de iruri dintre cele citite, perechi de forma x,y n care irul x este

    subsecven a irului y sau irul y este subsecven a irului x. Fiecare pereche determinat se va

    scrie pe cte un rnd, irurile fiind separate printr-o virgul. Dac nu exist nici o astfel de pereche se va scrie textul FR SOLUIE.

    Exemplu. Pentru n=4, dac se citesc: ari

    calculator

    mari

    lat

    se afieaz: ari,mari calculator,lat

    #include #include using namespace std; int main() { int n,i,k=0,j; char t[100][30]; coutn; for (i=1;i

  • 10/14

    #include #include using namespace std; ifstream fin("date.in"); int main() { int a[100][100],n,m,i,j,k,l,s=0,q,r; fin>>n>>m; for (q=1;qa[q][r]; fin>>i>>j>>k>>l; if (i>0 && k>0 && i

  • 11/14

    19.

    Scriei un program Pascal/C/C++ care citete de la tastatur dou iruri de caractere formate fiecare din cel mult 100 de litere ale alfabetului englez i afieaz literele care nu apar n niciunul din cele dou iruri . De exemplu, dac se citesc irurile alfabetazoid i abcdefghijklmqrsuv se va afia Npwxy

    #include #include using namespace std; int main() { char s1[100],s2[100],i; cout

  • 12/14

    21. Scriei programul Pascal/C/C++ care citete de la tastatur un numr n i apoi n numere numere

    reale pozitive i afieaz pe ecran numerele care au partea ntreag numr prim. Dac nici unul din numere nu are partea ntreag numr prim atunci se va afia mesajul NU EXISTA

    De exemplu, dac se citesc numerele: n=6

    12.095 31.567 5.789 789.834 1234.923 2.345

    atunci se vor afia numerele: 31.567 5.789 2.345

    #include using namespace std; int prim(int x) { int d; for (d=2;dx; v[i]=(int)x;} cout

  • 13/14

    23. Scriei un program Pascal/C/C++ care citete un numr natural nenul n (n

  • 14/14

    { int n,v[100],x,i,k=0,j; coutn; for (i=1;i>x; if (verifica(x)) v[++k]=x; } for (i=1;i