Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

POMOCY!!! program w free pascalu obliczajacy pole i wysokość

Villemo 24 Nov 2005 22:06 4434 9
  • #1
    Villemo
    Level 11  
    Ehh mam problem, strasznie duży problem, jestem uczennicą gimnazjum i wiem że nie wszyscy będa chcieli mi pomóc bo jestem za młoda itp ale w was moja ostatnia nadzieja.
    Z komputerem na tyle na ile jestem obeznana znam html umiem obsługiwac niektóre programy ale niestety to nie wszytko bym miala 5 z informatyki, potrzebuje zrobic PROGRAW W FREE PASCALU OBLICZAJACY POLE I WYSOKOŚĆ TRÓJKĄTA KIEDY ZNAMY TYLKO JEGO BOKI LUB KIEDY ZNAMI BOKI I KĄTY.
    czy ktoś moze mi powiedziec jak to zrobic???
    prosze błam o szybką odpowiedź.
  • Helpful post
    #2
    wddf
    Level 18  
    pole trójkąta mając trzy boki obliczysz ze wzoru Herona: P=pierwiastek(p(p-a)(p-b)(p-c)), gdzie p=(a+b+c)/2, a znając dwa boki i kąt miedzy nimi: P=1/2ab*siny, no i teraz wystarczy to przeniesc do pascala:), proponuje na warunku zapytac o dane które znamy (albo 3 boki, albo 2 i kat miedzy nimi) w zależności od wyboru użytkownika, zapytać go o te dane i wykonać właściwe obliczenia. Pierwsza możliwość mniej wiecej tak by wygladała (chodzi o samo zapytanie o dane i obliczenia)
    writeln('Podaj a: ');
    readln(a);
    // itd do c;
    p:=(a+b+c)/2;
    pole:=sqrt(p*(p-a)*(p-b)*(p-c));
    writeln('Pole trojkata wynosi: ',pole);
    readkey;
  • #3
    Villemo
    Level 11  
    Wielkie dzieki, jesteś wspanialy - naprawde. Teraz być moze sobie jakoś z tym poradze.
  • #4
    Villemo
    Level 11  
    ehh wiem ze moze wymagam zbyt wiele ale naprawde nie potrafie poradzic sobie z tym programem pisze najprostszy jaki sie da obliczajacy sume dwoch liczb zrobie compile jest udane to daje run to sie nie chce uruchomic mrugnie jakies okienko ktore znika co zrobic?

    Dodano po 17 [minuty]:

    ehh czy ktos moze mi pomoc i napisac caly ten program bo ja nie moge zalamalam sie cos mi nie idzie ja nie wiem POMOCY BLAGAM POMOCY
  • Helpful post
    #5
    johny_84
    Level 16  
    Witam
    Nie ladnie tak dawac gotowce, ale jak ktos prosi to nie ma wyboru:
    program trojkat;
    uses
    Math, //chyba crt ale nie dam glowy// Crt;

    var
    a, b, c, p, pole, gamma: Real;
    temp: Integer;
    begin
    WriteLn('Jesli znamy a, b, c to naciskamy 1 jesli znamy a, b i kat to 2');
    Write('>');
    ReadLn(temp);

    case temp of
    1: begin
    WriteLn('Podaj po kolei a b c oddzielajac je spacjami lub naciskajac po kazdej ENTER');
    ReadLn(a, b, c);
    p := (a + b + c)/2;
    pole := sqrt(p*(p - a)*(p - b)*(p - c));
    h := 2*pole/a;
    WriteLn('Pole trojkata o bokach a=', a:0:2,', b=', b:0:2,', c=', c:0:2,' wynosi p=', pole:0:2);
    WriteLn('Wysokosc h=', h:0:2);
    end;
    2: begin
    WriteLn('Podaj po kolei a, b oraz kat oddzielajac je spacjami lub naciskajac po kazdej ENTER');
    ReadLn(a, b, gamma);
    pole := a*b*sin(gamma*pi/180)/2;
    h := 2*pole/a;
    WriteLn('Pole trojkata o bokach a=', a:0:2,', b=', b:0:2,' i kacie k=', gamma:0:0,' wynosi p=', pole:0:2);
    WriteLn('Wysokosc h=', h:0:2);
    end;
    end;

    ReadLn;

    end.


    Tylko trzeba na poczatku wlaczyc odpowiednie biblioteki bo ja nie pamitam jakie dokladnie.

    Pozdro;)
  • #6
    dziqus
    Level 18  
    Villemo wrote:
    ehh wiem ze moze wymagam zbyt wiele ale naprawde nie potrafie poradzic sobie z tym programem pisze najprostszy jaki sie da obliczajacy sume dwoch liczb zrobie compile jest udane to daje run to sie nie chce uruchomic mrugnie jakies okienko ktore znika co zrobic?
    przed "end." dopisac np "repeat until keypressed" zeby program po wykonaniu czekal na nacisniecie klawisza zanim powroci do okna ze zrodlem. po takim "mrugnieciu" mozna zobaczyc ekran z wykonanym programem naciskajac CHYBA alt+f5, trzebaby zobaczyc w menu jaki to skrot
  • #7
    Villemo
    Level 11  
    Coś ten program nie działa, bo ciągle mi wyskakuje, że nie może znaleźć temp. A potrzebuje to zrobic na jutro. Może sprawdź jeszcze raz to, bo ja zmieniam jakieś różne rzeczy, ale to nic nie daje. Prosze. Tylko obby jak najszybciej. Będe bardzo wdzięczna.
  • #8
    wddf
    Level 18  
    "Poprawiony" program johny_84. Wystarczyło pokierowac się wskazówką autora zeby pokombinowac z bibliotekami - usunąłem po uses math, następnie dodałem do deklaracji zmiennych h. O tym co trzeba było zrobić informował sam kompilator, najpierw "krzyczac" ze niemoże znaleźć biblioteki math, a potem o braku deklaracji zmiennej h. Tak szczerze to powinnas troszke miec pojecia skoro masz ambicje na pięć z infy.

    program trojkat;
    uses
    Crt;

    var
    h, a, b, c, p, pole, gamma: Real;
    temp: Integer;
    begin
    WriteLn('Jesli znamy a, b, c to naciskamy 1 jesli znamy a, b i kat to 2');
    Write('>');
    ReadLn(temp);

    case temp of
    1: begin
    WriteLn('Podaj po kolei a b c oddzielajac je spacjami lub naciskajac po kazdej ENTER');
    ReadLn(a, b, c);
    p := (a + b + c)/2;
    pole := sqrt(p*(p - a)*(p - b)*(p - c));
    h := 2*pole/a;
    WriteLn('Pole trojkata o bokach a=', a:0:2,', b=', b:0:2,', c=', c:0:2,' wynosi p=', pole:0:2);
    WriteLn('Wysokosc h=', h:0:2);
    end;
    2: begin
    WriteLn('Podaj po kolei a, b oraz kat oddzielajac je spacjami lub naciskajac po kazdej ENTER');
    ReadLn(a, b, gamma);
    pole := a*b*sin(gamma*pi/180)/2;
    h := 2*pole/a;
    WriteLn('Pole trojkata o bokach a=', a:0:2,', b=', b:0:2,' i kacie k=', gamma:0:0,' wynosi p=', pole:0:2);
    WriteLn('Wysokosc h=', h:0:2);
    end;
    end;

    ReadLn;

    end.
  • #9
    Villemo
    Level 11  
    heh tamten post pisala moja kolezanka musisz wiedziec ze wiele osob z mojej klasy korzystalo z tej strony - niestety nauczyciel od informatyki raczej nie kwapil sie by nas tego nauczyc
  • #10
    kosmo785675
    Level 11  
    czy moze ktos mi to sprawdzic czy to jest dobry algorytm na Herona ??

    program trojkat;
    uses Crt;

    var
    a, b, c, pole: Real;
    begin

    WriteLn('Podaj po kolei a b c ');
    ReadLn(a, b, c);
    writeln('Podaj a');
    readln(a);
    writeln('Podaj b');
    readln(b);
    writeln('Podaj c');
    readln(c);
    p := (a + b + c)/2;
    pole := sqrt(p*(p - a)*(p - b)*(p - c));

    WriteLn('Pole trojkata o bokach a=', a:0:2,', b=', b:0:2,', c=', c:0:2,' wynosi p=', pole:0:2);
    end;
    ReadLn;
    repeat until keypressed;
    end.