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

Не читает первую строку из файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить алгоритм и программу для решения задач с использованием функций http://www.cyberforum.ru/cpp-beginners/thread853025.html
Даны действительные числа s, t. Вычислить f(t, -2s, 1.17)+f(2.2, t, s-t), где f(a, b, c) = 2a-b-sinc/5+|c|
C++ Разработать алгоритм и программу для решения задачи Дан файл f, компоненты которого являются действительными числами. Найти: а) сумму компонент файла f; б) последнюю компоненту файла. http://www.cyberforum.ru/cpp-beginners/thread853021.html
C++ Вычисление среднего арифметического: не видно результатов работы программы
Не пойму в чем причина,запускаю программу,ввожу числа,а среднее арифметическое не считает,а просто проскакивает экран дальнейшей загрузки программы,саму программу прилагаю,помогите пожалуйста,в чем причина этого "проскока". #include<iostream> using namespace std; int main() {unsigned int a,b,c;//вводим переменные float x; cout<<"\tVvedite pervoe chislo ";//ввод cin>>a; ...
C++ метод дихотомии
Помогите!
C++ сохранение/чтение map<string,string*> в файл http://www.cyberforum.ru/cpp-beginners/thread853002.html
Доброго времени суток, Нужно сделать БД для индексации содержимого текстовых файлов, сначала решил, что все просто: читаем файл и записываем данные в виде map<"some_word","file_name_string">, соответственно, потом можно по запросу слова определить имена файлов, в которых оно встречается. Однако, если файлы очень большие и/или их много, имеет смысл сохранять данные на диск. Соответственно, при...
C++ Дан список, переместить локальные максимумы Дан список из n целых чисел {a}_{1},{a}_{2},..{a}_{n}. Переместить в начало списка все элементы, которые являются локальными максимумами, то есть больше своих соседей. подробнее

Показать сообщение отдельно
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
30.04.2013, 18:58     Не читает первую строку из файла
Собсвтенно идет чтение из файла в объект структуры, который потом пихается в стек. Чтобы его вывести таблицей, он сначала пихается в массив, там выводится, а потом из массива возвращается в стек. Но почему-то первая строка из файла не читается =( т.е. если в файле будет:
C++
1
2
3
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
То в стеке останется только
C++
1
2
2 2 2 2 2 2
3 3 3 3 3 3
Но если в файле написать так:
C++
1
2
3
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
То в стеке сохранится
C++
1
2
3
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
Я никак не могу понять в чем дело, функции записи из стека в массив и обратно налажены вроде. Помогите плз.Вот код:
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#include <iostream>
#include <string.h>
#include <fstream> //для работы с файлами
#include <stack> //Для стеков
#include <iomanip> //Для отображения таблицы с помощью потоков
 
using namespace std;
 
void Add();
void ShowAll();
void menu(char);
void Read();
void Clean();
 
struct Football{                //Структура
    string fio,legioner;
    int age,golls;
    double time,plata;
};
void MassReturn(Football*, int);
Football* MassSave();
Football op;
stack <Football> Stek;
int main()
{
string num;
 
        /*Менюшка :3*/
     while(num[0]!='0') // Бесконечный цикл
  {
    cout<<"1 - Read from file"<<endl;
    cout<<"2 - Add element"<<endl;
    cout<<"3 - Delete element"<<endl;
    cout<<"4 - Show 1 element"<<endl;
    cout<<"5 - Show all elements"<<endl;
    cout<<"6 - Sorting"<<endl;
    cout<<"7 - Individual task"<<endl;
    cout<<"8 - Write to file"<<endl;
    cout<<"0 - Exit"<<endl;
    cout<<"Input number of menu: ";//Вывод приглашения на выбор элемента меню};
    getline(cin,num);//Ввод строки
    if(num.size()>1) cout<<"Comand not found, retype!"<<endl;//Проверка размера строки
    else menu(num[0]);//ункция выполнения поля меню
  }
  return 0;
}
void menu(char a)
{
    switch(a)
    {
     case '0': cout<<"Exit"<<endl;
        break;
     case '1': Read();
        break;
     case '2': Add();
        break;
 //    case '3': Del();
        break;
  //   case '4': ShowOne();
        break;
     case '5': ShowAll();
        break;
  //   case '6': Sorting();
        break;
 //    case '7': IndTask();
        break;
  //   case '8': Write();
        break;
      default:
        cout<<"Comand not found, retype!"<<endl;
        break;
    }
}
void Add()
{
        cout << "Vvedite familiu imya otchestvo: ";
        getline(cin,op.fio);
        cout << "Vozrast: ";
        cin >> op.age;
        cout << "Kollichestvo golov: ";
        cin >> op.golls;
        cout << "Vremya: ";
        cin >> op.time;
        cout << "Yavlyaentsya legionerom? (yes/no): ";
        getline(cin,op.legioner);
        cout << "Zar_plata: ";
        cin >> op.plata;
        cout << endl;
        Stek.push(op);            //добавление элемента в стек
}
void ShowAll()
{
    if(Stek.empty()) cout<<"Stack clear"<<endl; //Проверка на пустоту стека
    else{
    int size=Stek.size(),size2=size;
    Football *m=MassSave() ;  //Сохраняем таблицу во временном массиве
    int i=0;
    cout<<left<<setw(20)<<"FIO"<<setw(4)<<"Age"<<setw(6)<<"Golls"<<setw(10)<<"Legioner?"<<setw(5)<<"Time"<<setw(5)<<"Plata"<<endl;
    while(i!=size2)
        {
        cout <<left<<setw(20)<<m[i].fio<<setw(4)<<m[i].age<<setw(6)<<m[i].golls<<setw(10)<<m[i].legioner<<setw(5)<<m[i].time<<setw(5)<<m[i].plata<<endl;
        i++;
        }
        MassReturn(m,size2); //Возвращаем стек на место
        }
    }
//----------------------Функция "сохранения" стека-------------------------------------------------------------------
Football* MassSave()
{
    int size=Stek.size(),i=size-1;
    cout<<"Size= "<<size<<endl;
    Football *mass=new Football[size];
    while(!Stek.empty())
    {
    mass[i].fio=Stek.top().fio;
    mass[i].age=Stek.top().age;
    mass[i].golls=Stek.top().golls;
    mass[i].time=Stek.top().time;
    mass[i].legioner=Stek.top().legioner;
    mass[i].plata=Stek.top().plata;
    i--;Stek.pop();
    }
    return mass;
}
 
//----------------------Функция "перпрождения" стека------------------------------------------------------------------
void MassReturn(Football* m , int size)
{
    int i=0;
    cout<<"Size= "<<size<<endl;
    while(i!=size)
    {
    op.fio=m[i].fio;
    op.age=m[i].age;
    op.golls=m[i].golls;
    op.time=m[i].time;
    op.legioner=m[i].legioner;
    op.plata=m[i].plata;
    i++;Stek.push(op);
    }
    delete[] m;
}
void Read()
{
ifstream h("begin.txt");
if(h==NULL)cout<<"File myfile.txt don't open for read!"; //Проверка на то, открылся ли файл
  else{                     // Если открылся, то проверяет пустой ли файл
            string str;
             getline(h, str);
                if (h.eof() && str.empty())
                    {
                    cout<<"File clear"<<endl;
                          h.close();}
                else {
    Clean(); //Очистка стека перед записью
    while(!h.eof()) // цикл записи строки в объект и переход на новую, пока не дойдет до конца файла
    {
       h>>op.fio>>op.age>>op.golls>>op.legioner>>op.time>>op.plata;
       Stek.push(op); // Запись объекта в структуру
    }
h.close();}
    }
cout<<"Reading completed successfully"<<endl;
}
void Clean()
{
    while(!Stek.empty())Stek.pop();
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru