Введение
В этом лабораторном практикуме вы научитесь вычислять периметр многоугольника на языке C. Практикум охватывает следующие шаги: ввод длин сторон в массив, суммирование всех сторон и вывод периметра. Вы создадите программу, которая позволит пользователям вводить длины сторон многоугольника, хранить их в массиве и затем вычислять периметр, суммируя все длины сторон.
Практикум предоставляет пошаговое руководство, включая примеры кода, чтобы помочь вам понять и реализовать вычисление периметра многоугольника на языке C. К концу практикума у вас будет рабочая программа, которая может вычислять периметр многоугольника с количеством сторон до 10.
Ввод длин сторон в массив
В этом шаге вы узнаете, как вводить длины сторон в массив для вычисления периметра многоугольника на языке C. Мы создадим программу, которая позволит пользователям вводить длины сторон многоугольника и хранить их в массиве.
Сначала создадим файл исходного кода C в каталоге проекта:
cd ~/project
nano polygon_perimeter.c
Теперь введите следующий код:
#include <stdio.h>
#define MAX_SIDES 10
int main() {
float sides[MAX_SIDES];
int num_sides;
// Запрос количества сторон у пользователя
printf("Введите количество сторон многоугольника (макс. %d): ", MAX_SIDES);
scanf("%d", &num_sides);
// Ввод длин сторон
printf("Введите длины сторон:\n");
for (int i = 0; i < num_sides; i++) {
printf("Длина стороны %d: ", i + 1);
scanf("%f", &sides[i]);
}
// Вывод введенных длин сторон
printf("\nВведенные длины сторон:\n");
for (int i = 0; i < num_sides; i++) {
printf("Сторона %d: %.2f\n", i + 1, sides[i]);
}
return 0;
}
Компилируем программу:
gcc -o polygon_perimeter polygon_perimeter.c
Запускаем программу:
./polygon_perimeter
Пример вывода:
Введите количество сторон многоугольника (макс. 10): 4
Введите длины сторон:
Длина стороны 1: 5.5
Длина стороны 2: 6.2
Длина стороны 3: 4.3
Длина стороны 4: 7.1
Введенные длины сторон:
Сторона 1: 5.50
Сторона 2: 6.20
Сторона 3: 4.30
Сторона 4: 7.10
Давайте разберем ключевые части кода:
#define MAX_SIDES 10устанавливает максимальное ограничение на количество сторонfloat sides[MAX_SIDES]создает массив для хранения длин сторонscanf()используется для чтения количества сторон и отдельных длин сторон- Цикл
forиспользуется для ввода и последующего отображения длин сторон
Суммирование всех сторон
В этом шаге вы измените предыдущую программу, чтобы вычислить периметр, суммируя длины всех сторон многоугольника.
Откройте существующий файл:
cd ~/project
nano polygon_perimeter.c
Обновите код с вычислением периметра:
#include <stdio.h>
#define MAX_SIDES 10
int main() {
float sides[MAX_SIDES];
int num_sides;
float perimeter = 0.0;
// Запрос количества сторон у пользователя
printf("Введите количество сторон многоугольника (макс. %d): ", MAX_SIDES);
scanf("%d", &num_sides);
// Ввод длин сторон
printf("Введите длины сторон:\n");
for (int i = 0; i < num_sides; i++) {
printf("Длина стороны %d: ", i + 1);
scanf("%f", &sides[i]);
}
// Вычисление периметра суммированием всех сторон
for (int i = 0; i < num_sides; i++) {
perimeter += sides[i];
}
// Вывод длин сторон и периметра
printf("\nВведенные длины сторон:\n");
for (int i = 0; i < num_sides; i++) {
printf("Сторона %d: %.2f\n", i + 1, sides[i]);
}
// Вывод вычисленного периметра
printf("\nПериметр многоугольника: %.2f\n", perimeter);
return 0;
}
Компилируем обновлённую программу:
gcc -o polygon_perimeter polygon_perimeter.c
Запускаем программу:
./polygon_perimeter
Пример вывода:
Введите количество сторон многоугольника (макс. 10): 4
Введите длины сторон:
Длина стороны 1: 5.5
Длина стороны 2: 6.2
Длина стороны 3: 4.3
Длина стороны 4: 7.1
Введенные длины сторон:
Сторона 1: 5.50
Сторона 2: 6.20
Сторона 3: 4.30
Сторона 4: 7.10
Периметр многоугольника: 23.10
Ключевые изменения в этом шаге:
- Добавлена переменная
perimeterдля хранения общей суммы длин сторон - Введён новый цикл
forдля вычисления периметра путём суммирования всех сторон - Добавлено оператор вывода для отображения вычисленного периметра
Вывод Периметра
В этом заключительном шаге вы улучшите программу вычисления периметра многоугольника, добавив форматированный вывод и обработку ошибок для проверки ввода.
Откройте существующий файл:
cd ~/project
nano polygon_perimeter.c
Обновите код с улучшенной проверкой ввода и форматированным выводом:
#include <stdio.h>
#define MAX_SIDES 10
#define MIN_SIDES 3
int main() {
float sides[MAX_SIDES];
int num_sides;
float perimeter = 0.0;
// Запрос количества сторон с проверкой ввода
do {
printf("Введите количество сторон многоугольника (от %d до %d): ",
MIN_SIDES, MAX_SIDES);
scanf("%d", &num_sides);
if (num_sides < MIN_SIDES || num_sides > MAX_SIDES) {
printf("Неверное количество сторон. Пожалуйста, попробуйте снова.\n");
}
} while (num_sides < MIN_SIDES || num_sides > MAX_SIDES);
// Ввод длин сторон с проверкой
printf("Введите длины сторон:\n");
for (int i = 0; i < num_sides; i++) {
float side_length;
do {
printf("Длина стороны %d (должна быть положительной): ", i + 1);
scanf("%f", &side_length);
if (side_length <= 0) {
printf("Неверная длина стороны. Пожалуйста, введите положительное значение.\n");
} else {
sides[i] = side_length;
break;
}
} while (1);
}
// Вычисление периметра суммированием всех сторон
for (int i = 0; i < num_sides; i++) {
perimeter += sides[i];
}
// Форматированный вывод результатов
printf("\n--- Вычисление Периметра Многоугольника ---\n");
printf("Количество сторон: %d\n", num_sides);
printf("\nДлины сторон:\n");
for (int i = 0; i < num_sides; i++) {
printf("Сторона %d: %.2f\n", i + 1, sides[i]);
}
printf("\nВычисление периметра:\n");
for (int i = 0; i < num_sides; i++) {
printf("%s%.2f", (i > 0) ? " + " : "", sides[i]);
}
printf(" = %.2f\n", perimeter);
printf("\nИтоговый периметр: %.2f\n", perimeter);
return 0;
}
Компилируем обновлённую программу:
gcc -o polygon_perimeter polygon_perimeter.c
Запускаем программу:
./polygon_perimeter
Пример вывода:
Введите количество сторон многоугольника (от 3 до 10): 4
Введите длины сторон:
Длина стороны 1 (должна быть положительной): 5.5
Длина стороны 2 (должна быть положительной): 6.2
Длина стороны 3 (должна быть положительной): 4.3
Длина стороны 4 (должна быть положительной): 7.1
--- Вычисление Периметра Многоугольника ---
Количество сторон: 4
Длины сторон:
Сторона 1: 5.50
Сторона 2: 6.20
Сторона 3: 4.30
Сторона 4: 7.10
Вычисление периметра:
5.50 + 6.20 + 4.30 + 7.10 = 23.10
Итоговый периметр: 23.10
Основные улучшения в этом шаге:
- Добавлена проверка ввода для количества сторон и длин сторон.
- Создан более подробный и форматированный вывод.
- Включён пошаговый вывод вычисления периметра.
- Обеспечены минимальные и максимальные ограничения на количество сторон.
Резюме
В этом лабораторном практикуме вы научитесь вводить длины сторон многоугольника в массив, суммировать все стороны для вычисления периметра и выводить результат. Сначала вы запросите у пользователя количество сторон и длину каждой стороны, сохранив длины сторон в массиве. Затем вы суммируете все длины сторон, чтобы вычислить периметр многоугольника. Наконец, вы выведете вычисленный периметр.
Ключевые шаги включают использование scanf() для чтения пользовательского ввода, сохранение длин сторон в массиве, итерацию по массиву для суммирования длин сторон и вывод конечного результата.



