Wątek przeniesiony 2015-03-07 00:29 z Delphi i Pascal przez furious programming.

Program obliczający długość odcinka nie działa prawidłowo

0

Witam mam do napisania program obliczający długość odcinka z zapisem do pliku problem w tym że coś jest nie tak tylko nie wiem co

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
 function Dl(Xp,Yp,Xk,Yk:real):real;
 var f:file;
     t:text;
     z:file of byte;

begin
  writeln('podaj  Xp');
  readln(Xp);
  writeln('podaj Yp');
  readln(Yp);
  writeln('podaj  Xk');
  readln(Xk);
  writeln('podaj Yk');
  readln(Yk);
  Dl:=((Xk-Xp)*(Xk-Xp)+(Yk-Yp)*(Yk-Yp));
  begin
  Assign(t,'dane.txt');
  rewrite(t);
  writeln(t,'Dl');
 close(t);

end.

dodanie znacznika <code class="delphi"> - @furious programming

1

Zacznij od doprowadzenia programu do porządku, coś w tym stylu.

program Project1;

{$APPTYPE CONSOLE}

uses
   SysUtils;

 var f:file;
     t:text;
     z:file of byte;

     Xp,Yp,Xk,Yk:Real;
     Dl: Real;

function funDl(AXp,AYp,AXk,AYk:real):real;
begin
   // .......
   funDl:=((AXk-AXp)*(AXk-AXp)+(AYk-AYp)*(AYk-AYp));
end;

begin
   // żeby zapisać liczbę jako tekst trzeba ją zamienić w tekst/ string, to coś jak konwersja liczby na string

end.
0
LuizaLotka napisał(a)

problem w tym że coś jest nie tak tylko nie wiem co

A są tego jakieś objawy, czy ubzdurałeś sobie, że program jest błędny i nie możesz błędu znaleźć..? Jeżeli kod nie działa prawidłowo, to podawaj co dokładnie dzieje się nie tak jak należy; Nie każdemu chce się analizować niesformatowany kod i ewentualnie testować go lokalnie;

Głównym błędem jest to, że kod nie daje się nawet skompilować, bo już pomijając bardzo złe formatowanie - nie zamknąłeś jednego bloku słówkiem End; Zresztą kompilator dokładnie podpowiada co jest z kodem nie tak:

[Error] Project2.dpr(30): 'END' expected but end of file found

Gdybyś nie znał angielskiego, to Ci przetłumaczę:

[Błąd] Project2.dpr(30): oczekiwano 'END', jednak znaleziono koniec pliku

// żeby zapisać liczbę jako tekst trzeba ją zamienić w tekst/ string, to coś jak konwersja liczby na string

@Integers - Writeln to taki dziwoląg, który umożliwia bezpośrednie podanie liczby, a konwersją zajmuje się sam; Działa to dokładnie tak samo jak w przypadku wyświetlania danych na ekranie konsoli, tyle że wyjście jest w tym przypadku inne;

Jeśli pytacz nie użyje wspomnianej procedury, to będzie musiał przekonwertować (nie tak jakby) liczbę na tekst, np. za pomocą funkcji FloatToStr, lub uniwersalnej funkcji Format.

0

Poza tym zapisujesz do pliku ciąg znaków, a nie liczbę.
No i sam wzór też jest zły.

1

We wzorze na długość odcinka brakuje pierwiastka.

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