Sunteți pe pagina 1din 7

Exercitii laborator cursul 2

D. INSTRUCTIUNILE LIMBAJULUI C++


1. INSTRUCTIUNEA EXPRESIE.
Exemplul1. Interschimbarea continutului a 2 variabile care au fost initial citite.
#include<iostream.h>
#include<conio.h>
void main()
{
int a,b,m;
clrscr();
cout<<"a=" ; cin>>a;
cout<<"b="; cin>>b;
m=a,a=b,b=m;
cout<<"a="<<" "<<a<<endl;
cout<<"b="<<" "<<b;
getch();
}

Exemplul2. Se citesc 3 valori intregi a,b,c si se afiseaza media lor aritmetica


#include<iostream.h>
#include<conio.h>
void main()
{
int a,b,c;
float m;
clrscr();
cout<<"a=" ; cin>>a;
cout<<"b="; cin>>b;
cout<<"c=" ; cin>>c;
m=float(a+b+c)/3;
cout<<"media aritmetica ="<<" "<<m;
getch();
}
2. INSTRUCTIUNEA IF.
Forma generala:
if (expresie) instructiune1 else instructiune2
Se evalueaza expresia, daca este adevarata se executa instructiune1, daca este falsa se
executa instructiune2
Exemplul 1. Calculeaza maximul dintre 2 numere citite
#include<iostream.h>
#include<conio.h>
void main()
{
int a,b,max;
clrscr();
cout<<"a=" ; cin>>a;
cout<<"b="; cin>>b;
if(a>b) max=a;
else max=b;
cout<<"numarul mai mare este "<<" "<<max;
getch();
}

Exemplul 2. Se citesc coeficientii a, b, c ale unei ecuatii de gradul doi si se precizeaza natura
radacinilor si semnul lor.

#include<iostream.h>
#include<math.h>
#include<conio.h>
void main()
{
float a,b,c,d,s,p;
clrscr();
cout<<"a=";cin>>a;cout<<"b=";cin>>b;cout<<"c=";cin>>c;
d=b*b-4*a*c; s=float(-b/a); p=float(c/a);
cout<<"Discriminantul ecuatiei D="<<d<<endl;
cout<<"Produsul radacinilor P="<<p<<endl;
cout<<"Suma radacinilor S="<<s<<endl;
if(d<0) cout<<"Ecuatia nu are solutii reale";
else
{ if(d==0) {if(s>0) cout<<"Ecuatia are 2 solutii reale egale si pozitive";
else cout<<"Ecuatia are 2 solutii reale egale si negative";
}
else
if(p>0)
{if(s>0) cout<<"Ecuatia are 2 solutii reale pozitive";
else cout<<"Ecuatia are 2 solutii reale negative";
}
else cout<<"Ecuatia are 2 solutii reale de semne opuse";
}
getch();
}

Exemplul 3. Rezolvarea unei ecuatii de gradul 1.

#include<iostream.h>
#include<conio.h>
void main()
{
float a,b,x;
clrscr();
cout<<"a=" ; cin>>a;
cout<<"b="; cin>>b;
if (a!=0)
{x= -b/a ;cout<<"x="<<" "<<x; }
else
if(b==0) cout<<"ecuatia are o infinitate de solutii";
else cout<<"ecuatia nu are solutie";
getch();
}

Exemplul 4. Rezolvarea unei ecuatii de gradul 2.

#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
float a,b,c,d,x1,x2,x;
clrscr();
cout<<"a=" ; cin>>a;
cout<<"b="; cin>>b;
cout<<"c=" ; cin>>c;
d=float( b*b-4*a*c);cout<<"discriminantul ecuatiei este"<<" "<<sqrt(d)<<endl;
if(d<0) {cout<<"ecuatia nu are solutii reale";}
else
if (d>0)
{ x1=(-b+sqrt(d)) / (2*a) ; x2=(-b-sqrt(d)) / (2*a);
cout<<"x1="<<x1<<endl;cout<<"x2="<<x2<<endl;}
else
{x=float(-b/2*a);cout<<"ecuatia are solutie unica x=x1=x2="<<" "<<x;}
getch();
}
3. INSTRUCTIUNEA SWITCH.
Forma generala a instructiunii:
switch (expresie) {
case e1 : secventa 1 ; break;
case e2 : secventa 2 ; break;
..............................................
case en : secventa n ; break;
default : secventa n+1;
}

Se evalueaza expresie , daca este egala cu una din expresiile e1, e2, ...en se executa
secventa corespunzatoare expresiei s1, s2, ...sn, iar daca nu este egala cu una din aceste
expresii se executa numai secventa n+1
Exemplul 1.
#include<iostream.h>
#include<conio.h>
void main()
{
int i;
clrscr();
cin>>i;
switch(i)
{ case 1: cout<<"Am citit 1";break;
case 2: cout<<"Am citit 2";break;
default: cout<<"Am citit altceva";
}
getch();
}

Exemplul2. Se afiseaza natura sol. unei ec. de gr.2 in functie de semnul lui ∆.

#include<iostream.h>
#include<conio.h>
void main()
{
int a,b,c,d;
clrscr();
cout<<"a=";cin>>a;cout<<"b=";cin>>b;cout<<"c=";cin>>c;
d=b*b-4*a*c;
if(d>=0)
{
switch(d)
{
case 0: cout<<"Ecuatia are o solutie dubla";break;
default:cout<<"Ecuatia are doua solutii reale diferite";
}

}
else cout<<"Ecuatia nu are solutii reale";
}

4. INSTRUCTIUNEA WHILE.
Aceasta instructiune permite programarea ciclurilor cu test initial.
Forma generala este:
while (expresie)
{....... instructiuni }
Se evalueaza expresie, daca este adevarata se executa {....instructiuni} dupa care se revine
la evaluarea expresiei , daca este falsa se trece la instructiune urmatoare.
Exemplu. Executarea unui program intr-un ciclu repetat pana la apasarea unei anumite taste(se
introduc coeficientii unei ec. de gr.2 si se afiseaza solutiile de "n" ori pina la apasarea tastei "q")
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
float a,b,c,d,x1,x2,x;
int tasta;
while(tasta!='q')
{
clrscr();
cout<<"a=" ; cin>>a;
cout<<"b="; cin>>b;
cout<<"c=" ; cin>>c;
d=float( b*b-4*a*c);cout<<"discriminantul ecuatiei este"<<" "<<sqrt(d)<<endl;
if(d<0) {cout<<"ecuatia nu are solutii reale";}
else
if (d>0)
{ x1=(-b+sqrt(d))/(2*a) ; x2=(-b-sqrt(d))/(2*a);
cout<<"x1="<<x1<<endl;cout<<"x2="<<x2<<endl;}
else
{x=float(-b/2*a);cout<<"ecuatia are solutie unica x=x1=x2="<<" "<<x<<endl;}
cout<<"Pentru continuare apasa o tasta"<<endl;
cout<<"Pentru iesire apasa tasta q";
tasta=getch();
}
}

5. INSTRUCTIUNEA DO WHILE.
Instructiunea permite programarea ciclurilor cu test final.
Forma generala este:
do
{ instructiuni }
while ( expresie )
Se executa { instructiuni } , se evalueaza expresie, daca este adevarata se executa din nou
{instructiuni}, iar daca este falsa executia instructiunii do se termina.
Exemplu: Se citeste numarul natural n si se afiseaza suma primelor n numere naturale
#include<iostream.h>
#include<conio.h>
void main()
{
long n, tasta,s=0,i=1;
while(tasta!='q')
{
clrscr();
cout<<"n=";cin>>n;
do
{
s=s+i; i=i+1;
}
while(i<=n);
cout<<"Suma primelor n numere naturale este"<<" "<<s<<endl;
cout<<"Pentru a continua apasa o tasta"<<endl<<"Pentru a iesi din program apasa tasta
'q'";
tasta=getch();
}
}

6. INSTRUCTIUNEA FOR
Se utilizeaza cel mai fracvent pentru programarea ciclurilor cu test initial.
Forma generala:
for( eINITIALIZARE; eTEST; eINCREMENTARE) instructiune
eINITIALIZARE - se evalueaza o singura data pentru initializarea variabilei de ciclare inaintea
primului ciclu ;
eTEST - este evaluata inaintea fiecarui ciclu pentru a testa daca se executa instructiunea
subordonata si reprezinta conditia de iesire din ciclu;
eINCREMENTARE - se evalueaza la sfirsitul fiecarui ciclu pentru incrementarea variabilei de ciclare.
Principiul de executie:
Se evalueaza eINITIALIZARE (numai la prima rulare), se evalueaza eTEST , daca este adevarata se
executa instructiunea subordonata for, se evalueaza eINCREMENTARE si se revine la evaluarea
expresiei eTEST. Daca eTEST este falsa se trece la urmatoarea instructiune (se termina executarea
instructiunii for)
Observatie. Daca expresia eTEST este vida se executa un ciclu infinit. Pentru a iesi din acest
ciclu : in DOS se tasteaza CTRL+PAUSE
in WINDOWS se tasteaza CTRL +ALT + DEL
Exemplul 1. Se introduce de la tastatura numarul n si se calculeaza suma si produsul primelor
n numere
#include<iostream.h>
#include<conio.h>
void main()
{ N2
int i,n,tasta;
long double a,b;
while(tasta !='q') {
clrscr();
cout<<"Introduceti numarul"<<"";cin>>n;
a=b=1;
for(i=2;i<=n;i++)
{a*=i;b+=i;}
cout<<"suma="<<b<<endl;cout<<"produsul="<<a<<endl;
cout<<"Pentru iesire apasa tasta q";
tasta=getch(); }
}

Observatie. Variabila n poate fi definita la inceput fara a mai trebui introdusa de la tastatura
utilizand #define n valoare (comanda se scrie inainte de void main() )

Exemplul2. Afisarea literelor alfabetului

#include<iostream.h>
#include<conio.h>
void main()
{
char litere;
for(litere='A';litere<='Z';litere++)cout<<litere<<" ";
getch();
}

Exemplul3. Afiseaza toate patratele si radicalii numerelor naturale pina la numarul n introdus de
la tastatura.

#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
float i,n,a,b;
clrscr();
cout<<"n=";cin>>n;
a=b=0;
for(i=1 ;i<=n;i++) {
a=sqrt(i) ; b=i*i;
cout<<"Patratul numarului"<<" "<<i<<" = "<<b<<'\t'<<
"Radicalul numarului"<<" "<<i<<" ="<<a<<endl;
}
getch();
}