Probleme+subprograme

1. Se citeşte n un număr natural. Să se calculeze suma cifrelor lui n. Ex: n=1234 => S=10

2. Se citeşte de latastatură un număr natural n. Să se verifice dacă numărul natural n începe şi se termină cu aceeaşi cifră.Ex : n=1231 => cifre egale

3. Se citesc două numere naturale a şi b. Verificaţi dacă numerele a şi b au aceeaşi sumă a cifrelor. Scrieţi o funcţie care determină suma cifrelor unui număr natural transmis ca parametru. Ex: a=234 şi 351 s1= s2 care este 6

4. Se citesc două numere naturale a şi b. Verificaţi dacă numerele a şi b au acelaşi produs al cifrelor impare. Scrieţi un program cu o funcţie de tip long care returnează produsul cifrelor impare ale unui număr natural n cu cel mult 9 cifre.

Ex: avem a= 233 şi b= 613 avem p1=p2=18

 5. Se citescdouă numere naturale a şi b. Verificaţidacănumerele a şi b au aceeaşicifrămaximă. Scrieţi un program cu o funcţie de tip long care returnează cifra maximă unui număr natural n cu cel mult 9 cifre. Ex: avem a= 123468 şi b=567843 avem cifra maximă: 8

6. Se citesc două numere naturale a şi b. Verificaţi dacă a şi b au aceeaşi sumă a cifrelor pare. Scrieţi un program cu o funcţie care returnează suma cifrelor pare a unui număr natural n cu cel mult 9 cifre. Ex: a=448320 şi b= 261674 avem s=18

=** Probleme Bac: **=

1. Subprogramul ** cif **, cu doi parametri, primeşte prin intermediul parametrului ** a **un număr natural cu cel mult ** 8 **cifre şi prin intermediul parametrului ** b **o cifră; subprogramul returnează numărul de apariţii ale cifrei ** b **în scrierea numărului ** a **. cifre, dintre care cel puţin una impară, şi care determină şi afişează pe ecran, folosind apeluri utile ale subprogramului ** cif **, cel mai mic număr natural care poate fi obţinut <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">utilizând toate cifrele impare ale numărului ** n **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">.
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Exemplu **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">: pentru ** a=125854 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">şi ** b=5 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, subprogramul va returna valoarea ** 2 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">.
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">a) **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Scrieţi definiţia completă a subprogramului ** cif **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">. **(4p.)**
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">b) **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Scrieţi un program ** C/C++ **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">care citeşte de la tastatură un număr natural ** n **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">cu cel mult ** 8 **
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Exemplu **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">: dacă ** n=2152331 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">atunci se va afişa pe ecran numărul ** 11335 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">.

<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">2. Subprogramul ** cifrak **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">are ** 2 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">parametri, ** n **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, prin care primeşte un număr natural cu maximum <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">de cifre ale numărului ** n **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">care sunt egale cu valoarea ** k **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">. <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">numere cu maximum ** 9 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">cifre fiecare). Fiecare linie a fişierului conţine câte un număr. Scrieţi <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">programul ** C/C++ **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">care, folosind apeluri ale subprogramului ** cifrak **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, afişează pe ecran, <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">separate prin câte un spaţiu, toate numerele din fişier care conţin exact **trei** cifre de ** 0 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">. <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">se vor afişa, nu neapărat în această ordine, numerele ** 260070 70009 **
 * 9 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">cifre, şi ** k **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, prin care primeşte un număr natural ( ** k ** ≤ ** 9 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">). Subprogramul returnează numărul
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Exemplu: **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">dacă ** n=233433 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, iar ** k=3 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, subprogramul va returna valoarea ** 4 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">.
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">a) **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Scrieţi definiţia completă a subprogramului ** cifrak **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">. **(4p.)**
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">b) **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">În fişierul ** numere.txt **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">sunt memorate mai multe numere naturale (maximum ** 1000 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">de
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Exemplu: **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">dacă fişierul ** numere.txt **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">conţine
 * 260070 **
 * 39008 **
 * 70009 **

<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">3. **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">a) **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Scrieţi definiţia unui subprogram, ** nz **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, cu un parametru întreg, ** n **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">( ** 0<n ** ≤ ** 12 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">), care <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">returnează numărul zerourilor de la sfârşitul numărului ** n! **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">. **(6p.)** <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">determină, folosind apeluri ale subprogramului ** nz **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, cel mai mic număr natural ** n **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">pentru care
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">b) **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Scrieţi programul ** C/C++ **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">care citeşte de la tastatură un număr natural ** k **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">( ** 0<k ** ≤ ** 2 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">) şi
 * n! **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">are cel puţin ** k **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">zerouri la sfârşit. Numărul determinat se afişează pe ecran. **(4p.)**

<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">4. Scrieţi definiţia completă a subprogramului ** prime **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">care are ca parametri două numere <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">naturale ** x **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">şi ** y **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">(având cel mult ** 4 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">cifre fiecare) şi afişează pe ecran toate numerele prime din <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">intervalul închis având unul din capete în ** x **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">şi celălat în ** y **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">. Numerele afişate vor fi separate <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">prin câte un spaţiu. <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">această ordine.
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Exemplu: **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">pentru ** x=32 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">şi ** y=18 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">valorile afişate vor fi ** 19 23 29 31 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, nu neapărat în

<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">5. Subprogramul ** cifre_impare **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">primeşte prin parametrul ** n **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">un număr natural având cel mult <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">linii, ** n **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">numere naturale. Pe fiecare linie din fişier, numerele sunt despărţite prin câte un <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">spaţiu. Toate numerele din fişier au cel mult ** 9 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">cifre. Scrieţi programul ** C/C++ **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">care, folosind <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">apeluri utile ale subprogramului ** cifre_impare **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, afişează pe ecran acele numere din fişier <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">care sunt mai mari decât ** 100 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">şi au toate cifrele impare. Numerele afişate sunt separate <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">prin câte un spaţiu. <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">se vor afişa pe ecran:
 * 9 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">cifre şi returnează valoarea ** 1 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">dacă numărul ** n **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">are toate cifrele impare şi ** 0 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">în caz contrar.
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">a) **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Scrieţi numai antetul subprogramului ** cifre_impare **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">. **(4p.)**
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">b) **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Pe prima linie a fişierului ** numere.txt **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">se află un număr natural ** n **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, iar pe următoarele
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Exemplu **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">: dacă fişierul ** numere.txt **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">are conţinutul alăturat,
 * 333 713 11573 ****<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">(10p.) **
 * 10 **
 * 1 333 709 23 258 **
 * 34 713 2678 **
 * 11573 778 **

<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">număr natural de cel mult ** 4 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">cifre şi returnează suma divizorilor numărului ** x **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, diferiţi de ** 1 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">şi de <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">el însuşi. <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">numere naturale (cu cel mult ** 4 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">cifre fiecare). Programul determină, folosind apeluri utile ale <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">subprogramului ** sum **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, pentru fiecare număr natural, suma divizorilor săi proprii şi afişează pe <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">ecran sumele determinate, în ordinea crescătoare a valorilor lor, separate prin câte un spaţiu. <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">valorile afişate pe ecran vor fi: ** 0 0 5 7 14 ** <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">deoarece suma divizorilor lui ** 10 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">este ** 7 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, suma divizorilor lui ** 2 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">este ** 0 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, suma divizorilor lui
 * 6. **
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">a) **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Scrieţi definiţia completă a unui subprogram ** sum **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">care primeşte prin parametrul ** x **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">un
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Exemplu: **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">dacă ** x=10 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">se va returna valoarea ** 7 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">( ** 7=2+5 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">). **(4p.)**
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">b) **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Scrieţi programul ** C/C++ **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">care citeşte de la tastatură un număr natural ** n **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">( ** 0<n<100 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">), apoi ** n **
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">(6p.) **
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Exemplu: **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">dacă ** n=5 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">şi numerele citite sunt ** 10 2 33 6 11 **
 * 33 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">este ** 14 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, suma divizorilor lui ** 6 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">este ** 5 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, suma divizorilor lui ** 11 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">este ** 0 **

<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">subprogramul returnează valoarea ** -1 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">. De exemplu, dacă a= ** 8345 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, subprogramul va returna <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">doua linie a fişierului se află un şir de ** n **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">numere naturale, despărţite prin câte un spaţiu, <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">fiecare număr fiind format din cel mult ** 4 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">cifre. <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Scrieţi un program ** C/C++ **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">care citeşte numerele din fişier şi afişează pe ecran, folosind <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">apeluri utile la subprogramului ** cifra **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">, cel mai mare număr care se poate forma preluând <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">ultima cifră pară a fiecărui element, dacă o astfel de cifră există. În cazul în care toate <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">valorile din fişier conţin doar cifre impare, atunci se va afişa valoarea ** -1 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">. **(6p.)** <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">alăturat, pe ecran se va afişa: ** 64220 **
 * 7. **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;"> Subprogramul ** cifra **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">primeşte prin intermediul parametrului ** a **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">un număr natural cu cel mult
 * 4 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">cifre şi returnează ultima cifră pară a sa. Dacă numărul nu conţine cifre pare,
 * 4 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">.
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">a) **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Să se scrie definiţia completă a subprogramului ** cifra **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">. **(10p.)**
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">b) **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Pe prima linie a fişierului ** bac.in **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">se află un număr natural nenul ** n **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">( ** n ****<span style="font-family: 'CourierNew,Bold'; font-size: 10.5pt;">≤ **** 1000 **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">), iar pe a
 * <span style="font-family: Arial,sans-serif; font-size: 10.5pt;">Exemplu **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">: dacă fişierul ** bac.in **<span style="font-family: Arial,sans-serif; font-size: 10.5pt;">are conţinutul
 * 7 **
 * 369 113 2 0 33 1354 42 **