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

Liczba do potęgi 3

VPS Starter Arubacloud
0 głosów
899 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,650 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,650 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,650 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 253 wizyt
0 głosów
0 odpowiedzi 428 wizyt
0 głosów
0 odpowiedzi 1,001 wizyt
pytanie zadane 2 grudnia 2017 w Inne języki przez DragonCoder Nałogowiec (36,500 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...