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

Liczba do potęgi 3

Object Storage Arubacloud
0 głosów
937 wizyt
pytanie zadane 23 marca 2021 w Inne języki przez Martita Bywalec (2,470 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 (40,970 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,470 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 (40,970 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,470 p.)
ok jak to zrobić?

To ma być prosty kod.
komentarz 23 marca 2021 przez reaktywny Nałogowiec (40,970 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,470 p.)
Działa dzięki

Podobne pytania

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

92,548 zapytań

141,391 odpowiedzi

319,511 komentarzy

61,932 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...