С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
23 / 23 / 1
Регистрация: 06.04.2014
Сообщений: 198
1

Работа с файлом, содержащим сведения о багаже нескольких пассажиров

09.10.2014, 17:43. Показов 3754. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Багаж пассажира характеризуется количеством вещей и общим весом вещей. Дан файл f, содержащий сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой запись с двумя полями: одно поле целого типа (количество вещей) и одно - действительное (вес в килограммах).
a) Найти багаж, средний вес одной вещи в котором отличается не более, чем на 0.3 кг от общего среднего веса одной вещи. (СДЕЛАЛ)
b) Найти число пассажиров, имеющих более двух вещей и число пассажиров, количество вещей которых превосходит среднее число вещей.(СДЕЛАЛ)
c) Определить, имеются ли два пассажира, багажи которых совпадают по числу вещей и различаются по весу не более чем на 0,5 кг.
d) Выяснить, имеется ли пассажир, багаж которого превышает багаж каждого из остальных пассажиров и по числу вещей, и по весу.
e) Выяснить, имеется ли пассажир, багаж которого состоит из одной вещи весом менее 30 кг.
Помогите сделать хотя бы c) и d), желательно не меняя код, если это возможно.. Не могу никак разобраться.. Знаю что нужен массив, но не понимаю как это все сделать(( Файл с информацией о пассажирах прикрепил (см. снизу).
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
#include <stdio.h>
#include <fstream.h>
#include <iostream.h>
#include <windows.h>
 
int main(void)
{
int kolvo, npas, pass=0, pass1=0;
float ves, sr;
string temp;
ifstream ifs ((const char*)"Bag.txt");
 
cout << "1) Ves veahey menshe 0.3" << endl;
while (!ifs.eof())
{
ifs >> npas >> temp >> kolvo >> temp >> ves;
 if (ves<=0.3)
  {
   cout << "Passazhir nomer " << npas;
   cout << " " << "ves = " << ves << endl;
  }
 
 if(kolvo>2) pass++;
 
 if(kolvo>4.2) pass1++;
 
}
 cout << "2) Chislo pass im. > 2 veshey i chislo pass kolvo veshey kot. prevosh sr chislo veshey  " << endl;
  cout << "  a)Chislo pass im. >2 veshey: " << pass << endl;
   cout << "  b)Chislo pass kolvo veshey kot. prevosh sr chislo veshey: " << pass1 << endl;
 
ifs.close();
getchar ();
 
return 0;
}
Вложения
Тип файла: txt Bag.txt (169 байт, 65 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2014, 17:43
Ответы с готовыми решениями:

Работа с файлом, содержащим сведения о багаже нескольких пассажиров
С++ Builder работа с файлами Помогите пожалуйста как сделать хотя бы одно действие &quot;а&quot;? Багаж...

Дан массив, содержащиц сведения о багаже нескольких пассажиров
вобщем я не стану нести ерунды про то какая жизнь тяжелая и тд. просто выложу задачи, если решат...

Массив данных. Дан файл f, содержащий информацию о багаже нескольких пассажиров. Найти:
Багаж пассажира характеризуется количеством вещей и общим весом вещей. Дан файл f, содержащий...

Дан список из сведений о багаже 10 пассажиров.
Подскажите пожалуйста как написать функцию ( if ) в данном примере: вот задание: Дан список из...

5
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
09.10.2014, 18:09 2
Цитата Сообщение от mraZzzb Посмотреть сообщение
Знаю что нужен массив, но не понимаю как это все сделать
вот вам всё считывается в массив, дальше просто сортируйте и т.п. и т.д. что душе угодно с ним
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
#include <iostream>
#include <fstream>
using namespace std;
struct t
{
int kolvo;
double ves;
void show()
    {
    cout<<"kol-vo = "<<kolvo<<"   ves = "<<ves<<endl;
    }
};
 
int main()
    {
    string temp;
    ifstream in("Bag.txt");
    int counter=0;
    while(!in.eof())
        {
        getline(in,temp);
        cout << temp<< endl;
        counter++;
        }
    in.clear();
    in.seekg(0, ios::beg);
    t* a=new t[counter];
    counter=0;
    while(!in.eof())
        {
        in>>temp>>temp>>a[counter].kolvo>>temp>>a[counter].ves;
        a[counter].show();
        counter++;
        }
    in.close();
    return 0;
}
1
23 / 23 / 1
Регистрация: 06.04.2014
Сообщений: 198
09.10.2014, 18:36  [ТС] 3
dzrkot, Скажите пожалуйста за что отвечает в данном случае эта функция :"getline(in,temp)"?. И вот эти три строки:
C++
1
2
3
in.seekg(0, ios::beg);
t* a=new t[counter];
counter=0;
0
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
09.10.2014, 18:39 4
Цитата Сообщение от mraZzzb Посмотреть сообщение
getline(in,temp)
считать целиком в temp всю строку до '\n'
Цитата Сообщение от mraZzzb Посмотреть сообщение
in.seekg(0, ios::beg);
вернуться в начало читаемого файлы(мы ведь его уже прочитали)
Цитата Сообщение от mraZzzb Посмотреть сообщение
t* a=new t[counter];
создать динамический массив структур t
Цитата Сообщение от mraZzzb Посмотреть сообщение
counter=0;
ну я просто чтобы не громоздить эту переменную использовал для итератора в дальнейшем, чтобы к элементам массива обращаться
1
23 / 23 / 1
Регистрация: 06.04.2014
Сообщений: 198
09.10.2014, 19:22  [ТС] 5
dzrkot, Спасибо большое за ответ!!! Но у меня теперь проблемка.. Не могу теперь ни одного действия совершить. Могли бы одно задание расписать? Просто ваш метод немного усложняет)) Не могу разобраться.Я там конечно немного изменил , ну так чтоб для себя удобнее было))
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
#include <stdio.h>
#include <fstream.h>
#include <iostream.h>
#include <windows.h>
struct t
{ int kolvo; double ves;
int file()
    {
    cout<<"kol-vo = "<<kolvo<<"   ves = "<<ves<<endl;
    }
};
 
int main()
    {int npas, pass, pass1;
    string temp;
    ifstream in("Bag.txt");
    int N=0;
    while(!in.eof())
        {
        getline(in,temp);
        cout << temp << endl;
        N++;
        }
    in.clear();
    in.seekg(0);
    t* A=new t[N];
    N=0;
    while(!in.eof())
        {
        in >> temp >> temp >> A[N].kolvo >> temp >> A[N].ves;
        A[N].file();
        N++;
        }
 
 
 if (A[N].ves<=0.3)
  {
   cout << "Passazhir nomer " << npas;
    cout << " " << "ves = " << A[N].ves << endl;
  }
cout << "2) Chislo pass im. > 2 veshey i chislo pass kolvo veshey kot. prevosh sr chislo veshey  " << endl;
 if(A[N].kolvo>2) pass++;
 cout << "  a)Chislo pass im. >2 veshey: " << pass << endl;
 if(A[N].kolvo>4.2) pass1++;
 cout << "  b)Chislo pass kolvo veshey kot. prevosh sr chislo veshey: " << pass1 << endl;
 
 
 
 
    in.close();
    system("pause");
 
return 0;
0
23 / 23 / 1
Регистрация: 06.04.2014
Сообщений: 198
16.10.2014, 23:21  [ТС] 6
Начиная со строки номер 53 , нужно выполнить задание : "Определить, имеются ли два пассажира, багажи которых совпадают по числу вещей". Во-первых мне нужно определить имеются ли такие пассажиры, во-вторых вывести их номера. Файл прикрепить не удалось, он находится по этой ссылке Работа с файлом, содержащим сведения о багаже нескольких пассажиров Помогите пожалуйстаа!!
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
#include <iostream>
#include <fstream>
using namespace std;
struct t
{
int kolvo, npas;
double ves;
int file()
    {
     cout<<"kol-vo = "<<kolvo<<"   ves = "<<ves<<endl;
 
     }
};
 
int main()
    { int kolvo2, pass=0, i, pass1=0;
    string temp;
    ifstream in("file.txt");
    int n=0;
 
    while(!in.eof())
        {
        getline(in,temp);
 
        n++;
        }
    in.clear();
    in.seekg(0);
    t* a=new t[n];
    n=0;
    while(!in.eof())
        {
        in>>a[n].npas>>temp>>a[n].kolvo>>temp>>a[n].ves;
        a[n].file();
        n++;
        }
 
        cout<<"1)Passajiri ves veshey kot < 0.3: "<<endl;
          for(i=0;i<n;i++)
         if (a[i].ves<0.3)
         cout<<"Nomer passajira: "<<a[i].npas<<endl;
 
          for(i=0;i<n;i++)
         if (a[i].kolvo>2)
         pass++;
         cout<<"2) a)Chislo pass kol-vo veshey kot >2: "<<pass<<endl;
 
         for(i=0;i<n;i++)
         if (a[i].kolvo>4.2)
           pass1++;
           cout<<"   b)Chislo pass kol-vo veshey kot prevosh sr chislo veshey: "<<pass1<<endl;
 
          kolvo2=a[0].kolvo;
        for(i=0;i<n;i++)
        if(kolvo2==a[i].kolvo)
        kolvo2=a[i].kolvo;
          cout<<"nomer passajira: "<<a[i].npas<<endl;
 
 
 
    in.close();
    system("pause");
    return 0;
}
0
16.10.2014, 23:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2014, 23:21
Помогаю со студенческими работами здесь

Работа с файлом из нескольких функций
Здравствуйте. Нужно печатать в 1 файл из нескольких функций. Предположим есть функция main void...

Организовать массив записей, содержащий информацию о багаже ​​15 пассажиров
Сведения о багаже ​​пассажиров включают в себя количество вещей и общий вес. Организовать массив...

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

Дан файл Bagazh, содержащий сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют со
Дан файл Bagazh, содержащий сведения о багаже нескольких пассажиров. Сведения о багаже каждого...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru