IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Статистика чемпионата по футболу
сообщение
Сообщение #1


Гость






Помогите пожалуйста сделать по кол-ву очков сортировку мест команд. Ну ещё бы хорошо, если очков одинаково, то смотрелось бы по забитым мячам.

Исходный код
program football;
uses crt;

const
ncom=5;
ourfname='table.txt';
numb : set of '0'..'9'= ['0'..'9'];

type
teamname = (Lokomotiv, Dinamo, Spartak, CSKA, Zenit, Shinnik);
team = record
name : teamname;
ngames : integer; {число игр}
wgames : integer; {выигранные}
egames : integer; {ничьи}
lgames : integer; {проигранные}
balls : integer; {забитых иячей}
skip : integer; {пропущенных мячей}
points : integer;
rank : integer;
scores : array[1..6,1..2] of integer;
end;

var
cmds : array[1..6] of team;
wasgame : array [1..6,1..6] of boolean;
fname:text;
table:array[1..6] of string;
k:integer;


procedure input;
var i,cm1,cm2, sc1,sc2:integer;
begin
clrscr;
writeln('Выберите номера команд:');
for i:=0 to ncom do
case i of
0 : writeln('1. Локомотив');
1 : writeln('2. Динамо');
2 : writeln('3. Спартак');
3 : writeln('4. ЦСКА');
4 : writeln('5. Зенит');
5 : writeln('6. Шинник');
end;
writeln;
write('Номер команды, играющая дома: '); readln(cm1);
write('Номер команды, играющая в гостях: '); readln(cm2);
if cm1<>cm2 then begin
writeln;
wasgame[cm1,cm2]:=true;
write('Количество голов, забившая первая команда:'); read(sc1);
write('Количество голов, забившая вторая команда:'); read(sc2);
writeln;
write('Счёт игры - ',sc1,':',sc2);
readkey;

inc(cmds[cm1].ngames);
inc(cmds[cm2].ngames);
cmds[cm1].balls:=cmds[cm1].balls+sc1;
cmds[cm2].balls:=cmds[cm2].balls+sc2;
cmds[cm1].skip:=cmds[cm1].skip+sc2;
cmds[cm2].skip:=cmds[cm2].skip+sc1;
cmds[cm1].scores[cm2,1]:=sc1;
cmds[cm1].scores[cm2,2]:=sc2;

if sc1>sc2 then
begin
inc(cmds[cm1].wgames);
cmds[cm1].points:=cmds[cm1].points+3;
inc(cmds[cm2].lgames);
end;
if sc1=sc2 then
begin
inc(cmds[cm1].egames);
inc(cmds[cm2].egames);
inc(cmds[cm1].points);
inc(cmds[cm2].points);
end;
if sc1<sc2 then begin
inc(cmds[cm2].wgames);
cmds[cm2].points:=cmds[cm2].points+3;
inc(cmds[cm1].lgames);
end;

end;
end;

procedure wrres(i:integer);
var j:integer;
begin
for j:=1 to 6 do
if i=j then write(' X ') else
if wasgame[i,j] then
write(cmds[i].scores[j,1], ':', cmds[i].scores[j,2], ' ')
else write(' - ');

writeln(cmds[i].ngames,' ',
cmds[i].wgames,' ',
cmds[i].egames,' ',
cmds[i].lgames,' ',
cmds[i].balls,' ',
cmds[i].skip,' ',
cmds[i].points,' ',
cmds[i].rank);
end;


procedure showtable;
var i:integer;
begin
clrscr;
write(' ');
writeln('И В Н П ЗМ ПМ Очки Место');
for i:=1 to 6 do
case i of
1 : begin write('1. Локомотив '); wrres(i); end;
2 : begin write('2. Динамо '); wrres(i); end;
3 : begin write('3. Спартак '); wrres(i); end;
4 : begin write('4. ЦСКА '); wrres(i); end;
5 : begin write('5. Зенит '); wrres(i); end;
6 : begin write('6. Шинник '); wrres(i); end;
end;
readkey;
end;

function IntToStr(I: Longint): String;
var
S: string[11];
begin
Str(I, S);
IntToStr := S;
end;


procedure loadfile;
var i,j,l,m,cod,z:integer;
tmp:array[1..8] of integer;
tmps:string;
begin
tmps:='';
k:=1;
l:=1;
z:=1;
assign(fname,ourfname);
reset(fname);
if ioresult=0 then begin
while not eof(fname) do
begin
readln(fname,table[k]);
inc(k);
end;
end;
close(fname);

k:=k-1;

for i:=1 to k do begin
z:=1;
for j:=1 to length(table[i]) do begin

if ( z >= k )then
begin

if table[i][j] in numb then
begin
tmps:=tmps+table[i][j];
continue;
end;

if (table[i][j]='|') then
begin
val(tmps,tmp[z-k],cod);
tmps:='';
inc(z);
continue;
end;

end;

if (table[i][j]='|') then
begin
val(tmps,cmds[i].scores[z,2],cod);
tmps:='';
inc(z);
continue;
end;

if (table[i][j]='-') then
begin
wasgame[i][z] := false;
continue;
end;

if table[i][j] in numb then
begin
tmps:=tmps+table[i][j];
continue;
end;

if (table[i][j]=':') then
begin
wasgame[i][z]:=true;
val(tmps,cmds[i].scores[z,1],cod);
tmps:='';
continue;
end;

end;

cmds[i].ngames:=tmp[1];
cmds[i].wgames:=tmp[2];
cmds[i].egames:=tmp[3];
cmds[i].lgames:=tmp[4];
cmds[i].balls:=tmp[5];
cmds[i].skip:=tmp[6];
cmds[i].points:=tmp[7];
cmds[i].rank:=tmp[8];
end;
end;

procedure savefile;
var i,j: integer;
begin
assign(fname,ourfname);
rewrite(fname);
for i:=1 to 6 do
begin
for j:=1 to 6 do if wasgame[i,j] then
write(fname,cmds[i].scores[j,1],':',cmds[i].scores[j,2],'|')
else write(fname,'-|');
writeln(fname,cmds[i].ngames,'|',cmds[i].wgames,'|',
cmds[i].egames,'|',cmds[i].lgames,'|',
cmds[i].balls,'|',cmds[i].skip,'|',cmds[i].points,'|',cmds[i].rank, '|');
end;
close(fname);
end;

procedure clearsts;
var i:integer;
begin
assign(fname,ourfname);
rewrite(fname);
for i:=1 to 6 do writeln(fname,'');
close(fname);
end;

procedure menu;
var act:integer;
label st;
begin
st:
clrscr;
writeln('Программа, ведущая статистику чемпионата по футболу');
writeln;
writeln('1. Таблица результатов');
writeln('2. Ввести данные по игре');
writeln('3. Сохранить данные');
writeln('4. Загрузить данные');
writeln('5. Очистить всю информацию');
writeln('6. Выход');
writeln;
write ('Выберите дейстие:' );
read(act);

case act of
1: begin showtable; goto st; end;
2: begin input; goto st; end;
3: begin savefile; goto st; end;
4: begin loadfile; goto st; end;
5: clearsts;
6: halt;
else begin clrscr; writeln('Неверный ввод!'); readkey; goto st; end;
end;
end;

begin
menu;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






У тебя же массив записей не так ли? Тогда в чем проблема? Здесь все расписано:
FAQ: Как отсортировать массив записей по возрастанию
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.04.2025 11:57
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name