Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 25.02.2020
Сообщений: 114
1

Найти фамилии учеников, имеющих наибольшую и наименьшую сумму оценок по предметам

11.03.2020, 07:37. Просмотров 136. Ответов 1

Известны оценки каждого из 25 учеников класса по десяти предметам.

Найти фамилию одного из учеников:
а) имеющих наибольшую сумму оценок;
б) имеющих наименьшую сумму оценок.

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
type stud=record
fam,name:string[30];
baga:array[1..10] of integer;
end;
var a:array[1..3] of stud;k,i,j,max,min:integer;
begin
for i:=1 to 5 do
with a[i] do
begin
writeln('Введите фамилию  и  имя через пробел');
readln(fam,name);
writeln(' Оценки по 10 предметам студента');
for j:=1 to 10 do
begin
baga[j]:=random(4)+2;
write(baga[j]:4);
max:=max+baga[j];
if max>k then k:=max;
end;
writeln(' Сумма оценок  ',max:4);
max:=0;
writeln;
end;
 
end.
Помогите закончить программу
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2020, 07:37
Ответы с готовыми решениями:

Найти фамилию одного из учеников, имеющего наибольшую сумму оценок
Известны оценки каждого из 25 учеников класса по десяти предметам. Найти фамилию одного из...

Известны оценки двух учеников по четырём предметам Определить сумму оценок каждого ученика
Известны оценки двух учеников по четырём предметам Определить сумму оценок каждого ученика

Определить фамилию одного из учеников, имеющих максимальную сумму оценок
Известны оценки каждого из 22 учеников класса по четырем предметам. Определить фамилию одного из...

Исходя из массива оценок по предметам найти студентов, имеющих право на получение стипендии
Есть задача - Написать программу, используя массив. Описание задачи: Имеем оценки m студентов по n...

1
Модератор
7464 / 3826 / 2720
Регистрация: 17.08.2012
Сообщений: 12,231
11.03.2020, 11:59 2
Ошибочки:

Нужно искать не только величины максимума и минимума, но и их индексы (фактически - номера студентов). Иначе как потом определить, у кого максимум, а у кого - минимум.

Строка - это не число, и нельзя прочитать несколько строк одним оператором readln, поэтому имя и фамилию следует вводить двумя операторами readln. Можно и одним, но потом введённую строку нужно будет разорвать на имя и фамилию.

С максимумом напутали, и по-любому вычисление суммы должно быть в цикле, а определение максимума - после цикла.

Размерность массивов лучше указывать константами, тогда для изменения размера массива, пределов циклов и так далее не придётся носиться по всему коду, достаточно будет поменять константу. Я сделал константы для количества студентов и количества предметов.

Randomize забыли. Не совсем ошибка, потому что в программах на Pascal ABC randomize можно не указывать.

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

Вот, исправленная и законченная программа:
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
53
54
55
56
57
58
59
const
  m = 3;
  n = 10;
type
  stud = record
           fam, name: string[30];
           baga: array[1..n] of integer
         end;
var
  a: array[1..m] of stud;
  i, j, k, max, min, imax, imin: integer;
begin
  randomize;
  max := 0;
  writeln('Введите информацию о студентах.');
  for i := 1 to m do
    with a[i] do
      begin
        writeln('Студент ', i);
        write('Введите фамилию: ');
        readln(fam);
        write('Введите имя: ');
        readln(name);
        write('Оценки по ', n, ' предметам:');
        k := 0;
        for j := 1 to n do
          begin
            baga[j] := random(4)+2;
            write(baga[j]: 2);
            k := k + baga[j]
          end;
        writeln(', сумма оценок: ', k);
        if k > max then
          begin
            max := k;
            imax := i
          end
        else
          if (i = 1) or (k < min) then
            begin
              min := k;
              imin := i
            end
      end;
  with a[imax] do
    begin
      writeln('Студент с максимальной суммой оценок:');
      write(fam, ' ', name, ', оценки: ');
      for j := 1 to n do write(baga[j]:2);
      writeln(', сумма: ', max)
    end;
  with a[imin] do
    begin
      writeln('Студент с  минимальной суммой оценок:');
      write(fam, ' ', name, ', оценки: ');
      for j := 1 to n do write(baga[j]:2);
      writeln(', сумма: ', min)
    end
end.
Программа содержит повторяющиеся фрагменты кода. Если нужно, эти фрагменты можно будет оформить как подпрограммы.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.03.2020, 11:59

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Запрос: Найти всех учеников, получивших 4 по физике и одновременно не имеющих оценок ниже 3.
Найти всех учеников, получивших 4 по физике и одновременно не имеющих оценок ниже 3. Должны быть...

Как найти наибольшую и наименьшую цифры трёхзхначного числа и их сумму
Помогите написать программу. Задание:Введите трехзначное число. Найдите наибольшую и наименьшую...

Вывести фамилии студентов, имеющих задолженность по двум предметам
Я без-понятия как писать этот код. Если будет у вас свободная минутка, пожалуйста помогите. Вот...

Известны оценки каждого из 22 учеников по четырем предметам. Вывести фамилии хорошистов
Известны оценки каждого из 22 учеников по четырем предметам. Вывести фамилии хорошистов Называйте...


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

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

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