Problem s rocnikovou pracou..

Programovacie jazyky, rady, poradňa...
kukiak
Addict
Addict
Príspevky: 4422
Registrovaný: 24 máj 2005, 19:04
Bydlisko: BA
Kontaktovať používateľa:

Problem s rocnikovou pracou..

Príspevok od používateľa kukiak »

Zdravim.. toto by mala byt nasa rocnikova praca.. Ucel je taky aby to bol akysi program, do ktoreho sa zadavaju mena a pocet bodov ziakov, porgram ich vyhodnuje, cele sa to ma dat do akej tabulky.. Tabulku som nerobil ja a proste mi ju neotvori.. Program skonci po zadani volby 2.

Prosim ak bude niekdo taky dobry a skusi tam najst chybu a pomoze nam nejak.. tu ide o zachranu zivota..

Kód: Vybrať všetko

PROGRAM projekt;
USES CRT,GRAPH;
CONST MIN = 29.9;
TYPE student = record
        meno:String;
        body:Integer;
        per:Real;
        end;
VAR     i,max,poc,v,gd,gm,min_b,max_b,poz:Integer;
        pole:array[1..100] of student;
        priemer,suc:real;

BEGIN
     ClrScr;
     gd:=detect;
     initgraph(gd,gm,'c:\progra\units');

     Write('Zadajte poźet §iakov: ');
     ReadLn(poc);
     Write('Zadajte maxim lny poźet bodov: ');
     ReadLn(max);
     WriteLn('1');
     While true Do
     begin

     WriteLn('M E N U');
     WriteLn('--------');
     WriteLn('1. Zaźaś zad vanie věsledkov');
     WriteLn('2. Zobraziś tabu–ku');
     WriteLn('3. Zobraziś çtatistick‚ věsledky');
     WriteLn('INµ VO•BA: KONIEC PROGRAMU');
     WriteLn('2');
     Write('ZADAJTE VAćU VO•BU PROSÖM: ');
     ReadLn(v);
     CASE v OF
     1:begin
        For i:=1 to poc do
                begin
                        Write('Zadajte priezvisko §iaka ź.',i,': ');
                        ReadLn(pole[i].meno);
                        Write('Zadajte poźet bodov §iaka: ');
                        ReadLn(pole[i].body);
                        While ((pole[i].body>max) or (pole[i].body<0)) do
                               begin
                                Write('Zadajte poźet bodov §iaka: ');
                                ReadLn(pole[i].body);
                               end;
                        pole[i].per:=((100*pole[i].body)/max);
                end;
       end;
     2:begin
                poz:=1;
                Line(0,0,639,0);
                gotoxy(0,0);
                Write('MENO');
                gotoxy(15,0);
                Write('BODY');
                gotoxy(30,0);
                Write('PERCENTA');
                gotoxy(45,0);
                Write('HODNOTENIE');
                Line(0,20,480,20);
                Line(112,0,112,(poc*20));
                Line(232,0,232,(poc*20));
                Line(352,0,352,(poc*20));
                Line(472,0,472,(poc*20));

                For i:=1 to poc do
                        begin
                                gotoxy(0,poz);
                                Write(pole[i].meno);
                                gotoxy(15,poz);
                                Write(pole[i].body);
                                gotoxy(30,poz);
                                Write(pole[i].per);
                                If ((pole[i].per<=100) and (pole[i].per>=90)) then
                                       begin
                                        gotoxy(45,poz);
                                        Write('VíBORNí');
                                       end;
                                If ((pole[i].per<=89.9) and (pole[i].per>=75)) then
                                       begin
                                        gotoxy(45,poz);
                                        Write('CHVµLITEBNí');
                                       end;
                                If ((pole[i].per<=74.9) and (pole[i].per>=50)) then
                                       begin
                                        gotoxy(45,poz);
                                        Write('DOBRí');
                                       end;
                                If ((pole[i].per<=49.9) and (pole[i].per>=30)) then
                                       begin
                                        gotoXY(45,poz);
                                        Write('DOSTATO¬Ní');
                                       end;
                                If (pole[i].per<30) then
                                       begin
                                        gotoxy(45,poz);
                                        Write('NEDOSTATO¬Ní');
                                       end;
                                Line(0,(poz*20),472,(poz*20));
                                poz:=poz+1;

                        end;
     end;
     3:begin
        min_b:=pole[1].body;
        max_b:=pole[1].body;
        suc:=0;

        For i:=1 to poc do
                begin
                        If (pole[i].body<min_b) Then min_b:=pole[i].body;
                        If (pole[i].body>max_b) Then max_b:=pole[i].body;
                        suc:=suc+pole[i].body;
                end;
        priemer:=suc/poc;
        WriteLn('MINIMUM:');
        For i:=1 to poc do
                begin
                        If (pole[i].body=min_b) Then
                                WriteLn('MENO: ',pole[i].meno,' BODY: ',pole[i].body);
                end;
        WriteLn('MAXIMUM:');
        For i:=1 to poc do
                begin
                        If (pole[i].body=max_b) Then
                                WriteLn('MENO: ',pole[i].meno,' BODY: ',pole[i].body);
                end;
        WriteLn('NEUSPELI:');
        For i:=1 to poc do
                begin
                        If (pole[i].per<30) Then
                                WriteLn('MENO: ',pole[i].meno);
                end;
       end;
     ELSE break;
       end;
       end;
     ReadLn;
     closegraph;
END.


juho
Star
Star
Používateľov profilový obrázok
Príspevky: 551
Registrovaný: 11 máj 2007, 21:16

Príspevok od používateľa juho »

tebe uz nepomoze ani riadna davka LSD.
v pascale miesas graph s textovym prostredim. neviem ci to tvoj pascal podporuje ale mne sa zda ze sa to robi v C-ecku.
a bgi mas v units?
a ked som to ako tak upravil ani to line nejak nefungovalo. urobilo tam hore take tri bunky a stvrtu neuplnu.
co by si chcel s tym programom robit ?
kukiak
Addict
Addict
Príspevky: 4422
Registrovaný: 24 máj 2005, 19:04
Bydlisko: BA
Kontaktovať používateľa:

Príspevok od používateľa kukiak »

Ja som myslel, ze ta tabulka je uz hotova, ze je tam len mala chybicka, ale ako vidim tak velke hovno. Ta tabulka nakoniec nemusi byt ani v grafickom rezime ak to teda nepojde. Proste len aby tie hodnoty nejak prehladne vypisalo do nejakeho zoskupenia, aby sa to dalo z toho citat..

Ja viem, vypravaj ka neandertalec ale fakt som duty.. V tej tabulke musia byt meno,body,pocet percent a hodnotenie.
juho
Star
Star
Používateľov profilový obrázok
Príspevky: 551
Registrovaný: 11 máj 2007, 21:16

Príspevok od používateľa juho »

tak potom z toho vymaz initgraph a tie graficke funkcie line a tak
kukiak
Addict
Addict
Príspevky: 4422
Registrovaný: 24 máj 2005, 19:04
Bydlisko: BA
Kontaktovať používateľa:

Príspevok od používateľa kukiak »

Uz sme to nejak zbuchali, je to prehladne normalne.

Mam len posledny problem. Potrebujeme dorobit case v of 4. Malo by to vykreslit stlpcovy diagram s poctom bodov jednotlivych ziakov :? . Ja nemam sajnu.. teda teoreticky hej.. Pocet bodov bude aka si mierka a cez "bar" sa to bude vykreslovat.. ale fakt neviem jak nato. Ak mi niekdo pomoze do 22:30 poslem mu na ucet 50sk na pivo :D

//autoeditácia príspevku ( 12 Jun 2008, 22:42 )
ak by sa nahodou niekdo nudil, tak este rano sem pozriem..

fakt vas ludia prosiiiiim :?
Prílohy
projekt55.rar
(1.08 KiB) 52 stiahnutí
juho
Star
Star
Používateľov profilový obrázok
Príspevky: 551
Registrovaný: 11 máj 2007, 21:16

Príspevok od používateľa juho »

ani si tam tu 4 nenapisal a okrem toho je to cudne ked ti zobere prazdny writeln(); so zatvorkami asi mas nejaky novy pascal ktory to ignoruje.
malo by to vyzerat nejak takto.

Kód: Vybrať všetko

4:begin   gd:=9;gm:=2;
  initgraph(gd,gm,'..\bgi');
   For i:=1 to poc do
                        begin
                           str(pole[i].body,body);
                           settextstyle(0,0,1);
                           outtextxy(i*20,300,body);
                           settextStyle(0,1,1);
                           outtextxy(i*20+5,0,pole[i].meno);
                           bar(i*20+5,280,i*20+15,280-pole[i].body);
                        end;readln;
        closegraph;

  end;
treba tam doplnit kniznicu graph a do var dat este body:string; to je len hruby nacrt dopln si to ako chces.
kukiak
Addict
Addict
Príspevky: 4422
Registrovaný: 24 máj 2005, 19:04
Bydlisko: BA
Kontaktovať používateľa:

Príspevok od používateľa kukiak »

Pripojil som tam zly .pas :? . Ale dikes Juho. Doplnil som to tam. :)

A sry ak som nasral svojimi breptamy a vyplodmi skusenych programatorov :D
Napísať odpoveď