![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
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 диаграмму сделать мне завтра здавать!!!
![]() |
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 18:54 |