Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2016, 18:46   #1
Vika2016
Пользователь
 
Регистрация: 24.02.2016
Сообщений: 69
По умолчанию Паскаль, работа с записями

Паскаль.. тема запись
Задачка вроде не из сложных но эту тему я менее всего понимаю

Сведения об ученике состоят из его имени и фамилии и названия класса, в котором он учится (например, 11а). Записать сведения о n учеников. Информацию об учениках вывести на экран в виде таблицы. Найти класс с наибольшим количеством учеников.

Огромное спасибо тому кто поможет разобраться
Vika2016 вне форума Ответить с цитированием
Старый 04.03.2016, 18:57   #2
ProBeginner
Форумчанин
 
Регистрация: 22.02.2016
Сообщений: 145
По умолчанию Помощь студентам в программировании на Паскале

Цитата:
Сообщение от Vika2016 Посмотреть сообщение
но эту тему я менее всего понимаю
-покажите, пожалуйста, тему, которую вы более всего понимаете.
Возьму в кредит мильён по 100% годовых на сто лет.
ProBeginner вне форума Ответить с цитированием
Старый 04.03.2016, 18:58   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от Vika2016 Посмотреть сообщение
..
Огромное спасибо тому кто поможет разобраться
Вот это поможет. Или "Паскаль record"
Таких примеров уже много было. Что конкретно непонятно?
Изображения
Тип файла: jpg pasR.JPG (21.4 Кб, 74 просмотров)
type_Oleg вне форума Ответить с цитированием
Старый 05.03.2016, 14:20   #4
Vika2016
Пользователь
 
Регистрация: 24.02.2016
Сообщений: 69
По умолчанию

Ну сам ввод и вывод не проблема

вот как то так
Код:
type anketa=record
              FIO: string[45];
              CLAS: string[3]
           end;
           
var 
i,n: integer; 
student: array [1..1000] of anketa;
     
begin
readln(n);

for i:=1 to n do
begin
writeln ('введите фамилию, имя и отчество');
readln (student[i].fio);
writeln('введите класс');
readln (student[I].clas);
end;
writeln('ввод закончен');
	writeln;

for i:=1 to n do
begin
  writeln('фио студента: ', student[i].fio);
  writeln('Класс: ',student[i].CLAS);
end;
end.
ну там еще вывод в форме таблицы нужен..



Теперь главное как определить класс с найбольшим количеством учеников?
Vika2016 вне форума Ответить с цитированием
Старый 05.03.2016, 14:41   #5
ProBeginner
Форумчанин
 
Регистрация: 22.02.2016
Сообщений: 145
По умолчанию

Цитата:
Сообщение от Vika2016 Посмотреть сообщение
как определить класс с найбольшим количеством учеников?
Вот тут возникла проблема. У вас класс - это строка.
Если продолжать с этим работать, то придётся создавать динамическую структуру, и сложный алгоритм.

Проще переделать и заменить CLAS: string[3] на две записи: номер класса и буква. Номер класса это целое, и букву надо тоже сделать целым числом.
Тогда вся школа (таблица количества учеников в классах) будет описываться двумерным массивом: строки - год, столбец - буква.

Цикл подсчёта пробегает по списку учеников и увеличивает на единицу ячейку массива школы.

Потом в двумерном массиве школы ищите ячейку с максимальной суммой.
Возьму в кредит мильён по 100% годовых на сто лет.
ProBeginner вне форума Ответить с цитированием
Старый 05.03.2016, 14:58   #6
CMY_3
Пользователь
 
Регистрация: 24.02.2016
Сообщений: 38
По умолчанию

Класс с наибольшим количеством учеников - это наиболее часто встречающаяся запись с одинаковым полем CLAS, в заполненном массиве записей, это поле и надо определить, насколько я понял задание.
CMY_3 вне форума Ответить с цитированием
Старый 05.03.2016, 15:06   #7
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от ProBeginner Посмотреть сообщение
...
Проще переделать и заменить CLAS: string[3] на две записи: номер класса и буква. ..
В принципе, все нижеописанное можно проделать и со string[3] .
Ведь string[3] это фактически array[1..3] of Char
Ну и пробегать не по всем возможным Char , а иметь ввиду, что первые 1 или 2 символа - только цифры от 0 до 9 ( или сейчас нет 9-го класса ? ... ) , а последний - букафка от а до например д


Хотя, конечно удобнее CLAS сделать из 2 частей.
Код:
type
 anketa=record
   FIO: string[45];
   CLASnum:1..11;
   CLASlett:'а'..'д';
end;
type_Oleg вне форума Ответить с цитированием
Старый 05.03.2016, 15:14   #8
Vika2016
Пользователь
 
Регистрация: 24.02.2016
Сообщений: 69
По умолчанию

Цитата:
Сообщение от CMY_3 Посмотреть сообщение
Класс с наибольшим количеством учеников - это наиболее часто встречающаяся запись с одинаковым полем CLAS, в заполненном массиве записей, это поле и надо определить, насколько я понял задание.
ну как то так
Vika2016 вне форума Ответить с цитированием
Старый 05.03.2016, 15:20   #9
ProBeginner
Форумчанин
 
Регистрация: 22.02.2016
Сообщений: 145
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
( или сейчас нет 9-го класса ? ... )
-да почему же? -Есть, это "выпускной", как при социализме 8-й, можно идти после него в медулище/педулище, ПТУ или техникум.
Возьму в кредит мильён по 100% годовых на сто лет.
ProBeginner вне форума Ответить с цитированием
Старый 05.03.2016, 15:34   #10
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Можно так:
Добавить переменные в var:
Код:
 j:Char;
 maxKol:Integer;
 maxmax:anketa; // тут будет ответ
 kolic:array[1..11]of array['а'..'д'] of Integer;
И после ввода добавить:
Код:
 maxmax.FIO:='самый большой класс';
 maxmax.CLASnum:=1; // любые
 maxmax.CLASlett:='а'; // любые
 maxKol:=-1;
 for i:=1 to 11 do   // это может быть необязательно - обнуление
  for j:='а' to 'д' do
   kolic[i,j]:=0;
 for i:=1 to n do  // подсчет количества
   Inc(kolic[student[i].CLASnum,student[i].CLASlett]);
 for i:=1 to 11 do // поиск самого большого
  for j:='а' to 'д' do
   if kolic[i,j]>maxKol then
    begin
     maxKol:=kolic[i,j];
     maxmax.CLASnum:=i;
     maxmax.CLASlett:=j;
    end;
type_Oleg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с указателями, записями, сортировка (Паскаль) orandzheviyman Помощь студентам 2 21.01.2014 23:39
Работа с записями (Паскаль) patisson74 Фриланс 7 14.11.2009 03:16
Файлы с записями. Паскаль. Помогите срочно. tatu_cat_69 Помощь студентам 2 05.06.2009 07:14
Паскаль, работа с записями Veselyn Помощь студентам 11 08.03.2009 10:49
Работа с записями, паскаль Дядька Помощь студентам 5 13.02.2009 18:44