Определение площади фигуры с использованием структуры - C (СИ)
Формулировка задачи:
Народ, помогите : маленькая задачка на структуру:
Описать структуру прямоугольника ( ширина, сторона( как я понял эт высота) ). Ввести данные по нескольким прямоугольникам и определить параметры прямоугольника с наименьшей площадью.
Правильно ли я написал ?
И что делать дальше. ПЛЗ напишите
int main()
{ struct pr_ug { //прямоугольник
int sh;//ширина
int st; //высота
} x[4], *p;
x={{10,10},{5,5},{7,7},{6,6}} ;Решение задачи: «Определение площади фигуры с использованием структуры»
textual
Листинг программы
#include <stdio.h>
int main(void)
{
int i,j,y,n,k; // вспомогательные переменные
int mass[5],masf[5]; // и массивы
struct PR_UG // структура "прямоугольник"
{
int sh; // ширина
int st; // высота
}figure[4];
n=4;
for(i=0;i<n;i++) // заполнение массива структур
{
printf("\n Prymougolnik %d\n", i+1);
printf("\n Vvedite shirinu: ");
scanf("%d",&figure[i].sh);
printf("\n Vvedite visotu: ");
scanf("%d",&figure[i].st);
}
for(i=0;i<n;i++) // вычисляем площади прямоугольников
{
mass[i]=figure[i].sh*figure[i].st;
masf[i]=i;
}
for(i=0;i<n;i++) // сортировка "пузырьком"
{
for(j=n-1;j>i;j--)
{
if(mass[j-1]>mass[j] )
{
y=mass[j-1];
mass[j-1]=mass[j];
mass[j]=y;
k=masf[j-1];
masf[j-1]=masf[j];
masf[j]=k;
}
}
}
printf("\n Prymougolnik so storonami %d i %d imeet menshuu ploshyd %d",figure[masf[0]].sh,figure[masf[0]].st,mass[0]);
getch();
return 0;
}
Объяснение кода листинга программы
- Объявление переменных и массивов:
int i,j,y,n,k;- вспомогательные переменные для циклаint mass[5],masf[5];- массивы для хранения площадей и индексовstruct PR_UG figure[4];- массив структур для хранения данных о прямоугольниках
- Заполнение массива структур:
n=4;- количество прямоугольниковfor(i=0;i<n;i++)- цикл для заполнения каждой структуры в массивеprintf(\n Prymougolnik %d\n, i+1);- вывод номера прямоугольникаprintf(\n Vvedite shirinu:);- запрос на ввод ширины прямоугольникаscanf(%d,&figure[i].sh);- считывание ширины в переменную структурыprintf(\n Vvedite visotu:);- запрос на ввод высоты прямоугольникаscanf(%d,&figure[i].st);- считывание высоты в переменную структуры
- Вычисление площадей прямоугольников:
for(i=0;i<n;i++)- цикл для вычисления площади каждого прямоугольникаmass[i]=figure[i].sh*figure[i].st;- вычисление площади и сохранение в массивеmassmasf[i]=i;- сохранение индекса прямоугольника в массивеmasf
- Сортировка массива площадей
пузырьком:for(i=0;i<n;i++)- цикл для прохода по всем элементам массиваfor(j=n-1;j>i;j--)- вложенный цикл для сортировки элементов от большего к меньшемуif(mass[j-1]>mass[j] )- условие для сравнения элементовy=mass[j-1];- временное сохранение значения большего элементаmass[j-1]=mass[j];- обмен значениями элементовmass[j]=y;- обмен значениями элементовk=masf[j-1];- временное сохранение индекса элементаmasf[j-1]=masf[j];- обмен индексами элементовmasf[j]=k;- обмен индексами элементов
- Вывод информации о прямоугольнике с наименьшей площадью:
printf(\n Prymougolnik so storonami %d i %d imeet menshuu ploshyd %d,figure[masf[0]].sh,figure[masf[0]].st,mass[0]);- вывод информации о прямоугольнике с наименьшей площадью
- Ввод для подтверждения получения информации:
getch();- функция для ввода символа подтверждения
- Завершение программы:
return 0;- завершение работы программы