[Pascal] problem z wyswietlaniem posrtowanych elementow

0

siema mam problem z programem po napisaniu procedury na sortowanie nie wyswietla mi na ekranie posortowani uczniowie moze ktos wie jak mi <ort>pomóc</ort> ??

uses CRT;

type
      uczniowie = record
               imie    :string[20];
               nazwisko:string[25];
               srednia :real;
               miejsce : byte;
               end;
     plik=file of uczniowie;

LABEL powrot,koniec;
var

tablica : array [1..2] of uczniowie;
    temp : uczniowie;
uczen1,uczen2:uczniowie;
wybor:integer;
pom:boolean;
f:plik;
name:string;
procedure Wypelnij(var k:uczniowie);
begin
  WITH k do
    begin
      write('Podaj imie: ');
      readln(imie);
      write('Podaj nazwisko: ');
      readln(nazwisko);
      write('Podaj sredia: ');
      readln(srednia);
    end;
end;

procedure Wyswietl(k:uczniowie);
begin
  WITH k do
    begin
    writeln;
    writeln('Imie:       ',imie);
    writeln('Nazwisko:    ',nazwisko);
    writeln('srednia:        ',srednia);
    end;
end;

procedure ZapiszDoPliku(uczen1,uczen2:uczniowie;nazwa:string);
begin
assign(f,nazwa);
rewrite(f);
write(f,uczen1);
write(f,uczen2);
close(f);
end;

procedure CzytajZPliku(nazwa:string);
begin
assign(f,nazwa);
reset(f);
read(f,uczen1);
Wyswietl(uczen1);
read(f,uczen2);
Wyswietl(uczen2);
close(f);
end;

Procedure Sortuj;
var
uczen1,uczen2:byte;

begin
for uczen1:=1 to 2 do
    for uczen2:=uczen1+1 to 3 do
    if (tablica[uczen1].srednia<tablica[uczen2].srednia) then
    begin
        temp:=tablica[uczen1];
        tablica[uczen1]:=tablica[uczen2];
        tablica[uczen2]:=temp;
    end;
for uczen1:=1 to 2 do
    tablica[uczen1].miejsce:=uczen1;
end;

Begin
clrscr;
powrot:
writeln('Menu:');
writeln;
writeln('1.Wypelnij dane uczniow.');
writeln('2.Wyswietl dane dwoch uczniow.');
writeln('3.Zapisz do pliku');
writeln('4.Porownaj srednie uczniow');
writeln('5.Wyjscie');
writeln;
readln(wybor);
case wybor of
1:begin
  writeln('Podaj dane pierwszego ucznia :');
  Wypelnij(uczen1);
  writeln;
  writeln('Podaj dane drugiego ucznia :');
  Wypelnij(uczen2);
  pom:=true;
  goto powrot;
  end;
2:begin
  if (not pom)then
  begin
  writeln('Nalezy wypelnic dane przed ich wyswietlenie!Wybierz opcje (1)');
  readkey;
  clrscr;
  goto powrot;
  end
  else
  begin
  Wyswietl(uczen1);
  writeln;
  Wyswietl(uczen2);
  end;
  readkey;
  goto powrot;
  end;

3:begin
  writeln('Podaj nazwe');
  readln(name);
   ZapiszDoPliku(uczen1,uczen2,name);
   CzytajZPliku(name);
   readln;
  end;
4:begin
  writeln('Wyrzsza srednia ma :');
  Sortuj;             {<------------------------------------------tu powinno mi chyba posortowac  wyswietlic a zamiast tego wylaczas mi sie}

  readln;
  end;

else goto koniec;
end;
koniec:
end.

z gory dzieki za pomoc ;]

0

popraw wcięcia, wywal GOTO, wyświetlanie musi być w pętli

0

lol <ort>przecieŻ</ort> wyswietlanie jest w ort! ;]

0

lol przecieŻ wyswietlanie jest w pentli

procedure Wyswietl(k:uczniowie);
begin
  WITH k do
    begin
    writeln;
    writeln('Imie:       ',imie);
    writeln('Nazwisko:    ',nazwisko);
    writeln('srednia:        ',srednia);
    end;
end;

begin
  Wyswietl(uczen1);
  writeln;
  Wyswietl(uczen2);
end;

Gdzie masz tą pętlę bo nie wiem? :|

Polecam też słownik ortograficzny.

0

moze byc taka :D?

Procedure Wyswietl;
var
    uczen1:Byte;
begin
for i:=1 to 18 do
if (tablica[uczen1].nazwa<>'') then
with tablica[uczen1] do
    begin
    writeln;
    writeln('Imie:       ',imie);
    writeln('Nazwisko:    ',nazwisko);
    writeln('srednia:        ',srednia);

end;
end;
0

To powinno działać :)

0

bardzo prosze wez mi to popraw bo mnie juz kur***a strzela ;]

Program Teams;
uses crt;
type
    uczen = record
               nazwa:string;
               imie    :string[20];
               nazwisko:string[25];
               srednia :real;
               miejsce : byte;

    end;
        plik=file of uczen;
var
    tablica : array [1..18] of uczen;
    temp : uczen;
        uczen1,uczen2:uczen;
        wybor:integer;
        pom:boolean;
        f:plik;

Procedure Wyswietl;
var
    i:Byte;
begin
for i:=1 to 18 do
if (tablica[i].nazwa<>'') then
with tablica[i] do
begin
    writeln('Imie: ',Imie);
        writeln('Nazwisko: ',Nazwisko);
        writeln('Srednia: ',Srednia);
    writeln('-------------------------------');
end;
end;

Procedure Sortuj;
var

i,j:byte;

begin
for i:=1 to 17 do
    for j:=i+1 to 18 do
    if (tablica[i].punkty<tablica[j].punkty) then
    begin
        temp:=tablica[i];
        tablica[i]:=tablica[j];
        tablica[j]:=temp;
    end;
for i:=1 to 18 do
    tablica[i].miejsce:=i;
end;

procedure Wypelnij(var k:uczen);
begin
  WITH k do
    begin
      write('Podaj imie: ');
      readln(imie);
      write('Podaj nazwisko: ');
      readln(nazwisko);
      write('Podaj sredia: ');
      readln(srednia);
    end;
end;

procedure ZapiszDoPliku(uczen1,uczen2:uczen;nazwa:string);
begin
assign(f,nazwa);
rewrite(f);
write(f,uczen1);
write(f,uczen2);
close(f);
end;

procedure CzytajZPliku(nazwa:string);
begin
assign(f,nazwa);
reset(f);
read(f,uczen1);
Wyswietl;
read(f,uczen2);
Wyswietl;
close(f);
end;

Begin
clrscr;
writeln('Menu:');
writeln;
writeln('1.Wypelnij dane uczniow.');
writeln('2.Wyswietl dane dwoch uczniow.');
writeln('3.Zapisz do pliku');
writeln('4.Porownaj srednie uczniow');
writeln('5.Wyjscie');
writeln;
readln(wybor);
case wybor of
1:begin
  writeln('Podaj dane pierwszego ucznia :');
  Wypelnij(uczen1);
  writeln;
  writeln('Podaj dane drugiego ucznia :');
  Wypelnij(uczen2);
  pom:=true;

  end;
2:begin
  if (not pom)then
  begin
  writeln('Nalezy wypelnic dane przed ich wyswietlenie!Wybierz opcje (1)');
  readkey;
  clrscr;
  end
  else
  begin
  CzytajZPliku;
  end;
  readkey;
  end;

3:begin
  writeln('Podaj nazwe');
  readln;
   ZapiszDoPliku;
   CzytajZPliku;
   readln;
  end;
4:begin
  writeln('Wyrzsza srednia ma :');
  Sortuj;
  wyswietl;
  readln;
  end;
end;
end.

z gory dzieki

0

wyrzsza
....
....pisze się troche inaczej ;-)
Mógłbyś troche dokładniej opisać problem?? Nie kompiluje się czy wyświetla jakieś krzaki czy jeszcze coś innego??

0

mam dysortografie wiec juz mozesz mnie nie poprawiac ;]
a problem jest taki ze wyswietla sie bledow strasznie duzo i gdy 1 poprawie to jakis nastepny sie wyswietla ;] czyli <ort>niechce</ort> sie kompilowac ;]

0

Słownik ortograficzny, Word, OpenOffice, FF 2.0 - wszystko to sprawdza pisownię. Jak napisałem w pierwszym poście. Popraw ten kod wizualnie, bo nie chce mi się tego bałaganu analizować. Wcięcia, wcięcia i jeszcze raz wcięcia.

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