Сума и произведение на числа до N

Да се направи функция, която пресмята сумата на числата до N, където N е подадено като параметър. Да се направи функция, която пресмята произведението на числата до N, където N е подадено като параметър. Да се направи програма, която позволява въвеждане на числo и отпечатва S=(1+2+3+…+N)/(1*2*3*…*N), като ползва функциите.

Публикувано в 10в с етикети . Постоянна връзка.

2 Responses to Сума и произведение на числа до N

  1. kaloyan каза:
    function Sum(n,suma,i:integer):integer;
      begin
      suma:=0;
        for i:=1 to n do
          suma:=suma+i;
      result:=suma;
      end;
    
    function Proizv(n,proizvedenie,i:integer):integer;
      begin
      proizvedenie:=1;
        for i:=1 to n do
          proizvedenie:=proizvedenie*i;
      result:=proizvedenie;
      end;
    
    VAR n,suma,proizvedenie,i:integer;
    BEGIN
    write('Vavedi N: '); readln(n);
    write('S=(');
    for i:=1 to n do
      if i<n then write(i,'+')
      else write(i,')/(');
    for i:=1 to n do
      if i<n then write(i,'*')
      else write(i,')=');
    writeln((Sum(n,suma,i)/Proizv(n,proizvedenie,i)):0:2);
    
    readln;
    END.
    • Данаил каза:

      Вярно! С едно изключение – като параметри на функцията подаваме само онова, което тя е нужно да „знае“, за да си свърши работата или да върне резултат. Другото не е нужно да бъдат параметри, може да бъдат променливи, декларирани в самата функция – ето така:

        function Sum(n:integer):integer;
        var suma,i:integer
        begin
        suma:=0;
          for i:=1 to n do
            suma:=suma+i;
          result:=suma;
        end;
      
        function Proizv(n:integer):integer;
        var proizvedenie,i:integer
        begin
        proizvedenie:=1;
          for i:=1 to n do
            proizvedenie:=proizvedenie*i;
          result:=proizvedenie;
        end;
      
      VAR n,i:integer;
      BEGIN
      write('Vavedi N: '); readln(n);
      write('S=(');
      for i:=1 to n do
        if i<n then write(i,'+')
        else write(i,')/(');
      for i:=1 to n do
        if i<n then write(i,'*')
        else write(i,')=');
      writeln((Sum(n)/Proizv(n)):0:2);
      
      readln;
      END.

      Иначе интересно решение – гледам, че дори отпечатваш целия израз, който се пресмята :-)

Вашият коментар