Șiruri de numere
1. Șiruri de n numere
Problema 1: Câte numere pozitive există într–un șir de n numere întregi
Enunț: Se citesc de la tastatură un șir de n numere întregi. Să se calculeze și să se afișeze câte numere strict pozitive există
în șir.
Exemplu: Dacă n=6 și se introduce șirul (3,-1,0,5,-7,1), programul va afișa valoarea 3, deoarece valorile 3,5 și 1 sunt valori
strict pozitive.
֠ Soluție: În rezolvarea problemei, vom avea nevoie de următoarele variabile:
• n, în care precizăm numărul de elemente a șirului,
• (contor) i pentru a citi fiecare dintre cele n valori a șirului de n numere întregi,
• o singură variabilă, în care se va citi pe rând câte o valoare, fie acesta x,
• (contor) k, pentru numărarea valorilor pozitive din șir.
În rezolvarea problemei enunțate, vom proceda astfel:
• inițializăm variabila contor(pentru numărarea valorilor pozitive) cu 0: k=0;
• citim numărul de elemente din care va fi compus șirul: cin>>n;
• folosind instrucțiunea repetitivă cu număr cunoscut de pași(for):
o citim câte o valoare în variabila x: cin>>x;
o testăm dacă valoarea din șir este pozitivă (x>0); în caz afirmativ incrementăm valoarea lui k: k++;
• după introducerea celor n numere întregi, se testează dacă valoarea contorului k este diferită de 0; în caz
afirmativ se tipărește numărul de valori pozitive, iar în caz contrar se afișează un mesaj corespunzător(de
exemplu ”Nu exista numere pozitive!”).
#include <iostream>
using namespace std;
int main(){
int n,i,x,k=0;
cout << "Intr. nr de elem. a sirului: "; cin>>n;
for(i=1;i<=n;i++){
cout<<"x= ";cin>>x;
if(x>0)
k++;
}
if(k!=0)
cout<<k<<endl;
else cout<<"Nu exista numere pozitive!"<<endl;
return 0;
}
Exerciții și probleme
1. (Bacalaureat, Model 2013) În secvența de mai jos toate variabilele sunt de tip întreg. Numerele citite sunt naturale, cu
cel mult două cifre și cel puțin unul dintre ele este impar. Scrieți expresia care poate înlocui punctele de suspensie astfel
încât, în urma executării secvenței obținute, valoarea variabilei min să fie egală cu cel mai mic număr impar citit.
min=100;
for(i=1;i<=10;i++)
{ cin>>x;
if(……………………)
min=x;
}
2. (Bacalaureat, Iunie-Iulie 2013) În secvenţa de mai jos, toate variabilele sunt de tip întreg. Scrieţi instrucțiunea sau
instrucțiunile care pot înlocui punctele de suspensie astfel încât, în urma executării secvenţei obţinute, valoarea
variabilei ok să fie 1 dacă toate numerele citite sunt egale cu 2013, sau valoarea 0 altfel.
ok=1;
for(i=1;i<=10;i++)
{ cin>>x;
……………………
}
3. (Bacalaureat, August-Septembrie 2014) În secvenţa alăturată toate variabilele sunt de tip întreg, iar numerele citite
sunt naturale. Scrieţi secvența înlocuind punctele de suspensie astfel încât, în urma executării secvenţei obţinute,
valoarea variabilei ok să fie 1 dacă toate valorile citite au fost strict mai mici decât 2014, sau 0 altfel.
ok=……;
for(i=1;i<=10;i++)
{ cin>>x;
……………………
}
4. (Bacalaureat, Iunie-Iulie 2016) În secvenţa de mai jos toate variabilele sunt de tip întreg. Scrieţi secvența înlocuind
punctele de suspensie astfel încât, în urma executării secvenţei obţinute, valoarea variabilei p să fie 1, dacă s-au citit
doar numere strict pozitive, sau 0 altfel.
p=............;
for(i=1;i<=10;i++)
{ cin>>x;
..............
}
5. (Bacalaureat, August-Septembrie 2016) În secvenţa alăturată toate variabilele sunt de tip întreg. Scrieţi secvența,
înlocuind punctele de suspensie astfel încât, în urma executării secvenţei obţinute, valoarea variabilei s să fie egală cu
suma numerelor întregi citite care au cel mult două cifre.
s=.........;
for(i=1;i<=10;i++)
{ cin>>x; |
if(.............)
s=s+x;
}
#include <iostream>
using namespace std;
int main(){
int n,i,j;
cout << "n= ";cin>>n;
for(i=1;i<=n;i++){
for(j=i;j<=n+i-1;j++)
cout<<j<<" ";
cout<<endl;
}
return 0;
}
Exerciții și probleme
1. (Bacalaureat, Iunie-Iulie 2015) Variabilele i și j sunt de tip întreg. Indicați expresia care poate înlocui punctele de
suspensie astfel încât, în urma executării secvenței obținute, să se afișeze numele:
5 4 3 2 1
4 4 3 2 1
3 3 3 2 1
2 2 2 2 1
1 1 1 1 1
for(i=1;i<=5;i++){
for(j=1;j<=5;j++)
if(…………………) cout<<6–j<<” ”;
else cout<<6–i<<” ”;
cout<<endl;
}
a. i<j b. i>j c. i+j<5 d. i+j>5
2. Variabilele i și j sunt de tip întreg. Indicați expresia care poate înlocui punctele de suspensie astfel încât, în urma
executării secvenței obținute, să se afișeze:
–+–+–
+–+–+
–+–+–
+–+–+
–+–+–
for(i=1;i<=5;i++){
for(j=1;j<=5;j++)
if(…………………) cout<<”– ”;
else cout<<”+ ”;
cout<<endl;}
a. i%2+j%2==0 c. i+j%2==0
b. i%2+j==0 d. (i+j)%2==0