You are on page 1of 5

clasa a IX-a A, E

VII. Structura alternativ

1. Prezentare general
n unele aplicaii executarea unei instruciuni poate depinde de o anumit condiie. Spre
exemplu, ntr-un joc dac s-a atins un anumit numr de puncte se trece la nivelul urmtor. Prin
urmare trebuie s testm dac s-a atins acel numr de puncte i doar atunci s executm
instruciunea de trecere la nivelul urmtor.
Selectarea instruciunii ce urmeaz s fie executat n funcie de valoarea unei expresii
reprezint o structur alternativ.
n limbajul C/C++ implementm structura alternativ printr-o instruciune if. Forma
general a instruciunii este urmtoarea:
if (expresie)
{
instruciune1;
}
else
{
instruciune2;
}

Modalitatea de funcionare
- se evalueaza expresia;
- daca expresia e adevarat (diferit de 0) se executa instructiune1 altfel se executa
instructiune2.
Deci, la un moment dat, se executa doar una dintre cele doua instructiuni: fie instructiune1, fie
instructiune2. Dupa executia instructiunii if se trece la executia instructiunii care urmeaza acesteia.
Observaii:
- instructiune1 si instructiune2 pot fi instruciuni compuse (blocuri), sau chiar alte instruciuni
if (if-uri imbricate).
- dac pe ramura cu if sau pe ramura cu altfel exist o singur instruciune, pot lipsi acoladele;
- dup if (expresie) nu se pune punct i virgul (;).
- Instruciunea else poate lipsi. n acest caz dac expresia este fals nu se execut nimic.

2. Probleme rezolvate
2.1. Se citete un numr ntreg. Dac numrul este mai mare sau egal cu 0 s se afieze textul
Pozitiv, n caz contrar s se afieze mesajul Negativ.
Exemplu: dac se citete 5 se afieaz Pozitiv, dac se citete -3 se afieaz Negativ.

1
clasa a IX-a A, E

Explicaie: pentru a decide care mesaj trebuie afiat va trebui s comparm numrul cu 0. Dac
valoarea este mai mare sau egal cu 0, numrul este pozitiv i vom afia mesajul Pozitiv, n caz
contrar mesajul afiat va fi Negativ.
#include <iostream>
using namespace std;
int n;
int main()
{
cout<<n=; cint>>n;//citim numarul
if(n>=0) //daca n este pozitiv
{
cout<<Pozitiv; //afisam mesajul
}//acoladele ar putea lipsi
else // in caz contrar
{
cout<<Negativ; //afisam mesajul
}
return 0;
}

2.2. Se introduce de la tastatur un numr ntreg x. S se testeze dac numrul este par sau nu i s
se afieze un mesaj corespunztor.
Exemplu: dac pentru x se citete valoarea 4123 se va afia Impar iar pentru valoarea 588 se va
afia Par.
Explicarea algoritmului: Pentru a verific dac un numr este par trebuie s verificm dac restul
mpririi lui la 2 este 0. n caz afirmativ rezulta ca numrul este par, altfel el este impar.

2
clasa a IX-a A, E

3
clasa a IX-a A, E

#include <iostream>
using namespace std;
int n;
int main()
{
cout<<n=; cint>>n;//citim numarul
if(n%2 == 0) //daca n este par
{
cout<<Par; //afisam mesajul } //acoladele ar putea lipsi
else // in caz contrar
{
cout<<Impar; //afisam mesajul
}
return 0;
}

2.3. Se introduc de la tastatur dou numere ntregi x i y. S se afieze numrul care este mai
mare dintre cele dou. n caz c sunt egale, se va afia un mesaj corespunztor.
Exemplu: dac pentru x i y se citesc valoarile 612 i 3129 se va afia 3129 iar pentru
valoarile 58 i 58 se va afia Numerele sunt egale.
Explicarea algoritmului: Pentru a afia maximul intre dou numere le vom compara. Dac cele
dou numere sunt egale vom afia mesajul Sunt egale, altfel verificm dac x>y, situaie n
care vom afia pe x, altfel vom afia pe y.

#include <iostream>
using namespace std;
int x,y;
int main()
{cout<<x=; cin>>x;//citim primul numar
cout<<y=; cin>>y;//citim al doilea numar
if(x==y) //daca numerele sunt egale
cout<<Sunt egale; //afisare, nu e nevoie de { }
else //in caz contrar
{if(x > y) //daca primul numar e mai mare
cout<<x; //il afisam
else //in caz contrar
cout<<y;
}
return 0;}

4
clasa a IX-a A, E

3. Tema
3.1. Sa se citeasca de la tastatura un numar real. Daca acesta se afla in intervalul [-1000, 1000],
sa se afiseze 1, daca nu, sa se afiseze -1.
Exemplu: daca se citeste 6 se afiseaza 1, iar daca se citeste 1500 se afiseaza -1.
Explicatie: numarul x se gaseste in intervalul [-1000, 1000], daca x>=-1000 && x<=1000.
Aceasta expresie trebuie evaluate si daca este adevarata se va afisa 1, in caz cintrar se va afisa -1.

3.2. Se citete media la matematic a unui elev. S se verifice dac elevul este corigent sau a
promovat i s se afieze un mesaj corespunztor.
Exemplu: dac se citete 8 se afieaz PROMOVAT, iar dac se citete 4 se afieaz
CORIGENT.
Explicaie: elevul este promovat dac media sa este mai mare sau egal cu 5.

3.3. Se introduc de la tastatur dou numere ntregi x i y. S se afieze numrul care este mai
mic dintre cele dou. n caz c sunt egale, se va afia un mesaj corespunztor.

Exemplu: dac pentru x i y se citesc valoarile 612 i 3129 se va afia 612 iar pentru valoarile
58 i 58 se va afia Numerele sunt egale.