Programarea Calculatoarelor, seria CC
Scrieţi o funcţie care să calculeze numărul de cifre ale unui număr întreg nenul dat ca parametru. În funcția
int nrcf(long n)
Rezolvare:
Programul
1 #include <stdio.h>
2
3 int nrcf(long n)
4 {
5 int nr = 0; /* declar un contor in care sa numar cifrele */
6 while (n) /* cat timp mai pot obtine o cifra */
7 {
8 n = n/10; /* o trunchiez pe ultima */
9 nr++; /* incrementez contorul */
10 }
11 return nr; /* functia intoarce numarul de cifre */
12 }
13
14
15 int main(void)
16 {
17 long N;
18 printf("N = "); /* afisam un mesaj pentru utilizator */
19 scanf("%ld", &N); /* citim numarul introdus de la tastatura */
20
21 printf("Numarul %ld are %d cifre!\n", N, nrcf(N)); /* afisez numarul de cifre */
22
23 return 0;
24 }
Intrare | Ieşire |
1325135 | 7 |
274 | 3 |
666013 | 6 |
Scrieţi o funcţie care să verifice dacă un număr întreg
int cifra(int n, int c)
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
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
Observaţie: Se va considera pentru această problemă că numărul
Intrare | Ieşire |
12 |
1+11 5+7 |
Se citesc de la tastatură patru numere întregi reprezentând două fracţii
int cmmmc(int a, int b)
Hint:
Intrare | Ieşire |
1 2 1 11 |
11/22 2/22 |
Să se scrie un program pentru calculul sumei seriei Taylor pentru funcţia
ex = 1 + x/1! + x2/2! + x3/3! + ... + xn/n!
Se vor defini şi utiliza următoarele funcţii:
Funcţie pentru calculul sumei seriei Taylor în punctul
double taylor(double x, int n)
Funcţie pentru calculul factorialului unui număr întreg:
int factorial(int n)
Funcţie pentru calculul puterii întregi a unui număr dat:
double putere(double x, int n)
Comparaţi rezultatul obţinut cu rezultatul funcţiei
Se citesc
float dist(int x1, int y1, int x2, int y2)
Intrare | Ieşire |
4 0 0 0 1 1 0 1 1 |
[(0,0);(1,1)] formeaza distanta maxima 1.414214 |
3 2 -2 3 4 7 8 |
[(2,-2);(7,8)] formeaza distanta maxima 11.180340 |
Scrieţi o funcţie care sortează cifrele unui număr astfel:
int transforma(int n)
Intrare | Ieşire |
19430123 | 94332110 |
2534562 | 2234556 |
Scrieţi o funcţie care caculează aria intersecţiei a două dreptunghiuri, date prin coordonatele colţurilor stânga-sus şi dreapta-jos. Coordonatele sunt numere întregi pozitive. Funcţia trebuie să respecte următorul antet:
int arie_intersectie(int x11, int y11, int x12, int y12, int x21, int y21, int x22, int y22)
Intrare | Ieşire |
1 10 5 5 2 7 4 4 |
4 |
1 3 3 1 2 4 4 3 |
0 |