Найти минимальную площадь прямоугольника - 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;
}

Объяснение кода листинга программы

  1. Объединение и для ввода-вывода и работы с булевыми значениями соответственно.
  2. Создание переменных count, flag, res, min, a, b типа int и float соответственно. Значение count инициализируется как 0, а flag как true.
  3. Ввод количества прямоугольников с помощью функции scanf и вывод сообщения об ошибке при некорректном вводе.
  4. Организация цикла while по переменной flag. Внутри цикла происходит ввод ширины и высоты прямоугольников с помощью функции scanf.
  5. Проверка корректности введенных значений ширины и высоты прямоугольников (больше 0).
  6. Вычисление площади каждого прямоугольника как произведение его ширины и высоты.
  7. Если это первый прямоугольник, то присваиваем минимальную площадь его значению.
  8. Если это не первый прямоугольник, то проверяем новое значение площади и обновляем минимальную площадь, если новое значение меньше текущего значения минимальной площади.
  9. После завершения цикла while выводим сообщение с минимальной площадью прямоугольника.
  10. Обнуляем переменную count и завершаем программу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5
Похожие ответы