Найти минимальную площадь прямоугольника - C (СИ)
Формулировка задачи:
Дано целое число N и набор из N прямоугольников, заданных своими сторонами – парами чисел (a, b). Найти минимальную площадь прямоугольника из данного набора.
Ввод
В первой строке находится натуральное число N (1≤N≤100) – количество прямоугольников. Далее идут N строк, по два положительных вещественных числа в каждой строке.
Вывод
Вывести минимальную площадь прямоугольника из набора в виде вещественного числа с двумя знаками после запятой.
Пример ввода
3
1.0 2.0
2.0 1.5
1.5 1.0
Пример вывода
1.50
Решено на паскале. Подскажите, а как на си то же сделать?
{task minmax2} var n,i,a,b,min_s:integer; f:boolean; begin repeat write('Введите целое n='); readln(n); until n>0; writeln('Введите ',n, ' пар сторон прямоугольников'); f:=false; for i:=1 to n do begin repeat write('a,b='); readln(a,b); until (a>0) and (b>0); if not f then begin f:=true; min_s:=a*b; end else if a*b<min_s then min_s:=a*b; end; writeln('Минимальная площадь=',min_s); readln; end.
Решение задачи: «Найти минимальную площадь прямоугольника»
textual
Листинг программы
#include <stdio.h> #include <stdbool.h> int main() { int count = 0 , flag = true; float res = 0.0, min = 0.0, a = 0.0, b = 0.0; while(flag){ printf("\nКоличество прямоугольников: "); scanf("%d", &count); if (count<=0){ printf("Некорректное значение"); count = 0 ; } else { int j = 0; while(j<count){ printf("Прямоугольник(ширина и высота через пробел)#%2d: ",j); scanf("%f %f", &a, &b); if ((a<=0) || (b<=0)){ printf("Некорректное значение\n"); a = 0; b = 0; j = 0; } else { res = a*b; if (!j) min = res; min = res<min ? res : min; a = 0; b = 0; j++; } } } printf("Минимальная площадь введенного прямоугольника: %.2f\n", min); flag = false; } return 0; }
Объяснение кода листинга программы
- Объединение
и для ввода-вывода и работы с булевыми значениями соответственно. - Создание переменных count, flag, res, min, a, b типа int и float соответственно. Значение count инициализируется как 0, а flag как true.
- Ввод количества прямоугольников с помощью функции scanf и вывод сообщения об ошибке при некорректном вводе.
- Организация цикла while по переменной flag. Внутри цикла происходит ввод ширины и высоты прямоугольников с помощью функции scanf.
- Проверка корректности введенных значений ширины и высоты прямоугольников (больше 0).
- Вычисление площади каждого прямоугольника как произведение его ширины и высоты.
- Если это первый прямоугольник, то присваиваем минимальную площадь его значению.
- Если это не первый прямоугольник, то проверяем новое значение площади и обновляем минимальную площадь, если новое значение меньше текущего значения минимальной площади.
- После завершения цикла while выводим сообщение с минимальной площадью прямоугольника.
- Обнуляем переменную count и завершаем программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д