1. Структура для хранения и обработки данных Объект - Учащийся. Каждый учащийся характеризуется фамилией с инициалами и имеет набор из четырех отметок по результатам сдачи экзаменов - всего 5 параметров. Для простоты считаем, что фамилии с инициалами уникальны. Объекты однородны, т.е. отличаются друг от друга только значениями параметров. Это позволяет объединить их в группу, осуществляя доступ к каждому объекту либо по его порядковому номеру в группе, либо по фамилии. Поставленная задача не требует поиска конкретного учащегося по фамилии, поэтому достаточно предоставлять доступ к каждому учащемуся по порядковому номеру. Объект "Учащийся" может быть представлен в виде записи (структуры) для случая реализации программы на алгоритмическом языке, либо в виде таблицы базы данных для случая реализации в среде СУБД. Не исключена также примитивная реализация в виде двух массивов, в одном из которых указываются фамилии с инициалами, а в другом отметки; связь учащегося с его оценками в этом случае поддерживается за счет использования одинакового номера строк в массиве. Нам также понадобится где-то хранить средний учащегося, для того чтобы сделать необходимую по условию задачи выборку.
Запишем пример реализации для языка Паскаль. а) Три массива. var FIO: array[1..40] of string; { для фамилий и инициалов } ResBall: array[1..40,1..4] of byte; { для оценок } SrBall: array[1..40] of real; { для среднего } В этом случае объект "Учащийся" отображается связкой FIO[i], ResBall[i,j], SrBall[i] где i- номер учащегося, j - номер отметки в наборе отметок. б) Запись type tUch=record FIO: string; ResBall:array[1..4] of byte; SrBall:real end; var Uch:array[1..40] of tUch; В этом случае доступ к объекту "Учащийся" реализуется в виде Uch[i].FIO, Uch[i].ResBall[j], Uch[i].SrBall в) Таблица базы данных с именем Uch FIO символьный(20) Ball1 целый Ball2 целый Ball3 целый Ball4 целый SrBall числовой В этом случае доступ к объекту "Учащийся" реализуется в виде Uch.FIO, Uch.Ball1..Uch.Ball4, Uch.SrBall
2. Алгоритм обработки Запрашиваем N - количество учащихся в группе, и организуем ввод данных по N учащимся. Попутно со вводом для каждого учащегося вычисляем сумму всех четырех его оценок, а также средний , равный найденной сумме, деленной на 4. Сумму отметок по всей группе накапливаем в некоторой переменной S, а средний записываем в структуру хранения. После накопления в S суммы всех оценок находим Sg=S/N - средний по группе. Организуем проход по всех группе и выводим фамилию и средний тех учащихся, у которых средний превышает Sg.
// PascalABC.Net 3.0, сборка 1066 var s,s1:string; i:integer; a:char; begin Write('Введите натуральное число любой длины :'); Readln(s); Write('Введите цифру, которую надо удалить: '); Readln(a); s1:=''; for i:=1 to Length(s) do if s[i]<>a then s1:=s1+s[i]; Writeln('Результат: ',s1) end.
Тестовый прогон: Введите натуральное число любой длины :3141592653589793 Введите цифру, которую надо удалить: 5 Результат: 3141926389793
2. Современное решение (так в школе почему-то не учат)
// PascalABC.Net 3.0, сборка 1066 begin var s:=ReadString('Введите натуральное число любой длины :'); var a:=ReadChar('Введите цифру, которую надо удалить: '); Write('Результат: ',s.Replace(a,'')); end.
Объект - Учащийся. Каждый учащийся характеризуется фамилией с инициалами и имеет набор из четырех отметок по результатам сдачи экзаменов - всего 5 параметров. Для простоты считаем, что фамилии с инициалами уникальны.
Объекты однородны, т.е. отличаются друг от друга только значениями параметров. Это позволяет объединить их в группу, осуществляя доступ к каждому объекту либо по его порядковому номеру в группе, либо по фамилии.
Поставленная задача не требует поиска конкретного учащегося по фамилии, поэтому достаточно предоставлять доступ к каждому учащемуся по порядковому номеру.
Объект "Учащийся" может быть представлен в виде записи (структуры) для случая реализации программы на алгоритмическом языке, либо в виде таблицы базы данных для случая реализации в среде СУБД. Не исключена также примитивная реализация в виде двух массивов, в одном из которых указываются фамилии с инициалами, а в другом отметки; связь учащегося с его оценками в этом случае поддерживается за счет использования одинакового номера строк в массиве.
Нам также понадобится где-то хранить средний учащегося, для того чтобы сделать необходимую по условию задачи выборку.
Запишем пример реализации для языка Паскаль.
а) Три массива.
var
FIO: array[1..40] of string; { для фамилий и инициалов }
ResBall: array[1..40,1..4] of byte; { для оценок }
SrBall: array[1..40] of real; { для среднего }
В этом случае объект "Учащийся" отображается связкой FIO[i], ResBall[i,j], SrBall[i] где i- номер учащегося, j - номер отметки в наборе отметок.
б) Запись
type
tUch=record
FIO: string;
ResBall:array[1..4] of byte;
SrBall:real
end;
var
Uch:array[1..40] of tUch;
В этом случае доступ к объекту "Учащийся" реализуется в виде Uch[i].FIO, Uch[i].ResBall[j], Uch[i].SrBall
в) Таблица базы данных с именем Uch
FIO символьный(20)
Ball1 целый
Ball2 целый
Ball3 целый
Ball4 целый
SrBall числовой
В этом случае доступ к объекту "Учащийся" реализуется в виде Uch.FIO, Uch.Ball1..Uch.Ball4, Uch.SrBall
2. Алгоритм обработки
Запрашиваем N - количество учащихся в группе, и организуем ввод данных по N учащимся. Попутно со вводом для каждого учащегося вычисляем сумму всех четырех его оценок, а также средний , равный найденной сумме, деленной на 4. Сумму отметок по всей группе накапливаем в некоторой переменной S, а средний записываем в структуру хранения.
После накопления в S суммы всех оценок находим Sg=S/N - средний по группе.
Организуем проход по всех группе и выводим фамилию и средний тех учащихся, у которых средний превышает Sg.
// PascalABC.Net 3.0, сборка 1066
var
s,s1:string;
i:integer;
a:char;
begin
Write('Введите натуральное число любой длины :'); Readln(s);
Write('Введите цифру, которую надо удалить: '); Readln(a);
s1:='';
for i:=1 to Length(s) do
if s[i]<>a then s1:=s1+s[i];
Writeln('Результат: ',s1)
end.
Тестовый прогон:
Введите натуральное число любой длины :3141592653589793
Введите цифру, которую надо удалить: 5
Результат: 3141926389793
2. Современное решение (так в школе почему-то не учат)
// PascalABC.Net 3.0, сборка 1066
begin
var s:=ReadString('Введите натуральное число любой длины :');
var a:=ReadChar('Введите цифру, которую надо удалить: ');
Write('Результат: ',s.Replace(a,''));
end.