Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 07.01.2016, 19:35   #1 (permalink)
Олес
Member
 
Регистрация: 07.01.2016
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Записи на языке Pascal

задача: В отделе кадров студентов хранится следующая информация о каждом студенте: фамилия, имя, отчество, пол, возраст, курс. Составить программу, которая печатает номер курса, на котором самые распространенные мужские и женские имена, отчество и возраст которых являются одновременно самыми распространенными.
Вот код, который получился у меня. работает не так, как хотелось бы. Прошу помощи) заранее спасибо)
Type anketa=record
vosr:17..21;
curs:1..3;
FIO:record
name:string[10];
otch_vo:string[20];
end;
end;
var student:array [1..5] of anketa;
i,kol,j, kol1,kol2, k_max,k_max1, k_max2,max2, course,course1,course2:integer;
max, max1:string;
begin
for i:=1 to 5 do
with student[i] do
begin
writeln ('введите данные ', i, ' студента');
writeln ('введите имя');
readln (FIO.name);
writeln ('введите отчество');
readln (FIO.otch_vo);
writeln ('введите возраст');
readln (vosr);
writeln ('введите курс');
readln (curs);
end;
k_max:=0;
k_max1:=0;
k_max2:=0;
for i:=1 to 5 do begin
kol:=0;
for j:=1+1 to 5 do
if student[i].FIO.name=student[j].FIO.name then kol:=kol+1; end;
for i:=1 to 5 do begin
kol1:=0;
for j:=1 to 5 do
if student[i].FIO.otch_vo=student[j].FIO.otch_vo then kol1:=kol1+1; end;
for i:=1 to 5 do begin
kol2:=0;
for j:=1 to 5 do
if student[i].vosr=student[j].vosr then kol2:=kol2+1; end;
if kol>k_max then
begin
k_max:=kol;
max:=student[i].FIO.name;
course:=student[i].curs;
end;
if kol1>k_max1 then
begin
k_max1:=kol1;
max1:=student[i].FIO.otch_vo;
course1:=student[i].curs;
end;
if kol2>k_max2 then
begin
k_max2:=kol2;
max2:=student[i].vosr;
course2:=student[i].curs;
end;
writeln ('распространненое имя ', max,' ', 'на курсе', ' ', course);
writeln ('распространненое отчество ', max1, ' ', 'на курсе', ' ', course1);
writeln ('распространненый возраст ', max2, ' ' ,'на курсе', ' ', course2);
end.
Олес вне форума   Ответить с цитированием

Старый 07.01.2016, 19:35
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Лучшее, что можно сделать сразу - это просмотреть аналогичные обсуждения на форуме

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

Старый 07.01.2016, 20:36   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,303
Сказал(а) спасибо: 287
Поблагодарили 506 раз(а) в 164 сообщениях
Репутация: 91675
По умолчанию

Цитата:
Сообщение от Олес Посмотреть сообщение
Составить программу, которая печатает номер курса, на котором самые распространенные мужские и женские имена, отчество и возраст которых являются одновременно самыми распространенными.
Ни бельмеса не понял. Напишите подробнее.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S на форуме   Ответить с цитированием
Старый 07.01.2016, 21:35   #3 (permalink)
Олес
Member
 
Регистрация: 07.01.2016
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

составить программу, которая будет выводить номер курса, на котором распространенные(часто встречающиеся) женские и мужские имена, отчество, возраст. имена, отчества и возраст вводятся с клавиатуры
Олес вне форума   Ответить с цитированием
Старый 07.01.2016, 21:49   #4 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,303
Сказал(а) спасибо: 287
Поблагодарили 506 раз(а) в 164 сообщениях
Репутация: 91675
По умолчанию

Цитата:
Сообщение от Олес Посмотреть сообщение
составить программу, которая будет выводить номер курса, на котором распространенные(часто встречающиеся) женские и мужские имена, отчество, возраст. имена, отчества и возраст вводятся с клавиатуры
Ох, понятнее не стало. Какие "распространенные"? Где их брать? Или надо заранее составить список "распространенных" имен и сверять со списком имен студентов? И то же по отчествам? И возрастам? Что такое "распространенный возраст"?
В общем, глухо.
Извините.
Перепишите для начала задание так, чтобы фразы были согласованы хотя бы в рамках русского языка. Пока я вижу бессвязный набор слов.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S на форуме   Ответить с цитированием
Старый 07.01.2016, 21:58   #5 (permalink)
Олес
Member
 
Регистрация: 07.01.2016
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

дело в том, что другого условия предоставить не могу. да, нужно заранее придумать список своих "распространенных" имен, отчеств и возрастов. например, 1.Юлия Викторовна 19 лет 2 курс; 2.Лилия Викторовна 20 лет 2 курс; 3.Юлия Сергеевна 19 лет 2 курс. В итоге получается, что на 2 курсе самое распространенное имя Юлия, отчество Викторовна, возраст-19. я понимаю так.
Олес вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 07.01.2016, 22:12   #6 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,303
Сказал(а) спасибо: 287
Поблагодарили 506 раз(а) в 164 сообщениях
Репутация: 91675
По умолчанию

Цитата:
Сообщение от Олес Посмотреть сообщение
дело в том, что другого условия предоставить не могу. да, нужно заранее придумать список своих "распространенных" имен, отчеств и возрастов. например, 1.Юлия Викторовна 19 лет 2 курс; 2.Лилия Викторовна 20 лет 2 курс; 3.Юлия Сергеевна 19 лет 2 курс. В итоге получается, что на 2 курсе самое распространенное имя Юлия, отчество Викторовна, возраст-19. я понимаю так.
Ага, ну теперь понял. Вроде бы. То есть для каждого курса определить самое распространенное имя, самое распространенное отчество и самый распространенный возраст? Так? Тогда при чем тут "одновременно"? Или надо выявить студентов-носителей всех трех атрибутов разом?

В любом случае - сегодня уже не буду этим заниматься, завтра с утра посмотрю.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S на форуме   Ответить с цитированием
Старый 07.01.2016, 22:19   #7 (permalink)
Олес
Member
 
Регистрация: 07.01.2016
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

вы всё верно поняли. надо определить для каждого курса имя, отчество и возраст. на слово "одновременно" не обращайте внимание. но возможно ли будет делить имена на мужские и женские? заранее вас благодарю)
Олес вне форума   Ответить с цитированием
Старый 08.01.2016, 11:06   #8 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,303
Сказал(а) спасибо: 287
Поблагодарили 506 раз(а) в 164 сообщениях
Репутация: 91675
По умолчанию

Ну вот, что-то такое сотворил и отладил:
Код:
Const
 N=10;

Type
 anketa=record
         vosr:17..21;
         curs:1..3;
         FIO:record
              name:string[10];
              otch_vo:string[20];
             end;
        end;

 C_Dat=record
        Ns:Byte;
        Nm,Np:Array[1..N] of string[10];
        Na:Array[1..N] of Byte;
       end;

Var
 student:array [1..N] of anketa;
 Cr_Dt:Array[1..3] of C_Dat;
 Numb:Array[1..N] of Byte;
 i,j,C,k_max,Imax,D:integer;

Begin
 for i:=1 to N do
  with student[i] do
   begin
    writeln ('Enter the data for ', i, ' student');
    write('Name: ');
    readln(FIO.name);
    write('Patronymic: ');
    readln(FIO.otch_vo);
    write('Age: ');
    readln(vosr);
    write('Course: ');
    readln(curs);
    with Cr_Dt[curs] do
     begin
      Ns:=Ns+1;
      Nm[Ns]:=FIO.name;
      Np[Ns]:=FIO.otch_vo;
      Na[Ns]:=vosr;
     end;
   end;

 writeln('List of sudents:');
 for i:=1 to N do
  with student[i] do
   begin
    write(FIO.name);
    D:=15-Length(FIO.name);
    for j:=1 to D do write(' ');
    write(FIO.otch_vo);
    D:=15-Length(FIO.otch_vo);
    for j:=1 to D do write(' ');
    writeln(vosr:5,Curs:5);
   end;

 writeln('Press "Enter" to continue');
 readln;

 for C:=1 to 3 do
  begin
   Writeln('Course ',C,':');
   with Cr_Dt[C] do
    begin
     for i:=1 to Ns do
      begin
       Numb[i]:=1;
       for j:=1 to Ns do
        if (j<>i) and (Nm[j]=Nm[i]) then Inc(Numb[i]);
      end;
     k_max:=0;
     for i:=1 to Ns do
      if Numb[i]>k_max then
       begin
        k_max:=Numb[i];
        Imax:=i;
       end;
     if k_max=1 then
      writeln('All names are different')
     else
      writeln ('Common name: ', Nm[Imax]);

     for i:=1 to Ns do
      begin
       Numb[i]:=1;
       for j:=1 to Ns do
        if (j<>i) and (Np[j]=Np[i]) then Inc(Numb[i]);
      end;
     k_max:=0;
     for i:=1 to Ns do
      if Numb[i]>k_max then
       begin
        k_max:=Numb[i];
        Imax:=i;
       end;
     if k_max=1 then
      writeln('All patronymics are different')
     else
      writeln ('Common patronymic: ', Np[Imax]);

     for i:=1 to Ns do
      begin
       Numb[i]:=1;
       for j:=1 to Ns do
        if (j<>i) and (Na[j]=Na[i]) then Inc(Numb[i]);
      end;
     k_max:=0;
     for i:=1 to Ns do
      if Numb[i]>k_max then
       begin
        k_max:=Numb[i];
        Imax:=i;
       end;
     if k_max=1 then
      writeln('All ages are different')
     else
      writeln ('Common age: ', Na[Imax]);
    end;
   writeln;
  end;

 Readln
End.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S на форуме   Ответить с цитированием
Старый 08.01.2016, 11:08   #9 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,303
Сказал(а) спасибо: 287
Поблагодарили 506 раз(а) в 164 сообщениях
Репутация: 91675
По умолчанию

Цитата:
Сообщение от Олес Посмотреть сообщение
но возможно ли будет делить имена на мужские и женские?
Ох, да всё возможно, только это еще работы часиков так... на несколько.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S на форуме   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 19:50.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.