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

Просьба к тем, у кого есть visual c++ 2012 - C++

Восстановить пароль Регистрация
 
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
08.06.2013, 18:19     Просьба к тем, у кого есть visual c++ 2012 #1
Проблема в том, что я сделал код, который должен поддерживаться вижуалкой. Но из-за технических причин писал я не в ней. В коде я использовал getline , который, как мне сказали не поддерживаться в вижуалке старее 2012.Ниже мой код, пожалуйста, те у кого эта версия есть, проверьте поддерживается ли код. НУЖНО СРОЧНО!

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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
/** Структура:
Футбол
1) ФИО футболиста;
2) Возраст футболиста;
3) Колличество голов, забитых футболистом;
4) Время игры на поле;
5) Является ли легионером;
6) Зароботная плата;
Хранение таблицы в стеке;
Индивидуальное задание:
Определить Определить наиболее результативного игрока команды
(с наименьшим временем, необходимым для забивания 1 мяча) а также наименее результативного;
Сортировка по зароботной плате;
Метод сортировки: пузырьковая*/
 
#include <iostream>//Для cin  и cout
#include <string.h>//Для работы со строками
#include <fstream> //Для работы с файлами
#include <stack> //Для работы со стеками
#include <iomanip> //Для отображения таблицы
 
using namespace std; // Пространсто имен std
 
struct Football{        //Структура
    string fio,legioner;
    int age,golls;
    double time,plata;};
void Read(); //Функция чтения таблицы из файла
void Add(); //Функция добавления строки в таблицу
void Del(); //Функция удаления строки таблицы(номер строки задается пользователем)
void ShowOne(); //Функция вывода на экран одной строки таблицы(номер строки задается пользователем)
void ShowAll(); //Фунеция вывода на экран всей таблицы
void Sorting();//Функция сортировки таблицы
void IndTask();//Индифидуальное задание
void Write(); //Фунекция записи таблицы в файл
void Clean(); //Фунекция очистки таблицы
Football* MassSave();// Сохранение стека в массив
void MassReturn(Football*, int); //Возвращение в стек из массива
 
Football op; //Объект структуры, который помещается в стек
stack <Football> Stek; //Сам стек
///--------------------------------------Main----------------------------------------------------------------------------------------------------------------------------------------------
int main()
{
 int a;
 
     while(a!=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: ";//Вывод приглашения на выбор элемента меню};
    cin>>a;;//Ввод строки
    if(a>8) cout<<"Comand not found, retype!"<<endl;//Проверка размера строки
    //if(a==0){Write();Clean();cout<<"Exit";break;} //Запись в файл, очищение стека и выход
    else {
        switch(a)
    {
     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;}
         }
  }
  return 0;
}
///--------------------------------------Функция добавления элемента в таблицу-------------------------------------------------------------------------------------------------------------
void Add()
{
        cout << "Full name: ";
        cin.ignore();
        getline(cin,op.fio);
        cout << "Age: ";
        cin >> op.age;
        cout << "His goals: ";
        cin >> op.golls;
        cout << "He footballer? (yes/no): ";
        cin.ignore();
        getline(cin,op.legioner);
        cout << "Time: ";
        cin >> op.time;
        cout << "Wage is: ";
        cin >> op.plata;
        cout << endl;
        Stek.push(op);            //добавление элемента в стек
        cout<<"Adding a success\n"<<endl;
}
///----------------------Вывод таблицы на экран--------------------------------------------------------------------------------------------------------------------------------------------
void ShowAll()
{
    stack <Football> Temp;
    if(Stek.empty()) cout<<"\nEror.The table is empty\n"<<endl; //Проверка на пустоту стека
    else{
    int i=0;
    while(!Stek.empty())
    {
    Temp.push(Stek.top()); //Сохраняем стек во временный стек
    Stek.pop();      }
    cout<<endl<<left<<' '<<setw(7)<<"Number"<<setw(30)<<"Full name"<<setw(4)<<"Age"<<setw(6)<<"Golls"<<setw(12)<<"Footballer?"<<setw(6)<<"Time"<<setw(5)<<"Plata"<<endl;
    while(!Temp.empty())
    {
    cout <<left<<' '<<setw(7)<<i+1<<setw(30)<<Temp.top().fio<<setw(4)<<Temp.top().age<<setw(6)<<Temp.top().golls<<setw(12)<<Temp.top().legioner<<setw(6)<< fixed << setprecision(2) <<Temp.top().time<<Temp.top().plata<<endl;
    Stek.push(Temp.top());  Temp.pop();  i++;
    }     cout<<endl; }
}
///-----------------------Функция чтения таблицы из файла----------------------------------------------------------------------------------------------------------------------------------
void Read()
{
        ifstream h("begin.txt");
if(h==NULL)cout<<"\nFile begin.txt don't open for read!\n"<<endl; //Проверка на то, открылся ли файл
else {
    string str;
    getline(h, str);
    if (h.eof() && str.empty())cout<<"\nFile clear\n"<<endl;
        h.close();
        ifstream h("begin.txt");
    string fio1, fio2;
    Clean(); //Очистка стека перед записью
    while(!h.eof()) // цикл записи строки в объект и переход на новую, пока не дойдет до конца файла
    {
       h>>op.fio>>fio1>>fio2>>op.age>>op.golls>>op.legioner>>op.time>>op.plata;
       op.fio=op.fio+' '+fio1+' ' +fio2;
         if(h.fail()){ Clean();  cout<<"\nError\n"<<endl; break; }
       Stek.push(op);// Запись объекта в структуру
    }
        h.close();
cout<<"\nReading from a file is completed successfully\n"<<endl;    }
}
///------------------------Функция очищения стека------------------------------------------------------------------------------------------------------------------------------------------
void Clean()
{
    while(!Stek.empty())Stek.pop();
 
}
///------------------------Функция записи таблицы в файл-----------------------------------------------------------------------------------------------------------------------------------
void Write()
{
    stack <Football> Temp; //Временный стек
        ofstream h("result.txt",ios_base::trunc); //Открытие файла для записи с предварительным его очищением
    if(!h)cout<<"\nFile begin.txt don't open for write!\n"<<endl; //Проверка на открытие файла
    int size=Stek.size(); //Нужные переменные
    while(!Stek.empty())//Сохраняем стек во временный стеке
    {
    Temp.push(Stek.top()); Stek.pop();
    }
    int i=0;
    while(!Temp.empty())//Запись инфы из временного стека
    {
        if(i==size-1){ h<<left<<setw(30)<<Temp.top().fio<<setw(4)<<Temp.top().age<<setw(6)<<Temp.top().golls<<setw(12)<<Temp.top().legioner<<setw(6)<<Temp.top().time<<Temp.top().plata;
        Stek.push(Temp.top()); Temp.pop();i++;  }
        else { h<<left<<setw(30)<<Temp.top().fio<<setw(4)<<Temp.top().age<<setw(6)<<Temp.top().golls<<setw(12)<<Temp.top().legioner<<setw(6)<< fixed << setprecision(2)<<Temp.top().time<<Temp.top().plata<<endl;
        Stek.push(Temp.top()); Temp.pop();i++;  }
    }
        h.close(); //Закрытие файла
    cout<<"\nWriting to a file is completed successfully\n"<<endl;
}
///------------------------Функция вывода одной строки таблицы-----------------------------------------------------------------------------------------------------------------------------
void ShowOne()
{
    stack <Football> Temp;
    if(Stek.empty()) cout<<"\nEror.The table is empty\n"; //Проверка стека на пустоту
    else                                        //Если стек не пустой, то...
    {
    int size=Stek.size(),num=0,i=1;                 //Сохраняем размер стека и вводим целочисленную перменную
    do{
    cout<<"Enter the number"<<endl;
    cin>>num;
    if(num>size || num<=0) cout<<"Eror,retype"<<endl;}                                //Ввод переменой с клавиатуры и адаптация под массив
    while(num>size || num<=0);
    while(!Stek.empty())
    { Temp.push(Stek.top()); Stek.pop(); } //Сохраняем стек во временный стек и переходим на следующий элемент стека
    cout<<endl<<left<<' '<<setw(7)<<"Number"<<setw(30)<<"Full name"<<setw(4)<<"Age"<<setw(6)<<"Golls"<<setw(12)<<"Footballer?"<<setw(6)<<"Time"<<setw(5)<<"Plata"<<endl;
    while(!Temp.empty())
    {
    if(i==num){cout <<left<<' '<<setw(7)<<num<<setw(30)<<Temp.top().fio<<setw(4)<<Temp.top().age<<setw(6)<<Temp.top().golls<<setw(12)<<Temp.top().legioner<<setw(6)<< fixed << setprecision(2) <<Temp.top().time<<setw(5)<<Temp.top().plata<<"\n\n";
    Stek.push(Temp.top()); Temp.pop();}
    else {Stek.push(Temp.top());Temp.pop();}
    i++;
    }}
}
///------------------------Функция сортировки таблицы--------------------------------------------------------------------------------------------------------------------------------------
void Sorting()
{
if(Stek.empty()) cout<<"\nEror.The table is empty\n"<<endl; //Проверка на пустоту стека
else{
    struct Temp //Временная структура
    {
        string fio,legioner;
        int age,golls;
        double time,plata;
    };
    int size=Stek.size(),j=0,i=size-1;
    Football* mass=MassSave();
    Temp temp; // Временная структура
        for(i=0;i<size;i++) // Начало пузырьковой сортировки
        {
        for (j=i+1; j<size; j++)
        {
            if (mass[i].plata<mass[j].plata)
 
                /*Запись полей из одной структуры во временную структуру*/
            {
                temp.fio=mass[j].fio;
                temp.legioner=mass[j].legioner;
                temp.age=mass[j].age;
                temp.golls=mass[j].golls;
                temp.time=mass[j].time;
                temp.plata=mass[j].plata;
 
                /*Присваиваем значения вторых полей структуры, первым*/
                mass[j].fio=mass[i].fio;
                mass[j].legioner=mass[i].legioner;
                mass[j].age=mass[i].age;
                mass[j].golls=mass[i].golls;
                mass[j].time=mass[i].time;
                mass[j].plata=mass[i].plata;
 
                /*Возвращаем во вторую структуру, данные из временной структуры*/
                mass[i].fio=temp.fio;
                mass[i].legioner=temp.legioner;
                mass[i].age=temp.age;
                mass[i].golls=temp.golls;
                mass[i].time=temp.time;
                mass[i].plata=temp.plata;
            }
        }
    } // Конец пузырьковой сортировки
    i=0;
    MassReturn(mass ,size);
cout<<"\nSort completed successfully\n"<<endl;
}
}
///------------------------Функция удаления строки таблицы---------------------------------------------------------------------------------------------------------------------------------
void Del()
{
    if(Stek.empty()) cout<<"\nEror.The table is empty\n"<<endl; //Проверка стека на пустоту
    else{
    stack <Football> Temp;
    int size=Stek.size(),del=0,i=1; // Размер стека, номер удаляемой строки и счетчик
    do{
    cout<<"Enter the number: ";             //Ввод номера удаляемой строки
    cin>>del;
    del-=(size+1);del*=(-1);
    if(del>size || del<=0) cout<<"Eror,retype\n";
    }
    while(del>size || del<=0);
    while(!Stek.empty())
    {
        if(del==i){i++;Stek.pop();}
        else{
        Temp.push(Stek.top());
        i++;Stek.pop();}
    }
    while(!Temp.empty())
    {
    Stek.push(Temp.top());
    Temp.pop();
   }
cout<<"\nRemoval completed successfully\n"<<endl;}
}
///----------------------Функция выполнения индивидуального задания------------------------------------------------------------------------------------------------------------------------
void IndTask()
{
    if(Stek.empty()) cout<<"\nEror.The table is empty\n"<<endl; //Проверка стека на пустоту
    else{
    int size=Stek.size(),i=0;
    Football *m=MassSave();
    string max=m[0].fio,min=m[0].fio;
    double r1=(m[0].time/m[0].golls),maxres=(m[0].time/m[0].golls),minres=(m[0].time/m[0].golls);
    /*Цикл нахождения наиболее результативного игрока*/
    for(i=0;i<size;i++)
    {
        r1=(m[i].time/m[i].golls);
        if(maxres>r1){max=m[i].fio;maxres=r1;}
        if(minres<r1){min=m[i].fio;minres=r1;}
    }
    cout<<endl;
    cout<<"The best result: "<<max<<' '<<maxres<<" minutes for goal"<<endl;
    cout<<"The worst result: "<<min<<' '<<minres<<" minutes for goal"<<"\n\n";
    MassReturn(m,size);}
}
///----------------------Функция "сохранения" стека----------------------------------------------------------------------------------------------------------------------------------------
Football* MassSave()
{
    int size=Stek.size(),i=size-1;
    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;
    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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2013, 18:19     Просьба к тем, у кого есть visual c++ 2012
Посмотрите здесь:

у кого есть Borland c++ C++
C++ Visual C++ 2012 Ultimate
у кого есть часы (чч:мм:сс) С++ C++
У кого есть решение? C++
char в MS Visual C++ 2012 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
08.06.2013, 18:24     Просьба к тем, у кого есть visual c++ 2012 #2
ну так и выложи(скопируй сюда на форум) кусок кода с getline, нафига нам твой архив
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,916
Записей в блоге: 2
Завершенные тесты: 1
08.06.2013, 18:24     Просьба к тем, у кого есть visual c++ 2012 #3
ошибки из-за отсутствия getline. Добавьте строчку
C++
1
#include <string>
ошибки исчезнут.
Так же компилятор предупреждает
C++
1
2
3
 int a;
 
     while(a!=0) // Бесконечный цикл
a - не инициализируется перед использованием
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
08.06.2013, 18:29  [ТС]     Просьба к тем, у кого есть visual c++ 2012 #4
т.е. заменить #include <string.h> на #include <string> ???
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,916
Записей в блоге: 2
Завершенные тесты: 1
08.06.2013, 18:35     Просьба к тем, у кого есть visual c++ 2012 #5
Цитата Сообщение от ququ_smile Посмотреть сообщение
т.е. заменить #include <string.h> на #include <string> ???
<string.h> (<cstring>) - это для си'шных строк
для класса std::string файл <string>
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
08.06.2013, 18:40  [ТС]     Просьба к тем, у кого есть visual c++ 2012 #6
Цитата Сообщение от Croessmah Посмотреть сообщение
<string.h> (<cstring>) - это для си'шных строк
для класса std::string файл <string>
Значит если подключить <string> , то код запустится не только на 2012, но и на версиях постарее?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,916
Записей в блоге: 2
Завершенные тесты: 1
08.06.2013, 18:44     Просьба к тем, у кого есть visual c++ 2012 #7
Цитата Сообщение от ququ_smile Посмотреть сообщение
то код запустится не только на 2012, но и на версиях постарее?
а кто Вам сказал, что в старых версиях его нет?
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
08.06.2013, 21:27  [ТС]     Просьба к тем, у кого есть visual c++ 2012 #8
Цитата Сообщение от Croessmah Посмотреть сообщение
а кто Вам сказал, что в старых версиях его нет?
т.е. в курсовом я могу спокойно писать, что я якобы делал прогу на 2008 вижуалке?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2013, 21:53     Просьба к тем, у кого есть visual c++ 2012
Еще ссылки по теме:

C++ У кого есть желание)
Visual C++ 2012 Express C++
C++ В Чем разница между MS Visual C++ 2011 vs MS Visual C++2012

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,916
Записей в блоге: 2
Завершенные тесты: 1
08.06.2013, 21:53     Просьба к тем, у кого есть visual c++ 2012 #9
Как правило, код, соответствующий Стандарту, компилируется без проблем.
Но все-таки лучше проверить его на целевом компиляторе.
Yandex
Объявления
08.06.2013, 21:53     Просьба к тем, у кого есть visual c++ 2012
Ответ Создать тему
Опции темы

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