Вывести данные о квартирах с самой большой площадью и самой маленькой - C (СИ)
Формулировка задачи:
Задание 5: Структуры
Дана информация о пяти квартирах. Запись имеет вид: фамилия владельца,
площадь, число комнат, этаж. Вывести данные о квартирах с самой большой
площадью и самой маленькой.
все что смог сделал
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define n 5
main()
{
int i, j;
struct kvar {char fam[n];float q; int kom; int e;} t;
struct kvar w[n];
printf("\n Vvedite Information o Kvartirah");
for(i=0;i<n;i++)
{printf("\n Familia fladelca, ploshad', chislo komnat, etazh:\n");
scanf("%s%f%i%i", &t.fam, &t.q, &t.kom, &t.e);
w[i]=t;
}
}Решение задачи: «Вывести данные о квартирах с самой большой площадью и самой маленькой»
textual
Листинг программы
#include <stdio.h>
#define SIZE 5
struct apartment{
float area ;
short rooms ;
short floor ;
char *surname;
};
void apartemntPrint(struct apartment *apt){
printf("\r\n area = %f \r\n rooms = %d \r\n floor = %d \r\n surname = %s \r\n",
apt->area, apt->rooms, apt->floor, apt->surname);
}
int main(int argc, char *argv[]){
struct apartment min, max, apt[SIZE] =
{{40.1, 2, 1, "Petrov"},
{60.7, 1, 2, "Ivanov"},
{80, 3, 13, "Lenin"},
{20.4, 1, 15, "Berija"},
{140, 6, 11, "Korolev"}} ;
min = apt[0];
max = apt[0];
for(int i = 1 ; i < SIZE ; i++){
min = min.area > apt[i].area ? apt[i] : min ;
max = max.area < apt[i].area ? apt[i] : max ;
}
printf("\r\n min area \r\n");
apartemntPrint(&min) ;
printf("\r\n max area \r\n");
apartemntPrint(&max) ;
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с файлами и структурой
include
include
- Определяем размер массива структур
define SIZE 5
- Создаем структуру
квартирасо следующими полями: площадь, количество комнат, этаж и фамилия владельца struct apartment{ float area ; short rooms ; short floor ; char surname[20]; }; - Создаем функцию вывода информации о квартире
void apartemntPrint(struct apartment *apt){
printf(
\r\n area = %f \r\n rooms = %d \r\n floor = %d \r\n surname = %s \r\n, apt->area, apt->rooms, apt->floor, apt->surname); } - Создаем основную функцию программы, в которой происходит поиск квартир с минимальной и максимальной площадью
int main(int argc, char *argv[]){
struct apartment min, max, apt[SIZE] =
{{40.1, 2, 1,
Petrov}, {60.7, 1, 2,Ivanov}, {80, 3, 13,Lenin}, {20.4, 1, 15,Berija}, {140, 6, 11,Korolev}} ; min = apt[0]; max = apt[0]; for(int i = 1 ; i < SIZE ; i++){ min = min.area > apt[i].area ? apt[i] : min ; max = max.area < apt[i].area ? apt[i] : max ; } printf(\r\n min area \r\n); apartemntPrint(&min) ; printf(\r\n max area \r\n); apartemntPrint(&max) ; return 0; } - Код начинается с инициализации массива структур
квартирас пятью элементами. Значения площади, количества комнат и этажа берутся произвольно, а фамилии владельцев задаются какPetrov,Ivanov,Lenin,BerijaиKorolev. - Затем создаются две переменные min и max, которые будут использоваться для хранения минимальной и максимальной площади квартир соответственно.
- Далее происходит цикл по всем элементам массива, кроме первого, с целью найти минимальную и максимальную площадь. В каждой итерации цикла текущий элемент сравнивается с элементом min и max, и если его площадь больше или меньше, то он заменяет min или max соответственно.
- После завершения цикла выводятся значения min и max с помощью функции apartemntPrint.
- Значения площади и количества комнат в квартирах могут быть изменены в соответствии с требованиями задачи.