Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 30.05.2019
Сообщений: 37

Найти общий вес багажа для каждого пассажира

13.05.2021, 23:01. Показов 2621. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В качестве шаблона привожу текстовый файл Passengers.txt, в нем данные построчно, в виде
[Имя] [Фамилия] [Отчество] [Кол-во багажных мест] [Вес каждого места]
Для каждого багажного места свой вес. Во вложенном шаблоне видно, как это должно выглядеть, Мне нужно найти общий вес для каждого пассажира (то есть сложить вес всех багажных мест, или проще говоря просуммировать все числа пропустив первое, которое является кол-вом мест), для дальнейшей работы с ним, при этом не трогая кол-во багажных мест. Но никак не выходит это сделать, сижу уже битый час. От безысходности даже пробовал менять положение курсора в файле, для каждой отдельной строки переводя курсор на определенное кол-во байт, которое высчитывал по длине строк, но этот вариант правильно считает только первую строку, а в остальных складывает не то, что надо Вот мой код:
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 "stdafx.h"
#include <iostream>
#include <fstream>
#include "windows.h"
#include <string>
#include <sstream>
#include <cstdio>
using namespace std;
 
struct passengers
{
    string surname;
    string name;
    string patronymic;
    int number;
    int weight;
};
int main()
{
 
    setlocale(LC_ALL, "rus");
    size_t count = 0;
    int i;
    int num = 0;
    struct passengers passenger;
    struct passengers *pass = new passengers[count];
    fstream file;
    file.open("Passengers.txt", fstream::in);
    if (!file.is_open())
    {
        cout << "Error\n";
    }
    else
    {
        string S;
        string line;
        while (getline(file, line))
        { 
            istringstream iss(line);
            iss >> passenger.surname >> passenger.name >> passenger.patronymic >> passenger.number;
            S = passenger.surname+ passenger.name+passenger.patronymic;
            i = S.size()+ to_string(passenger.number).length();
            passenger.weight = 0;
            num = 0;
            file.seekg(i, file.cur);
            for (int j = 0;j < passenger.number;j++) {
                iss >> num;     
                passenger.weight += num;
            }
            cout << passenger.weight<<" ";
        }
        
    }
    
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.05.2021, 23:01
Ответы с готовыми решениями:

Определить класс со следующими данными-членами : фамилия пассажира, номер рейса, стоимость билета, вес багажа
Определить класс со следующими данными-членами : фамилия пассажира, номер рейса, стоимость билета, вес багажа. Вводить данные с клавиатуры...

Создать файл в котором напротив фамилии каждого пассажира указано количество мест его багажа
Дан файл со сведениями о багаже пассажиров авиа-рейса. В каждой строке указаны данные об одном багажном месте: фамилия пассажира и вес...

Найти и записать в файл имена пассажиров, вес багажа которых превосходит средний вес багажа одного пассажира.
Составить программу, которая находит и записывает в файл g имена пассажиров, вес багажа которых превосходит средний вес багажа одного...

23
1 / 1 / 0
Регистрация: 30.05.2019
Сообщений: 37
14.05.2021, 16:23  [ТС]
Студворк — интернет-сервис помощи студентам
Yetty,
Цитата Сообщение от Yetty Посмотреть сообщение
это 2 разные цикла
сделал, все работает как надо.
Цитата Сообщение от Yetty Посмотреть сообщение
дело в том, что это общие требования для всех задач. в этой задаче структура не нужна (надеюсь Вы уже это понимаете), но можно добавить, только сначала полностью допишите вариант без структуры и сбросьте что получилось
я это понял, можно и без структуры, но я не уверен, что проверяющий пропустит такой вариант.
собственно, вот сам код:
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
int main()
{
    double P, F;
    cout << "Enter the max weight for the passenger: ";
    cin >> P;
    cout << "Enter the max weight for the flight: ";
    cin >> F;
        ifstream in("Passengers.txt");
        if (in.is_open())
        {
            string name, surname, patronymic;
            double weight, sumP, sumF = 0., ex, eps = 1.e-9;
            int n;
            cout << "Input:\n";
            while (in >> surname >> name >> patronymic >> n)
            {
                cout << surname << " " << name << " " << patronymic << " " << n << " ";
                for (int i = 1; i <= n; i++)
                {
                    in >> weight;
                    cout << weight << " ";
                }
                cout << "\n";
            }
            in.clear();
            in.seekg(0, ios::beg);
            cout << "Output:";
            while (in >> surname >> name >> patronymic >> n)
            {
                sumP = 0;
                for (int i = 1; i <= n; i++)
                {
                    in >> weight;
                    sumP += weight;
                }
                sumF += sumP;
                if (sumP > P + eps)
                {
                    ex = (sumP - P) * 0.2;
                    cout << "Extra charges for passenger " << surname << " " << name << " " << patronymic << " = " << ex;
                }
                cout << "\n";
            }
            in.close();
            if (sumF > F + eps)
                cout << "Too much excess baggage!\n";
        
        }
        else cout << "Unable to open file\n";
    system("pause");
}
Осталось только сделать вывод в текстовый файл (с этим надеюсь справиться без Вашей помощи), ну и возможно добавить структуру, чтобы на 100% быть уверенным что работу засчитают
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.05.2021, 17:12
Fobian01, нормально, только форматирование добавьте

Цитата Сообщение от Yetty Посмотреть сообщение
если файл не открылся не нужно предварительно ничего делать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{    
    ifstream in("Passengers.txt");
 
    if (in.is_open())
    {
        string surname, name, patronymic; // <-- лучше по порядку, сначала surname
        double weight, sumP, sumF=0., ex, eps=1.e-9, P, F;
        int n;
 
        cout << "Enter the max weight for the passenger: ";
        cin >> P;
        cout << "Enter the max weight for the flight: ";
        cin >> F;
Цитата Сообщение от Fobian01 Посмотреть сообщение
if (sumP > P + eps)
                {
                    ex = (sumP - P) * 0.2;
                    cout << "Extra charges for passenger " << surname << " " << name << " " << patronymic << " = " << ex;
                }
                cout << "\n";
C++
1
2
3
4
5
6
7
8
9
10
    cout << "Output:";
    cout << "SURNAME   NAME   PATRONYMIC  SUMMA:\n";
 
    ...
 
    if (sumP > P + eps)
    {
        ex = (sumP - P) * 0.2;
        cout << surname << " " << name << " " << patronymic << " " << ex << "\n";
    }
Добавлено через 8 минут
после
Цитата Сообщение от Fobian01 Посмотреть сообщение
system("pause");
C++
1
return 0;
1
1 / 1 / 0
Регистрация: 30.05.2019
Сообщений: 37
14.05.2021, 17:22  [ТС]
Yetty, все поменял, вывод в файл уже позже делать буду, Вам огромное спасибо за потраченное на меня время а то так бы сидел до сих пор, пытаясь понять, что же не так сделал)
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.05.2021, 18:20
del
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.05.2021, 18:20

Определите общий вес всего багажа и пассажира с наиболее тяжелым багажом.
Файл содержит сведения о пассажирах самолета: фамилия, имя, отчество, число предметов (вещей, чемоданов) и общий вес багажа. Выведите...

В файле хранится информация о пассажирах и багаже. Получить средний вес багажа каждого пассажира
Форумчане помогуте пожалуйста с такой задачей. В файле храниться информация о пассажирах и багаже. Багаж пассажира характеризуется...

Организовать вывод на экран общего веса багажа для каждого пассажира...
Задание. В каждом из вариантов задания, используя структурный шаблон из предыдущей работы, обработать данные согласно варианту задания....

Работаю со структурами. структура содержит имя, номер билета и вес багажа пассажира
здравствуйте. подскажите как можно реализовать следующее? Работаю со структурами. структура содержит имя, номер билета и вес багажа...

Обработка записей (Список пассажиров авиарейса имеет следующую структуру: фамилия - количество вещей – общий вес багажа – средний вес одной вещи)
Разработать и отладить программу обработки записей. Предусмотреть: - ввод данных - вывод результатов (на экран в виде таблицы и в...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru