Program do obliczania pierwiastka - pytanie.

0

Witam wszystkich :)

Obecnie uczę się pisać w Pascalu więc pobrałem sobie Free Pascal. Napisałem parę prostych programów z dodawaniem dwóch liczb. Teraz piszę pierwiastkowanie i tutaj moje pytanie. Na wstępie, mój kod źródłowy prezentuję się tak:

program pierwiastek;
uses crt;
var liczba:real;
begin
clrscr;
Writeln('podaj liczbe z ktorej chcesz wyciagnac pierwiastek: ');
readln(liczba);
liczba:=sqrt(liczba);
Writeln('Pierwiastek to: ',liczba:1:0);

if liczba=0 then
Writeln('to tak nie dziala niestety');
repeat until keypressed;
end.

I tutaj jest dziwna rzecz. Jeżeli po var jest:

liczba:real;

program działa. Jeżeli jest

liczba: integer;

Program nie działa. Pokazuje błąd:

Error: Incompatible types: got "Extended" expected "Smallint"

Czy ktoś jest na chłopski rozum wytłumaczyć mi dlaczego?

Pozdrawiam

dodanie znaczników <code class="pascal"> i <quote> dla treści błędu + usunięcie prefiksu z tytułu wątku - fp

0

Niezgodne typy dostał extended a chce smalint

0

A dlaczego tak ?

0

A dlaczego nie poszukasz w google? To można znaleźć w 5 sekund

1

sqrt zawsze zwraca liczbę zmiennoprzecinkową (extended i podobne), a nie całkowitoliczbową (integer i podobne).
Musiałbyś zrobić: x := round(sqrt(x));

0

Dziękuje bardzo :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1