Зачем нужны массивы (язык Паскаль)
На уроках информатики при изучении темы «Массив», ученики нередко задают вопрос: «Зачем? Неужели нельзя вводить данные с клавиатуры и обрабатывать их по пути?»
Действительно, когда речь идет об определении понятия массив, мы даем, например, такое:
Массив – это упорядоченный и хранимый в памяти набор данных одного типа.
Ключевые слова в этом определении: упорядоченный, хранимый, набор, одного типа.
Ученики достаточно легко воспринимают все, кроме того, что это данные, сохраненные в памяти, а значит к этим данным можно обратиться в любой момент времени.
Значит с этим ключевым свойством массива следует работать, следует предложить ученикам такие задачи, которые приведут их к пониманию следующего:
к массиву данных можно обратиться многократно, а это значит, не только в момент ввода этих данных.Приведем в качестве примера формулировки задач, где следует применить массив.
Примеры задач
1) Вам предстоит совершить закупку товаров для праздника. Какой процент составляют товары, приобретённые вами по стоимости, ниже средней по всему чеку?
2) Ваш класс получил протокол с результатами ЕГЭ по информатике. Верно ли, что 2 % учеников класса получили наибольший балл в классе (это не обязательно 100)?
3) Во время выполнения проекта по географии вы наблюдали за изменением температуры воздуха в течение недели. Верно ли, что были дни, когда температура отличалась от среднего показателя за неделю более, чем на 2 оС?
Приведем решение задачи 1 на языке программирования Паскаль
Исходные данные:
n – количество товаров (целое число),
a – массив стоимостей товаров (массив вещественных чисел)
Выходные данные: d – процент товаров с ценой, ниже средней (вещественное число)
Промежуточные данные:
s – суммарная стоимость товаров (вещественное число),
sr – средняя стоимость товаров (вещественное число),
p – количество товаров со стоимостью, ниже средней по чеку (целое число).
Программа на языке Паскаль
var a:array[1..100] of real;
s,sr,d:real;
k,n,p:integer;
begin
writeln('Введите количество товаров');
readln(n);
s:=0;
for k:=1 to n do
begin
writeln('введите стоимость ',k,' товара');
readln(a[k]);
s:=s+a[k];
end;
sr:=s/n;
p:=0;
for k:=1 to n do
begin
if a[k]<sr then p:=p+1;
end;
d:=p/n*100;
writeln('По цене, ниже средней, были куплены ',p,' товар(а/ов)');
writeln('Это составляет ',d:2:2, '% от общего количества товаров');
end.
№3
ОтветитьУдалитьvar a:array[1..100] of real; S,R:real; J,k:integer;
begin
S:=0;
J:=0;
writeln ('Введите температуру за каждый день недели.');
for k:=1 to 7 do
begin
readln (a[k]);
S:=S+a[k];
end;
R:=S/7;
for k:=1 to 6 do
begin
if (a[k]>=(R+2)) or(a[k]<=(R-2)) then J:=J+1;
end;
if J>0 then writeln ('Да') else writeln ('Нет');
end.
Не понял что значит наивысший бал. Это число большее среднеарифметического числа?
Решение 3 задачи верно. Счетчик цикла в последнем for должен быть от 1 до 7, потерялся последний день ;)
УдалитьПро наивысший балл. Это наибольший балл среди тех тех, кто сдавал экзамен.
№2
ОтветитьУдалитьvar a:array[1..300] of integer; N,max,J,k:integer; T:real;
begin
max:=0;
J:=0;
writeln ('Введите количество учеников.');
readln (N);
for k:=1 to N do
begin
readln (a[k]);
if a[k]>max then max:=a[k];
end;
for k:=1 to N do
begin
if a[k]=max then J:=J+1;
end;
T:=J/N*100;
if T=2 then writeln ('Верно') else writeln ('Не верно');
end.
Это решение верное!
Удалить