Informatică, întrebare adresată de raressportiv0, 9 ani în urmă

Se citesc din fişierul atestat.in două numere naturale a şi b  Afişaţi pe ecran, pe câte o linie, fiecare număr din interval, urmat de spaţiu şi de suma cifrelor sale. Pentru aflarea sumei cifrelor unui număr se va folosi o funcţie care are ca parametru un număr natural şi returnează suma cifrelor lui.

Răspunsuri la întrebare

Răspuns de stassahul
1
function sum(r:integer):integer;

begin
var c:integer;
while r<>0 do begin
c:=r mod 10;
r:=r div 10;
sum+=c;
end;
end;

var a,b,r:integer;
t:text;

begin
assign(t,'atestat.in');
reset(t);
read(t,a);
read(t,b);
close(t);

for a:=a to b do begin
r:=a;
writeln(a,' ',sum(r));
end;  
end.

raressportiv0: c++, te rog
raressportiv0: Sunt sigur ca raspunsul tau e 100% bun dar as vrea in c++
Răspuns de StarBack
2
Salut. Uite aici rezolvarea problemei. Succes in continuare! 

EDIT: Am adaugat varianta iterativa.

#include "stdafx.h"
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("atestat.in");

// Varianta recursiva

int suma(int numar)
{
        if (numar == 0)
              return 0;
        else
             return suma(numar / 10) + numar % 10;
}

// Varianta iterativa

int suma(int numar)
{
      int s = 0;
      while (numar)
      {
              s += numar % 10;
              numar /= 10;
      }

      return s
}


int main()
{
       int a, b;

       in >> a >> b;

       for (int i = a; i <= b; i++)
       {
                cout << i << " " << suma(i) << endl;
       }

     return 0;
}

raressportiv0: Ai putea sa o rezolvi fara varianta recursiva?
StarBack: Sigur.
Alte întrebări interesante