Documente Academic
Documente Profesional
Documente Cultură
Instructiunea WHILE
Instructiunea WHILE
Sintaxa :
in esenta, cat timp valoarea expresiei logice este adevarata, se executa instructiunea
daca valoarea expresiei logice este falsa de la inceput atunci instructiunea nu se mai executa
daca WHILE trebuie sa repete mai mult de o instructiune, acestea se vor incadra intre acolade;
instructiunea WHILE se mai numeste “repetitiva cu test initial” sau “conditionata anterior”, pentru
ca intai verifica valoarea conditiei si apoi executa secventa ce trebuie repetata
Problema exemplu. Fie A si B doua valori naturale. Sa se simuleza impartirea cu rest a lui A la B (prin scaderi
repetate) si sa se determine catul si restul impartirii.
#include <iostream.h>
void main()
{//declararea
int A, B, C=0;
//citirea
cin>>A>>B;
//prelucrarea
//Afisarea rezultatelor
Explicatii. Cand impartim pe A la B cautam “de cate ori se cuprinde” B in A, altfel spus cate scaderi ale lui B din
a se pot face.
Un tip e problema ce necesita folosirea instructiunii WHILE este prelucrarea unui sir de valori ce se incheie cu
zero.
Ideea : Se citeste fiecare valoare si daca este nenula se prelucreaza; Acest pas se repeta pana citim valoarea zero.
(Ex: 23, -4, 5, 12, 79, 0).
cin>>x;
..............................
cin>>x;};
Valoarea zero nu face parte din sir si nu trebuie prelucrata. Nu stim exact cand primim valoarea zero (care
marcheaza sfarsitul sirului), motiv pentru care la fiecare citire trebuie sa verificam daca s-a citit zero
saunu.Daca valoarea citita nu este zero avem de realizar prelucrarea ceruta de problema si o noua citire.
citeste x;
//prelucrez valorea X
.........
citeste X
Probleme
Se citeste un numar. Sa se calculeze suma cifrelor acestuia pana cand ajunge o singura cifra.
#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;
#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(); }
Se introduce un numar. Sa se afiseze daca e sau nu palindrom (numarul este egal cu rasturnatul lui).
Se introduc o succesiune de valori pana la intalnirea valorii -1. Sa se zica de cate ori a aparut cifra 0 in
scrierea numerelor date.
Se introduce un numar. Sa se afiseze numarul de cifre pare, suma acestora, numarul de cifre impare si
produsul lor.
#include<iostream.h> #include<conio.h> main(){ unsigned long numar; int cifra, suma=0, produs = 1,
cifre_pare=0, cifre_impare=0; cout<<"introduceti un numar: ";cin>>numar; while(numar>0){ cifra = numar %
10; if(cifra % 2 == 0){ suma = suma + cifra; cifre_pare++; } else { produs = produs * cifra; cifre_impare++; }
numar = numar / 10;} cout<<"Suma cifrelor pare este "<<suma<<endl; cout<<"Produsul cifrelor impare este
"<<produs<<endl; cout<<"Numarul de cifre pare este "<<cifre_pare<<endl; cout<<"Numarul de cifre impare
este "<<cifre_impare<<endl; getch(); }
87.Se citeste printr‐un program nr.de la tastatura pana la citirea valori 0.Se cere
calcularea si afisarea mediei aritmetice a patratelor nr. PoZitive citite. Algoritm:
START Citeste x P=0 S=0 Cat timp x>0 executa Daca x>0 atunci S=s+x*x
P=p+1 Sf.daca Sf.cat timp Tipareste “media aritmetica este “s/p STOP
Program: #include #include using namespace std; int x,s,p; int main(){ p=0;
s=0; cout<<"x=";cin>>x; while (x) {if(x>0) { s=s+x*x; p=p+1; }
26. Sa se scrie un algoritm care citeste un numar si numara cate cifre pare si cate
impare are numarul. Algoritm: Start Citeste n P=0 I=0 Cat timp n!=0 executa
Daca rest(n,2)=0 atunci P=P+1 Altfel I=I+1 Sfarsit daca n=cat(n,10) Sfarsit cat
timp Tipareste “Numarul are” ,P, “cifre pare si” ,I, “cifre impare”; Stop Program:
#include #include using namespace std; int n,P,I; int main (){ cout<>n; P=0;I=0;
While (n!=0) If (n%2==0) P+=1; else I+=1; cout<<<P<<<I<<”cifre impare”;