C++ Modulul 2

- ȘIRURI -

Recapitulare

IF:

  • ce citesc 3 numere naturale. Faceți un program care să determine dacă aceste 3 numere pot determina laturile unui triunghi (suma oricăror 2 să fie mai mare decât a 3-a). Dacă da, determinați și natura triunghiului (isoscel, echilateral sau oarecare).

While:

  • Se citește un număr natural n. De câte ori apare în n cifra 5?

For:

  • Se citesc numerele a și b. Să se calculeze suma numerelor întregi de la a  la b.

De toate:

  • Se citesc 2 numere naturale a și b, câte dintre numerele de la a la b au o singură cifră de 5.

Tablouri de date unidimensionale - ȘIRURI / VECTORI -

Tablourile de date (vectorii, șirurile, în engleză arrays) sunt mulțimi (blocuri) de variabile.

 

Aceste variabile se numesc elementele șirului.

 

Fiecărui element i se alocă un indice (index, un număr de ordine).

Primul element are indicele 0.

Forma:  tip  nume[ nr_elem];
Explicație: Se declară un vector “nume” care conține nr_elem variabile de tipul tip.

Exemplu:

              int A [10 ] ;

0 1 2 3 4 5 6 7 8 9

A

Accesez datele din șir folosind indicele de poziție al elementelor. 

  • A[0] = 5;
  • A[2] = 4 + 7;
  • A[3] = A[0] + A[2];

Declarare:

Aplicații:

  1. Se citește un număr n și un șir de n elemente. Să se adune la fiecare element ultima lui cifră. Să se afișeze șirul rezultat.
  2. Se citește un număr natural n urmat de un șir de lungime n. Înlocuiți toate numerele pare cu rezultatul împărțirii lor la 2. Afișați șirul rezultat.
  3. Se citește un număr natural n și un vector de n numere naturale
    • Calculați suma tuturor elementelor.
    • Calculați suma elementelor pare
  4. Se citește un număr natural n urmat de un vector de lungime n.

    • Care este numărul maxim din vector?

    • De câte ori apare maximul în vector?
  5. Se citește un număr natural n. Afișați primele n numere din șirul lui Fibonacci.

Aplicații:

6. Se citește un număr natural n și n numere raționale

  • care este media lor aritmetică?
  • câte numere sunt sub medie?

7. Se citește un număr natural n și n numere naturale

  • câte numere sunt mai mari decât suma vecinilor lor?
  • câte numere sunt mai mici decât ambii lor vecini?
  • câte numere sunt mai mari decât media dintre el și vecinii lui.

 

Aplicații:

 

11.Se citește un număr natural n si un șir de n numere naturale. Să se înlocuiască elementele de pe poziții pare cu suma vecinilor lor.

12*. Se citește un număr natural n și un șir de n numere naturale. Să se afișeze câte numere de pe poziții impare au numărul de cifre par.

Teme

T1. Se citește un număr natural n și un șir de n numere naturale.

a) Calculați și afișați suma elementelor pare

b) Înlocuiți elementele mai mari decât 100 cu ultima lor cifră și afișați șirul rezultat

c) Calculați și afișați din nou suma elementelor pare

Ex:

intrare ieșire explicații
7
43 24 307 2 10 804 7
840
43 24 7 2 10 4 7
40
suma numerelor pare inițial este 24+2+10 + 804 = 840
modificăm șirul 307 -> 7  și 804 -> 4
suma numerelor pare finală este 24+2+10+4 = 40

Teme

T2. Se citește un număr natural n și un șir de n numere naturale.

Se calculează următoarele valori:

  • ci = câte numere din șir sunt impare
  • cp = câte numere din șir sunt pare

La fiecare număr par din șir se va adăuga valoarea ci, și la fiecare număr impar din șir se va adăuga valoarea cp.

Să se afișeze șirul rezultat.

Ex:

intrare ieșire explicații
7
4 9 3 2 10 8 7
7 13 7 5 13 11 11 ci = 3 (numere impare:9,3,7)
cp=4 (pare: 4, 2, 10, 8)
la numerele pare se adaugă 3:
7, 5, 13, 11
la numerle impare se adaugă 4:
13, 7, 11

Formarea unui șir

Forma Cum funcționează
int a[100], na = 0; începem de la un șir gol (0 elemente)
Alipirea unui element k la sfârșitul șirului:
V1. Dacă șirul începe de la 0:

    a[na] = k;
    na++;
V2. Dacă șirul începe de la 1:

    na++;
    a[na] = k;
 
Avem 2 cazuri: șirurile care încep numerotarea de la 1 și cele de la 0.
​Dacă am început de la 0, ultimul element este pe poziția na-1:
  -> adaugăm k pe poziția următoare
  -> creștem numărul de elemente
Dacă am început de la 1, ultimul element este pe poziția na:
  -> creștem numărul de elemente na
  -> adăugăm noul element pe ultima poziție
while(fin >> k){
    a[na++] = k;
}
Cât timp mai am elemente noi k
    alipesc k la sfârșitul șirului

a[na++] = k

a[++na] = k

Aplicații:

1. Se citesc toate numerele naturale dintr-un fișier "numere.txt".

Să se formeze două șiruri, a și b care să conțină doar numerele pare, respectiv doar numele impare citite.

  • Sunt mai multe numere pare sau impare?
  • Afișați șirurile
  • Calculați și comparați mediile celor 2 șiruri

2. Se citește (din fișier ) un număr n și un șir de n numere naturale.

  • Să se formeze și afișeze un șir care conține doar elementele de 2 cifre din primul șir.

  • Să se formeze și afișeze un șir care conține elementele pare din al doilea șir împărțite la 2.

  • *Să se formeze un șir care conține elementele din al 3-ea șir, care nu apar în primul șir

Aplicații:

4. Din fișierul pisici.in se citește un numă natural n și n perechi de forma nume val, care reprezintă numele unei pisici și cât de energetică este (nr natural).

Elif o să se joace cu pisicile energetice, în timp ce Elsa o să mângâie pisicile leneșe. O pisică este energetică dacă are val  mai mare de 100.

Formați 2 șiruri cu pisici, cel al lui Elif și cel al Elsei. 

 

5. * Se citește un număr n și 2 șiruri de lungime n. Să se formeze un nou șir, care să conțină doar maximele locale din primul șir și doar minimele locale din al 2-lea șir. (ordinea nu contează) - minim local este un element care are ambii vecini mai mari decât el.

 

Într-o clasă sunt n elevi. La sfârșitul anului se calculează mediile fiecăruia și se face media clasei. Toți elevii care au media peste media clasei primesc cărți. Toți elevii care sunt la distanță de cel mult 0.05 de cea mai mare medie primesc premiul 1. Se citește n numărul de elevi și media fiecărui elev.

intrare iesire explicații
10
7.28
9.92
9.53
5.87
4.49
9.95
6.39
8.69
9.95
7.93
Media clasei este: 8
5 elevi primesc carți
Cea mai mare medie este 9.95
3 elevi au luat premiul 1
Suma mediilor este 80
Media este suma / nr de elevi adică 8.
5 elevi au media peste 8, deci primesc cărți
Cea mai mare medie este 9.95
Elevii cu medile 9.95, 9.95 și 9.92 au luat premiul 1.

  Afișați în consolă:

  • Media clasei
  • Câti elevi primesc cărți
  • Cea mai mare medie
  • Câti elevi au luat premiul 1.

Într-o clasă sunt n elevi. La sfârșitul anului se scriu notele fiecăruia în fișierul "catalog.txt"

Se citește de pe prima linie numărul n de elevi.

Pe următoarele n linii se citesc pentru fiecare elev: Numele, Prenumele, nota1, nota2 și nota 3.

intrare iesire explicații
5
Ionescu Ion 5 10 8
Acad Elif  10 10 9
Acad Elsa 9 10 10
Repo Rep 5 3 5
Princess Ruby 8 10 10
Ion 7.6
Elif  9.6
Elsa 9.6
Rep 4.3
Ruby 9.3
Media clasei: 8.13
Repetenți: Repo Rep
Premianți: Acad Elif, Acadd Elsa

  Afișați în consolă:

  • Prenumele și media fiecărui elev
  • Media clasei
  • Câți elevi sunt peste medie
  • Numele complet al repetenților
  • Care este cea mai mare medie
  • Numele complet al elevilor cu cea mai mare medie

Operații cu mulțimi

Matematic, o mulțime este un șir cu elemente distincte în care nu contează ordinea elementelor.

1. Intersecția:

Dacă am 2 mulțimi A = {1, 2, 3, 4 } și B = {1, 3, 5, 7, 9} intersecția mulțimilor A și B conține toate elementele comune mulțimilor.

CI = {1, 3}. 

 

Pe prima linie fișierul "data.in" sunt 2 numere naturale n și m. Pe a doua linie se află un șir ( mulțimea A ) de n numere naturale. Iar pe a 3-a linie se găsește un alt șir de m nr nat (mulțimea B).

Afișați pe ecran intersecția acestor mulțimi.

Operații cu mulțimi

2. Reuniunea:

Dacă am 2 mulțimi A = {1, 2, 3, 4 } și B = {1, 3, 5, 7, 9} reuniunea mulțimilor conține toate elementele din A și din B o singură dată.

C = {1, 2, 3, 4, 5, 7, 9}.  (hint: Toate elementele din A + elementele din B care nu apar în A ).

 

Pe prima linie fișierul "data.in" sunt 2 numere naturale n și m. Pe a doua linie se află un șir ( mulțimea A ) de n numere naturale. Iar pe a 3-a linie se găsește un alt șir de m nr nat (mulțimea B).

Afișați pe ecran reuniunea acestor mulțimi.

Ștergerea / inserarea ementelor în șir

1. Din fișierul "data.in" se citește un număr natural n și un șir de n numere naturale. Din consolă se citește numărul natural k. Ștergeți din șir elementul de pe poziția k si afișați pe ecran șirul rezultat.

 

 

2. Din fișierul "data.in" se citește un număr natural n și un șir de n numere naturale. Din consolă se citesc 2 numere naturale k și x.

Inserați în șir, pe poziția k, elementul x. Afișați pe ecran șirul rezultat.

Aplicații

1. Din fișierul "data.in" se citește un număr natural n și un șir de n numere naturale. Din consolă se citește numărul natural x. Ștergeți din șir toate elementele mai mari decât x. Afișați pe ecran șirul rezultat.

 

 

2. Din fișierul "data.in" se citește un număr natural n și un șir de n numere naturale. Din consolă se citește numărul natural x.

Inserați în șir, înaintea fiecărui element par, elementul x. Afișați pe ecran șirul rezultat.

Aplicații

3. Din fișierele "A.in", "B.in" și "C.in" se citesc 3 mulțimi diferite, A B și C reprezentate prin câte un număr de elemente și un șir. Afișați pe ecran reuniunea dintre intersecția mulțimilor A și B și intersecția mulțimilor B și C.

Made with Slides.com