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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2009, 07:09   #1
Diablo221
 
Регистрация: 16.05.2009
Сообщений: 5
По умолчанию Анкета

Доброго времени суток! Нужна ваша помощь.
В задании имеется файл, содержащий сведения о студентах одной группы: ФИО, название экзамена, оценки. Нужно написать программу формирующую файл - ФИО, средний балл и упорядочить по убыванию среднего балла. Нужно сделать это сортировкой простым выбором.
Вот мой вариант проги(проблема в том, что я не знаю вообще как упорядочить по убыванию среднего балла):
program sdali;
type anketa=record
FIO:string[20];
grupa:1..3;
math:2..5;
Chem:2..5;
Sred:real;
end;


var
stud:array[1..50] of anketa;

Fbd:file of anketa;
x:real;
i,j,k,l,m,n,r:integer;

FIO2:string[20];
grupa2:1..3;
math2:2..5;
Chem2:2..5;
Sred2:real;

begin
assign (fbd, 'anketa2.st');
reset(fbd);
i:=0;
writeln ('Students!G!M!C!Sred');
while not eof (fbd) do begin
inc (i);
read (fbd, stud[i]);

with stud[i] do begin
writeln (FIO:8, '!', grupa, '!', math, '!',chem,'!',sred:3:1);
end;
end;
close (fbd);
writeln;
n:=i;





{ for i:=2 to n do
begin
x:=stud[i].sred;
l:=1;
r:=i;
while l<r do
begin
m:=(l+r) div 2;
if stud[m].sred<=x then l:=m+1
else r:=m;
end;
for j:=i downto r+1 do
stud[j]:=stud[j-1];
stud[r]:=stud[i];
end; }


{ for i:=1 to n do begin
x:=stud[i].sred;
for j:=i+1 to n do
if stud[j].sred<x then
begin
k:=j; x:=stud[j].sred; end;
stud[k].sred:=stud[i].sred;
stud[i].sred:=x ;
end; }


for i:=1 to n do begin
x:=stud[i].sred;
for j:=i+1 to n do
if stud[j].sred<x then
begin
fio2:=stud[j].fio ;
grupa2:=stud[j].grupa;
math2:=stud[j].math;
chem2:=stud[j].chem;
sred2:=stud[j].sred;

stud[j]:=stud[i];
stud[i].fio:=fio2;
stud[i].grupa:=grupa2;
stud[i].math:=math2;
stud[i].chem:=chem2;
stud[i].sred:=sred2;
end; end;

for i:=n downto 1 do
with stud[i] do begin
writeln(FIO:8, '!', grupa, '!', math, '!',chem,'!',sred:3:1);
end;


readln;
end.

А вот эта прога должна формировать ФИО и средний балл. Тоже чёто не получается...
program students;
type anketa=record
FIO:string[20];
grupa:1..3;
math:2..5;
Chem:2..5;
Sred:real;
end;
var
stud:array[1..50] of anketa;
fbd: file of anketa;
fin:text;
k,i:integer;
begin
Randomize;
assign (Fin,'anketa.txt');
assign (fbd, 'anketa2.st');
reset (fin); rewrite (fbd);

i:=0;
while not eof(fin) do begin
inc(i);
readln (Fin, stud[i].fio);
with stud[i] do begin
grupa:=1+random(3);
math:=2+random(4);
chem:=2+random(4);
sred:=(math+chem)/2;

write (fbd, stud[i]);
end;
end; close (fbd); close (fin);
end.


Если кто то напишет или поможет написать прогу, то могу отблагодарить материально.
Diablo221 вне форума Ответить с цитированием
Старый 11.08.2009, 07:44   #2
megachuhancer
Форумчанин
 
Регистрация: 16.04.2009
Сообщений: 247
По умолчанию

Цитата:
Нужно сделать это сортировкой простым выбором.
...
проблема в том, что я не знаю вообще как упорядочить по убыванию среднего балла
Вот сортировка выбором.
Код:
program select_sort;
var
   n, i : integer;
   a : array [1 .. 100] of integer;
procedure swapint(var a, b : integer);
var
   t : integer;
begin
   t := a;
   a := b;
   b := t;
end;
procedure sort;
var
   i, j, max : integer;
begin
   for i := 1 to n do begin
      max := i;
      for j := i to n do if a[j] > a[max] then max := j;
      swapint(a[i], a[max]);
   end;
end;
begin
   read(n);
   for i := 1 to n do read(a[i]);
   sort;
   for i := 1 to n do write(a[i], ' ');
   read(n);
end.
Заменяем integer'ы нужными записями. Сравниваем вместо a[i]'ых a[i].sred'ы.
megachuhancer вне форума Ответить с цитированием
Старый 11.08.2009, 08:30   #3
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

Выложи файл с данными
Gapro вне форума Ответить с цитированием
Старый 11.08.2009, 08:36   #4
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

О студентах
Gapro вне форума Ответить с цитированием
Старый 11.08.2009, 09:47   #5
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
Радость

Вот программа, сортирующая по среднему баллу методом пузырька - самым простым методом:

Код:
Program srbal;
 type anketa=record
      grupa:1..3;
      math:2..5;
      Chem:2..5;
      Sred:real;
 end;
 var stud:array[1..50] of anketa;
     i1:integer;
 procedure puziryok;
  var i,m:Word; c:Real;
 begin
  for m:=50 downto 2 do begin
   for i:=1 to m-1 do begin
    if stud[i].sred>stud[i+1].sred then begin
    c:=stud[i].sred;
    stud[i].sred:= stud[i+1].sred;
    stud[i+1].sred:=c
    end;
   end;
  end;
 end;
begin
 For i1:=1 to 50 Do Begin
  stud[i1].grupa:=Random(3)+1;
  stud[i1].math:=Random(5)+1;
  stud[i1].Chem:=Random(5)+1;
  stud[i1].Sred:= (stud[i1].math+stud[i1].Chem)/2;
 end;
 puziryok;
 For i1:=1 to 50 Do WriteLn(stud[i1].sred:2:2);
 ReadLn;
end.
Заполнение сделано случайным, т.к. у меня нету исходного файла с данными, если выложишь его, могу доработать прогу.

R304936002835
Z353867488516
Gapro вне форума Ответить с цитированием
Старый 13.08.2009, 06:49   #6
Diablo221
 
Регистрация: 16.05.2009
Сообщений: 5
По умолчанию

Хорошо. Файл с данными выложу! Лишь бы прогу сделать только!
Diablo221 вне форума Ответить с цитированием
Старый 13.08.2009, 06:52   #7
Diablo221
 
Регистрация: 16.05.2009
Сообщений: 5
По умолчанию

Ты мне свой почтовый ящик напиши, я лучше туда отправлю.
Diablo221 вне форума Ответить с цитированием
Старый 13.08.2009, 08:11   #8
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

celov@mail.ru
Gapro вне форума Ответить с цитированием
Старый 13.08.2009, 08:11   #9
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

ICQ 452-608-390
Gapro вне форума Ответить с цитированием
Старый 17.08.2009, 08:52   #10
Gapro
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 256
По умолчанию

Все нормально

Последний раз редактировалось Gapro; 17.08.2009 в 15:23.
Gapro вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа Анкета с ипсользованием компонентов нескольких видов Obender13 Помощь студентам 4 03.05.2009 19:01
Анкета Claster HTML и CSS 1 09.12.2008 03:16
Анкета Мария Егорова Свободное общение 23 08.12.2008 15:08