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 al 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.
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)
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)
Patru numere intregi reprezentand x1, y1, x2, y2 cu semnificatia din enunt
Cele 2 fractii aduse la acelasi numitor
Intrare | Ieşire |
---|---|
1 2 1 11 | 11 22 2 22 |
5 12 3 14 | 35 84 18 84 |
Să se scrie un program pentru calculul sumei seriei Taylor pentru funcţia e^x până la un termen dat:
$e^x = 1 + \frac{x}{1!} + \frac{x^2}{2!} + \frac{x^3}{3!} + ... + \frac{x^n}{n!}$
Se vor defini şi utiliza următoarele funcţii:
double taylor(double x, int n)
int factorial(int n)
double putere(double x, int n)
Fişierul de intrare va avea o singură linie, pe care se vor afla un număr real X şi un număr natural N.
Valoarea expresiei expuse mai sus pentru x şi n date, cu precizie de patru zecimale.
Intrare | Ieşire |
---|---|
2.5 10 | 12.1817 |
Se citesc n puncte de la tastatură, date prin coordonatele lor: x[i], y[i], i=1,n. Să se afişeze perechea de puncte între care distanţa este maximă (dacă există mai multe astfel de perechi, se poate afişa oricare dintre ele), precum şi această distanţă. Se va defini şi folosi o funcţie pentru calculul distanţei dintre două puncte în plan, care trebuie să respecte următorul antet:
float dist(int x1, int y1, int x2, int y2)
Un numar natural n, urmate de n linii, pe fiecare linie cate un punct dat prin coordonatele sale în plan, cu specificatia din enunt.
Pe primele doua linii perechea de puncte intre care distanta e maxima. Pe a treia linie se va regasi distanta
Intrare | Ieşire |
---|---|
4 0 0 0 1 1 0 1 1 | 0 0 1 1 1.414214 |
Scrieţi o funcţie care sortează cifrele unui număr astfel:
Funcţia trebuie să respecte următorul antet:
int transforma(int n)
Un numar dat N cu specificatia din enunt.
Cifrele numarului dat, sortate dupa cum se cere in enunt.
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)
Se vor citi 8 numere intregi, reprezentand coordonatele colturilor celor 2 figuri geometrice. Ele vor fi date in ordine conform cu antetul functiei pus la dispozitie in enunt.
Un numar reprezentand aria intersectiei dintre cele 2 dreptunghiuri.
Intrare | Ieşire |
---|---|
1 10 5 5 2 7 4 4 | 4 |
1 3 3 1 2 4 4 4 | 0 |