Informatică, întrebare adresată de mariandragos222, 8 ani în urmă

Ma poate ajuta cineva?? Stiu ca se poate face cu vectori de frecventa dar nu am facut inca.. daca stie cineva alta metoda as aprecia mult ajutorul!
Subprogramul suma are doi parametri:
• n, prin care primește un număr natural din intervalul [0,109];
• s, prin care furnizează suma cifrelor impare distincte din scrierea acestuia.
Scrieți definiția completă a subprogramului.
Exemplu: dacă n=4713835, după apel s=16 (16=7+1+3+5), iar dacă n=48, după apel s=0.

Răspunsuri la întrebare

Răspuns de OiLoveYouO
1

Răspuns:

Doar subprogramul:

void suma (int n, int &s)

{

s = 0;

int v[4] = {0};

int k = 0;

while (n > 0) //cat timp exista cifre in n

{

int ok = 0;

for (int i = 1; i <= 4; i ++)

if (n%10 == v[i]) ok = 1;

if (ok == 0 && n%2 == 1) {

k ++;

v[k] = n%10;

s = s + n%10;

}

n = n/10;

}

}

Explicație:

Tot programul:

#include <iostream>

using namespace std;

void suma (int n, int &s)

{

s = 0;

int v[4] = {0};

int k = 0;

while (n>0) //cat timp exista cifre in n

{

int ok = 0;

for (int i = 1; i <= 4; i ++)

if (n%10 == v[i]) ok = 1;

if (ok == 0 && n%2 == 1) {

k ++;

v[k] = n%10;

s = s + n%10;

}

n = n/10;

}

}

int main ()

{

int n, s;

cin >> n;

suma (n, s);

cout << s;

return 0;

}

Am rulat programul cu exemplul dat si am atasat o poza cu ce se afiseaza

Anexe:
Alte întrebări interesante