• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Liczba do potęgi 3

Cloud VPS
0 głosów
1,608 wizyt
pytanie zadane 23 marca 2021 w Inne języki przez Martita Bywalec (2,520 p.)

Proszę o pomoc. Mam za zadanie napisać program, w Pascalu, który liczy potęgę, a dokładnie Liczbę do potęgi 3. Napisałam program w C++ i chcę go przekształcić na Pascal. Nigdy nie miałam Pascala. Nawet nie mieliśmy podstaw. Częściowo udało mi się przekształcić kod, ale resztę nie mam zielonego pojęcia jak zrobić. Szukałam 2 dni i nie znalazłam. Jest to na zaliczenie przedmiotu nie związanego z nauką programowania. 

C++

#include<stdio.h>
#include<iostream>
 
using namespace std; //przestrzen nazw std
 
//funkcja obliczajaca potęge W liczby A
int potega(int P,int W)
{
if (W==0)return 1;
else
return P=P*potega(P,--W);
}
 
//funkcja główna
int main()
{
cout << "23 ^ 3 = " ;
cout << potega(23,3);
return 0;
}

Pascal

program potega;
var 
 potega(P: integer,W: integer);
 
begin
   (W==0) 
  P=P*potega(P,--W);
end
begin
  wartosc := potega(23,3);
  write("Trzecią potęgą liczby 2 jest : ");
  writeln(wartosc);
end.

 

1 odpowiedź

0 głosów
odpowiedź 23 marca 2021 przez reaktywny Nałogowiec (46,230 p.)
wybrane 24 marca 2021 przez Martita
 
Najlepsza

Jeśli to ma liczyć ręcznie, to kod będzie bardzo podobny.

Zamień --W

na

W := W - 1;

A P=P*potega(P,--W);

na:

P:=P * potega(P, W);

W pascalu / Delphi jest też funkcja gotowa power(x, y). Jest też operator ** znany np. z Pythona.

function Potega(x : Integer, y: Integer): Real;
begin
    if (y == 0) Potega := 1;
    y = y - 1;
    Potega := x * Potega(x, y);   
end;

Trzeba przetestować ten kod, bo nie mam pewności, czy jest OK.

komentarz 23 marca 2021 przez Martita Bywalec (2,520 p.)

@reaktywny,
 Może ten kod będzie łatwiej poprawić

program potega;
var
 potega(P: integer,W: integer);
  
begin
   W := W - 1; 
  P:=P * potega(P, W);
end
begin
  wartosc := potega(23,3);
  write("Trzecią potęgą liczby 2 jest : ");
  writeln(wartosc);
end.

Wyskakuje błąd

main.pas(3,2) Error: Duplicate identifier "potega"
main.pas(3,8) Fatal: Syntax error, ":" expected but "(" found
Fatal: Compilation aborted

 

 

komentarz 23 marca 2021 przez reaktywny Nałogowiec (46,230 p.)
Boje się, że ten z Internetu jest lepszy, bo w pascalu (którego nie pamiętam, ani nigdy nie znałem dobrze) w dość nietypowy sposób wykonuje się rekurencję.

Można to przerobić na kod iteracyjny, bez rekurencji, co będzie prostsze.
komentarz 23 marca 2021 przez Martita Bywalec (2,520 p.)
ok jak to zrobić?

To ma być prosty kod.
komentarz 23 marca 2021 przez reaktywny Nałogowiec (46,230 p.)

OK, podsyłam gotowca....

program Hello;

Uses sysutils;

Var pow_result : Real;
   
procedure Power(BASE1,VALUE2:REAL; var RECURSION2:REAL);
 var
   BASE, VALUE:REAL;
 
        function RECURSION(VALUE:REAL):REAL;  {Synonym of Power}
          begin{RECURSION}
           if VALUE = 0 then
            RECURSION := 1
            else
            RECURSION := BASE*RECURSION(VALUE-1);
          end;{RECURSION}
       begin
         BASE:=BASE1;
         VALUE:=VALUE2;
         RECURSION2:=RECURSION(VALUE)
      end;
 
   
begin
  pow_result := 0.0;
  writeln('Potęgowanie 2**4 = 4**2');
  Power(2, 4, pow_result);
  writeln(FloatToStr(pow_result));
  Power(4, 2, pow_result);
  writeln(FloatToStr(pow_result));
end.

 

komentarz 24 marca 2021 przez Martita Bywalec (2,520 p.)
Działa dzięki

Podobne pytania

0 głosów
2 odpowiedzi 312 wizyt
0 głosów
0 odpowiedzi 657 wizyt
0 głosów
0 odpowiedzi 1,231 wizyt
pytanie zadane 2 grudnia 2017 w Inne języki przez DragonCoder Nałogowiec (36,500 p.)

93,460 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,838 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...