structuri repetitive (1)

Post on 07-Dec-2014

137 Views

Category:

Documents

8 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Structuri repetitive

O structura repetitiva este o secventa de cod ce permite realizarea repetata a aceleiasi operatii de un anumit numar de ori. O structura repetitiva este definita de 2 elemente: operatia care este executata si conditia de oprire a executiei.

O structura repetitiva reprezinta o bucla de operatii.Numarul finit de repetari(sau iteratii) este asigurat de prezenta unei conditii.Aceasta conditie trebuie sa contina cel putin un element variabil care va fi modificat de blocul de operatii, asigurandu-se astfel iesirea din bucla.

Aceste structuri repetitive pot fi de mai multe feluri:

I. Structuri repetitive cu un numar necunoscut de pasi conditionata anterior

II. Structuri repetitive cu un numar necunoscut de pasi conditionata posterior

III. Structuri repetitive cu numar cunoscut de pasi

I. Structuri repetitive cu un numare necunoscut de pasi conditionata anterior

A1)Prezentare:

cat timp conditie bloc secventa de operatii sfarsit blocsfarsit cat timp

Pasul 1:Se testeaza conditia.Daca este indeplinita conditia, se continua cu pasul 2, daca nu, se iese din bucla si se continua algoritmul cu prima operatie a structurii urmatoare.

Pasul 2:Se executa operatia sau blocul de operatii din care este formata structura repetitiva si se reia pasul 1.

A2)Reprezentare:

Deoarece verificarea conditiei precede executia blocului de operatii, daca prima nota introdusa este 11, blocul de operatii nu se executa niciodata, n ramanand 0.Pentru a nu executa o impartire la 0, se testeaza valoarea lui n inainte de a calcula media.

II. Structuri repetitive cu un numar necunoscut de pasi conditionata posterior

Reprezentarea algoritmului:repeta secventa de operatiipana cand conditie

Exemplu:Calcularea mediei Inceput s←0 n←0citeste notarepeta n←n+1 s←s+nota citeste notapana cand nota=11m←s/nafiseaza msfarsit Se tasteaza urmatoarele note:9, 8.50, 8.66, 10, 7, 11

Mecanismul de functionare:Pasul 1:Se executa operatia sau blocul de operatii din care este formata structura repetitiva.Pasul 2:Se testeaza conditia.Daca este indeplinita conditia, se iese din bucla si se continua cu prima operatie a urmatoarei structuri.Daca nu, se reia Pasul 1.

III. Structuri repetitive cu numar cunoscut de pasi

Pentru a numara de cate ori trebuie repetata o operatie sau un bloc de operatii, e nevoie de o variabila numita contor.Contorul, functioneaza pe principiul inregistrarii prin numarare al executiei blocului de operatii.Numaratoarea creste de la o valoare initiala si creste cu un pas de crestere pana la valoarea finala.Pasul de crestere are implicit valoarea unu.

1) Reprezentare:

pentru contor, executa bloc secventa de operatii sfarsit blocsfarsit pentru

Mecanismul de functionare:Pasul 1:Se atribuie contorului valoarea initiala.Pasul 2:Se testeaza daca valoarea contorului este mai mica sau egala cu valoarea finala.Daca da, se continua cu Pasul 3, daca nu se continua cu prima operatie din structura ce urmeaza structurii repetitive.Pasul 3: Se executa operatia sau blocul de operatii din care este formata structura repetitiva.Pasul 4:Se mareste contorul cu Pasul 1 si se reia Pasul 2.

Probleme rezolvate:

1. Se citeste un numar n, iar apoi se citesc n numere. Sa se zica daca exista macar un numar care sa aiba exact 3 cifre de 0

#include<iostream.h>

exact3nenule(int numar){int c_nenule=0;while(numar > 0){if((numar % 10)>0)c_nenule = c_nenule + 1;numar = numar / 10;}return c_nenule;}

main(){int n, numar, i=1;bool exista = false;cout<<"Introduceti numarul de valori pe care le veti introduce: ";cin>>n;while(i<=n){cout<<"Introduceti un numar: ";cin>>numar;if(exact3nenule(numar)==3)exista = true;i=i+1;}if(exista == true)cout<<"Exista un numar cu exact 3 cifre nenule!";else cout<<"Nu exista un numar cu exact 3 cifre nenule!";getch();}2. Se citeste un numar. Sa se calculeze suma cifrelor acestuia pana cand ajunge o singura cifra.

Code:

#include<iostream.h>#include<conio.h>

suma_cifre(long numar){int suma=0;while(numar > 0){suma = suma + numar % 10;numar = numar / 10;}return suma;}

main(){long numar;cout<<"Introduceti un numar natural: ";cin>>numar;while (numar > 9){

numar = suma_cifre(numar);}cout<<"Cifra de control este "<<numar;getch();}

3.Se introduce un numar. Sa se afiseze cifra minima si cifra maxima prezente in numar.

Code:

#include<iostream.h>#include<conio.h>

main(){long numar, minim=9, maxim=0, cifra;cout<<"Introduceti un numar: ";cin>>numar;do{if(numar == 0){goto end;}cifra = numar % 10;if (cifra > maxim){maxim = cifra;}if(cifra < minim){minim = cifra;}numar = numar / 10;} while (1);end:cout<<"Cifra maxima este "<<maxim<<" iar cea minima este "<<minim;getch();}

4.Se introduc 2 numere, a si b si un numar k. Sa se spuna daca fractia a/b poate fi simplificat prin k.

Code:

#include<iostream.h>#include<conio.h>main(){int a,b,k;cout<<"Introduceti primul numar: ";cin>>a;cout<<"Introduceti al doilea numar: ";cin>>b;cout<<"Introduceti numarul cu care doriti sa vedeti daca se simplifica fractia : ";cin>>k;if(a%k == 0 && b%k==0){cout<<"Fractia se poate simplifica prin numarul "<<k;}else{cout<<"Fractia nu se poate simplifica prin numarul "<<k;}getch();}

5.Se introduce un numar n, iar apoi se citesc n numere de la tastatura. Sa se afiseze valoare minima si cea maxima citita.

Code:

#include<iostream.h>#include<conio.h>

max(int numar, int max){if(numar>max)max=numar;return max;}

min(int numar, int min){if(numar < min)min=numar;return min;}

main(){unsigned int n, numar, maxim=0, minim,i=1;cout<<"Introduceti numarul de valori ce vor fi citite : ";cin>>n;while(i<=n){cout<<"Introduceti un numar: ";cin>>numar;maxim = max(numar, maxim);if(i==1)minim=maxim;

minim = min(numar, minim);i++;}cout<<"Numarul maxim introdus este "<<maxim<<endl;cout<<"Numarul minim introdus este "<<minim<<endl;getch();}

6.Se introduce un numar. Sa se afiseze rasturnatul acestuia.

Code:

#include<iostream.h>#include<conio.h>main(){unsigned long numar, numar2=0;int cifra;cout<<"introduceti un numar: ";cin>>numar;while(numar>0){cifra = numar % 10;numar2 = numar2 * 10 + cifra;numar = numar / 10;}cout<<numar2;getch();}

7.Se introduce un numar. Sa se afiseze daca e sau nu palindrom (numarul este egal cu rasturnatul lui).

Code:

#include<iostream.h>#include<conio.h>

main(){long numar, numar_invers, numar_salvat;cout<<"Introduceti un numar: ";cin>>numar;numar_salvat = numar;while(numar>0){numar_invers = numar_invers * 10 + numar % 10;numar = numar / 10;}

if(numar_salvat==numar_invers){cout<<"Numarul este palidrom!";}elsecout<<"Numarul nu este palidrom!";getch();}

8. Se introduc 2 numere. Sa se afiseze produsul acestora.

Code:

#include<iostream.h>#include<conio.h>main(){int a, b;long produs;cout<<"Introduceti primul numar: ";cin>>a;cout<<"Introduceti al doilea numar: ";cin>>b;produs = a * b;cout<<"Produsul lor este: "<<produs;getch();}

Aplicatii:

1. Sa se determine suma primelor 10 numere naturale 2. Sa se determine suma primelor 100 numere

naturale 3. Sa se determine suma primelor n numere naturale 4. Sa se determine suma primelor n numere pare 5. Sa se determine suma primelor n numere impare 6. Sa se determine suma patratelor primelor n numere 7. Sa se determine suma cuburilor primelor n numere 8. Sa se determine produsul primelor n numere

naturale 9. Sa se calculeze media aritmetica a n numere 10. Sa se calculeze suma inverselor primelor n

numere naturale

top related