Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Диана_d
4 / 4 / 0
Регистрация: 09.04.2011
Сообщений: 58
#1

Реализовать поиск в массиве объектов пользовательского типа по заданному полю (структуры) - C++

09.04.2011, 23:29. Просмотров 456. Ответов 8
Метки нет (Все метки)

1) В столовой предлагается N комплексных обедов, состоящих из Q блюд. Известна стоимость и калорийность каждого блюда. Сколько стоит самый дешевый и самый дорогой обед? Сколько калорий включает в себя самое калорийное блюдо?

пожалуйста!!! заранее спасибо!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2011, 23:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализовать поиск в массиве объектов пользовательского типа по заданному полю (структуры) (C++):

Реализовать поиск в массиве объектов пользовательского типа по заданному полю - C++
Создать типизированный файл, элементами которого являются сведения об автомобилях: марка, вместимость, год выпуска, цвет. Вывести марку...

Реализовать поиск по заданному полю в массиве объектов пользовательского типа - C++
Все сделал, в своей задачи, осталось только вот это, помогите. Вывод на экран информацию о людях, родившихся под знаком зодиака, название...

Реализовать поиск по заданному полю в массиве объектов пользовательского типа - C++
ОСНОВЫ ОБРАБОТКИ СТРУКТУР С клавиатуры ввести последовательность записей, содержащих информацию о студенческие группы института...

Реализовать поиск по заданному полю в массиве пользовательского типа (структуры) - C++
Для определенной пользователем структуры выполнить следующее: • Написать функцию формирования одномерного массива структур, значения...

Реализовать поиск по заданному полю в массиве объектов пользовательского типа (структура Student) - C++
Описать переменную студент, содержащию имя, фамилию, отчество, название учебного заведения и номер группы. Создать список студентов...

Реализовать поиск и сортировку по заданному полю в массиве объектов пользовательского типа (структура Train) - C++
Описать структуру с именем TRAIN, содержащую следующие поля: NAZV - название пункта назначения, NUMR - номер поезда, DATE - дата отправки,...

8
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
10.04.2011, 00:26 #2
Надеюсь, понравится. )
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
 
typedef struct Course {
  char *name;
  float price;
  float caloricity;
} Course;
 
typedef struct Meal {
  size_t course_count;
  size_t id;
  struct Course* courses;
} Meal;
 
typedef struct Menu {
  size_t meal_count;
  struct Meal* meals;
} Menu;
 
void InitCourse(struct Course* course) {
  char *slugs[] = { "de", "flo", "pe", "ka", "tsi", "us", "pas", "ta",
                    "bra", "ber", "roni" };
  int slug_size = sizeof(slugs) / sizeof(*slugs);
  course->name = (char*)malloc(64);
  course->name[0] = '\0';
  size_t i;
  for (i = 0; i < 3 + rand() % 3; ++i)
    strcat(course->name, slugs[rand() % slug_size]);
  course->name[0] += 'A' - 'a';
  course->price = (rand() % 10000) / 100.;
  course->caloricity = (rand() % 1000) / 10.;
  printf("%s: %.2f rub / %.1f kkal\n", course->name, course->price,
                                       course->caloricity);
}
 
void DeleteCourse(struct Course* course) {
  free(course->name);
}
 
void InitMeal(size_t course_count, struct Meal *meal, size_t id) {
  meal->id = id;
  meal->course_count = course_count;
  meal->courses = (struct Course*)malloc(sizeof(struct Course) * course_count);
  size_t i;
  for (i = 0; i < course_count; ++i)
    InitCourse(&meal->courses[i]);
}
 
void DeleteMeal(struct Meal *meal) {
  size_t i;
  for (i = 0; i < meal->course_count; ++i)
    DeleteCourse(&meal->courses[i]);
  free(meal->courses);
}
 
void InitMenu(size_t course_count, size_t meal_count, struct Menu *menu) {
  menu->meal_count = meal_count;
  menu->meals = (struct Meal*)malloc(sizeof(struct Meal) * meal_count);
  size_t i;
  for (i = 0; i < meal_count; ++i) {
    printf("Meal #%d:\n", i);
    InitMeal(course_count, &menu->meals[i], i);
  }
}
 
void DeleteMenu(struct Menu *menu) {
  size_t i;
  for (i = 0; i < menu->meal_count; ++i)
    DeleteMeal(&menu->meals[i]);
  free(menu->meals);
}
 
float MealPrice(struct Meal *meal) {
  size_t i;
  float result = 0;
  for (i = 0; i < meal->course_count; ++i)
    result += meal->courses[i].price;
  return result;
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  struct Menu menu;
  
  InitMenu(10, 5, &menu);
  float min_meal_price, max_meal_price;
  min_meal_price = max_meal_price = MealPrice(&menu.meals[0]);
  struct Meal *min_price_meal, *max_price_meal;
  min_price_meal = max_price_meal = &menu.meals[0];
 
  size_t i, j;
  for (i = 1; i < menu.meal_count; ++i) {
    float this_meal_price = MealPrice(&menu.meals[i]);
    if (this_meal_price > max_meal_price) {
      max_meal_price = this_meal_price;
      max_price_meal = &menu.meals[i];
    }
    if (this_meal_price < min_meal_price) {
      min_meal_price = this_meal_price;
      min_price_meal = &menu.meals[i];
    }
  }
  printf("Maximum price meal id: %d, price: %.2f rub.\n", 
         max_price_meal->id, max_meal_price);
  printf("Minimum price meal id: %d, price: %.2f rub.\n", 
         min_price_meal->id, min_meal_price);
 
  struct Course* max_calority_course = &menu.meals[0].courses[0];
  for (i = 0; i < menu.meal_count; ++i)
    for (j = 0; j < menu.meals[i].course_count; ++j)
      if (menu.meals[i].courses[j].caloricity >
          max_calority_course->caloricity)
        max_calority_course = &menu.meals[i].courses[j];
  printf("Max calority course is %s, price %.2f, kkal: %.1f",
         max_calority_course->name, max_calority_course->price,
         max_calority_course->caloricity);
 
  DeleteMenu(&menu);
 
  return 0;
}
2
Диана_d
4 / 4 / 0
Регистрация: 09.04.2011
Сообщений: 58
10.04.2011, 02:24  [ТС] #3
не работает((((((((((((
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
10.04.2011, 02:51 #4
Как информативно. Могу ответить в том же духе: "А у меня работает".

В чем выражается "не работает"? Если не компилируется, то какие ошибки, на каких строках? Если выдает неправильный результат, то какой? Вывод программы поможет.
1
Диана_d
4 / 4 / 0
Регистрация: 09.04.2011
Сообщений: 58
10.04.2011, 02:52  [ТС] #5
нет, она работает, но вот только на секунду включается и снова синий экран...
нужно сделать задержку экрана, но как??
0
vitaska
86 / 86 / 2
Регистрация: 04.02.2010
Сообщений: 162
10.04.2011, 02:55 #6
подключить библиотеку #include <conio.h>

в функции main() перед return 0; написать getch();
1
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
10.04.2011, 02:56 #7
Тогда чего говорить, что не работает?
Можно добавить в конце программы ввод чего-нибудь ненужного.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
 
typedef struct Course {
  char *name;
  float price;
  float caloricity;
} Course;
 
typedef struct Meal {
  size_t course_count;
  size_t id;
  struct Course* courses;
} Meal;
 
typedef struct Menu {
  size_t meal_count;
  struct Meal* meals;
} Menu;
 
void InitCourse(struct Course* course) {
  char *slugs[] = { "de", "flo", "pe", "ka", "tsi", "us", "pas", "ta",
                    "bra", "ber", "roni" };
  int slug_size = sizeof(slugs) / sizeof(*slugs);
  course->name = (char*)malloc(64);
  course->name[0] = '\0';
  size_t i;
  for (i = 0; i < 3 + rand() % 3; ++i)
    strcat(course->name, slugs[rand() % slug_size]);
  course->name[0] += 'A' - 'a';
  course->price = (rand() % 10000) / 100.;
  course->caloricity = (rand() % 1000) / 10.;
  printf("%s: %.2f rub / %.1f kkal\n", course->name, course->price,
                                       course->caloricity);
}
 
void DeleteCourse(struct Course* course) {
  free(course->name);
}
 
void InitMeal(size_t course_count, struct Meal *meal, size_t id) {
  meal->id = id;
  meal->course_count = course_count;
  meal->courses = (struct Course*)malloc(sizeof(struct Course) * course_count);
  size_t i;
  for (i = 0; i < course_count; ++i)
    InitCourse(&meal->courses[i]);
}
 
void DeleteMeal(struct Meal *meal) {
  size_t i;
  for (i = 0; i < meal->course_count; ++i)
    DeleteCourse(&meal->courses[i]);
  free(meal->courses);
}
 
void InitMenu(size_t course_count, size_t meal_count, struct Menu *menu) {
  menu->meal_count = meal_count;
  menu->meals = (struct Meal*)malloc(sizeof(struct Meal) * meal_count);
  size_t i;
  for (i = 0; i < meal_count; ++i) {
    printf("Meal #%d:\n", i);
    InitMeal(course_count, &menu->meals[i], i);
  }
}
 
void DeleteMenu(struct Menu *menu) {
  size_t i;
  for (i = 0; i < menu->meal_count; ++i)
    DeleteMeal(&menu->meals[i]);
  free(menu->meals);
}
 
float MealPrice(struct Meal *meal) {
  size_t i;
  float result = 0;
  for (i = 0; i < meal->course_count; ++i)
    result += meal->courses[i].price;
  return result;
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  struct Menu menu;
  
  InitMenu(10, 5, &menu);
  float min_meal_price, max_meal_price;
  min_meal_price = max_meal_price = MealPrice(&menu.meals[0]);
  struct Meal *min_price_meal, *max_price_meal;
  min_price_meal = max_price_meal = &menu.meals[0];
 
  size_t i, j;
  for (i = 1; i < menu.meal_count; ++i) {
    float this_meal_price = MealPrice(&menu.meals[i]);
    if (this_meal_price > max_meal_price) {
      max_meal_price = this_meal_price;
      max_price_meal = &menu.meals[i];
    }
    if (this_meal_price < min_meal_price) {
      min_meal_price = this_meal_price;
      min_price_meal = &menu.meals[i];
    }
  }
  printf("Maximum price meal id: %d, price: %.2f rub.\n", 
         max_price_meal->id, max_meal_price);
  printf("Minimum price meal id: %d, price: %.2f rub.\n", 
         min_price_meal->id, min_meal_price);
 
  struct Course* max_calority_course = &menu.meals[0].courses[0];
  for (i = 0; i < menu.meal_count; ++i)
    for (j = 0; j < menu.meals[i].course_count; ++j)
      if (menu.meals[i].courses[j].caloricity >
          max_calority_course->caloricity)
        max_calority_course = &menu.meals[i].courses[j];
  printf("Max calority course is %s, price %.2f, kkal: %.1f\n",
         max_calority_course->name, max_calority_course->price,
         max_calority_course->caloricity);
 
  DeleteMenu(&menu);
 
  scanf("%d", &i);
  return 0;
}
Не надо conio подключать и getch использовать. Это далеко не везде соберется. С тем же успехом можно порекомендовать
C
1
2
3
4
#include <curses.h>
...
getch();
...
2
vitaska
86 / 86 / 2
Регистрация: 04.02.2010
Сообщений: 162
10.04.2011, 03:00 #8
Цитата Сообщение от lemegeton Посмотреть сообщение
Не надо conio подключать и getch использовать. Это далеко не везде соберется. С тем же успехом можно порекомендовать
Я это прекрасно понимаю, но в данном случае это выход для ТСа
1
Диана_d
4 / 4 / 0
Регистрация: 09.04.2011
Сообщений: 58
10.04.2011, 03:04  [ТС] #9
огромное Спасибо!!!
0
10.04.2011, 03:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2011, 03:04
Привет! Вот еще темы с ответами:

Реализовать поиск по заданному полю в массиве объектов ползовательского типа (структуры) - C++
Здравствуйте, помогите разобраться как решать данную задачу, заранее спасибо! Дан массив записей, содержащий сведения о товарах:...

Реализовать поиск по заданному полю в массиве объектов ползовательского типа (структуры) - C++
Задача: Используя функции и режим меню, создать файл из 10 структур, просмотреть файл, добавить в файл новую информацию и, применяя режим...

Реализовать сортировку массива объектов пользовательского типа по заданному полю (структуры) - C++
Есть перечень студентов, прибывших в лагерь по форме: ФИО, факультет, номер отряда. Упорядочить перечень по номерам отрядов, внутри отряда...

Реализовать поиск по заданному полю в массиве объектов пользовательского типа ("Справочная автовокзала") - C++
В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны его номер, тип автобуса, пункт ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru