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

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

Восстановить пароль Регистрация
 
Sultik_Zaka
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 58
29.10.2016, 12:09     Вывести имя владельца и название самого тяжелого багажа #1
Всем привет!
Стояла задача написать следующую программу:
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;
}
Соответственно, теперь задача не принимается контестером ((
Можете помочь?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2016, 12:09     Вывести имя владельца и название самого тяжелого багажа
Посмотрите здесь:

C++ как вывести имя программы? именно имя, то что видно в провонике example.exe
C++ Дана информация о пяти квартирах. Запись имеет вид: фамилия владельца, площадь, число комнат, этаж. Вывести данные о квартирах
C++ Опишите функцию Lower(G), определяющую фамилию и имя самого высокого мужчины из списка
C++ Число. Вывести только цифры самого младшего и самого старшего разряда
Верно ли, что вес самого тяжелого человека из группы превышает массу самого легкого более чем в 2 раза? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GbaLog-
Не Эксперт C++
1430 / 616 / 173
Регистрация: 24.08.2014
Сообщений: 2,496
Записей в блоге: 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;
}
Sultik_Zaka
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 58
29.10.2016, 13:10  [ТС]     Вывести имя владельца и название самого тяжелого багажа #3
Спасибо, большое
Но компилятор контестера не умеет работать с size_t
GbaLog-
Не Эксперт C++
1430 / 616 / 173
Регистрация: 24.08.2014
Сообщений: 2,496
Записей в блоге: 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;
}
Sultik_Zaka
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 58
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 ----------
Ни в какую не хочет(
GbaLog-
Не Эксперт C++
1430 / 616 / 173
Регистрация: 24.08.2014
Сообщений: 2,496
Записей в блоге: 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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2016, 13:41     Вывести имя владельца и название самого тяжелого багажа
Еще ссылки по теме:

C++ Найти среди людей самого старшего и самого тяжелого
Вывести данные о пассажирах вес багажа которых больше заданного C++
Вывести имя владельца автомобиля по его номеру C++

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

Или воспользуйтесь поиском по форуму:
Sultik_Zaka
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 58
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;
}
Спасибо за помощь!
Честно говоря, дурацкая система... В условии одно, а решение другое..
Yandex
Объявления
29.10.2016, 13:41     Вывести имя владельца и название самого тяжелого багажа
Ответ Создать тему
Опции темы

Текущее время: 21:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru