Главная / Учебники / Информатика 9 класс / Параграф § 1.4 / ГДЗ § 1.4
| Глава: | Глава 1. Алгоритмы и программирование |
|---|---|
| Параграф: | § 1.4 - Обработка одномерных массивов целых чисел на языке Паскаль |
| Учебник: | Информатика 9 класс - |
| Автор: | Босова Людмила Леонидовна |
| Год: | 2025 |
| Издание: | 7-е издание, стереотипное |
Ответ:
Индекс элемента массива — это его порядковый номер или адрес (местоположение) в массиве. Он используется для непосредственного обращения к элементу (например, \( A[5] \)). Значение элемента массива — это данные (число, символ и т.д.), которые хранятся в ячейке памяти по данному индексу.
Ответ:
Нет, не допустимо. По определению, массив — это набор элементов одного и того же типа (однотипных). Если массив описан как array of integer, он может содержать только целые числа; если как array of real, то только вещественные числа.
Ответ:
Массивы предназначены для эффективной работы с большим количеством однотипных данных, когда требуется хранить все эти данные в памяти и иметь возможность:
Ответ:
Описание массива (в разделе var) необходимо, чтобы:
Ответ:
а) for i := 1 to N do A[i] := random(101) - 50;
random(101) дает числа от \(0\) до \(100\), вычитание \(50\) сдвигает диапазон.б) for i := 1 to N do A[i] := i;
в) for i := 1 to N do A[i] := 2 * i - 1;
Ответ:
Хранение длины (размерности) массива в отдельной переменной или константе (например, N) обеспечивает следующие преимущества:
const или var), и это автоматически изменит границы циклов и другие операции, зависящие от размера.for i := 1 to N do ....Ответ:
Разница между обработкой массива и последовательности
Обработка массива:
Обработка последовательности:
Ответ:
Операция поиска максимального элемента и его перемещения должна повторяться \( N-1 \) раз, потому что:
а) Обработка последовательности (Экономичный вариант)
В этом варианте используется только одна переменная для ввода текущей температуры и переменная-аккумулятор для суммы. Все 7 значений хранить в памяти не требуется.
program AvgTempSequence;
const N = 7;
var i, temp: integer;
sum: real; // Для суммы и среднего, чтобы избежать целочисленного деления
begin
sum := 0;
writeln('Введите температуру за 7 дней:');
for i := 1 to N do
begin
write('День ', i, ': ');
readln(temp);
sum := sum + temp;
end;
writeln('Средняя температура за неделю: ', sum / N : 0 : 2);
end.
б) Обработка массива (Универсальный вариант)
В этом варианте все 7 температур хранятся в массиве для возможности дальнейшей обработки (например, поиска максимальной или сортировки).
program AvgTempArray;
const N = 7;
var i: integer;
sum: real;
A: array [1..N] of integer;
begin
// Ввод данных в массив
writeln('Введите температуру за 7 дней:');
for i := 1 to N do
begin
write('День ', i, ': ');
readln(A[i]);
end;
// Вычисление суммы элементов массива
sum := 0;
for i := 1 to N do
sum := sum + A[i];
writeln('Средняя температура за неделю: ', sum / N : 0 : 2);
end.
Программа подсчета свойств массива
program ArrayStatistics;
const N = 10;
var i, imax, count_even, sum_odd, count_max: integer;
A: array [1..N] of integer;
begin
// 1. Заполнение массива (случайными числами от 0 до 99)
for i := 1 to N do
begin
A[i] := random(100);
write(A[i], ' ');
end;
writeln;
// 2. Подсчет четных и суммы нечетных элементов
count_even := 0;
sum_odd := 0;
for i := 1 to N do
begin
if A[i] mod 2 = 0 then
count_even := count_even + 1 // а) Количество четных
else
sum_odd := sum_odd + A[i]; // б) Сумма нечетных
end;
writeln('Количество четных элементов: ', count_even);
writeln('Сумма нечетных элементов: ', sum_odd);
// 3. Подсчет количества элементов, имеющих максимальное значение
// Находим максимальное значение
imax := 1;
for i := 2 to N do
if A[i] > A[imax] then imax := i;
count_max := 0;
// Считаем количество элементов, равных максимуму
for i := 1 to N do
if A[i] = A[imax] then count_max := count_max + 1;
writeln('Максимальное значение: ', A[imax]);
writeln('Количество элементов с максимальным значением: ', count_max);
end.
Программа подсчета частоты оценок
program GradeCount;
const N = 20; // Количество учеников
var i, grade: integer;
// A[2] - для двоек, A[3] - для троек, A[4] - для четверок, A[5] - для пятерок
A: array [2..5] of integer; // Массив-счетчик
begin
// Инициализация счетчиков нулями
for i := 2 to 5 do A[i] := 0;
writeln('Оценки:');
// Обработка 20 учеников
for i := 1 to N do
begin
grade := random(4) + 2; // Случайное число от 2 до 5
write(grade, ' ');
A[grade] := A[grade] + 1; // Увеличение счетчика для полученной оценки
end;
writeln;
// Вывод результатов
writeln('Получено двоек: ', A[2]);
writeln('Получено троек: ', A[3]);
writeln('Получено четверок: ', A[4]);
writeln('Получено пятерок: ', A[5]);
end.
Программа отбора в баскетбольную команду
program BasketballTeam;
const N = 50; // Количество претендентов
MIN_HEIGHT = 170; // Минимальный рост
var i, height, count: integer;
begin
count := 0; // Счетчик прошедших отбор
writeln('Рост претендентов (см):');
for i := 1 to N do
begin
height := random(51) + 150; // Рост от 150 до 200 см
write(height, ' ');
if height >= MIN_HEIGHT then
count := count + 1;
end;
writeln;
writeln('Количество претендентов, прошедших отбор (рост >= ', MIN_HEIGHT, '): ', count);
end.
Программа поиска треугольника максимальной площади
Площадь прямоугольного треугольника вычисляется по формуле \( S = \frac{1}{2} a b \), где \( a \) и \( b \) — длины катетов.
program MaxTriangleArea;
const N = 5; // Количество треугольников для примера
var i, i_max: integer;
max_area: real;
A: array [1..N] of integer = (3, 4, 10, 5, 1); // Катет a
B: array [1..N] of integer = (4, 3, 2, 5, 20); // Катет b
S: array [1..N] of real; // Массив для хранения площадей
begin
// 1. Вычисление и сохранение площадей
for i := 1 to N do
begin
S[i] := 0.5 * A[i] * B[i];
writeln('Треугольник №', i, ': Катеты (', A[i], ',', B[i], '), Площадь: ', S[i] : 0 : 2);
end;
// 2. Поиск максимальной площади
i_max := 1;
max_area := S[1];
for i := 2 to N do
if S[i] > max_area then max_area := S[i]; // Находим максимальную площадь
writeln('---');
writeln('Максимальная площадь: ', max_area : 0 : 2);
writeln('Треугольники с максимальной площадью:');
// 3. Вывод всех треугольников с максимальной площадью
for i := 1 to N do
if S[i] = max_area then
writeln('№', i, ': Катеты (', A[i], ', ', B[i], '), Площадь: ', S[i] : 0 : 2);
end.
Программа сортировки стран по плотности населения
Плотность населения \( D \) вычисляется по формуле \( D = K / S \).
program SortByDensity;
const N = 10; // Количество стран
var i, j, i_min: integer;
temp_s, temp_k, temp_d: real;
temp_name: string;
// Исходные массивы (упрощенные для примера)
NAME: array [1..N] of string[20];
K: array [1..N] of real; // Население (в миллионах)
S: array [1..N] of real; // Площадь (в тыс. км^2)
D: array [1..N] of real; // Плотность
begin
// 1. Ввод/генерация данных и расчет плотности (для краткости - генерация)
// Здесь должны быть циклы readln для NAME, K, S
// ...
// Примерные данные для работы
NAME[1]:='Россия'; K[1]:=146; S[1]:=17098;
NAME[2]:='Бангладеш'; K[2]:=165; S[2]:=147;
// ... (заполнение всех N стран)
// Расчет плотности
for i := 1 to N do D[i] := K[i] / S[i];
// 2. Сортировка выбором по плотности D (по возрастанию)
for i := 1 to N - 1 do
begin
i_min := i;
// Поиск минимальной плотности в несортированной части
for j := i + 1 to N do
if D[j] < D[i_min] then i_min := j;
// Обмен плотностей
temp_d := D[i]; D[i] := D[i_min]; D[i_min] := temp_d;
// Одновременно меняем местами соответствующие NAME, K, S
temp_name := NAME[i]; NAME[i] := NAME[i_min]; NAME[i_min] := temp_name;
temp_k := K[i]; K[i] := K[i_min]; K[i_min] := temp_k;
temp_s := S[i]; S[i] := S[i_min]; S[i_min] := temp_s;
end;
// 3. Вывод отсортированных названий стран и их плотности
writeln('---');
writeln('Страны, отсортированные по плотности населения:');
for i := 1 to N do
writeln(NAME[i], ' (Плотность: ', D[i] : 0 : 4, ')');
end.
Стек и Очередь: Специализированные структуры данных
Стек (Stack):
Очередь (Queue):
Программа анализа скоростного режима
Алгоритм требует обработки массива, поскольку для вычисления средней скорости нужен полный массив данных, и только после этого можно выполнить пункты 5 и 6 (сравнение с найденной средней скоростью).
program SpeedControl;
const N = 100;
var i, max_speed, count_max, count_over_60, count_below_avg: integer;
avg_speed, sum_speed: real;
A: array [1..N] of integer; // Скорости
begin
// 1. Ввод/генерация скоростей (от 0 до 250) и первичные расчеты
sum_speed := 0;
count_over_60 := 0;
max_speed := 0;
for i := 1 to N do
begin
A[i] := random(251); // Скорость от 0 до 250
sum_speed := sum_speed + A[i];
if A[i] > 60 then count_over_60 := count_over_60 + 1; // 1)
if A[i] > max_speed then max_speed := A[i]; // 2)
end;
// 4) Вычисление средней скорости
avg_speed := sum_speed / N;
// 3) Подсчет автомобилей с максимальной скоростью
count_max := 0;
for i := 1 to N do
if A[i] = max_speed then count_max := count_max + 1;
// 5) Подсчет автомобилей со скоростью ниже средней
count_below_avg := 0;
for i := 1 to N do
if A[i] < avg_speed then count_below_avg := count_below_avg + 1;
// 6) Комментарий для каждого автомобиля
writeln('---');
writeln('Сводная информация:');
writeln('1) Количество превысивших 60 км/ч: ', count_over_60);
writeln('2) Максимальная скорость: ', max_speed);
writeln('3) Количество с максимальной скоростью: ', count_max);
writeln('4) Средняя скорость: ', avg_speed : 0 : 2);
writeln('5) Количество со скоростью ниже средней: ', count_below_avg);
writeln('---');
writeln('6) Скорость и комментарии для каждого автомобиля:');
for i := 1 to N do
begin
write('Автомобиль №', i, ' - Скорость ', A[i], ' км/ч: ');
if (A[i] < 1) or (A[i] > 250) then
writeln('Ошибка');
else if A[i] > 60 then
writeln('Нарушитель, если скорость превышает 60 км/ч, но не превышает 250 км/ч');
else if (A[i] >= 30) and (A[i] <= 60) then
writeln('Дисциплинированный водитель, если скорость от 30 до 60 км/ч');
else if A[i] < 30 then
writeln('Тише едешь - дальше будешь, если скорость меньше 30 км/ч');
// В данном решении все условия взаимоисключающие и охватывают весь диапазон от 1 до 250
end;
end.
Задали создать проект?
Создай с помощью ИИ за 5 минут
Список готовых проектов к текущему параграфу.
ВНИМАНИЕ: Представленные фрагменты из учебных материалов используются исключительно в научно-образовательных целях в объеме, оправданном поставленной целью.
Данное использование осуществляется в рамках, установленных законодательством об авторском праве (в частности, нормами о свободном использовании произведения для образовательных целей).
В соответствии с законодательством, автор и источник заимствования указаны для каждого используемого фрагмента.