Sunteți pe pagina 1din 6

Programare structurată și procedurală (Limbajul C++)

Profesor: Munteanu Adrian

LABORATORUL 4 (partea 1)
Instrucțiunea ciclică FOR în C/C++

Se foloseste pentru repetarea unui grup de instructiuni de un numar cunoscut de ori.


Forma generala:

for (initializare; conditie; pas)


{
grupul de instrucțiuni;
}

 Initializarea: Se foloseste pentru stabilirea valorilor initiale.


 Conditia: Se foloseste pentru a stabili conditia de continuare, conditia in functie de care
se executa grupul de instructiuni.
 Pasul: Se foloseste pentru a trece la urmatoarele valori.

Evaluarea:
1. Se executa sectiunea de initializare.
2. Se executa sectiunea conditie. Daca valoarea obtinuta este diferita de 0:
2.1 Se exexuta grupul de instructiuni.
2.2 Se executa sectiunea pas.
2.3 Salt la pasul 1.
3. Daca valoarea obtinuta in urma executiei conditiei este 0 executia intructiunii „for” se
incheie si se trece la instructiunea de dupa acesta.

Program în limbajul C Program în limbajul C++

#include <iostream> #include <iostream>


#include <stdio.h> using namespace std;
using namespace std; int main(){
int main(){ int i,s=0,p=1,n;
int i,s=0,p=1,n; cout<<"Introdu n: ";
printf("Introdu n: "); cin>>n;
scanf("%d",&n); for(i=1;i<n+1;i++)
for(i=1;i<n+1;i++) s+=i;
s+=i; for(i=1;i<n+1;i+ for(i=1;i<n+1;i++)
+) p*=i; p*=i;
printf("suma= %d\n",s); cout<<"suma= "<<s<<endl;
printf("produsul= %d",p); cout<<"produsul= "<<p;
return 0; return 0;
} }

1
Exerciții rezolvate
1. Se citeste de la tastatura o valoare naturala n. Sa se afiseze numarul divizorilor
numarului citit.

Rezolvare:

#include<iostream>
using namespace std;
int main(){
int n,i,j=0;
cout<<"n= ";
cin>>n;
for(i=1;i<=n;i++)
if(n%i==0) j=j+1;
cout<<"Numar de divizori: "<<j;
return 0;
}

2. Scrieti un program C++ care afiseaza numerele divizibile cu 3 din intervalul


[a,b]. Valorile a si b se citesc de la tastatura.
Exemplu: Pentru a=4 si b=15 se vor afisa numerele: 6 9 12 15

Rezolvare:

#include<iostream>
using namespace std;
int main(){
int a,b,i;
cout<<"Introdu a si b: ";
cin>>a>>b;
cout<<"Numerele divizibile cu 3 din intervalul ["<<a<<","<<b<<"] sunt:";
for(i=a;i<=b;i++)
if(i%3==0) cout<<i<<" ";
return 0;
}

3. Scrieti un program C++ care citeste de la tastatura o valoare naturala n si afiseaza


pe ecran valoarea expresiei: E=1*2+2*3+3*4+…+n*(n+1).
Exemplu: Pentru n=3 se va afisa valoarea 20.

Rezolvare:

#include<iostream>
using namespace std;
int main(){
int n,i,E=0;
cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
E=E+i*(i+1);
cout<<"Valoarea expresiei este:"<<E;
return 0;
}

2
4. Scrieti un program C++ care afiseaza numerele prime pana la n. Valoarea lui n se
citeste de la tastatura.
Exemplu: Pentru n=10 se vor afisa numerele: 2 3 5 7

Rezolvare:

#include<iostream>
#include<math.h>
using namespace std;
int main(){
int n,i,j,ok;
cout<<"n=";cin>>n;
cout<<"numerele prime:";
for(i=2;i<=n;i++){
ok=1;
for(j=2;j<=sqrt(i);j++)
if(i%j==0) ok=0;
if(ok) cout<<i<<" ";
}
}

Exerciții propuse

Varianta 1 Varianta 2
1. De cate ori apare cifra c in componenţa 6. Se citesc de la tastatura n numere. Să
numerele mai mici sau egale decat N se afişeze numerele care sunt
dat. Cifra c se citeste de la tastatura, echilibrate (au prima cifra egala cu
afisarea pe ecran. ultima)
2. Să se afișeze la ecran primii n termeni 7. Determinați care sunt numerele de 3
din șirul lui Fibonacci. cifre care au produsul cifrelor egal cu o
Exemplu: n=6, va afișa: 1,1,2,3,5,8 valoare P introdusa de la tastatură.
3. Să se afișeze la ecran primele k patrate 8. Determinati numerele de doua cifre cu
perfecte (k dat de la tastatura). proprietatea: rasturnatul patratului
Exemplu: k=6, va afișa: 0, 1, 4, 9, 16, numarului este egal cu patratul
25 numarului rasturnat.
4. Se citesc n numere reale reprezentand Exemplu: 13*13=169 și 31*31=961
notele la BAC ale unui absolvent. Sa se 9. Determinati numerele de 4 cifre
calculeze media sa si sa se precizeze divizibile cu N ( se va introduce de la
daca e admis sau nu (e admis daca tastatură). Cifrele vor fi distincte 2 cate
fiecare nota e cel putin 5, iar media 2.
generala e cel putin 6). 10. Fie date numerele nenule n și k
5. Se citesc n numere. Să se afișeze la introduce de la tastatură. Introduce-ți n
ecran cate sunt pare, cate impare si cate numere și afișați pe ecran cate dintre
au exact o cifra. cele n numere se divid cu k si au ultima
Exemplu: n=5, introducem numerele 2 cifra egala cu k.
4 10 15 17 și se va afișa: pare: 3,
impare: 2 și au doar o cifra: 2

3
Programare structurată și procedurală (Limbajul C++)
Profesor: Munteanu Adrian

LABORATORUL 4 (partea 2)
Instrucțiunea ciclică WHILE în C/C++

Forma generala este:

while (expresie) instructiune

Principiul functionarii este:


 se evalueaza expresia iar daca valorea produsa este diferita de 0 se executa instructiunea
subordonata si se revine la evaluarea expresiei;
 daca valoarea expresiei este 0 atunci se trece la instructiunea urmatoare lui while.

Exerciții rezolvate
1. Se citeste un numar natural n. Se cere sa se calculeze suma cifrelor sale.
Rezolvare:

#include <iostream>
using namespace std;
int main()
{
int n,s=0;
cout<<"n="; cin >>n;
while (n)
{
s=s+n%10;
n=n/10;
}
cout<<s;
return 0;
}

2. 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.
Rezolvare:

#include <iostream>
using namespace std;
int main()
{
int A, B, C=0;
cout<<"Introdu numerele A si B: "<<endl;
cin>>A>>B;
while(A>=B)
{
A=A-B; C++;
};
cout<<"Catul este :"<<C<<endl;
cout<<"Restul este : "<<A;
}

4
Exerciții propuse

VARIANTA 1

1. Scrieţi un algoritm care determină suma cifrelor unui număr natural x citit de la tastatură.
2. Scrieţi un algoritm care verifică dacă toate cifrele unui număr natural x citit de la tastatură
sunt pare şi daţi un mesaj corespunzător.
3. Scrieţi un algoritm care determină numărul cifrelor pare şi numărul cifrelor impare ale unui
număr natural x citit de la tastatură.
4. Scrieţi un algoritm care determină suma cifrelor pare şi suma cifrelor impare unui număr
natural x citit de la tastatură.
5. Calculaţi am ( prin înmulţiri repetate ).
6. Calculaţi a*b ( prin adunări repetate ).
7. Realizaţi un algoritm care afişează “cifra de control” a unui număr natural x citit de la
tastatură.”Cifra de control” se determină astfel: se calculează suma cifrelor numărului, apoi
suma cifrelor sumei obţinute s.a.m.d până când rezultatul este o singură cifră.
8. Se numeşte număr “bine ordonat descrescător” un număr natural cu proprietatea că cifrele
sale citite de la stânga la dreapta sunt în ordine descrescătoare.
Ex: 9653
9. Scrieţi un algoritm care verifică dacă un număr natural x ( citit de la tastatură ) este “bine
ordonat descrescător” şi daţi un mesaj corespunzător.
10. Un număr natural are “aspect de munte” dacă cifrele sale sunt în ordine crescătoare până la o
anumită poziţie k şi în ordine descrescătoare începând cu acea poziţie.
a. Ex: 235754
b. Pentru un număr natural x citit de la tastatură să se verifice dacă are “aspect de munte”,
afişându-se un mesaj corespunzător.

VARIANTA 2

11. Numim palindrom un număr natural cu proprietatea că citind cifrele sale de la dreapta la
stânga se obţine acelaşi număr ( adică este egal cu oglinditul său ).
Ex: 232 este palindrom.
12. Să se afişeze toate palindroamele cu trei cifre precum şi numărul acestora.
13. Scrieţi un algoritm care verifică dacă un număr natural x ( citit de la tastatură ), diferit de 0 şi
1, este prim sau nu şi daţi un mesaj corespunzător.
14. Scrieţi un algoritm de descompunere a unui număr natural x ( citit de la tastatură ) în factori
primi, afişând ca în exemplu.
Ex: 180=2^2*3^2*5
15. unde cu 3^2 s-a notat 3 la puterea a doua.
16. Se citeşte de la tastatură un număr natural n (100<=n<=999).Dintre numerele naturale mai
mici sau egale cu n, să se afişeze acelea care sunt divizibile cu suma cifrelor lor.
17. Se citeşte un şir de numere întregi până când se introduce de două ori consecutiv aceeaşi
valoare.Să se afişeze câte pătrate perfecte sunt în şir şi care sunt acestea.
Ex: dacă şirul este 13 9 56 400 8 25 17 17, acesta conţine trei pătrate perfecte (numerele
9,400 şi 25).
18. Se dă un şir de numere care se citesc pe rând de la tastatură, atâta timp cât nu s-a intordus
valoarea 0 (care nu face parte din şir).Să se afişeze perechile de numere consecutiv citite cu
proprietatea că al doilea element al perechii este egal cu dublul primului.
19. Determinaţi cmmdc a două numere a şi b citite de la tastatură, folosind Algoritmul lui Euclid.

5
20. Se dau două numere naturale a şi b reprezentând numărătorul, respectiv numitorul unei
fracţii.Să se afişeze fracţia transformată în fracţie ireductibilă.O fracţie devine ireductibilă
simplificând-o cu cmmdc al numărătorului şi numitorului, dacă acesta este diferit de 1.

VARIANTA 3

21. Două numere naturale se numesc prime între ele dacă cmmdc al lor este 1.Pentru un număr
natural m citit de la tastatură, să se sfişeze numerele naturale mai mici sau egale decât m care
sunt prime cu m.
22. Se citeşte de la tastatură un număr natural n.Să se afişeze toate numerele naturale prime mai
mici sau egale cu n.
23. Se dau două numere naturale n şi p.Să se stabilească dacă p este prim şi în caz afirmativ să se
afişeze la ce putere apare p ca factor prim în descompunerea numărului n în factori primi.
24. Se citeşte de la tastatură o cifră între 1 şi 7 reprezentând o zi din săptămână.Să se afişeze
denumirea zilei.Zilele săptămânii sunt numerotate astfel: 1luni, 2marţi,…, 7duminică.
25. Dintre primele n numere naturale, să se afişeze acelea care au exact k divizori.Valorile lui n
şi k se citesc de la tastatură.
26. Se citesc de la tastatură două numere întregi a şi b.Să se verifice dacă cele două numere sunt
termeni consecutivi ai şirului lui Fibonacci şi să se afişeze un mesaj corespunzător.
27. Să se afişeze numerele prime de trei cifre care citite invers sunt tot numere prime.
28. Se citeşte de la tastatură un număr natural par.Să se descompună în sumă de două numere
prime.
29. Fiind dat un număr natural n, să se găsească toate posibilităţile de a descompune pe n în
sumă de numere naturale consecutive.
Ex: pentru n=15 descompunerile posibile sunt 15=1+2+3+4+5 şi 15=4+5+6
30. Să se afişeze primii n termeni ai şirului lui Fibonacci (n se citeşte de la tastatură).Şirul are
primii doi termeni egali cu 1 şi fiecare din următorii termeni este egal cu suma dintre
termenul precedent şi termenul ante-precedent.

VARIANTA 4

31. Se citesc de la tastatură trei numere reale a, b, c.Să se verifice dacă aceste numere pot fi
laturile unui triunghi şi în caz afirmativ să se determine natura triunghiului în funcţie de laturi
(echilateral, isoscel, oarecare ).Trei numere pot fi laturile unui triunghi dacă sunt pozitive şi
suma a oricare două dintre ele este mai mare decât al treilea.
32. Cunoscând măsurile a două unghiuri exprimate în grade, minute şi secunde, să se scrie un
program care afişează măsura unghiului sumă exprimat în acelaşi mod.
Ex: 23o34’55’’+22o33’20’’=46o8’15’’
33. Un număr natural se numeşte perfect dacă este egal cu suma divizorilor
săi. Ex: 6=1+2+3
Să se verifice dacă un număr natural dat este perfect, afişându-se un mesaj corespunzător.
34. Se citeşte de la tastatură un întreg n, apoi n perechi de numere neturale cuprinse între 0 şi
30000.Dintre perechile citite să se afişeze acelea cu proprietatea că cele două elemente ale
perechii au aceeaşi sumă a cifrelor.

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