Консультация № 189311
06.05.2016, 12:30
0.00 руб.
0 2 1
Здравствуйте! Прошу помощи в следующем вопросе:
Помогите, пожалуйста, разобраться с программой. Определить структурный тип {Число мест, Общий вес}. Создать массив структур, содержащих информацию о багаже нескольких пассажиров. Найти багаж, число вещей в котором не меньше, чем в любом другом, а вес, не больше, чем в любом другом с тем же числом вещей.
Проблема в том, что не получается написать функцию.

Приложение:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
/**Определить структурный тип Baggage: {Число мест, Общий вес}. Создать массив структур, содержащих информацию
о багаже нескольких пассажиров. Найти багаж, число вещей в котором не меньше, чем в любом другом,
а вес, не больше, чем в любом другом с тем же числом вещей. */

struct Baggage{
int places;
int weight;
};

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
/// Объявить и инициализировать массив типа struct Baggage

struct Baggage{
int i;
printf("\n\tВведите число мест и общий вес багажа в формате"
"\n\n\t\t МЕСТ, ВЕС\n\n\t\tВсего десять пар.\n\n");
for( i = 0; i < 10; i++){
scanf("%d, %d", &LugFlight[i].places, &LugFlight[i].weight);}
}
struct Baggage *SearchMaxMin( struct Baggage *, int );
/**
Возвращает указатель
на багаж (элемент массива LugFlight) в котором макс. кол-во мест и
мин. общий вес среди багажей с таким же кол-вом мест.*/

struct Baggage *MaxMinLug = SearchMaxMin( LugFlight, 10 );

printf("\n\n\tИскомый багаж: %d мест общим весом %d кг.\n\n",
MaxMinLug -> places, MaxMinLug -> weight );
return 0;
}
struct Baggage *SearchMaxMin(Baggage *LugFlight, int max){
int i;
LugFlight[0].plases=max;
for(i=0;i<10;i++){
if (LugFlight[i].places>max){
max=LugFlight[i].places;}
}


return LugFlight;
};

Обсуждение

давно
Посетитель
7438
7205
06.05.2016, 17:34
общий
это ответ
Здравствуйте, user8351!
Посмотрите, как я сделал...
[code h=200]
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <windows.h>

/**Определить структурный тип Baggage: {Число мест, Общий вес}. Создать массив структур, содержащих информацию
о багаже нескольких пассажиров. Найти багаж, число вещей в котором не меньше, чем в любом другом,
а вес, не больше, чем в любом другом с тем же числом вещей. */

struct Baggage{
int places;
int weight;
};

#define N 10

struct Baggage *SearchMaxMin( struct Baggage *, int);

int main()
{
int i;

SetConsoleCP(1251);
SetConsoleOutputCP(1251);

Baggage *LugFlight = (Baggage*)malloc(N*sizeof(Baggage));

if (LugFlight)
{
printf("\n\tВведите число мест и общий вес багажа в формате"
"\n\n\t\t МЕСТ, ВЕС\n\n\t\tВсего десять пар.\n\n");
for( i = 0; i < N; i++)
scanf("%d, %d", &LugFlight[i].places, &LugFlight[i].weight);


struct Baggage *MaxMinLug = SearchMaxMin(LugFlight, N);

if (MaxMinLug)
{
printf("\n\n\tИскомый багаж: %d мест общим весом %d кг.\n\n",
MaxMinLug -> places, MaxMinLug -> weight );
free (MaxMinLug);
}
free (LugFlight);
}
else
printf ("Ошибка выделения памяти!\n");
return 0;
}

/* Возвращает указатель
на багаж (элемент массива LugFlight) в котором макс. кол-во мест и
мин. общий вес среди багажей с таким же кол-вом мест.*/

struct Baggage *SearchMaxMin(Baggage *LugFlight, int max)
{
int i;
Baggage *Result = (Baggage*)malloc(sizeof(Baggage));

Result->places = LugFlight[0].places;
Result->weight = LugFlight[0].weight;
for(i=1; i<max; i++)
{
if (LugFlight[i].places > Result->places)
{
Result->places = LugFlight[i].places;
Result->weight = LugFlight[i].weight;
}
else if (LugFlight[i].places == Result->places)
{
if (LugFlight[i].weight <= Result->weight)
Result->weight = LugFlight[i].weight;
}
}
return Result;
};
[/code]
5
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
399277
11
07.05.2016, 03:35
общий
Огромное спасибо!
Форма ответа