Se consideră definite următoarele subprograme:
- p1 care primeşte prin intermediul parametrului n un număr natural cu cel mult 8 cifre şi returnează suma cifrelor numărului n
Exemplu: dacă n este egal cu 1234 valoarea returnată de subprogram va fi 10.
-p2 care primeşte prin intermediul parametrului n un număr natural cu cel mult 8 cifre, şi returnează numărul obţinut prin eliminarea ultimei cifre a lui n.
Exemplu: dacă n este egal cu 1234 valoarea returnată de subprogram va fi 123.
a) Scrieţi numai antetul subprogramelor p1 şi p2.
b) Scrieţi un program C/C++ care citește de la tastatură un număr natural nenul n cu cel mult 8 cifre şi determină, prin apeluri utile ale subprogramelor p1 şi p2, numărul de cifre egale cu 0 din scrierea lui n. Programul va afişa pe ecran numărul obţinut.
Exemplu: dacă n este 102030, programul va afişa valoarea 3.
Răspunsuri la întrebare
Răspuns:
a) Antetele subprogramelor p1 și p2 ar putea arăta astfel:
int p1(int n);
int p2(int n);
b) Un program C/C++ care rezolvă cerința ar putea arăta astfel:
#include <stdio.h>
int p1(int n);
int p2(int n);
int main()
{
int n;
printf("Introduceti un numar natural nenul n: ");
scanf("%d", &n);
int count = 0; // contorul pentru cifrele 0
while (n > 0) // cat timp mai sunt cifre in numarul n
{
if (n % 10 == 0) // daca ultima cifra din n este 0
count++; // incrementam contorul
n = p2(n); // eliminam ultima cifra din n
}
printf("Numarul de cifre egale cu 0 din scrierea lui n este: %d\n", count);
return 0;
}
int p1(int n)
{
int sum = 0; // suma cifrelor din n
while (n > 0) // cat timp mai sunt cifre in n
{
sum += n % 10; // adaugam ultima cifra din n la suma curenta
n /= 10; // eliminam ultima cifra din n
}
return sum;
}
int p2(int n)
{
return n / 10; // returnam numarul obtinut prin eliminarea ultimei cifre din n
}
Explicație:
Sper să ajute.