Sunteți pe pagina 1din 15

CENTRUL DE EXCELEN

21 NOIEMBRIE 2009, clasa a V-a, clasa a VI-a

prof. erban Clin - Constantin Liceul Teoretic J.L. Calderon & LPS Banatul, Timioara

Tema aplicaiilor: structuri repetitive Problema 1.


1. Se citesc n numere naturale. S se calculeze suma numerelor pare i s se precizeze

cte numere impare sunt. Rezolvare: Exemplu de test: intrare n: 8 numerele (nr) : 6, 9, 2, 2, 17, 5, 23, 4 ieire suma numerelor pare (s) : 14 numrul de numere impare (contor) : 4 Programul C++
#include<iostream.h> #include<conio.h> void main() { clrscr(); int n, i, nr, s, contor; s=0; contor=0; cout<<"n= "; cin>>n; for(i=1;i<=n;i++) { cout<<"nr "<<i<<"= "; cin>>nr; if(nr%2==0) s=s+nr; else contor++; } 1

cout<<"Suma numerelor pare este: "<<s; cout<<endl; cout<<"Numarul de numere impare este: "<<contor; getch(); }

n fereastra Borland C++ programul se va scrie:

Dup rulare:

Problema 2.
2. S se calculeze suma i produsul cifrelor unui numr natural n.

Rezolvare: Exemplu de test: intrare n: 1347 ieire suma cifrelor (scif) : 15 produsul cifrelor (pcif) : 84 Programul C++ #include<iostream.h>
#include<conio.h> void main() { clrscr(); int n, cifra, scif, pcif, n1; scif=0; pcif=1; cout<<"n="; cin>>n; n1=n; while(n!=0) { cifra=n%10; scif=scif+cifra; pcif=pcif*cifra; n=n/10; } cout<<"Suma cifrelor numarului "<<n1<<" este: "<<scif; cout<<endl; cout<<"Produsul cifrelor numarului "<<n1<<" este: "<<pcif; getch(); }

n fereastra Borland C++ programul se va scrie:

Dup rulare:

Problema 3.
3. Se citesc caractere pn la ntlnirea caracterului .. S se numere cte vocale a

s-au citit. Rezolvare: Exemplu de test: intrare text: Informatica este foarte frumoasa. ieire numarul caracterelor a (nra) : 5
4

Programul C++
#include<iostream.h> #include<conio.h> void main() { clrscr(); int nra; char text=''; cout<<"Introduceti textul terminat cu punct: "; do { cin>>text; if(text=='a') nra++; }while(text!='.'); cout<<"Vocala a "; if(nra==0) cout<<"nu exista in text"; else if(nra==1) cout<<"apare o singura data in text"; else cout<<"apare in text de "<<nra<<" ori"; getch(); }

n fereastra Borland C++ programul se va scrie:

Dup rulare:
5

Problema 4.
4. Se citete un numr natural n. S se verifice dac este palindrom. Obs. Un numr este palindrom dac acesta coincide cu numrul obinut prin inversarea cifrelor sale.

Rezolvare: Exemplu de test 1: intrare numrul n: 12321 ieire Numrul este palindrom (deoarece inversul su este 12321) Exemplu de test 2: intrare numrul n: 4347 ieire Numrul nu este palindrom (deoarece inversul su este 7434)

Variabile intermediare utilizate n program: cifra (reine pe rnd fiecare cifr a numrului), ninv (reine inversul numrului), p (reine valoarea numrului iniial este necesar doar la afiarea rezultatelor).

Programul C++
6

#include<iostream.h> #include<conio.h> void main() { clrscr(); long n, ninv, cifra, p; ninv=0; cout<<"n="; cin>>n; p=n; while(n!=0) { cifra=n%10; ninv=ninv*10+cifra; n=n/10; } if(p==ninv) cout<<"Numarul "<<p<<" este un palindrom !"<<endl; else cout<<"Numarul "<<p<<" nu este un palindrom !"<<endl; getch(); }

n fereastra Borland C++ programul se va scrie:

Dup rulare:
7

Problema 5.
5. Se citete un numr natural n. S se verifice dac este un numr perfect. Obs. Un numr este perfect dac este egal cu suma divizorilor si, afar de el nsui. Ex. Pentru n=6 avem divizorii 1, 2 i 3 (fr numrul insi). Avem c 6=1+2+3, prin urmare 6 este perfect.

Rezolvare: Exemplu de test: intrare numrul n: 6 ieire Numrul este perfect (6=1+2+3)

Variabile intermediare utilizate n program: s (reine suma divizorilor), i (contor folosit n instruciunea for ce parcurge spaiul divizorilor).

Programul C++
#include<iostream.h> #include<conio.h> void main() { clrscr(); int n, s, i; cout<<"n="; cin>>n; s=0; for(i=1;i<=n-1;i++) 8

if(n%i==0) s=s+i; if(n==s) cout<<"Numarul "<<n<<" este perfect"; else cout<<"Numarul "<<n<<" nu este perfect"; getch(); }

n fereastra Borland C++ programul se va scrie:

Dup rulare:

Problema 6. 6. Se citete un numr natural cu numr impar de cifre. Afiai numrul format dup eliminarea cifrei din mijloc. Numrul trebuie s aib cel puin trei cifre.
9

Obs. Programul va testa iniial dac numrul introdus are un numr impar de cifre i este format din cel puin trei cifre. n caz contrar se afieaz un mesaj corespunztor.

Rezolvare: Exemplu de test: intrare numrul n: 23476 ieire numrul obinut: 2376

Variabile intermediare utilizate n program: nrcifre (reine din cte cifre este format numrul), n1 (va reine numrul obinut prin eliminarea cifrei din mijloc), k (reine numrul de cifre de la poziia din mijloc i pn la sfritul numrului), ultim (reine ultimele k cifre), p (reine puterea k a lui 10), i (este un contor).

Programul C++
#include<iostream.h> #include<conio.h> void main() { clrscr(); long n, n1, nrcifre, k, p, i, ultim; cout<<"n="; cin>>n; n1=n; nrcifre=0; do { nrcifre++; n=n/10; }while(n!=0); p=1; if((nrcifre%2==1)&&(nrcifre>1)) { k=nrcifre/2; for(i=1;i<=k;i++) p=p*10; ultim=n1%p; n1=n1/(p*10); n1=n1*p+ultim; cout<<"Numarul rezultat dupa eliminarea cifrei din mijloc: "<<n1; } else cout<<n1<<" este eronat !"; getch(); 10

n fereastra Borland C++ programul se va scrie:

Dup rulare:

Problema 7.
7. Se citete un numr natural n. Afiai: 1 12 11

123 1234 ...........

Rezolvare: Programul C++


#include<iostream.h> #include<conio.h> void main() { clrscr(); int n, k, i; cout<<"n="; cin>>n; k=1; while(k<=n) { for(i=1;i<=k;i++) cout<<i<<" "; cout<<endl; k++; } getch(); }

n fereastra Borland C++ programul se va scrie:

Dup rulare:

12

Problema 8.
8. Se citete un numr natural n. S se determine toate numerele care pot fi obinute prin

permutri circulare mutnd ultima cifr pe prima poziie. Rezolvare: Exemplu de test: intrare numrul n: 1234 ieire numerele obinute: 4123, 3412, 2341 Programul C++
#include<iostream.h> #include<conio.h> void main() { clrscr(); long n, nrcifre, n1, p, i, nrc; cout<<"n="; cin>>n; nrcifre=0; n1=n; do { nrcifre++; n=n/10; }while(n!=0); 13

p=1; if(nrcifre>1) { for(i=2;i<=nrcifre;i++) p=p*10; nrc=1; cout<<"Permutarile obtinute: "; while(nrc!=nrcifre) { n1=(n1%10)*p+n1/10; nrc++; cout<<n1<<" "; } } else cout<<n1<<" este eronat !"; getch(); }

n fereastra Borland C++ programul se va scrie:

Dup rulare:

14

Tem :
1. Se citete un numr natural n. S se numere cte cifre pare i cte impare are. 2. S se determine maximul din n numere naturale citite succesiv de la tastatur. 3. Se citete un numr natural n. Afiai:

.............. 1234 123 12 1 Indicaie: se modific problema 7.


SUCCES !!!

15