![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
NoM |
![]()
Сообщение
#1
|
Гость ![]() |
Помогите кто может т.к. я в Паскале полнейший кипятильник
Создать одну из подсистем информационного обеспечения Олимпийских игр. Информация, обрабатываемая в системе, должна храниться в текстовом или типизированном файлах. Данные, которые должны быть отражены в системе: страна-участница, фамилия и имя участника, возраст, вид спорта, результат участия (достижение и награда). В системе должны решаться следующие задачи: 1.Создание файла. 2.Дополнение файла. 3. Корректировка данных в файле. 4. Формирование ответов на запросы пользователя: 4.1. Для заданной страны вывести список команды с указанием фамилии спортсмена и вида спорта; 4.2. Для заданного вида спорта вывести список спортсменов-участников с указанием страны в порядке возрастания результата; 4.3. Вывести таблицу стран-участниц с указанием количества золотых, серебряных и бронзовых наград. Таблицу выводить в порядке убывания общего количества наград; 4.4. Для заданного вида спорта построить график изменения средних результатов от возраста участников; 4.5. Построить круговую диаграмму для заданного вида спорта, иллюстрирующую количественный состав по странам; 4.6. Построить столбиковую диаграмму, отражающую количественный состав команд. |
NoM |
![]()
Сообщение
#2
|
Гость ![]() |
Скоро попытаюсь выложить что у меня получаеться с дополнением и корректировкой
|
NoM |
![]()
Сообщение
#3
|
Гость ![]() |
Вот что у меня получилось
Код uses crt,graph; type zap=record voz,dost:integer; fio,cou,vid:string{[30]}; med:char; end; label menu; var ch:char; yk:byte; f:file of zap; v:zap; i,driver,mode:integer; dl_f:longint; pr_kor:boolean; procedure kursor(yk:byte); procedure stir(ys:byte); begin textcolor(0);gotoxy(11,ys);write(' '); end; begin textcolor(2);gotoxy(11,yk);write('-->'); if ord(ch)=80 then if yk=8 then stir(15) else stir(yk-1); if ord(ch)=72 then if yk=15 then stir(8) else stir(yk+1); end; procedure dopolnenie; var n:char; label korrect; procedure provmed(var med:char); begin repeat write('Введите награду (З,С,Б,-): '); readln(med); until (med='-')or(med='з')or(med='З')or(med='с')or(med='С')or(med='Б')or(med='б'); end; procedure prov4isl(var voz,dost:integer); procedure prov(w:string;var z:integer); var s:string; rez:integer; begin repeat write(w); readln(s); val(s,z,rez); until (rez=0); end; begin repeat prov('Введите возраст: ',voz); until (voz<100)and(voz>10); repeat prov('Введите достигнутое место: ',dost); until (dost>=1)and(dost<1000); { repeat prov('Vvedite den postanovki na y4et: ',d); until (d<=31)and(d>0); repeat prov('Vvedite god rozdenia: ',groz); until (groz<2100)and(groz>1800); repeat prov('Vvedite staz raboti: ',staz); until (staz>=0)and(staz<=100); } end; begin textmode(co80); if pr_kor=true then goto korrect; assign(f,'baza.txt'); {$I-} reset(f); if ioresult<>0 then rewrite(f); {$I+} dl_f:=filesize(f);seek(f,dl_f); korrect:textcolor(15); gotoxy(1,1); repeat with v do begin clrscr; write('Введите фамилию и имя: '); readln(fio); prov4isl(voz,dost); write('Введите страну : ');readln(cou); write('Введите вид спорта: ');readln(vid); provmed(med); end; if pr_kor then break; write(f,v); write('Вести еще ? (y/n): ');readln(n); until (n='n') or (n='N'); textcolor(0); if pr_kor=false then close(f); end; procedure korrektirovka; label kor; var poz,str:integer; procedure tablica; var q:integer; begin textcolor(3); gotoxy(2,1);write('N'); gotoxy(6,1);write('Страна'); gotoxy(20,1);write('Фамилия'); gotoxy(40,1);write('Возраст'); gotoxy(49,1);write('Вид спорта'); gotoxy(61,1);write('Достижение'); gotoxy(73,1);write('Медаль'); {gotoxy(74,1);write('POL');} gotoxy(1,22); textcolor(11); for q:=1 to 80 do write('-'); gotoxy(12,23);write('Выберите запись которую вы хотите изменить и нажмите Enter'); gotoxy(17,24);write('Для передвижения по записям используйте - '+#24#25+''); gotoxy(22,25);write('Для выхода в меню нажмите Esc'); textcolor(15); end; procedure zamena; begin pr_kor:=true; dopolnenie; pr_kor:=false; seek(f,(str-1)*20+yk-3);write(f,v); end; begin textmode(co80);clrscr; assign(f,'baza.txt'); {$i-} reset(f); if ioresult<>0 then begin write('File not found'); readln;halt; end; {$i+} i:=1;poz:=2;str:=1;yk:=3; ch:=#80; kor:if ch=#80 then begin textcolor(2);gotoxy(1,3);write('>');textcolor(15); end; if ch=#72 then begin textcolor(2);gotoxy(1,22);write('>'); end; seek(f,i-1); ch:=#0; while not eof(f) do begin read(f,v); tablica; inc(poz); if (i>=str*20-20)and(i<=str*20) then begin textcolor(15); gotoxy(2,poz);write(i,'.'); gotoxy(6,poz);write(v.cou); gotoxy(20,poz);write(v.fio); gotoxy(40,poz);write(v.voz); gotoxy(49,poz);write(v.vid); gotoxy(61,poz);write(v.dost); gotoxy(73,poz);write(v.med); {gotoxy(74,poz);write(v.pol);} inc(i); end; end; repeat if keypressed then begin ch:=readkey; if ch=#13 then begin zamena;clrscr; poz:=2;i:=str*20-19; textcolor(2); gotoxy(1,yk);write('>'); goto kor; end; if ch=#0 then begin ch:=readkey; case ord(ch) of 80: if yk=22 then begin clrscr; textcolor(0);gotoxy(1,yk);write(' '); poz:=2; yk:=3; str:=str+1;goto kor; end else if (str-1)*20+yk-2<>filesize(f) then begin textcolor(0);gotoxy(1,yk);write(' '); inc(yk); end; 72: if ((str-1)*20+yk-2<>1) then if yk<>3 then begin textcolor(0);gotoxy(1,yk);write(' '); yk:=yk-1; end else begin clrscr; textcolor(0);gotoxy(1,yk);write(' '); poz:=2; yk:=22; str:=str-1;i:=(str-1)*20+1;goto kor; end; end; {end of case} end; {end of ch=0} textcolor(2);gotoxy(1,yk);write('>'); end;{end of keypressed} until ch=#27; close(f); end; procedure grafik2; begin {driver:=detect;initgraph(driver,mode,''); cleardevice;setcolor(4); outtextxy(100,100,'fuck off'); rectangle(200,100,400,250); readln; closegraph;} end; begin menu:clrscr; textmode(co40); textcolor(14);gotoxy(19,5);write('Меню'); textcolor(15);gotoxy(14,8);write('Просмотр и корректировка'); gotoxy(14,9);write('Создание и дополнение'); gotoxy(14,10);write('Запрос-1'); gotoxy(14,11);write('Запрос-2'); gotoxy(14,12);write('Запрос-3'); gotoxy(14,13);write('Диаграмма-1'); gotoxy(14,14);write('Диаграмма-2'); gotoxy(14,15);write('График-1'); textcolor(11); gotoxy(1,20); for i:=1 to 40 do write('-'); gotoxy(7,21);write('Для передвижения используйте - '+#24#25+''); gotoxy(8,22);write('Для выбора нажмите Enter'); gotoxy(9,23);write('Для выхода нажмите Esc'); yk:=8;kursor(yk); ch:=#0; repeat if keypressed then begin ch:=readkey; if ch=#13 then case yk of 8:begin korrektirovka;goto menu;end; 9:begin dopolnenie;goto menu;end; 10:; 11:; 12:; 13:; 14:begin grafik2;goto menu;end; 15:; end; if ch=#0 then begin ch:=readkey; case ord(ch) of 80: if yk=15 then yk:=8 else inc(yk); 72: if yk=8 then yk:=15 else yk:=yk-1; end; kursor(yk); end; end; until ch=#27; textmode(co80); end. |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Замечание: при корректировке данных о спортсмене лучше сделать так, что при нажатии на Enter без введения информации поле остается без изменения (иногда необходимо изменить только, скажем, одну цифру в данных, и ради этого придется перенабирать всю информацию)...
|
Гость |
![]()
Сообщение
#5
|
Гость ![]() |
Хорошо постараюсь
И как организовать поиск по стране ??? |
NoM |
![]()
Сообщение
#6
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Репутация: ![]() ![]() ![]() |
Помогите пожалуйста я не могу найти ошибку в файле ОТСНЕТ должен выводиться список по заданной стране
Прикрепленные файлы ![]() |
NoM |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну помогите хоть 1 диаграмму сделать мне завтра здавать!!!
![]() |
![]() ![]() |
![]() |
Текстовая версия | 28.09.2023 4:03 |