👤

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ăspuns :

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.
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;
}