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

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

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

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


Гость






Помогите кто может т.к. я в Паскале полнейший кипятильник

Создать одну из подсистем информационного обеспечения Олимпийских игр.
Информация, обрабатываемая в системе, должна храниться в текстовом или типизированном файлах.
Данные, которые должны быть отражены в системе: страна-участница, фамилия и имя участника, возраст, вид спорта, результат участия (достижение и награда).
В системе должны решаться следующие задачи:
1.Создание файла.
2.Дополнение файла.
3. Корректировка данных в файле.
4. Формирование ответов на запросы пользователя:
4.1. Для заданной страны вывести список команды с указанием
фамилии спортсмена и вида спорта;
4.2. Для заданного вида спорта вывести список спортсменов-участников с указанием
страны в порядке возрастания результата;
4.3. Вывести таблицу стран-участниц с указанием количества золотых, серебряных и
бронзовых наград. Таблицу выводить в порядке убывания общего количества наград;
4.4. Для заданного вида спорта построить график изменения средних результатов от
возраста участников;
4.5. Построить круговую диаграмму для заданного вида спорта, иллюстрирующую
количественный состав по странам;
4.6. Построить столбиковую диаграмму, отражающую количественный состав команд.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Скоро попытаюсь выложить что у меня получаеться с дополнением и корректировкой
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Замечание: при корректировке данных о спортсмене лучше сделать так, что при нажатии на Enter без введения информации поле остается без изменения (иногда необходимо изменить только, скажем, одну цифру в данных, и ради этого придется перенабирать всю информацию)...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Хорошо постараюсь
И как организовать поиск по стране ???
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Помогите пожалуйста я не могу найти ошибку в файле ОТСНЕТ должен выводиться список по заданной стране


Прикрепленные файлы
Прикрепленный файл  RGZ_2.rar ( 3.5 килобайт ) Кол-во скачиваний: 43
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Ну помогите хоть 1 диаграмму сделать мне завтра здавать!!! mega_chok.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 




- Текстовая версия 22.08.2017 12:24
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"