Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2009, 16:39   #1
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
Вопрос [Pascal] вывод элементов из файла случайным образом

Помогите пожалуйста, сделать вывод элементов пободно тому что я сделал только чтобы случайным образом сортировалось...


Код:
program pr_3;
uses crt;
type spisok=record
     fam:string;
     srbal:integer;
     s:real;
     end;
var a:array[1..100] of spisok;
    m:integer;
    c:spisok;
    kol,i:integer;
    f:file of spisok;
    stepen:integer;
    s:real;
    z:string;
    label 1;
begin
clrscr;
stepen:=7500;
assign(f,'c:\bp\bin\ramik\praktika\spisok.dat');
writeln('vvedite kollichestvo ushashihsya: ');
readln(kol);
for i:=1 to kol do begin
    writeln('vvedite familiyu ',i,' uchashegosya:');
    readln(a[i].fam);
1:  writeln('vvedite ego srednii bal: ');
    readln(a[i].srbal);
    if a[i].srbal=5 then begin
    s:=stepen*(10/100);
    s:=stepen+s;
    a[i].s:=s;
    end
    else
    a[i].s:=stepen;
    if a[i].srbal>5 then begin
    writeln('bal vveden ne korrektno! vvedite zanovo!');
    goto 1;
    end;
end;
rewrite(f);
for i:=1 to kol do
 write(f,a[i]);
close(f);
{======================VIVOD VVEDENNIH ELEMENTOV========================}
reset(f);
i:=1;
clrscr;
writeln('Familiya','':3,'sredniy bal','':3,'stependiya');
while not(eof(f)) do begin
read(f,a[i]);
writeln(a[i].fam,'':15,a[i].srbal,'':10,a[i].s:1:1);
end;
close(f);
{=============SORTIROVKA PO SREDNEMU BALU=============================}
writeln;
writeln('sortirovannii po srednemu balu: ');
reset(f);
read(f,a[i]);
for m:=1 to kol-1 do
    for i:=1 to kol-m do
    if a[i].srbal > a[i+1].srbal then begin
    c:=a[i];
    a[i]:=a[i+1];
    a[i+1]:=c;
    end;
writeln('Familiya','':3,'sredniy bal','':3,'stependiya');
for i:=1 to kol do
    writeln(a[i].fam,'':15,a[i].srbal,'':10,a[i].s:1:1);
close(f);
{======================POISK PO FAMILII==============================}
writeln;
writeln('vvedite familiyu dlya poiska: ');
readln(z);
reset(f);
writeln;
for i:=1 to filesize(f) do begin
read(f,a[i]);
if a[i].fam=z then begin
writeln('Familiya','':3,'sredniy bal','':3,'stependiya');
writeln(a[i].fam,'':15,a[i].srbal,'':10,a[i].s:1:1);
end;
end;
close(f);
readln;
end.
если имются ошибки в коде пожалуйста скажите...
Рамик вне форума Ответить с цитированием
Старый 28.05.2009, 17:02   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Просто случайная сортировка? Ну тут много чего можно придумать.
Как вариант:
Код:
{===============RANDOM_SORT=========================}
writeln;
writeln('random sort: ');

rand_1 := random(10)+10;
for m:=1 to rand_1 do
 begin
 for i:=1 to kol do
  begin
  rand_2 := random(kol)+1;
  c := a[i];
  a[i] := a[rand_2];
  a[rand_2] := c;
  end;

 end;

writeln('Familiya','':3,'sredniy bal','':3,'stependiya');
for i:=1 to kol do
    writeln(a[i].fam,'':15,a[i].srbal,'':10,a[i].s:1:1);
rand_1, rand_2 - переменные типа integer
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.05.2009, 17:11   #3
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
[CODE]

rand_1 := random(10)+10;
почему именно random(10)+10? ...не понял
Рамик вне форума Ответить с цитированием
Старый 28.05.2009, 17:17   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Рамик
почему именно random(10)+10? ...не понял
Это количество проходов по массиву. Минимум 10. Потому что я так захотел. Можете изменить.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.05.2009, 17:18   #5
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Это количество проходов по массиву. Минимум 10. Потому что я так захотел. Можете изменить.
.
спасибо!
Рамик вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод элементов массива.Изменение элементов массива. Vesnushka18 Помощь студентам 6 09.06.2011 13:05
Как вывести на экран двумерный массив случайным образом? Stager Общие вопросы C/C++ 5 07.01.2009 20:53
Машина случайным образом генерирует натуральные числа в промежутке [0, 1, 2, … 100] JustinTI Помощь студентам 4 21.12.2008 14:31
Машина случайным образом генерирует натуральные числа в промежутке [0, 1, 2, … 10] до тех пор, пока не 0 JustinTI Помощь студентам 3 21.12.2008 14:31
[pascal]создать линейный список из элементов файла sunny19 Паскаль, Turbo Pascal, PascalABC.NET 1 25.06.2007 20:33