Structuri de date
Un vector conţine maxim 50 de numere intregit Lungimea vectorului si elementele sale se citesc de la tastatură. Să se afişeze cate dintre elemente au valoarea mai mare decat media aritmetica a elementelor vectorului 1
#include <iostream> using namespace std; int main() { int n, sum = 0; float avg = 0; cout << „Introduceti lungimea vectorului: „; cin >> n; int v[n]; for (int i = 0; i < n; i++) { cout << „Introduceti elementul ” << i+1 << „: „;...
Un vector conține maxim 50 de numere întregi. Lungimea vectorului şi elementele sale se citesc de la tastatură. Să se afişeze câte dintre elemente au valoarea egală cu suma elementelor vecine. 2
Pentru a rezolva această problemă în C++, putem parcurge vectorul de la indexul 1 până la indexul n-2 (deoarece primul şi ultimul element nu au vecini ambii în stânga şi în dreapta). Pentru fiecare element din acest interval, verificăm dacă valoarea sa este egală cu suma elementelor vecine, adică vecinul din stânga şi vecinul din...
Un vector conţine maxim 50 de numere întregi. Lungimea vectorului şi elementele sale se citesc de la tastatură. Să se afişeze suma elementelor impare aflate pe poziţiile pare. 3
Pentru a rezolva această problemă în C++, putem utiliza o buclă for pentru a itera prin vector şi a verifica dacă fiecare element îndeplineşte condiţiile date (este impar şi se află pe o poziţie pară). Dacă condiţiile sunt îndeplinite, adăugăm elementul la suma totală. #include <iostream> using namespace std; int main() { int n,...
Doi vectori conțin fiecare maxim 50 de numere reale. Lungimile vectorilor şi elementele lor se citesc de la tastatură. Să se afişeze câte dintre elementele primului vector sunt strict mai mari decât toate elementele celui de al doilea vector. 4
Pentru a rezolva această problemă, trebuie să parcurgem fiecare element din primul vector şi să verificăm dacă este strict mai mare decât toate elementele din al doilea vector. Pentru a face această verificare, putem utiliza o buclă for pentru a parcurge elementele celui de al doilea vector şi o variabilă booleană pentru a memora dacă...
Se citesc de la tastatură un număr natural n şi două valori reale x şi y. Să se genereze recursiv într-un vector primii n termeni ai şirului: 1,1,2,3,3,4,5,5, …. Să se afişeze câți termeni ai şirului sunt mai mari decât x şi mai mici decât y şi care sunt aceşti termeni. 5
#include <iostream> int main() { int n; double x, y; std::cin >> n >> x >> y; double v[50]; int count = 0; int i = 0, j = 0; while (count < n) { if (i == j) { v[count] = i; count++; ...
Să se verifice că un vector cu n componente numere întregi are proprietatea: elementele sale sunt cifre binare alternative ((0,1,0,1,0,1,…) sau (1,0,1,0,1,0….)). 6
#include <iostream> using namespace std; int main() { int n; int v[50]; bool is_alternating = true; // citirea datelor de intrare cout << „Introduceti lungimea vectorului: „; cin >> n; cout << „Introduceti elementele vectorului: „; for (int i = 0; i < n; i++) { ...
Se consideră trei vectori cu elemente numere întregi: a, b şi c, cu lungimea n. Lungimea vectorilor şi elementele vectorilor a şi b se citesc de la tastatură. Să se afişeze vectorul c ale cărui elemente se generează astfel: 7
a) c[i] este modulul diferenței a[i]-b[i]; b) c[i] este maximul dintre a[i] şi b[i]; c) c[i] este minimul dintre a[i] şi b[n-i-1]. #include <iostream> using namespace std; int main() { const int n = 5; // lungimea vectorilor int a[n], b[n], c[n]; // vectorii a, b și c // Citirea vectorilor a...
Să se genereze în doi vectori a şi b, şi apoi să se alişeze, termenii sirurilor an si bn definite recursive astfel 8
an=(an-1+bn-1)/2 bn=(an-1+2xbn-1)/3 ……………………………………………………………………………. a1=(a0+b0)/2 b1=(a0+2xb0)/3 unde a0, b0 şi n se citesc de la tastatură. #include <iostream> using namespace std; int main() { int n, a0, b0; cin >> n >> a0 >> b0; int a[n], b[n]; a[0] = a0; b[0] = b0; int c[n]; for (int i...
Un vector a conține maxim 100 de numere întregi. Lungimea vectorului şi elementele sale se citesc de la tastatură. Să se copieze într-un vector b toate elementele din vectorul a care au valoarea egală cu codul ASCII al unei litere. Să se sorteze crescător vectorul b folosind metoda bulelor şi să se afişeze literele din vectorul b. 9
#include <iostream> using namespace std; int main() { int a[100], b[26], n, j = 0; char ch; // Citim lungimea vectorului a și elementele sale cout << „Introduceti lungimea vectorului: „; cin >> n; cout << „Introduceti elementele vectorului:\n”; for (int i = 0; i < n; i++)...
Se consideră un vector a cu elemente numere întregi, cu lungimea n, n fiind un număr par. Lungimea vectorului, un număr natural K (1<=k<=n-2) şi elementele sale a[0], a[1], a[2], …, a[n-1] se citesc de la tastatură. Să se rearanjeze elementele vectorului şi să se afişeze astfel: 10
a) a[n-1], a[0], a[1], a[2], …, a[n-2]; b) a[1], a[2], a[3], …, a[n-1], a[0]; c) a[1], a[0], a[3], a[2], …, a[n-1], a[n-2]; d) a[n-2], a[n-1], a[n-4], a[n-3], …, a[2], a[3], a[0], a[1]; e) a[k], a[k+1], a[k+2], …, a[n-2], a[n-1], a[0], a[1], …, a[k-2], a[k-1]. Pentru punctul a: a) Pentru a rearanja vectorul a după regula...
Se consideră doi vectori cu elemente numere întregi a şi b, cu lungimea n. Lungimea vectorilor şi elementele vectorului a se citesc de la tastatură. In vectorul b în elementul b[i] se calculează suma cifrelor elementului a[i]. Să se afişeze numărul care are cea mai mare sumă a cifrelor şi al câtelea număr citit a fost. Dacă sunt mai multe numere care au suma cifrelor maximă, să se afişeze numărul de ordine la citire pentru fiecare dintre ele. 11
Pentru a rezolva această problemă, vom citi elementele vectorului a și vom calcula suma cifrelor fiecărui element. Vom folosi o variabilă max_sum pentru a reține cea mai mare sumă a cifrelor găsită până acum și o variabilă max_index pentru a reține indicele (numărul de ordine la citire) al elementului cu suma cifrelor maximă. Vom parcurge...
Se consideră două mulţimi A şi B. Să se verifice dacă: 12
a) A apartine B; b) A nu apartinw B; c) A=B. Pentru a verifica dacă o mulțime A aparține mulțimii B, trebuie să verificăm dacă toate elementele mulțimii A sunt și în mulțimea B. În caz contrar, mulțimea A nu aparține mulțimii B. Pentru a verifica dacă o mulțime A nu aparține mulțimii B,...
Se consideră două mulţimi A şi B. Să se calculeze produsul cartezian AxB. 13
Pentru a calcula produsul cartezian AxB, vom itera prin fiecare element din A si pentru fiecare element din A vom itera prin fiecare element din B, construind perechi (a,b) cu a din A si b din B. Vom stoca aceste perechi intr-un vector de perechi. #include <iostream> using namespace std; int main() { int...
Se citeşte de la tastatură un număr întreg cu maxim 20 de cifre. Să se verifice dacă numărul este palindrom (Indicaţie. Cifrele numărului vor fi citite într-un vector.) 14
#include <iostream> using namespace std; int main() { const int MAX_DIGITS = 20; int n, digits[MAX_DIGITS]; bool is_palindrome = true; cout << „Introduceti un numar intreg cu maxim 20 de cifre: „; cin >> n; int num_digits = 0; while (n > 0 && num_digits < MAX_DIGITS) {...
Se citeşte de la tastatură un număr întreg cu maxim 20 de cifre. Să se verifice dacă numărul este palindrom (Indicaţie. Cifrele numărului vor fi citite într-un vector.) 15
#include <iostream> using namespace std; int main() { const int MAX_DIGITS = 20; int n, digits[MAX_DIGITS]; bool is_palindrome = true; cout << „Introduceti un numar intreg cu maxim 20 de cifre: „; cin >> n; int num_digits = 0; while (n > 0 && num_digits < MAX_DIGITS) {...
Să se memoreze într-un vector n cifre. Să se afişeze cel mai mic număr care se poate obţine cu aceste cifre. 16
Pentru a rezolva această problemă, vom folosi un algoritm de sortare prin interschimbare, care va pune cifrele în ordine crescătoare. După aceea, vom construi numărul cel mai mic posibil prin concatenarea cifrelor în ordine. #include <iostream> using namespace std; int main() { const int MAX_N = 100; int n, cifre[MAX_N]; cin >>...
Să se genereze toate numerele cu n cifre (n se citeşte de la tastatură şi n<20) care sunt egale cu suma cuburilor cifrelor lor 17
Pentru a genera toate numerele cu n cifre care sunt egale cu suma cuburilor cifrelor lor, putem folosi un algoritm de tip bruteforce. În primul rând, trebuie să generăm toate combinațiile posibile de cifre cu n elemente. Putem face acest lucru cu ajutorul unui loop imbricat, care parcurge fiecare cifră posibilă pentru fiecare poziție din...
Se consideră un vector a cu elemente numere întregi, cu lungimea n. Să se rearanjze elementele vectorului astfel încât numerele pare să fie scrise înaintea numerelor impare. 18
Pentru a rearanja elementele vectorului astfel încât numerele pare să fie scrise înaintea numerelor impare, putem folosi o metodă simplă de sortare. Putem utiliza două variabile pentru a ține evidența pozițiilor în vectorul a: i pentru numerele pare și j pentru numerele impare. Parcurgem vectorul a și pentru fiecare element verificăm dacă este par sau...
Să se verifice că o matrice pătrată cu dimensiunea nxn (n se citeşte de la tastatură) este matricea zero (matricea care are toate elementele egale cu 0). 19
Pentru a verifica dacă o matrice pătrată este matricea zero, trebuie să parcurgem toate elementele matricei și să verificăm dacă toate sunt egale cu zero. Acest lucru poate fi realizat folosind două bucle for imbricate pentru a accesa fiecare element al matricei și verificând dacă valoarea este zero. #include <iostream> using namespace std; int main()...
Să se verifice dacă o matrice pătrată cu dimensiunea n>n este: 20
a) simetrică faţă de axa orizontală, b) simetrică față de axa verticală, c) simetrică față de diagonala principală, d) simetrică față de diagonala secundară. a) simetrică faţă de axa orizontală Pentru a verifica dacă o matrice este simetrică față de axa orizontală, trebuie să comparăm elementele matricei aflate deasupra axei orizontale cu cele aflate sub...
Să se afişeze elementele de pe conturul matricei, parcurgerea lor facandu se in sens invers trigonometric. 21
Pentru a parcurge elementele de pe conturul matricei în sens invers trigonometric, putem utiliza un algoritm care parcurge cele patru laturi ale conturului în ordinea corespunzătoare. Acest algoritm presupune următorii pași: În acest fel, putem obține elementele de pe conturul matricei în sens invers trigonometric. #include <iostream> using namespace std; const int MAX_SIZE = 100;...
Se consideră o matrice patrata a cu dimensiunea nxn (n impar) si un vector v cu nxn elemente. Numarul n si elementele matricei se citesc de la tastatura. Sa se copieze in vectorul belementele matricei a parcurse 22
Pentru a copia elementele matricei a în vectorul v parcurgând matricea linie cu linie, putem folosi un algoritm elementar care parcurge fiecare element al matricei și îl copiază în vectorul v la poziția corespunzătoare. Astfel, pentru o matrice de dimensiune n, elementul de pe linia i și coloana j se va afla la poziția (i-1)*n...
Se consideră o matrice a cu n linii şi m coloane cu elemente numere reale. Valorile pentru n şi m şi elementele matricei se citesc de la tastatură. Se mai citesc de la tastatură două numere întregi p (1<=p<=n) şi g (1<=q<=m). Să se elimine din matrice linia p şi coloana g. Să se afişeze matricea obținută 23
Pentru a elimina o linie din matricea a putem folosi următoarea metodă: creăm o nouă matrice b de dimensiuni (n-1) x m și copiem toate elementele matricei a în b, cu excepția elementelor de pe linia p. Pentru a elimina o coloană, vom crea o nouă matrice c de dimensiuni n x (m-1) și vom...
Se consideră o matrice a cu n linii şi m coloane cu elemente numere reale. Valorile pentru n şi m şi elementele matricei se citesc de la tastatură. Se mai citesc de la tastatură două numere întregi p (1<=p<=n) şi q (1<=q<=n). Să se interschimbe liniile p şi q ale matricei. Să se afişeze matricea obținută. 24
Pentru a interschimba două linii ale unei matrice, trebuie să memorăm elementele uneia dintre ele într-un vector temporar, să mutăm elementele celeilalte linii în prima linie și apoi să copiem elementele din vectorul temporar în a doua linie. #include <iostream> using namespace std; int main() { int n, m; cout << „Introduceti numarul...
Se consideră o matrice a cu n linii şi m coloane cu elemente numere reale. Valorile pentru n şi m şi elementele matricei se citesc de la tastatură. Se mai citesc de la tastatură două numere întregi p (1<p<m) si q(1<=q<=m). Să se interschimbe coloanele p şi q ale matricei. Să se afişeze matricea obţinută. 25
#include <iostream> using namespace std; int main() { int n, m, p, q; cout << „Introduceti numarul de linii si coloane ale matricei: „; cin >> n >> m; // Initializam matricea double a[n][m]; cout << „Introduceti elementele matricei: \n”; for (int i = 0; i < n;...
Se consideră o matrice a cun linii şi m coloane cu elemente numere reale. Valorile pentru n şi m şi elementele matricei se citesc de la tastatură. Să se bordeze matricea cu coloana m+1, ale cărei elemente a[i][m+1] au ca valoare media aritmetică a celor m elemente din linia i, şi cu linia n+1, ale cărei elemente a[n+1][j] au ca valoare media aritmetică a celor n elemente din coloana j. Să se afişeze matricea obţinută. 26
Pentru a bordeza matricea cu o coloana m+1 și o linie n+1 avem nevoie de două etape: #include <iostream> using namespace std; int main() { int n, m; cout << „Introduceti numarul de linii n si de coloane m ale matricei: „; cin >> n >> m; // Declaram si citim...
Se consideră o matrice a cu n linii şi m coloane cu elemente numere reale. Valorile pentru n şi m şi elementele matricei se citesc de la tastatură. Să se afişeze numărul liniei şi numărul coloanei pe care suma elementelor este maximă. 27
Pentru a rezolva această problemă, putem parcurge matricea și calcula suma elementelor pentru fiecare linie și fiecare coloană. La fiecare iterație, comparam suma curentă cu suma maximă până în acel moment și actualizăm suma maximă și indicele de linie/coloană corespunzător. #include <iostream> using namespace std; int main() { int n, m; cout <<...
Se consideră o matrice pătrată cu dimensiunea nxn şi un vector cu n elemente. Numărul n şi elementele matricei şi ale vectorului se citesc de la tastatură. Să se verifice dacă elementele vectorului formează o linie sau o coloană a matricei. În caz afirmativ să se afişeze un mesaj în care să se precizeze numărul liniei şi/sau al coloanei. 28
Pentru a verifica dacă elementele vectorului formează o linie sau o coloană a matricei putem verifica dacă toate elementele vectorului sunt egale cu elementele de pe aceeași poziție dintr-o anumită linie sau coloană a matricei. Pentru a implementa această verificare, putem parcurge matricea și vectorul și să comparăm elementele de pe aceeași poziție. Dacă găsim...
Găsiți metoda adecvată prin care să memorați coordonatele carteziene în spaţiu (x, y, z) a n vectori, astfel încât să puteți implementa un algoritm cât mai eficient care să afişeze vectorii perpendiculari (vectorii al căror produs scalar este 0). Afişaţi vectorii perpendiculari. 29
Pentru a memora coordonatele vectorilor în spațiu, putem declara o matrice de dimensiune n x 3, unde n este numărul de vectori. Fiecare linie din matrice reprezintă coordonatele unui vector. Pentru a găsi vectorii perpendiculari, vom itera prin toți vectorii și pentru fiecare pereche de vectori vom calcula produsul scalar. Dacă produsul scalar este zero,...
Se consideră o matrice pătrată cu elemente numere întregi cu dimensiunea nxn. Numărul n şi elementele matricei se citesc de la tastatură. Să se afişeze: 30
a) elementele situate deasupra diagonalei principale; b) elementele situate sub diagonala secundară. Pentru a afișa elementele situate deasupra diagonalei principale, parcurgem matricea pătrată cu două bucle for imbricate și afișăm elementele pentru care indicele de linie este mai mic decât indicele de coloană: #include <iostream> using namespace std; int main() { int n; ...
Se consideră o matrice pătrată cu elemente numere întregi cu dimensiunea nxn. Numărul n şi elementele matricei se citesc de la tastatură. Să se afişeze: 31
a) suma elementelor situate deasupra diagonalei principale; b) suma elementelor situate sub diagonala secundară; c) simetrica matricei faţă de axa verticală care trece prin centrul matricei, d) simetrica matricei faţă de axa orizontală care trece prin centrul matricei, e) simetrica matricei față de diagonala principală, f) simetrica matricei față de diagonala secundară. a) suma elementelor...
Se consideră o matrice pătrată cu elemente numere întregi cu dimensiunea nxn. Numărul n şi elementele matricei se citesc de la tastatură. Să se ordoneze: 32
a) crescător, elementele de pe diagonala principală, folosind metoda selecţiei directe; b) descrescător, elementele de pe diagonala secundară, folosind metoda bulelor; c) crescător, elementele de pe linia p, folosind metoda inserării directe (p seciteşte de la tastatură); d) descrescător, elementele de pe coloana q, folosind metoda inserării rapide (q se citeşte de la tastatură). a)...