logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

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

Villemo 24 Lis 2005 22:06 4686 9
REKLAMA
  • #1 2023405
    Villemo
    Poziom 11  
    Posty: 5
    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ź.
  • REKLAMA
  • Pomocny post
    #2 2025127
    wddf
    Poziom 18  
    Posty: 192
    Pomógł: 26
    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;
  • REKLAMA
  • #3 2026031
    Villemo
    Poziom 11  
    Posty: 5
    Wielkie dzieki, jesteś wspanialy - naprawde. Teraz być moze sobie jakoś z tym poradze.
  • #4 2041849
    Villemo
    Poziom 11  
    Posty: 5
    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
  • Pomocny post
    #5 2042212
    johny_84
    Poziom 16  
    Posty: 235
    Pomógł: 13
    Ocena: 3
    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;)
  • REKLAMA
  • #6 2042470
    dziqus
    Poziom 18  
    Posty: 208
    Pomógł: 17
    Ocena: 15
    Villemo napisał:
    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 2052111
    Villemo
    Poziom 11  
    Posty: 5
    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 2052243
    wddf
    Poziom 18  
    Posty: 192
    Pomógł: 26
    "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.
  • REKLAMA
  • #9 2053912
    Villemo
    Poziom 11  
    Posty: 5
    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 2184058
    kosmo785675
    Poziom 11  
    Posty: 14
    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.

Podsumowanie tematu

✨ Dyskusja dotyczy stworzenia programu w Free Pascalu obliczającego pole i wysokość trójkąta na podstawie znanych boków lub boków i kąta między nimi. Wskazano zastosowanie wzoru Herona do obliczenia pola mając trzy boki oraz wzoru pola trójkąta z dwóch boków i kąta (P=1/2ab*sinγ). Zaproponowano implementację programu z wyborem trybu wczytywania danych (3 boki lub 2 boki i kąt) oraz odpowiednimi obliczeniami. Podano przykładowy kod programu z użyciem biblioteki Crt, deklaracją zmiennych typu Real i Integer, obsługą wczytywania danych, obliczaniem pola i wysokości oraz wyświetlaniem wyników. Zwrócono uwagę na konieczność dodania zmiennej h do deklaracji oraz usunięcie niepotrzebnej biblioteki Math, która powodowała błędy kompilacji. Poradzono, aby po wykonaniu programu dodać pętlę oczekującą na naciśnięcie klawisza, by uniknąć natychmiastowego zamknięcia okna konsoli. Użytkownicy dzielili się także problemami z uruchomieniem programu i prosili o pełny kod, który został udostępniony. W dyskusji pojawiły się także pytania o poprawność algorytmu Herona oraz przykładowe fragmenty kodu do weryfikacji.
Wygenerowane przez model językowy.
REKLAMA