Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Turbo Pascal] Oblicznie pola figur geometrycznych.

kubaborek 26 Maj 2010 16:53 10068 17
  • #1 26 Maj 2010 16:53
    kubaborek
    Poziom 8  

    Jestem początkujący, więc nie śmiejcie sie ze mnie :)

    Wymajstrowałem coś takiego:

    Code:
    program liczenie_pola;
    
    uses crt;
    var a,b,h,r,decyzja:

    procedure; kwad:
    begin
    writeln('Podaj dlugosc; boku i wcisnij Enter:')
    readln('a')
    writeln(a,'*',a,'='a*a);
    end;

    procedure pros;
    begin
    writeln('Podaj dlugosc; boku a i wcisnij Enter:')
    readln('a')
    writeln('Podaj dlugosc; boku b i wcisnij Enter:')
    readln('b')
    writeln(a,'*',b,'='a*b);
    end;

    procedure kolo;
    begin
    writeln('Podaj dlugosc; promienia i wcisnij Enter:')
    readln('r')
    writeln(pi,'*',r,'*'r'='3.14*r*r);
    end;

    procedure troj;
    begin
    writeln('Podaj dlugosc podstawy i wcisnij Enter:')
    readln('a')
    writeln('Podaj dlugosc wysokosci i wcisnij Enter:')
    readln('h')
    writeln(a,'*',h,'/'2'='a*h/2);
    end;

    writeln('Pole jakiej figury chcesz policzyc?');
    writeln('1-kwadratu')
    writeln('2-prostokata')
    writeln('3-kola')
    writeln('4-trojkata')
    writeln('Wpisz numer figury i kliknij Enter:');
    readln (decyzja);
    if decyzja=1 then kwad;
    if decyzja=2 then pros;
    if decyzja=3 then kolo;
    if decyzja=4 then troj;
    end.


    I nie wiem co nie gra :(
    Proszę o pomoc, z góry wieeelkie dzięki :)

    0 17
  • #2 26 Maj 2010 17:09
    arnoldziq
    Moderator Programowanie

    Ogólnie masz problemy z interpunkcją :) Za dużo apostrofów, za mało przecinków i średników.

    Code:
    program liczenie_pola;
    
    uses crt;
    var a,b,h,r,decyzja : real;

    procedure kwad;
    begin
    writeln('Podaj dlugosc; boku i wcisnij Enter:');
    readln(a);
    writeln(a,'*',a,'=',a*a);
    end;

    procedure pros;
    begin
    writeln('Podaj dlugosc; boku a i wcisnij Enter:');
    readln(a);
    writeln('Podaj dlugosc; boku b i wcisnij Enter:');
    readln(b);
    writeln(a,'*',b,'=',a*b);
    end;

    procedure kolo;
    begin
    writeln('Podaj dlugosc; promienia i wcisnij Enter:');
    readln(r);
    writeln(pi,'*',r,'*',r,'=',3.14*r*r);
    end;

    procedure troj;
    begin
    writeln('Podaj dlugosc podstawy i wcisnij Enter:');
    readln(a);
    writeln('Podaj dlugosc wysokosci i wcisnij Enter:');
    readln(h);
    writeln(a,'*',h,'/',2,'=',a*h/2);
    end;


    begin
    writeln('Pole jakiej figury chcesz policzyc?');
    writeln('1-kwadratu');
    writeln('2-prostokata');
    writeln('3-kola');
    writeln('4-trojkata');
    writeln('Wpisz numer figury i kliknij Enter:');
    readln (decyzja);
    if decyzja=1 then kwad;
    if decyzja=2 then pros;
    if decyzja=3 then kolo;
    if decyzja=4 then troj;
    end.

    0
  • #3 26 Maj 2010 17:18
    kubaborek
    Poziom 8  

    A dlaczego kiedy chce juz to uruchomic (ctrl+f9) wyskakuje mi błąd? Konkretnie error 200. (Division by zero)

    0
  • #4 26 Maj 2010 17:24
    arnoldziq
    Moderator Programowanie

    Może masz starą, nie przerobioną, wersję TP/BP ?
    Wejdź do katalogu BIN i sprawdź jaki rozmiar ma plik TURBO.TPL.

    0
  • #5 26 Maj 2010 17:32
    kubaborek
    Poziom 8  

    Turbo.tpl - 48 kilo.

    0
  • #6 26 Maj 2010 17:47
    arnoldziq
    Moderator Programowanie

    :) ... rozbroiłeś mnie :)
    Masz taki plik ?:
    TURBO.TPL 48,432 10-27-92 7:00a
    Czy taki ?:
    TURBO.TPL 48,464 03-09-93 7:01a

    0
  • #7 26 Maj 2010 18:00
    kubaborek
    Poziom 8  

    TURBO.TPL 48,464 03-09-93 7:01a

    0
  • #9 26 Maj 2010 18:14
    kubaborek
    Poziom 8  

    teraz śmiga :)
    a jak zrobic żeby wyskoczył wynik po policzeniu pola, a następnie znów menu?

    0
  • Pomocny post
    #10 26 Maj 2010 18:17
    arnoldziq
    Moderator Programowanie

    Code:
    [...]
    
    begin
    repeat
    writeln('Pole jakiej figury chcesz policzyc?');
    writeln('1-kwadratu');
    writeln('2-prostokata');
    writeln('3-kola');
    writeln('4-trojkata');
    writeln('0-koniec zabawy');
    writeln('Wpisz numer figury i kliknij Enter:');
    readln (decyzja);
    if decyzja=1 then kwad;
    if decyzja=2 then pros;
    if decyzja=3 then kolo;
    if decyzja=4 then troj;
    until decyzja=0
    end.

    0
  • #11 26 Maj 2010 18:20
    kubaborek
    Poziom 8  

    dalej mi nie wyświetla wyniku liczenia...

    jak zrobic żeby po wpisaniu 1. danej i 2. danej wyskoczył wynik działania przykładowo tego a*h/2?

    0
  • Pomocny post
    #12 26 Maj 2010 18:27
    arnoldziq
    Moderator Programowanie

    [Turbo Pascal] Oblicznie pola figur geometrycznych.
    Trochę nieszczęśliwie, bez formatu, to wygląda, ale na 100% coś tam liczy :)

    W ostatnich liniach kodu powinno być "=" zamiast "<>".

    Code:
    [...]
    
    if decyzja=4 then troj;
    until decyzja=0
    end.

    0
  • #13 26 Maj 2010 18:29
    kubaborek
    Poziom 8  

    Chłopie, teraz wszystko gra w 100 %!
    Teraz to juz rozumiem i dzieki Tobie może będe miał 6 z informatyki na koniec , hehe= ))

    Wielkie dzieki :):) !!!!

    0
  • #14 01 Cze 2010 17:59
    kubaborek
    Poziom 8  

    Mam jeszcze jeden problem. Jak przejść z jednej procedury do drugiej??

    Code:
    program liczenie_pola;
    
    uses crt;
    var a,b,h,r,w4,decyzja : real;

    procedure kwad;
    begin
    writeln('Podaj dlugosc boku i wcisnij Enter:');
    readln(a);
    writeln(a,'*',a,'=',a*a);
    end;

    procedure pros;
    begin
    writeln('Podaj dlugosc boku a i wcisnij Enter:');
    readln(a);
    writeln('Podaj dlugosc boku b i wcisnij Enter:');
    readln(b);
    writeln(a,'*',b,'=',a*b);
    end;

    procedure kolo;
    begin
    writeln('Podaj dlugosc promienia i wcisnij Enter:');
    readln(r);
    writeln(pi,'*',r,'*',r,'=',3.14*r*r);
    end;

    procedure troj;
    begin
    writeln('Podaj dlugosc podstawy i wcisnij Enter:');
    readln(a);
    writeln('Podaj dlugosc wysokosci i wcisnij Enter:');
    readln(h);
    writeln(a,'*',h,'/',2,'=',a*h/2);
    end;

    procedure wybor;
    begin
    writeln('Czy na pewno chcesz zakonczyc? 1-Tak, inna liczba-Nie');
    readln(a);
    if a=1 then exit;
    if a<>1 then [b]xxxx[/b];
    end;

    begin
    repeat
    writeln('LICZENIE POLA by Kuba Borkowski');
    writeln('Pole jakiej figury chcesz policzyc?');
    writeln('1-kwadratu');
    writeln('2-prostokata');
    writeln('3-kola');
    writeln('4-trojkata');
    writeln('0-zakoncz');
    writeln('Wpisz numer figury i kliknij Enter:');
    readln (decyzja);
    if decyzja=1 then kwad;
    if decyzja=2 then pros;
    if decyzja=3 then kolo;
    if decyzja=4 then troj;
    if decyzja=0 then wybor;
    until decyzja=0
    end.


    Nie wiem co wpisać wmiejsce xxxx...

    Kiedu przed to:
    Code:
    begin
    
    repeat
    writeln('LICZENIE POLA by Kuba Borkowski');
    writeln('Pole jakiej figury chcesz policzyc?');
    writeln('1-kwadratu');
    writeln('2-prostokata');
    writeln('3-kola');
    writeln('4-trojkata');
    writeln('0-zakoncz');
    writeln('Wpisz numer figury i kliknij Enter:');
    readln (decyzja);
    if decyzja=1 then kwad;
    if decyzja=2 then pros;
    if decyzja=3 then kolo;
    if decyzja=4 then troj;
    if decyzja=0 then wybor;
    until decyzja=0
    end.

    postawię "procedure menu" i w miejsce xxxx menu, nie działa...

    Co robić??

    0
  • #15 01 Cze 2010 19:39
    McMonster
    Poziom 32  

    Zrobić sobie procedurę menu, a potem na końcu tylko:

    Code:

    begin
        menu;
    end.

    0
  • #16 01 Cze 2010 20:28
    arnoldziq
    Moderator Programowanie

    zrób tak :

    Code:
    procedure wybor;
    
    begin
    writeln('Czy na pewno chcesz zakonczyc? 1-Tak, inna liczba-Nie');
    readln(a);
    if a=1 then halt;
    if a<>1 then menu;
    end;

    procedure menu;
    begin
    repeat
    writeln('LICZENIE POLA by Kuba Borkowski');
    writeln('Pole jakiej figury chcesz policzyc?');
    writeln('1-kwadratu');
    writeln('2-prostokata');
    writeln('3-kola');
    writeln('4-trojkata');
    writeln('0-zakoncz');
    writeln('Wpisz numer figury i kliknij Enter:');
    readln (decyzja);
    if decyzja=1 then kwad;
    if decyzja=2 then pros;
    if decyzja=3 then kolo;
    if decyzja=4 then troj;
    if decyzja=0 then wybor;
    until decyzja=0
    end;

    begin
      repeat
        menu;
        wybor;
      until false;
    end.

    0
  • #17 01 Cze 2010 20:52
    kubaborek
    Poziom 8  

    Tak właśnie miałem zrobione,

    procedure wybor;
    begin
    writeln('Czy na pewno chcesz zakonczyc? 1-Tak, inna liczba-Nie');
    readln(a);
    if a=1 then halt;
    if a<>1 then menu;
    end;

    i w miejscu pogrubionego "menu" wyskakuje bład 3: nieznany identyfikator.

    -1
  • #18 01 Cze 2010 21:41
    arnoldziq
    Moderator Programowanie

    Daj w programie procedurę menu , przed procedurą wybor. Jeżeli procedura jest zadeklarowana po innej to ta pierwsza jej "nie widzi".

    0