Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Недавно начал учить С++ и в книге написана такой пример, Я ввожу число а нужно чтобы вывело в обратном порядке, я примерно написал но не выходит ))))) http://www.cyberforum.ru/cpp-beginners/thread273258.html
\\ вот что то наклацал но не выходит :) #include "stdafx.h #include <stdio.h> #include <conio.h> #include <iostream> using namespace std; int main () { int i;
C++ что за ошибка такая? не могу исправить.. 1>d:\мусор\qwerty\qwerty\qwertyu.cpp(12) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int вот код: #include <iostream> #include <stdio.h> #include <windows.h> int square(int); main() { int x; http://www.cyberforum.ru/cpp-beginners/thread273257.html
C++ Решение бинарным поиском
Разработать и отладить программу, которая реализует алгоритмы поиска элементов, которые присутствующие в массивах А и В в единственном экземпляре. Использовать биномиальный поиск. используйте пожалуйста "stdafx.h", а не "iostream" Для выполнения задачи используется два одномерных массива целых чисел А и В (количество элементов в массиве может быть изменено). Создать одномерный массив С,...
Как добавить еще одну характеристику для класса C++
Программа следующая: есть порт, 2 терминала разгрузки и 3 типа кораблей. Изначально у меня был только типо корабля и пользователь вводил количество кораблей одного типа. Теперь нужно добавить чтобы у каждого корабля был еще груз (который тоже вводит пользователь). Причем у кораблей одного типа может быть разный груз... Main #include <iostream> #include "Terminal.h" #include "Ship.h" using...
C++ произведение средних арифм. значений "диагоналей " в матрице http://www.cyberforum.ru/cpp-beginners/thread273219.html
Доброго времени суток! Не могли бы вы мне подсказать реализацию на Си, есть задача: по заданной треугольной матрице А сформировать матрицу В, каждый элемент которой равен произведению средних арифметических значений элементов "диагоналей", проходящих в матрице А через элемент а. Впринципе вся реализация понятна, кроме :" произведению средних арифметических значений элементов "диагоналей" ", как...
C++ "Магические" квадраты Задача Magic. Существует огромное количество разных видов "магических" квадратов. Одним из них является такой квадрат: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Выберем любое число, например, 8. Вычеркнем числа, которые стоят в одном рядке и одном столбике с ним. Из чисел, которые остались, опять выберем произвольное число и повторим операцию... подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
10.04.2011, 00:26     Реализовать поиск в массиве объектов пользовательского типа по заданному полю (структуры)
Надеюсь, понравится. )
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;
}
 
Текущее время: 11:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru