Ştiind că sunt definite subprogramele:
• S1 care primeşte prin intermediul parametrului n un număr natural de cel mult 8 cifre şi care returnează numărul de cifre ale numărului n;
• S2 cu doi parametri, care primeşte prin intermediul parametrului n un număr natural de cel mult 4 cifre şi prin intermediul parametrului k o cifră. Subprogramul dublează fiecare apariţie a cifrei k în numărul n şi returnează numărul nou format prin intermediul parametrului n. (De exemplu, pentru n=1232 şi k=2 valoarea returnată este 122322, iar pentru n=1232 şi k=4 valoarea returnată este 1232.)
a) Scrieţi numai antetul fiecăruia dintre cele două subprograme. (2p.)
b) Scrieţi în limbajul C sau C++ programul în care se citesc de la tastatură un număr natural n de cel mult patru cifre şi două cifre distincte a şi b. Programul va determina şi va afişa câte dintre cifrele numărului n sunt diferite atât de a cât şi de b, fără a accesa cifrele numărului n, folosind apeluri ale subprogramelor S1 şi S2. Programul va afişa pe ecran numărul determinat. De exemplu, dacă n=121532, a=3 şi b=2, atunci numărul determinat este 3, deoarece n are trei cifre diferite de 3 şi de 2
Răspunsuri la întrebare
Răspuns de
5
#include <iostream>
using namespace std;int S1(int n){int ct = 0;while(n){ ct++; n /= 10;}return ct;}int S2(int n, int k){int x1 = 0; while(n != 0) { int u; u = n % 10; if((u == k) && (n > 10)) x1 = x1 * 100 + u * 10 + u; else x1 = x1 * 10 + u; n /= 10; } while(x1!=0) { n = n * 10 + x1 % 10; x1 /= 10; } return n;}int main(){ int n, a, b; cin >> n >> a >> b; int x; x = S1(S2(n, a)) - S1(n) + S1(S2(n, b)) - S1(n); cout << x;}Programul principal consta in verificarea diferentei dintre numerele dublate deoarece numai cifrele egale cu a si cu b se dubleaza. Astfel poti face diferenta.
using namespace std;int S1(int n){int ct = 0;while(n){ ct++; n /= 10;}return ct;}int S2(int n, int k){int x1 = 0; while(n != 0) { int u; u = n % 10; if((u == k) && (n > 10)) x1 = x1 * 100 + u * 10 + u; else x1 = x1 * 10 + u; n /= 10; } while(x1!=0) { n = n * 10 + x1 % 10; x1 /= 10; } return n;}int main(){ int n, a, b; cin >> n >> a >> b; int x; x = S1(S2(n, a)) - S1(n) + S1(S2(n, b)) - S1(n); cout << x;}Programul principal consta in verificarea diferentei dintre numerele dublate deoarece numai cifrele egale cu a si cu b se dubleaza. Astfel poti face diferenta.
Voli04:
la linia (u == k) && (n > 10) sa nu mai pui si n > 10. Am gresit eu XD. Daca trebuie sa dublezi prima cifra nu o sa iti dea raspunsul corect.
Alte întrebări interesante
Fizică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Informatică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă