Sunteți pe pagina 1din 13

Sarcini de lucru

Realizați următoarele proiecte în aplicația Code::Blocks


Salvați proiectele în folderul clasei dumneavoastră aflat
pe partiția logică C, având următoarea cale:
C:\Documente\Informatica\Clasa 8…
Numele proiectelor să fie de forma:
20230207 Nume_Elev p1
20230207 Nume_Elev p2
20230207 Nume_Elev p3
……
xersați
SCRIEȚI pe caiet ENUNȚUL și rezolvarea următoarelor
probleme în limbajul de programare C++

Ex Verificarea unor proprietăți ale elementelor


unui șir de valori
A. Numere divizibile cu 3
Afișați toate elementele divizibile cu 3 ale unui șir de n numere întregi, unde
1 ≤ n ≤ 100. Dacă nu este niciun element divizibil cu 3, atunci nu se afișează
nimic.
Exemplu: Intrare: n=5 3 27 9 45 2 Ieșire: 3 27 9 45
Indicații:
În cadrul acestui exercițiu, trebuie să afișăm toate elementele șirului care
îndeplinesc o condiție dată, adică să fie divizibile cu 3.
Algoritmul pentru afișarea elementelor unui șir de valori care îndeplinesc o
condiție este următorul:
1 Se citesc elementele șirului.
2 Se parcurge șirul și se verifică pentru fiecare element dacă este îndeplinită
condiția. Dacă este îndeplinită condiția respectivă, atunci elementul este
afișat.
Observație: Condiția este reprezentată de o expresie logică de complexitatea
necesară în program.

Șirul de numere îl vom stoca într-o variabilă v de tip tablou unidimensional cu


dimensiunea 100, acesta fiind numărul maxim posibil de elemente (1 ≤ n ≤
100). Un număr X este divizibil cu 3 când restul împărțirii lui la 3 este 0, deci
condiția de divizibilitate cu 3 este X%3==0. Se vor afișa elementele șirului
care îndeplinesc această condiție.

#include <iostream>
using namespace std;
int main()
{ int v[100], n, i;
cout<<"n="; cin>>n; //se introduce numarul de elemente din sir
for (i=0; i<=n-1; i++) //se introduc elementele sirului
cin>>v[i];
for (i=0; i<=n-1; i++) //se parcurge sirul de la stanga la dreapta
if (v[i]%3==0) //se verifica indeplinirea conditiei de catre elementul i
cout<<v[i]<<' '; //se afiseaza elementul care indeplineste conditia
return 0;
}

Problema 1. Afișați toate elementele pare și divizibile cu 5 ale unui șir de n


numere întregi, unde 1 ≤ n ≤ 100. Dacă nu este niciun element par și divizibil
cu 5, atunci se afișează mesajul “Nu sunt elemente”.

Exemple:
Intrare: n=5 3 20 9 450 25 Ieșire: 20 450
Intrare: n=4 3 25 9 45 15 Ieșire: “Nu sunt elemente”
Problema 2. Afișați poziția (indexul) tuturor elementelor pare, divizibile cu
5 ale unui șir de n numere întregi, unde 1 ≤ n ≤ 100. Dacă nu este niciun element
par și divizibil cu 5, atunci se afișează mesajul “Nu sunt elemente”.

Exemple:
Intrare: n=5 3 20 9 450 25 Ieșire: 1 3
Intrare: n=4 3 25 9 45 15 Ieșire: “Nu sunt elemente”

Ex
Verificarea unor proprietăți ale elementelor
unui șir de valori
B. Maximul unui șir de numere
Aflați maximul dintr-un șir de n numere naturale pozitive, introduse de la
tastatură, mai mici decât 1 000 000, unde 1 ≤ n ≤ 20.
Exemplu: Intrare: n=5 21 54 3 23 5 Ieșire: Maximul=54
Indicații: În cadrul acestui exercițiu trebuie să afișăm o singură valoare,
valoarea maximă a elementelor șirului. Este un caz particular al afișării
elementelor care îndeplinesc condiția dată, și anume valoarea elementului să
fie cea mai mare a șirului.
Algoritmul pentru afișarea maximului unui șir de numere este următorul:
Se consideră o variabilă pe care o numim max, care va conține la fiecare pas
valoarea maximă a elementelor
șirului analizate până la acel moment, variabilă de ieșire.
1. Se citesc elementele șirului.
2. Se parcurge șirul și se verifică pentru fiecare element în parte dacă valoarea
acestuia este mai mare decât valoarea variabilei max (aceasta reprezintă
maximul depistat până la acel moment). Dacă da, atunci noul maxim este chiar
elementul analizat și, astfel, max primește valoarea sa.
3. Se afișează valoarea variabilei max care conține maximul șirului.
Observație: Variabila max se inițializează cu o valoarea unui elementul din șir
Algoritmul pentru determinarea minimului unui șir de numere este similar.
Diferă variabila de ieșire, care de această dată va reține minimul (numită min)
și condiția verificată pentru fiecare element (dacă valoarea elementului este mai
mică decât valoarea variabilei min, atunci noul minim este chiar elementul
respectiv).
Vom stoca șirul de numere într-o variabilă v de tip tablou unidimensional cu
20 de elemente, 20 fiind valoarea maximă pe care o poate lua n (1 ≤ n ≤ 20).
Se aplică algoritmul de mai sus pentru calcularea maximului.

#include <iostream>
using namespace std;
int main()
{ int v[20], n, i, max;
cout<<"n="; cin>>n; //se citeste numarul de elemente ale sirului
for (i=0; i<=n-1; i++) //se citesc elementele sirului
cin>>v[i];
max= v[0];
for (i=1; i<=n-1; i++) //se parcurge sirul
if (max<v[i]) //se verifica pentru fiecare element daca este mai
mare
max=v[i]; //daca da, maximul devine chiar elementul
cout<<"Maximul="<<max; //se afiseaza maximul
return 0;
}
Problema 3. Aflați maximul dintr-un șir de n numere naturale pozitive,
introduse de la tastatură, mai mici decât 1 000 000, unde 1 ≤ n ≤ 20.
Exemplu: Intrare: n=5 21 54 3 23 5 Ieșire: Maximul=54
Verificarea unor proprietăți ale elementelor
unui șir de valori
C. Înlocuirea unor termeni ai unui șir de valori
Înlocuiți elementele unui șir care au valoarea 7 cu valoarea 0. Șirul are n
numere întregi, unde 1 ≤ n ≤ 100.

Exemplu: Intrare: n=4 2 4 7 1 Ieșire: 2 4 0 1

Indicații:
În cadrul acestui exercițiu, trebuie să verificăm existența, într-un șir de valori,
a unui termen care are o proprietate dată, și anume să fie egal cu 7. Dacă îl
găsim, îl înlocuim cu valoarea 0.

Algoritmul pentru înlocuirea termenilor unui șir de valori care îndeplinesc o


condiție este următorul:
1. Se citesc elementele șirului.
2. Se parcurge șirul și se verifică pentru fiecare element dacă este îndeplinită
condiția.
3. Dacă este îndeplinită condiția respectivă, atunci elementul este înlocuit cu
noua valoare.
4. Este afișat șirul modificat.

Observație: Condiția este reprezentată de o expresie logică, de complexitatea


necesară în program.

#include <iostream>
using namespace std;
int main()
{ int v[100], n, i;
cout<<"n="; cin>>n; //se citeste numarul de elemente ale sirului
for (i=0; i<=n-1; i++) //se citesc elementele sirului
cin>>v[i];
for (i=0; i<=n-1; i++) //se parcurge sirul de la stanga la dreapta
if (v[i]==7) //daca este indeplinita conditia (egalitatea cu 7)
v[i]=0; //se inlocuieste valoarea elementului cu 0
for (i=0; i<=n-1; i++) //se afiseaza sirul modificat
cout<<v[i]<< " ";
return 0;
}

Problema 4. Înlocuiți elementele unui șir care sunt divizibile cu 7 cu


valoarea 10. Șirul are n numere întregi, unde 1 ≤ n ≤ 100.

Exemplu: Intrare: n=4 23 41 7 14 Ieșire: 23 41 10 10


TEMA pentru data viitoare:
SCRIEȚI pe caiet ENUNȚUL și rezolvarea următoarelor
probleme în limbajul de programare C++

Problema 1. Aflați minimul dintr-un șir de n numere naturale pozitive,


introduse de la tastatură, mai mici decât 1 000 000, unde 1 ≤ n ≤ 20.
Exemplu: Intrare: n=5 21 54 3 23 5 Ieșire: Minimul=3

Problema 2. Înlocuiți cu valoarea 100 elementele unui șir care sunt numere
naturale pare și divizibile cu 13. Șirul are n numere întregi, unde 1 ≤ n ≤ 100.

Exemplu: Intrare: n=4 23 52 7 78 Ieșire: 23 100 7 100


Limbajul de programare C/C++
Structura unui program C/C++
#include <iostream> //pentru citire-scriere de la /la consola
using namespace std;
//declarari de variabile globale
//definitii functii utilizator
int main()
{ //declarari variabile locale
//instructiuni care implementeaza algoritmul de rezovare al problemei
return 0;
}

//includerea fișierelor header cu functii predefinite utilizate in program


#include <iostream> //pentru citire-scriere de la /la consola
//declararea constantelor simbolice
using namespace std;
//declarari de variabile globale
//definiții funcții utilizator
int main()
{
//declarari variabile locale
//instructiuni care implementeaza algoritmul de rezovare al problemei
return 0;
}

//.... comentariu pana la sfarsitul liniei curente


/* .... */ comentariu pe mai multe linii

Structura liniară poate conține instrucțiuni de


În limbajul C++ (exemple)
declarații int a, b=3; float c ;
scriere cout << “a=” ;
citire cin >> a ;
atribuire a=b+5;
instrucțiunea compusă Grupare de instrucțiuni cuprinse între
{}
instrucțiunea vidă conține numai simbolul ;

În cadrul expresiilor logice, pot să apară operatori relaționali


și operatori logici
operatori relaționali operatori logici
== egalitate && și logic
!= diferit ¦¦ sau logic
< mai mic ! negație logică
<= mai mic sau egal
> mai mare
>= mai mare sau egal

Tabele de adevăr
&& - și logic ¦¦ - sau logic ! – negație logică
a b a && b a b a ¦¦ b a !a
1 1 1 1 1 1 1 0
1 0 0 1 0 1 0 1
0 1 0 0 1 1
0 0 0 0 0 0
Structura alternativă
Instrucțiunea if este cea mai utilizată structură alternativă.

Forma 1(simplificată) Forma 2


if ( expresie logică ) if ( expresie logică )
Secvență instrucțiuniA Secvență instrucțiuniA
else
Secvență instrucțiuniB
Modul de execuție
Pas 1: Se evaluează Pas 1: Se evaluează
expresie logică, expresie logică,
Pas 2: dacă valoarea Pas 2: dacă valoarea expresiei
expresiei logice este logice este diferită de zero
diferită de zero (Adevărat) se execută
(Adevărat) se execută Secvență instrucțiuniA
Secvență instrucțiuniA altfel se execută
Pas 3: se continuă cu Secvență instrucțiuniB
instrucțiunea următoare Pas 3: se continuă cu
instrucțiunii alternative instrucțiunea următoare
if (se iese din if ) instrucțiunii alternative if (se
iese din if )

Structurile repetitive
Structurile repetitive, numite și cicluri sau bucle, au rolul
de a executa repetitiv o instrucțiune (sau un grup de instrucțiuni
– instrucțiune compusă) care formează corpul structurii
repetitive.
În limbajul C++ sunt următoarele structuri repetitive:
while – structură repetitivă cu număr necunoscut de pași și
test inițial
do while – structură repetitivă cu număr necunoscut de pași și
test final
for –structură repetitivă cu număr cunoscut de pași

while
Forma Modul de execuție
while(expresie) Pas 1: se evaluează expresie
{ Secvență Pas 2: ┌ dacă expresie e nenulă (adevărată)
instrucțiuni │ • Se execută Secvență instrucțiuni
} │ • Se reia de la Pas 1
└ altfel se termină (se iese) structura
repetitivă și se execută instrucțiunea
de după while

do while
Forma Modul de execuție
do Pas 1: se execută Secvență instrucțiuni
{ Secvență Pas 2: se evaluează expresie
instrucțiuni Pas 3: ┌ dacă expresie e nenulă (adevărată)
} │ Se reia de la Pas 1
while (expresie); └ altfel se termină (se iese) structura
repetitivă și se continuă cu
executarea instrucțiunii de după
while

for
Forma Modul de execuție
for (instr1; expresie; instr3) Pas 1: se execută instr1
Secvență instrucțiuni Pas 2: se evaluează expresie
Pas 3: ┌ dacă expresie e nenulă (adevărată)
│ • Se execută Secvența instrucțiuni
│ • Se execută instr3
│ • Se reia de la Pas 2
└ altfel expresie e nulă (falsă), se
termină (se iese) structura
repetitivă și se continuă
executarea instrucțiunii de după
for
Tablou unidimensional. Operații cu șiruri de valori:
citire, afişare, parcurgere
Un tablou unidimensional (numit de multe ori vector) este o mulțime de valori
(elemente) de același tip și care sunt ordonate în funcție de o poziție a lor în
cadrul acestuia, numită și indicele valorii respective. Fiecărui tablou
unidimensional i se atribuie un nume.
Numim dimensiune a unui tablou unidimensional numărul maxim de elemente
ale sale.
Indicii elementelor unui tablou unidimensional încep de la 0, iar indicele
ultimului element al tabloului are valoarea <Dimensiune> -1
Exemple:
- un tablou unidimensional cu 7 elemente are indicii de la 0 la 6;

Valoare
element 5 6 23 78 123 3 54
număr de
indice 0 1 2 3 4 5 6

Observație.
Un tablou unidimensional care are n elemente are indicii de la 0 la n-1.

Declararea unui tablou unidimensional


Sintaxa în C++ pentru declararea unui tablou unidimensional este:
Tip_date nume[dimensiune];

Exemplu:
int a[56]; //declararea unui tablou unidimensional de 56 de numere întregi
float b[10]; //declararea unui tablou unidimensional de 10 numere reale
În cadrul unei declarații se pot inițializa elementele tabloului cu diferite
valori. Sintaxa este:
Tip_date nume[dimensiune]={val_0, …, val_n-1};

Exemplu:
int v[3]={3,2,4}; //declararea unui tablou cu 3 elemente numere întregi, toate
//elementele sunt inițializate cu valori
int b[]={5,6,7}; //dimensiunea tabloului nu este precizată, compilatorul o
//determină numărând elementele din lista de valori (în acest
// caz, dimensiunea este 3)
int c[4]={1,2}; //sunt inițializate primele două valori ale elementelor tabloului,
//celelalte elemente sunt inițializate cu 0

Referirea unui element al unui tablou unidimensional


Accesarea (referirea) unui element al unui tablou unidimensional se face prin
precizarea indicelui său (a poziției sale), astfel:
nume[indice];
Parantezele pătrate [ ] sunt operatorul de indexare care are prioritate
maximă.

Exemple:
v[5] este elementul cu indicele 5 al tabloului cu numele v
v[i] este elementul cu indicele i al tabloului cu numele v

Introducerea elementelor unui șir de valori


(citirea elementelor șirului)
int v[100], n, i; //declararea variabilelor
cout<<"n="; cin>>n; //introducerea numarului de elemente din sir
for (i=0; i<=n-1; i++) //introducerea succesiva a elementelor
{ cout<<"v["<<i<<"]="; cin>>v[i];
}

int v[100], a, i=0; //declararea variabilelor


do //se executa cat timp valoarea introdusa nu este 0
{ cin>>a; //citirea valorii
if (a != 0) {v[i]=a; i++;} //daca valoarea nu este 0, se introduce in tablou
} while (a != 0);

int v[100], a=1, i=0; //declararea variabilelor


while (a != 0) //se executa cat timp valoarea introdusa nu este 0
{ cin>>a; //citirea valorii
if (a !=0) {v[i]=a; i++;} //daca valoarea nu este 0, //se introduce in tablou
}
Parcurgerea elementelor unui șir de valori
Numim parcurgerea unui tablou unidimensional accesarea/referirea
elementelor sale, unul câte unul, într-o anumită ordine dorită.
Elementele unui tablou pot fi parcurse:
1 de la stânga la dreapta, adică începând cu primul indice și terminând cu cel
mai mare indice din tablou (indicii în ordine crescătoare);
2 de la dreapta la stânga, adică începând cu cel mai mare indice și terminând
cu primul indice (indicii în ordine descrescătoare).

Parcurgere de la stânga la dreapta :


for (i=0; i<=n-1; i++)
v[i]=0;

Parcurgere de la dreapta la stânga :


for (i=n-1; i>=0; i--)
v[i]=0;

Afișarea elementelor unui șir de valori


Afișare de la stânga la dreapta
for (i=0; i<=n-1; i++)
cout<<v[i]<<" ";

Afișare de la dreapta la stânga


for (i=n-1; i>=0; i--)
cout<<v[i] ]<<" ";

Afișarea elementelor unui șir de valori transformate după


o regulă dată
Se citește un șir a de n numere întregi, unde 1 ≤ n ≤ 250.
Afișați pătratele valorilor elementelor șirului a.
Exemplu:
Intrare: n=5, 3 6 2 8 11 Ieșire: 9 36 4 64 121

#include <iostream>
using namespace std;
int main()
{ int a[250], n, i; //definirea variabilelor
cout<<"n="; cin>>n; //introducerea numărului de elemente
for (i=0; i<=n-1; i++) //citirea secvențiala a elementelor tabloului
cin>>a[i];
for (i=0; i<=n-1; i++) //afișarea secvențiala a șirului pătratelor valorilor
cout<<a[i]*a[i]<<" ";
return 0;
}

Crearea unui proiect în Code::Blocks


1. Deschiderea aplicației Code::Blocks
2. Selectarea (click stânga) Create a new project
3. Alegerea opțiunii Console application

4.Validați alegerea opțiunii Console application


dând click stânga pe butonul Go

5. Dați click stânga pe butonul Next

6. Stabiliți Project title ( data curentă și numele


vostru ex. 20221212 Popescu Vasile), folderul
unde va fi salvat ( folderul clasei
C:\Documente\Informatica\Clasa 7…) iar pentru
aceasta dați click stânga pe cele trei puncte …

apoi apăsați butonul Next


7. Verificați setările din fereastra următoare, apoi
apăsați butonul Finish

8. Deschideți fișierul main.cpp și elaborați


programul în limbalul de programare C++

9.Verificați corectitudinea programului din punct


de vedere sintactic alegând opțiunea Build din
meniul Build ( sau combinația de taste Ctrl+F9)

10. Dacă nu sunt erori dați comanda de execuție


apăsând pe opțiunea Run
Problema 1. Scrieți secvențele de cod pentru introducerea
valorilor unui tablou unidimensional cu n elemente numere
întregi, unde 1 ≤ n ≤ 100, utilizând structura repetitivă
condiționată anterior și apoi pe cea condiționată posterior.
Exemplu: Intrare: n=5 2 7 3 1 0 Ieșire: 2 7 3 1 0

Programul 1 în C++ Programul 2 în C++

Problema 2. Scrieți un program care să citească un șir de numere


naturale pozitive până la introducerea lui 0 și apoi să afișeze
elementele acestuia, de la dreapta la stânga, din 2 în 2. Șirul
poate să aibă maximum 300 de numere.
Exemplu: Intrare: 5 2 7 3 1 0 Ieșire: 1 7 5

Programul 3 în C++

Verificarea unor proprietăți


ale elementelor unui șir de valori
Numere divizibile cu 3
Afișați toate elementele divizibile cu 3 ale unui șir de n numere întregi, unde
1 ≤ n ≤ 100. Dacă nu este niciun element divizibil cu 3, atunci nu se afișează
nimic.

Exemplu: Intrare: n=5 3 27 9 45 2 Ieșire: 3 27 9 45


Indicații:
În cadrul acestui exercițiu, trebuie să afișăm toate elementele șirului care
îndeplinesc o condiție dată, adică să fie divizibile cu 3.

Programul 4 în C++
#include <iostream>
using namespace std;
int main()
{ int v[100], n, i;
cout<<"n="; cin>>n;
for (i=0; i<=n-1; i++)
{ cout<<"v["<<i<<"]=" ;
cin>>v[i];
for (i=0; i<=n-1; i++)
if (v[i]%3==0) //condiția de afișare
cout<<v[i]<< " " ;
return 0;
}
Programul 5 în C++
Modificați Programul 4 astfel încât să afișeze toate numerele pare divizibile
cu 3 ale șirului.
În acest caz, condiția de afișare devine (v[i]%3==0 && v[i]%2==0).
Exemplu: Intrare: n=5 3 18 9 42 2 Ieșire: 18 42

Programul 6 în C++
Modificați Programul 4 astfel încât să se afișeze pozițiile elementelor
divizibile cu 3, nu elementele în sine.
Observați că, în acest caz, în loc să afișăm v[i], trebuie afișat doar i.
Exemplu: Intrare: n=5 3 17 9 42 2 Ieșire: 0 2 3

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