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

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

Войти
Регистрация
Восстановить пароль
 
Sultik_Zaka
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 59
#1

Вывести имя владельца и название самого тяжелого багажа - C++

29.10.2016, 12:09. Просмотров 173. Ответов 6
Метки нет (Все метки)

Всем привет!
Стояла задача написать следующую программу:
Input:
3 [n = кол-во пассажиров, 1 <= n <= 1000]
Bob [имя]
3 [m = кол-во багажей]
Apple 4 1.5 [1.название багажа, 2. кол-во штук, 3. масса одной единицы]
Limon 3 0.33
Cherry 5 0.4

Patrick
2
Melon 2 8
Tomato 3 5

Sandy
1
Nuts 1 1
/*----------------*/
Output:
Patrick [Имя владельца самого тяжелого багажа]
Melon [Название багажа]

Так вот, в условии требовалось создать такие структуры:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct Luggage {
    
    char *description;
    int count;
    double weight;
};
 
struct Passenger {
 
    int luggageSize;
    char *name;
    Luggage *luggage;
};
В указателях я слаб, поэтому сделал такое чудо:
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
#include <iostream>
 
using namespace std;
 
struct Luggage
{
    char description[26];
    int count;
    double weight;
};
struct Passenger
{
 
    int luggageSize;
    char name[1000];
    Luggage luggage[26];
};
 
int main()
{
    Passenger info1[1000];
    int i, j, n, m;
    double wmax[1000], max[1000], max2;
    cin >> n; // количество пассажиров
    if(n >= 1 && n <= 1000)
    {
        for(i=0; i < n; i++)
        {
            cin >> info1[i].name;
            cin >> m; // имя пассажира
            for(j=0; j<m; j++)
            {
                cin >> info1[i].luggage[j].description >> info1[i].luggage[j].count >> info1[i].luggage[j].weight;
                wmax[j] = (info1[i].luggage[j].count)*(info1[i].luggage[j].weight);
                max[i] = wmax[0];
                if(wmax[j] > max[i])
                {
                    max[i] = wmax[j];
                }
            }
        }
        max2 = max[0];
        for(i=0; i < n; i++)
        {
            if(max[i] > max2)
            {
                max2 = max[i];
            }
        }
        for(i = 0; i < n; i++)
        {
            for(j = 0; j < m; j++)
            {
                int xx[1000];
                xx[i] = ((info1[i].luggage[j].count) * (info1[i].luggage[j].weight));
                if(max2 == xx[i])
                {
                    cout << info1[i].name << "\n" << info1[i].luggage[j].description;
                    i = n;
                }
            }
        }
    }
    return 0;
}
Соответственно, теперь задача не принимается контестером ((
Можете помочь?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2016, 12:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести имя владельца и название самого тяжелого багажа (C++):

Найти среди людей самого старшего и самого тяжелого - C++
Здраствуйте. Есть такое задание: нужно с помощью классов создать 100 человек с параметрами вес и возраст, после чего найти самого...

Найти самого высокого и самого тяжелого студента в группах - C++
Здравствуйте, Помогите, пожалуйста, с задачкой. Нужно решить через 3мерный массив. На первом курсе есть 3 группы. В первой из них 3...

Верно ли, что вес самого тяжелого человека из группы превышает массу самого легкого более чем в 2 раза? - C++
4. Известен вес каждого человека из группы. Верно ли, что вес самого тяжелого из них превышает массу самого легкого более чем в 2 раза?

Вывести имя владельца автомобиля по его номеру - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; struct Info{ char name_car; int number; char color; char name; ...

Число. Вывести только цифры самого младшего и самого старшего разряда - C++
Дано n-значное целое число введеное с клавиатуры. Вывести только цифры самого младшего и самого старшего разряда.

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
GbaLog-
Любитель чаепитий
2774 / 1296 / 313
Регистрация: 24.08.2014
Сообщений: 4,607
Записей в блоге: 1
Завершенные тесты: 2
29.10.2016, 12:43 #2
Цитата Сообщение от Sultik_Zaka Посмотреть сообщение
Можете помочь?
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
126
127
128
129
/////////////////////////////////////////////////////////////////////////////////////////
// Input:
// 3 [n = кол-во пассажиров, 1 <= n <= 1000]
// Bob [имя]
// 3 [m = кол-во багажей]
// Apple 4 1.5 [1.название багажа, 2. кол-во штук, 3. масса одной единицы]
// Limon 3 0.33
// Cherry 5 0.4
 
// Patrick 
// 2
// Melon 2 8
// Tomato 3 5
 
// Sandy
// 1
// Nuts 1 1
// /*----------------*/
// Output:
// Patrick [Имя владельца самого тяжелого багажа]
// Melon [Название багажа]
// Так вот, в условии требовалось создать такие структуры:
// struct Luggage {
    
    // char *description;
    // int count;
    // double weight;
// };
 
// struct Passenger {
 
    // int luggageSize;
    // char *name;
    // Luggage *luggage;
// };
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
/////////////////////////////////////////////////////////////////////////////////////////
struct Luggage
{
    char *description;
    int count;
    double weight;
};
/////////////////////////////////////////////////////////////////////////////////////////
struct Passenger
{
    unsigned luggageSize;
    char *name;
    Luggage *luggage;
};
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    size_t n{};
    
    std::cin >> n;
    
    Passenger* passengers = new Passenger[n];
    double* weight_all = new double[n];
    
    for( size_t it{}; it < n; ++it )
    {
        passengers[it].name = new char[100];
        std::cin 
            >> passengers[it].name
            >> passengers[it].luggageSize;
        passengers[it].luggage = new Luggage[passengers[it].luggageSize];
        for( size_t it2{}; it2 < passengers[it].luggageSize; ++it2 )
        {
            passengers[it].luggage[it2].description = new char[100];
            std::cin
                >> passengers[it].luggage[it2].description
                >> passengers[it].luggage[it2].count
                >> passengers[it].luggage[it2].weight;
            if( 
                    weight_all[it]
                  < 
                    passengers[it].luggage[it2].count 
                  * passengers[it].luggage[it2].weight
              )
                weight_all[it] = passengers[it].luggage[it2].count
                               * passengers[it].luggage[it2].weight;
        }
    }
    
    size_t max_idx{};
    
    for( size_t it{1}; it < n; ++it )
    {
        if( weight_all[it] > weight_all[max_idx] )
        {
            max_idx = it;
        }
    }
    
    size_t max_idx_luggage{};
    
    for( size_t it{1}; it < passengers[max_idx].luggageSize; ++it )
    {
        if( 
                passengers[max_idx].luggage[it].count 
              * passengers[max_idx].luggage[it].weight
              >
                passengers[max_idx].luggage[max_idx_luggage].count
              * passengers[max_idx].luggage[max_idx_luggage].weight 
          )
        {
            max_idx_luggage = it;
        }
    }
    
    std::cout
        << passengers[max_idx].name
        << '\n'
        << passengers[max_idx].luggage[max_idx_luggage].description;
        
    for( size_t it{}; it < n; ++it )
    {
        for( size_t it2{}; it2 < passengers[it].luggageSize; ++it2 )
        {
            delete passengers[it].luggage[it2].description;
        }
        delete [] passengers[it].luggage;
        delete passengers[it].name;
    }
    delete [] passengers;
    delete weight_all;
}
0
Sultik_Zaka
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 59
29.10.2016, 13:10  [ТС] #3
Спасибо, большое
Но компилятор контестера не умеет работать с size_t
0
GbaLog-
Любитель чаепитий
2774 / 1296 / 313
Регистрация: 24.08.2014
Сообщений: 4,607
Записей в блоге: 1
Завершенные тесты: 2
29.10.2016, 13:18 #4
Цитата Сообщение от Sultik_Zaka Посмотреть сообщение
не умеет работать с size_t
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
126
127
128
129
/////////////////////////////////////////////////////////////////////////////////////////
// Input:
// 3 [n = кол-во пассажиров, 1 <= n <= 1000]
// Bob [имя]
// 3 [m = кол-во багажей]
// Apple 4 1.5 [1.название багажа, 2. кол-во штук, 3. масса одной единицы]
// Limon 3 0.33
// Cherry 5 0.4
 
// Patrick 
// 2
// Melon 2 8
// Tomato 3 5
 
// Sandy
// 1
// Nuts 1 1
// /*----------------*/
// Output:
// Patrick [Имя владельца самого тяжелого багажа]
// Melon [Название багажа]
// Так вот, в условии требовалось создать такие структуры:
// struct Luggage {
    
    // char *description;
    // int count;
    // double weight;
// };
 
// struct Passenger {
 
    // int luggageSize;
    // char *name;
    // Luggage *luggage;
// };
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
/////////////////////////////////////////////////////////////////////////////////////////
struct Luggage
{
    char *description;
    int count;
    double weight;
};
/////////////////////////////////////////////////////////////////////////////////////////
struct Passenger
{
    unsigned luggageSize;
    char *name;
    Luggage *luggage;
};
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    unsigned n{};
    
    std::cin >> n;
    
    Passenger* passengers = new Passenger[n];
    double* weight_all = new double[n];
    
    for( unsigned it{}; it < n; ++it )
    {
        passengers[it].name = new char[100];
        std::cin 
            >> passengers[it].name
            >> passengers[it].luggageSize;
        passengers[it].luggage = new Luggage[passengers[it].luggageSize];
        for( unsigned it2{}; it2 < passengers[it].luggageSize; ++it2 )
        {
            passengers[it].luggage[it2].description = new char[100];
            std::cin
                >> passengers[it].luggage[it2].description
                >> passengers[it].luggage[it2].count
                >> passengers[it].luggage[it2].weight;
            if( 
                    weight_all[it]
                  < 
                    passengers[it].luggage[it2].count 
                  * passengers[it].luggage[it2].weight
              )
                weight_all[it] = passengers[it].luggage[it2].count
                               * passengers[it].luggage[it2].weight;
        }
    }
    
    unsigned max_idx{};
    
    for( unsigned it{1}; it < n; ++it )
    {
        if( weight_all[it] > weight_all[max_idx] )
        {
            max_idx = it;
        }
    }
    
    unsigned max_idx_luggage{};
    
    for( unsigned it{1}; it < passengers[max_idx].luggageSize; ++it )
    {
        if( 
                passengers[max_idx].luggage[it].count 
              * passengers[max_idx].luggage[it].weight
              >
                passengers[max_idx].luggage[max_idx_luggage].count
              * passengers[max_idx].luggage[max_idx_luggage].weight 
          )
        {
            max_idx_luggage = it;
        }
    }
    
    std::cout
        << passengers[max_idx].name
        << '\n'
        << passengers[max_idx].luggage[max_idx_luggage].description;
        
    for( unsigned it{}; it < n; ++it )
    {
        for( unsigned it2{}; it2 < passengers[it].luggageSize; ++it2 )
        {
            delete [] passengers[it].luggage[it2].description;
        }
        delete [] passengers[it].luggage;
        delete [] passengers[it].name;
    }
    delete [] passengers;
    delete [] weight_all;
}
0
Sultik_Zaka
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 59
29.10.2016, 13:22  [ТС] #5
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
---------- compiler_stdout.txt ----------
 
---------- compiler_stderr.txt ----------
Solution.cpp: In function `int main()':
Solution.cpp:19: error: a function-definition is not allowed here before '{' token
Solution.cpp:21: error: `n' was not declared in this scope
Solution.cpp:26: error: a function-definition is not allowed here before '{' token
Solution.cpp:26: error: `it' was not declared in this scope
Solution.cpp:33: error: a function-definition is not allowed here before '{' token
Solution.cpp:33: error: `it2' was not declared in this scope
Solution.cpp:51: error: a function-definition is not allowed here before '{' token
Solution.cpp:53: error: a function-definition is not allowed here before '{' token
Solution.cpp:53: error: `it' was not declared in this scope
Solution.cpp:55: error: `max_idx' was not declared in this scope
Solution.cpp:61: error: a function-definition is not allowed here before '{' token
Solution.cpp:63: error: a function-definition is not allowed here before '{' token
Solution.cpp:63: error: `it' was not declared in this scope
Solution.cpp:63: error: `max_idx' was not declared in this scope
Solution.cpp:69: error: `max_idx_luggage' was not declared in this scope
Solution.cpp:78: error: `max_idx' was not declared in this scope
Solution.cpp:80: error: `max_idx_luggage' was not declared in this scope
Solution.cpp:82: error: a function-definition is not allowed here before '{' token
Solution.cpp:82: error: `it' was not declared in this scope
Solution.cpp:84: error: a function-definition is not allowed here before '{' token
Solution.cpp:84: error: `it2' was not declared in this scope
 
---------- linker_stdout.txt ----------
 
---------- linker_stderr.txt ----------
Ни в какую не хочет(
0
GbaLog-
Любитель чаепитий
2774 / 1296 / 313
Регистрация: 24.08.2014
Сообщений: 4,607
Записей в блоге: 1
Завершенные тесты: 2
29.10.2016, 13:35 #6
Цитата Сообщение от Sultik_Zaka Посмотреть сообщение
Ни в какую не хочет(
С++11 надо включить.
Либо везде, где ошибки, вместо {} поставить = 0 или = тому, что в фигурных скобках.

Добавлено через 8 минут
Короче вот так:
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
126
127
128
129
/////////////////////////////////////////////////////////////////////////////////////////
// Input:
// 3 [n = кол-во пассажиров, 1 <= n <= 1000]
// Bob [имя]
// 3 [m = кол-во багажей]
// Apple 4 1.5 [1.название багажа, 2. кол-во штук, 3. масса одной единицы]
// Limon 3 0.33
// Cherry 5 0.4
 
// Patrick 
// 2
// Melon 2 8
// Tomato 3 5
 
// Sandy
// 1
// Nuts 1 1
// /*----------------*/
// Output:
// Patrick [Имя владельца самого тяжелого багажа]
// Melon [Название багажа]
// Так вот, в условии требовалось создать такие структуры:
// struct Luggage {
    
    // char *description;
    // int count;
    // double weight;
// };
 
// struct Passenger {
 
    // int luggageSize;
    // char *name;
    // Luggage *luggage;
// };
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
/////////////////////////////////////////////////////////////////////////////////////////
struct Luggage
{
    char *description;
    int count;
    double weight;
};
/////////////////////////////////////////////////////////////////////////////////////////
struct Passenger
{
    unsigned luggageSize;
    char *name;
    Luggage *luggage;
};
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    unsigned n = 0;
    
    std::cin >> n;
    
    Passenger* passengers = new Passenger[n];
    double* weight_all = new double[n];
    
    for( unsigned it = 0; it < n; ++it )
    {
        passengers[it].name = new char[100];
        std::cin 
            >> passengers[it].name
            >> passengers[it].luggageSize;
        passengers[it].luggage = new Luggage[passengers[it].luggageSize];
        for( unsigned it2 = 0; it2 < passengers[it].luggageSize; ++it2 )
        {
            passengers[it].luggage[it2].description = new char[100];
            std::cin
                >> passengers[it].luggage[it2].description
                >> passengers[it].luggage[it2].count
                >> passengers[it].luggage[it2].weight;
            if( 
                    weight_all[it]
                  < 
                    passengers[it].luggage[it2].count 
                  * passengers[it].luggage[it2].weight
              )
                weight_all[it] = passengers[it].luggage[it2].count
                               * passengers[it].luggage[it2].weight;
        }
    }
    
    unsigned max_idx = 0;
    
    for( unsigned it = 1; it < n; ++it )
    {
        if( weight_all[it] > weight_all[max_idx] )
        {
            max_idx = it;
        }
    }
    
    unsigned max_idx_luggage = 0;
    
    for( unsigned it = 1; it < passengers[max_idx].luggageSize; ++it )
    {
        if( 
                passengers[max_idx].luggage[it].count 
              * passengers[max_idx].luggage[it].weight
              >
                passengers[max_idx].luggage[max_idx_luggage].count
              * passengers[max_idx].luggage[max_idx_luggage].weight 
          )
        {
            max_idx_luggage = it;
        }
    }
    
    std::cout
        << passengers[max_idx].name
        << '\n'
        << passengers[max_idx].luggage[max_idx_luggage].description;
        
    for( unsigned it = 0; it < n; ++it )
    {
        for( unsigned it2 = 0; it2 < passengers[it].luggageSize; ++it2 )
        {
            delete [] passengers[it].luggage[it2].description;
        }
        delete [] passengers[it].luggage;
        delete [] passengers[it].name;
    }
    delete [] passengers;
    delete [] weight_all;
}
0
Sultik_Zaka
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 59
29.10.2016, 13:41  [ТС] #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
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
struct Luggage 
{
    char description[100];
    int count[10];
    double weight[10];
};
 
struct Passenger 
{
    int luggageSize;
    char name[100];
    Luggage luggage;
};
int main()
{
    int n;
    Passenger person[1000];
    cin >> n;
    double sum;
    double temp = 0;
    string name;
    string fruit;
    for (int i = 0;i < n;i++)
    {
        cin >> person[i].name;
        cin >> person[i].luggageSize;
        for (int j = 0;j < person[i].luggageSize;j++)
        {
            cin >> person[i].luggage.description;
            cin >> person[i].luggage.count[j];
            cin >> person[i].luggage.weight[j];
            sum = person[i].luggage.count[j] * person[i].luggage.weight[j];
            if (sum > temp)
            {
                temp = sum;
                name = person[i].name;
                fruit = person[i].luggage.description;
            }
        }
    }
    for (int i = 0;i < name.length();i++)
    {
        cout << name[i];
    }
    cout << endl;
    for (int i = 0;i < fruit.length();i++)
    {
        cout << fruit[i];
    }
    cout << endl;
    return 0;
}
Спасибо за помощь!
Честно говоря, дурацкая система... В условии одно, а решение другое..
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2016, 13:41
Привет! Вот еще темы с ответами:

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

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

как вывести имя программы? именно имя, то что видно в провонике example.exe - C++
собственно вопрос ^. это возможно? Добавлено через 18 минут догадался, кому надо ^^ #include &lt;iostream.h&gt; using std::cout; ...

Опишите функцию Lower(G), определяющую фамилию и имя самого высокого мужчины из списка - C++
Имеется список людей (n - человек), среди которых есть мужчины и женщины, хранятся следующие данные: фамилия, имя, пол (true - мужской,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.10.2016, 13:41
Ответ Создать тему
Опции темы

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