This is an old revision of the document!
În acest laborator veţi învăţa să:
Scrieţi o funcţie care să calculeze numărul de cifre ale unui număr întreg dat ca parametru, N. În funcţia main() citiţi un număr de la tastatură şi afişaţi rezultatul apelului funcţiei. Antetul funcţiei trebuie să respecte următorul format:
int nrcf(long n)
Un numar dat N
Numarul de cifre ale numarului citit
Intrare | Ieşire |
---|---|
12345 | 5 |
9 | 1 |
-325 | 3 |
Programul C care implementează cerinţa problemei de mai sus va fi:
#include <stdio.h> int nrcf(long n) { if (n == 0) return 1; int nr = 0; /* declar un contor in care sa numar cifrele */ while (n) /* cat timp mai pot obtine o cifra */ { n = n/10; /* o trunchiez pe ultima */ nr++; /* incrementez contorul */ } return nr; /* functia intoarce numarul de cifre */ } int main(void) { long N; printf("N = "); /* afisam un mesaj pentru utilizator */ scanf("%ld", &N); /* citim numarul introdus de la tastatura */ printf("Numarul %ld are %d cifre!\n", N, nrcf(N)); /* afisez numarul de cifre */ return 0; }
Programul C care implementează algoritmul descris mai sus va fi:
Scrieţi o funcţie care să verifice dacă un număr întreg n conţine cifra c. Numerele n şi c sunt date ca parametri. Antetul funcţiei trebuie să respecte următorul format:
int cifra(int n, int c)
Programul primeste 2 parametri n si c ca in antetul de mai sus
Se va afisa DA sau NU. Astfel ca DA semnifica existenta cifrei c in numarul n, sau NU in caz contrar
Intrare | Ieşire |
---|---|
13584 3 | DA |
100111 0 | DA |
666013 8 | NU |
Ipoteza lui Goldbach: Orice număr par se poate exprima printr-o sumă de două numere prime, nu neapărat distincte. A. Scrieţi o funcţie care să verifice dacă un număr întreg este prim sau nu. Funcţia va returna valoarea 1 dacă N este număr prim şi 0 în caz contrar. Si trebuie sa aiba urmatorul antet:
int prim(int n)
B. Scrieţi un program care verifică ipoteza lui Goldbach prin afişarea tuturor descompunerilor distincte(de ex. nu se vor afişa şi “5+7” şi “7+5”) posibile în sumă de numere prime ale unui număr citit de la tastatură. Programul va apela funcţia prim.
Un numar N par.
Afisarea tuturor descompunerilor pentru numarul dat N
Intrare | Ieşire |
---|---|
12 | 1 + 11 5 + 7 |
Se citesc de la tastatură patru numere întregi reprezentând două fracţii x1 / y1 şi x2/ y2. Aduceţi fracţiile la acelaşi numitor (cel mai mic posibil) folosind o funcţie care calculează cel mai mic multiplu comun a două numere întregi. Consideraţi că fracţiile date ca input sunt deja în formă ireductibilă. Antetul funcţiei trebuie să respecte următorul format:
int cmmmc(int a, int b)
Pe prima linie se vor afla două numere naturale, m şi n, ce reprezintă dimensiunile matricei A. Urmează m linii a câte n numere întregi, ce reprezintă elementele matricei A. Pe o nouă linie vor fi alte două numere naturale, p şi q, ce reprezintă dimensiunile matricei B. Urmează p linii a câte q numere întregi, ce reprezintă elementele matricei B.
Pe prima linie se vor afişa două numere naturale reprezentând dimensiunile matricei C, separate printr-un spaţiu. Urmează afişarea elementelor matricei C. În cazul în care nu se poate efectua A * B, se va afişa o singură linie cu mesajul imposibil.
Intrare | Ieşire |
---|---|
2 1 1 2 1 3 1 2 3 | 2 3 1 2 3 2 4 6 |
2 2 1 0 0 1 1 2 5 5 | imposibil |
Program pentru interclasarea a doi vectori ordonaţi într-un singur vector ordonat.
Pe prima linie se va afla un număr natural N1 ce reprezintă dimensiunea primului vector. Pe a doua linie se vor afla numere întregi ce reprezintă elementele primului vector. Pe a treia linie se va afla un număr natural N2 ce reprezintă dimensiunea celui de-al doilea vector. Pe a patra linie se vor afla numere întregi ce reprezintă elementele celui de-al doilea vector.
Se vor afişa elementele vectorului obţinut prin interclasarea celor doi vectori, separate între ele printr-un spaţiu.
Intrare | Ieşire |
---|---|
4 -3 5 9 12 7 1 3 5 6 7 13 17 | -3 1 3 5 5 6 7 9 12 13 17 |
Se citeşte o matrice pătratică A de la tastatură. Afişati toate elementele de sub diagonala secundară, pe coloane.
Pe prima linie se va afla un număr natural, N, ce reprezintă numărul de linii si numărul de coloane ale matricei. Urmează N linii a câte N numere întregi, ce reprezintă elementele matricei.
Se vor afişa pe o linie, separate printr-un spaţiu, toate elementele de sub diagonala secundară.
Intrare | Ieşire |
---|---|
4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 14 11 15 8 12 16 |
Program pentru afişarea celei mai lungi secvenţe de elemente consecutive ordonate crescător dintr-un vector de numere naturale.
Pe prima linie se va afla un număr natural, N, ce reprezintă dimensiunea vectorului. Pe a doua linie se vor afla N numere întregi ce reprezintă elementele vectorului.
Se va afişa pe o linie secvenţa de elemente consective ordonate crescător, elementele fiind despărţite între ele printr-un spaţiu.
Intrare | Ieşire |
---|---|
9 5 3 6 2 4 6 8 4 1 | 2 4 6 8 |
Program pentru afişarea secvenţei de elemente consecutive de sumă maximă dintr-un vector.
Pe prima linie se va afla un număr natural, N, ce reprezintă dimensiunea vectorului. Pe a doua linie se vor afla N numere întregi ce reprezintă elementele vectorului.
Se va afişa pe o linie secvenţa de elemente consecutive de sumă maximă din vectorul dat, separînd elementele între ele printr-un spaţiu.
Intrare | Ieşire |
---|---|
12 5 0 -1 -4 2 8 3 -1 2 -5 -8 4 | 5 0 -1 -4 2 8 3 -1 2 |
Secventa 2 8 3 -1 2 are de asemenea suma maximă, dar vom alege ca răspuns secvenţa care începe cel mai din stânga.
Scrieţi un program care citeşte un şir de numere şi verifică dacă acest şir este ordonat crescator sau ordonat descrescator sau nu este ordonat sau este un şir constant. Se afişează un mesaj: “crescator” , “descrescator”, “neordonat”, “constant” .
Pe prima linie se va afla un număr natural, N, ce reprezintă dimensiunea vectorului. Pe a doua linie se vor afla N numere întregi ce reprezintă elementele matricei.
Se va afişa mesajul specific.
Intrare | Ieşire |
---|---|
5 2 3 5 7 11 | crescator |
4 11 2 2 5 | neordonat |
3 3 3 3 | constant |
Scrieţi un program care citeşte n numere reale X şi m + 1 numere întregi A şi afişează numărul de valori din X situat în fiecare din cele m intervale deschise delimitate de valorile din A.
Pe prima linie se va afla numărul natural n. Pe a doua linie vor fi n numere reale. Pe a patra linie se va afla numărul natural m. Pe a cincea linie vor fi m numere întregi.
Se va afişa numărul de valori din X situat în fiecare din cele m - 1 intervale deschise delimitate de valorile din A sau mesajul Error dacă valorile din şirul A nu sunt sorte în ordine scrict crescătoare.
Intrare | Ieşire |
---|---|
7 5.2 4.1 1.1 5 5.9 6.7 3.14 4 2 3 5 7 | 0 2 3 |
7 5.2 4.1 1.1 5 5.9 6.7 3.14 4 2 5 3 7 | Error |
Nu sunt numere incluse în intervalul (2, 3).
În (3, 5) sunt incluse 3.14, 4.1.
În (5, 7) sunt incluse 5.2, 5.9, 6.7.
Program pentru calculul valorii unui polinom cu coeficienţi daţi, prin mai multe metode cu următoarea numerotare a coeficienţilor:
P(x) = c0 * xn + c1 * xn - 1 + … + cn - 1 * x + cn.
De exemplu: pentru n = 3 şi c = { 1, 2, 3, 4 }, corespunzătoare polinomului P(x) = x3 + 2 * x2 + 3 * x + 4, se poate scrie P(x) = x * (x * (x * 1 + 2) + 3) + 4
Pe prima linie se vor afla două numere: un număr real x şi un număr natural n ce reprezintă gradul polinomului. Pe a doua linie, separate printr-un spaţiu, n+1 numere întregi ce reprezintă coeficienţii polinomului ( c[0], c[1], …, c[n] ).
Se va afişa valoarea polinomului cu o precizie de 2 zecimale.
Intrare | Ieşire |
---|---|
0.5 3 1 2 3 4 | 6.12 |
Fie un vector de numere întregi (iniţial toate având valoarea 0) de lungime N. Se citesc de la tastatură un set de M tripleţi de forma B E V fiecare având urmatoarea semnificaţie : toate elementele din vector ale căror poziţii (indexate de la 0) sunt cuprinse între B şi E inclusiv vor fi modificate prin adunare cu V.
Afişati vectorul obţinut în urma aplicării celor M operaţii.
Pe prima linie se vor afla două numere naturale: N, ce reprezintă lungimea vectorului şi M, ce reprezintă numărul de tripleţi ce vor fi citiţi de la tastatură. Pe următoarele M linii, câte trei numere naturale, B, E şi V, separate prin câte un spaţiu.
Se vor afişa pe o linie elementele vectorului obţinut în urma aplicării celor M operaţii, separate prin câte un spaţiu.
Intrare | Ieşire |
---|---|
5 3 1 2 3 2 4 -1 0 1 2 | 2 5 2 -1 -1 |
Iniţial: 0 0 0 0 0
După (1 2 3): 0 3 3 0 0
După (2 4 -1): 0 3 2 -1 -1
După (0 1 2): 2 5 2 -1 -1