Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
nastia2016
0 / 0 / 0
Регистрация: 04.03.2016
Сообщений: 15
1

Найти класс с наибольшим количеством учеников

05.03.2016, 17:37. Просмотров 904. Ответов 7
Метки нет (Все метки)

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

Добавлено через 6 часов 0 минут
Кто то знает?
Сам ввод вывод не трудно ведь
Но как определить класс в котором найбольше всего учеников?

Наперед спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2016, 17:37
Ответы с готовыми решениями:

Найти пассажира с наибольшим количеством вещей
Ребята выручите ! не могу правильно построить код программы! Задание: структура Элемента...

Найти слова, с наибольшим и наименьшим количеством заглавных латинских букв, и поменять их местами
Дан массив из n слов произвольной длины (длина слова не превышает 80 символов). Слова могут...

Найти в диапазоне от M до N число с наибольшим количеством делителей.
Найти в диапазоне от M до N число с наибольшим количеством делителей. Функция: количество делителей...

найти маршрут с наибольшим количеством городов и указать его стоимость
Помогите, пожалуйста, решить вот такую задачку:"Текстовый файл содержит сведения о кольцевых...

Создать матрицу размера nxm. Найти строку с наибольшим количеством отрицательных элементов
Создать матрицу размера nxm. Найти строку с наибольшим количеством отрицательных элементов. Вывести...

7
Puporev
Модератор
56339 / 43119 / 29825
Регистрация: 18.05.2008
Сообщений: 102,473
06.03.2016, 11:37 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Можно так.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
uses crt;
type uch=record
         nam,fam,kls:string[15];
         end;
     klass=record
           kls:string[15];
           kol:integer;
           end;
var u:array[1..100] of uch;
    k:array[1..100] of klass;
    n,m,i,j,f,imax:integer;
begin
clrscr;
write('Количество учеников n=');
readln(n);
writeln('Введите сведеня об учениках');
for i:=1 to n do
 begin
  writeln('Ученик ',i);
  with u[i] do
   begin
    write('Имя: ');readln(nam);
    write('Фамилия: ');readln(fam);
    write('Класс число от 1 до 11 и буква: ');
    readln(kls);
   end;
 end;
k[1].kls:=u[1].kls;
k[1].kol:=1;
m:=1;
for i:=2 to n do
 begin
  f:=0;
  for j:=1 to m do
  if u[i].kls=k[j].kls then
   begin
    inc(k[j].kol);
    f:=1;
   end;
  if f=0 then
   begin
    inc(m);
    k[m].kls:=u[i].kls;
    k[m].kol:=1;
   end;
 end;
imax:=2;
for i:=2 to m do
if k[i].kol>k[imax].kol then imax:=i;
writeln('Наибольшее число учеников=',k[imax].kol,' в классе ',k[imax].kls);
readln
end.
0
nastia2016
0 / 0 / 0
Регистрация: 04.03.2016
Сообщений: 15
06.03.2016, 16:18  [ТС] 3
Не правильно учеников считает..
0
Puporev
Модератор
56339 / 43119 / 29825
Регистрация: 18.05.2008
Сообщений: 102,473
06.03.2016, 16:45 4
Приведите пример что вводите и что выдает, я проверял, у меня правильно. И проверьте код, может что не так написали.

Добавлено через 52 секунды
Цитата Сообщение от nastia2016 Посмотреть сообщение
Информацию об учениках вывести на экран в виде таблицы.
Это я не делал, лень, сделаете сами.
0
nastia2016
0 / 0 / 0
Регистрация: 04.03.2016
Сообщений: 15
06.03.2016, 16:52  [ТС] 5
это не проблема зделаю

но учеников и классы у вас считает неверно тоесть не выводит тот класс в котором найбольшее количество учеников

Добавлено через 2 минуты
ну например 3 ученика
2 в 5 классе
1 в 4 классе
должно вывести 5 класс а выводит 4
0
Puporev
Модератор
56339 / 43119 / 29825
Регистрация: 18.05.2008
Сообщений: 102,473
06.03.2016, 17:26 6
В строке 47 я почему-то написал
imax:=2;
исправьте на
imax:=1;
0
nastia2016
0 / 0 / 0
Регистрация: 04.03.2016
Сообщений: 15
09.03.2016, 18:21  [ТС] 7
Спасибо вам за помощь дальше все красиво доделала и оформила

Но вот можете в кратце пояснить этот участок кода


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
k[1].kls:=u[1].kls;
k[1].kol:=1;
m:=1;
for i:=2 to n do
 begin
  f:=0;
  for j:=1 to m do
  if u[i].kls=k[j].kls then
   begin
    inc(k[j].kol);
    f:=1;
   end;
  if f=0 then
   begin
    inc(m);
    k[m].kls:=u[i].kls;
    k[m].kol:=1;
   end;
 end;
imax:=2;
for i:=2 to m do
if k[i].kol>k[imax].kol then imax:=i;
writeln('Наибольшее число учеников=',k[imax].kol,' в классе ',k[imax].kls);
readln
end.
Почему оно именну так и что как работает
0
Puporev
Модератор
56339 / 43119 / 29825
Регистрация: 18.05.2008
Сообщений: 102,473
09.03.2016, 18:46 8
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//первый элемент массива классов
k[1].kls:=u[1].kls; //перепишем в него название класса из массива учеников
k[1].kol:=1; //количество учеников пока =1
m:=1; //размер массива классов=1
for i:=2 to n do //смотрим остальных учеников
 begin
  f:=0;//пока нет в массиве класов такого названия класса
  for j:=1 to m do
  if u[i].kls=k[j].kls then //если совпало
   begin
    inc(k[j].kol);//добавляем ученика
    f:=1; //меняем флаг, есть такой класс в массиве
   end;
  if f=0 then //если нет
   begin
    inc(m); //увеличим размер массива
    k[m].kls:=u[i].kls;//запишем этот класс
    k[m].kol:=1;  //ученик пока 1
   end;
 end;
imax:=1;//ищем класс в котором больше всех учеников
for i:=2 to m do
if k[i].kol>k[imax].kol then imax:=i;//если больше чем до того, то запоминаем этот номер
writeln('Наибольшее число учеников=',k[imax].kol,' в классе ',k[imax].kls);//выводим название класса и кол. учеников
readln
end.
0
09.03.2016, 18:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2016, 18:46

Найти в диапазоне от M до N число с наибольшим количеством делителей. Функция: количество делителей заданного числа
Найти в диапазоне от M до N число с наибольшим количеством делителей. Функция: количество делителей...

Вывод числа с наибольшим количеством делителей
Даны три числа. С помощью функции, определяющей количество делителей натурального числа вывести на...

Напечатайте строку с наибольшим количеством слов
Tекстовый файл t. Слова не переносятся с одной строки на другую. Слова разделены одним или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru