ďťż

Ładny brzuch

Witam, dopiero zaczynam "zabawę" z programowaniem i mam problem. Chciałem napisać program który wyliczyłby potęgi - tylko to, prosty program ale jak zwykle coś poszło nie tak .. Poniżej podaję kod, jeżeli ktoś wie co jest nie tak to będę wdzięczny za pomoc ..

program potega;
uses
crt;
var
a:byte; {podstawa}
b:byte; {wykladnik}
wynik:integer;
i:byte; {ilość operacji}
begin
clrscr;
wynik:=1;
i:=1;
write('Podaj podstawe: ');
read( a );
write('Podaj potege: ');
read( b );
if b=0 then
wynik:=1
else
if b=1 then
wynik:=a
else
repeat
i:=i+1;
wynik:=a^b;
until
i>=b;

write('wynik wynosi: ',wynik);
readln;
readln;
end.



Po pierwsze wcięcia!!
program potega; uses crt; var a:byte; {podstawa} b:byte; {wykladnik} wynik:integer; i:byte; {ilość operacji} begin clrscr; wynik:=1; i:=1; write('Podaj podstawe: '); read( a ); write('Podaj potege: '); read( b ); if b=0 then wynik:=1 else if b=1 then wynik:=a else repeat i:=i+1; wynik:=a^b; until i>=b; write('wynik wynosi: ',wynik); readln; end.
Użytkownik kar edytował ten post 02 maj 2009, 17:43
Przepraszam za brak wcięć, nie zauważyłem, że się usunęły po wklejeniu .. A co do tego kodu co podałeś to znak "^" pokazuje mi jako błąd .. Też tak wpisałem przy któreś próbie - najprostsza metoda ;p

^ zamień na * i popraw mnożenie bo mnożysz nie to co trzeba

program potega; uses crt; var a:byte; {podstawa} b:byte; {wykladnik} wynik:integer; i:byte; {ilość operacji} begin clrscr; wynik:=1; i:=1; write('Podaj podstawe: '); read( a ); write('Podaj potege: '); read( b ); if b=0 then wynik:=1 else if b=1 then wynik:=a else repeat i:=i+1; wynik:=a*a; until i=b; write('wynik wynosi: ',wynik); readln; readln; end.
Użytkownik Grejpfrut14 edytował ten post 03 maj 2009, 09:24


Dalej nie działa :/ Działa tylko do 2 potęgi, na każdą inną źle liczy :(
Nie wiem, gdzie tu jest błąd ?

przyznaję się, jestem debilem ;<

program potega; uses crt; var a:byte; {podstawa} b:byte; {wykladnik} wynik:integer; i:byte; {ilość operacji} begin clrscr; wynik:=1; i:=1; write('Podaj podstawe: '); read( a ); write('Podaj potege: '); read( b ); if b=0 then wynik:=1 else if b=1 then wynik:=a else begin wynik:=a; repeat i:=i+1; wynik:=wynik*a; until i=b; end; write('wynik wynosi: ',wynik); readln; readln; end.

to juz powinno dzialac, nie mam jak sprawdzic u siebie niestety ;<

Już znalazłem błąd i naprawiłem wszystko :) Powinno być tak:
program potega; uses crt; var a:byte; {podstawa} b:byte; {wykladnik} wynik:integer; i:byte; {ilość operacji} begin clrscr; wynik:=1; write('Podaj podstawe: '); read( a ); write('Podaj potege: '); read( b ); if b=0 then wynik:=1 else if b=1 then wynik:=a; repeat i:=i+1; wynik:=wynik*a; until i=b; write('wynik wynosi: ',wynik); readln; readln; end.

Ten wpis na początku i:=1 wszystko psuł bo omijał w ten sposób jedno z działań ...
Dzięki wszystkim za pomoc :)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •