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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 692
#1

Мой компилятор не принимает "getline" и не хочет массив объявлять peson p[a] - C++

24.03.2011, 21:52. Просмотров 719. Ответов 17
Метки нет (Все метки)

Какие ошибки у меня в программе и как мне их исправить ? Мой компилятор не принимает "getline" и не хочет массив объявлять peson p[a]

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
#include<iostream>
#include<string>
using namespace std;
struct person
{
string name;
int rost;
};
int main()
{setlocale(LC_ALL,"Russian");
int a;
cout<<"Введите колличество человек --> ";
    cin>>a;
    int *arrive=new int[a];
    person p[a];
for(int x = 0;x<a;x++)
{
    cout<<"Введи имя --> ";
    getline(cin, p[x].name);
    cout<<"Введи свой рост --> ";
    cin>>p[x].rost;
    cin.get();
}
cout<<"+++++++++++ Вывод +++++++"<<endl;
for(int x = 0;x<a;x++)
    cout<<"Персона "<<x+1<<" имя "<<p[x].name<<" и твой рост "<<p[x].rost<<endl;
delete [] arrive;
cin.get();
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2011, 21:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Мой компилятор не принимает "getline" и не хочет массив объявлять peson p[a] (C++):

Объясните разницу между "cin.getline" и "std::getline" - C++
string a; cin.getline(a); getline(cin, a);в чем разница между &quot;cin.getline(a);&quot; и &quot;getline(cin, a);&quot;

Проверяю, являются ли 4 строки стихом. "й" принимает за "и", тем самым принимает за слог - C++
Суть программы: банальная проверка на то, являются ли 4 строки стишком. Метод решения задачи: равное кол-во слогов и одинаковые последние...

Как принять код клавиши, а вписать саму клавишу? (Принимает "57", что означает "9") - C++
Нужно избавиться от такой глупости: char ch = 0; if(ch=='1')mas=1; if(ch=='2')mas=2; if(ch=='3')mas=3; ...

Компилятор выдает ошибку: error C2041: недопустимая цифра "8" для основания "8" - C++
Собственно код: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main(){ long double gramm; long double...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Что делает цикл "while(cin.getline(buf,l_buf))" ? - C++
не могу понять,что делает цикл:while(cin.getline(buf,l_buf))-это по сути проверка на ввод строки? cin.getline()-вводит строку ...

17
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
24.03.2011, 21:58 #2
Цитата Сообщение от parkito Посмотреть сообщение
и не хочет массив объявлять peson p[a]
Цитата Сообщение от parkito Посмотреть сообщение
C++
1
person p[a];
Оно и понятно, так-как у статичексого масива, размер должен быть константным выражением.

Добавлено через 43 секунды
Цитата Сообщение от parkito Посмотреть сообщение
Мой компилятор не принимает "getline"
Всмисле ошибку выдает или как ?
0
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 692
24.03.2011, 22:41  [ТС] #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
#include<iostream>
#include<string>
using namespace std;
int main()
{setlocale(LC_ALL,"Russian");
int a;
char name[100];
cout<<"Введите колличество человек --> ";
    cin>>a;
    int *arrive=new int[a];
    arrive[a];
    
for(int x = 0;x<a;x++)
{
    cout<<"Введи имя --> ";
    cin.getline(name, 80);
    cout<<"Введи свой рост --> ";
    cin>>arrive[x];
    cin.get();
}
cout<<"+++++++++++ Вывод +++++++"<<endl;
for(int x = 0;x<a;x++)
    cout<<"Персона "<<x+1<<" имя "<<name<<" и твой рост "<<arrive[x]<<endl;
delete [] arrive;
cin.get();
return 0;
}
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
24.03.2011, 22:48 #4
parkito,
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
#include<iostream>
#include<string>
using namespace std;
int main()
{setlocale(LC_ALL,"Russian");
int a;
char name[100];
cout<<"Введите колличество человек --> ";
        cin>>a;
        int *arrive=new int[a];
        arrive[a];
 
for(int x = 0;x<a;x++)
{
        cout<<"Введи имя --> ";
        cin.sync();//Очистка потока
        cin.getline(name, 80);
        cout<<"Введи свой рост --> ";
        cin>>arrive[x];
        cin.get();
}
cout<<"+++++++++++ Вывод +++++++"<<endl;
for(int x = 0;x<a;x++)
        cout<<"Персона "<<x+1<<" имя "<<name<<" и твой рост "<<arrive[x]<<endl;
delete [] arrive;
cin.get();
return 0;
}
1
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 692
24.03.2011, 22:55  [ТС] #5
asics Спасибо. А что за очистка потока ? не разу не слышал.
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
24.03.2011, 23:02 #6
parkito, Когда Вы первый раз ввели имя(нажали Enter) в строку не записался символ \n, то бишь он остался в потоке и что бы его от-туда удалить используем метод sync() класа istream http://www.cplusplus.com/reference/iostream/istream/sync/
0
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 692
25.03.2011, 09:07  [ТС] #7
Как сделать струкутуру

C++
1
2
3
4
5
6
 string name
cout<<"Введи имя --> ";
    cin>>name;
    cout<<"Введи свой рост --> ";
    cin>>arrive[x];
    cin.get();
Похожую на

C++
1
2
3
4
5
6
char name [80];
cout<<"Введи имя --> ";
    cin.getline(name,80)
    cout<<"Введи свой рост --> ";
    cin>>arrive[x];
    cin.get();

То есть чтоб в
C++
1
string name
строка записывалась целая (с пробелами)

как

C++
1
cin.getline(name,80)
??
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
25.03.2011, 17:08 #8
parkito,
C++
1
getline(cin, str);
0
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 692
28.03.2011, 22:57  [ТС] #9
Имеется прога

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
#include<fstream>
#include<iostream>
#include<string>
using namespace std;
int main()
{setlocale(LC_ALL,"Russian");
cout<<"После работы программы сохранит данные в файл (Y\\N) ? ";
char c; 
cin>>c;
if(c=='Y'||'y')
    {
int a;
string name;
cout<<"Введите колличество человек --> ";
    cin>>a;
    int *arrive=new int[a];
    arrive[a];
ofstream outfile;
outfile.open("st.txt"); 
for(int x = 0;x<a;x++)
{
    cout<<"Введи имя --> ";
    cin>>name;
    cout<<"Введи рост --> ";
    cin>>arrive[x];
    cin.get();
 
cout<<"+++++++++++ Вывод +++++++"<<endl;
 
for(int x = 0;x<1;x++)
    {cout<<"Персона "<<x+1<<" имя "<<name<<" рост "<<arrive[x]<<endl;
  outfile<<"Персона "<<x+1<<" имя "<<name<<" рост "<<arrive[x]<<endl;
}}
outfile.close();
cout<<"Файл Список.TXT помещен на рабочий стол,"<<endl;
    cout<<"для завершения нажмите Enter";
    cin.get();
delete [] arrive;
 
}
else
{int a;
char name[100];
cout<<"Введите колличество человек --> ";
    cin>>a;
    int *arrive=new int[a];
    arrive[a];
    
for(int x = 0;x<a;x++)
{
    cout<<"Введи имя --> ";
    cin.ignore();
    cin.getline(name, 80);
    cout<<"Введи свой рост --> ";
    cin>>arrive[x];
    cin.get();
}
cout<<"+++++++++++ Вывод +++++++"<<endl;
for(int x = 0;x<a;x++)
    cout<<"Персона "<<x+1<<" имя "<<name<<" рост "<<arrive[x]<<endl;
delete [] arrive;
cin.get();
}return 0;}
Как заставить ее чтоб проверяла введинно ли число
C++
1
2
cout<<"Введите колличество человек --> ";
    cin>>a;
если введино не число, а символ например бы завершало программу ?
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
28.03.2011, 22:59 #10
После ввода напиши
C++
1
2
if(!cin)
  //ERROR
0
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 692
28.03.2011, 23:00  [ТС] #11
Цитата Сообщение от asics Посмотреть сообщение
После ввода напиши
C++
1
2
if(!cin)
  //ERROR
Поясните пожалуйста как работает это решение.
0
ValeryS
Модератор
6673 / 5082 / 474
Регистрация: 14.02.2011
Сообщений: 17,048
28.03.2011, 23:06 #12
чей то тут накрутили
для того чтобы создать динамический массив структур достаточно вместо
Цитата Сообщение от parkito Посмотреть сообщение
person p[a];
написать
C++
1
person * p=new person[a];
а то получается( в другой версии)
имя вводится в одной и той же переменной
arrive[a];
бесполезная(опасная выход за границы массива) строка
1
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 692
29.03.2011, 08:04  [ТС] #13
Ой я вас дезынформировал... то что вы видели в предыдущем посте это была прошлая версия программы. В этой исправлены некоторые, мною найденные, недочеты.

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<fstream>
#include<iostream>
#include<string>
using namespace std;
int main()
{setlocale(LC_ALL,"Russian");
cout<<"После работы программы сохранит данные в файл (Y\\N) ? ";
char c; 
cin>>c;
if(c=='Y'||'y')
    {
int a;
char name[100];
cout<<"Введите колличество человек --> ";
    cin>>a;
    int *arrive=new int[a];
    arrive[a];
    
for(int x = 0;x<a;x++)
{
    cout<<"Введи имя --> ";
    cin.ignore();
    cin.getline(name, 80);
    cout<<"Введи свой рост --> ";
    cin>>arrive[x];
    cin.get();
}
cout<<"+++++++++++ Вывод +++++++"<<endl;
ofstream outfile;
outfile.open("st.txt");
for(int x = 0;x<a;x++)
    {cout<<"Персона "<<x+1<<" имя "<<name<<" и твой рост "<<arrive[x]<<endl;
  outfile<<"Персона "<<x+1<<" имя "<<name<<" и твой рост "<<arrive[x]<<endl;
}
outfile.close();
cout<<"Файл Список.TXT помещен на рабочий стол,"<<endl;
    cout<<"для завершения нажмите Enter";
    cin.get();
delete [] arrive;
 
}
else
{int a;
char name[100];
cout<<"Введите колличество человек --> ";
    cin>>a;
    int *arrive=new int[a];
    arrive[a];
    
for(int x = 0;x<a;x++)
{
    cout<<"Введи имя --> ";
    cin.ignore();
    cin.getline(name, 80);
    cout<<"Введи свой рост --> ";
    cin>>arrive[x];
    cin.get();
}
cout<<"+++++++++++ Вывод +++++++"<<endl;
for(int x = 0;x<a;x++)
    cout<<"Персона "<<x+1<<" имя "<<name<<" и твой рост "<<arrive[x]<<endl;
delete [] arrive;
cin.get();
}return 0;}
0
ValeryS
Модератор
6673 / 5082 / 474
Регистрация: 14.02.2011
Сообщений: 17,048
29.03.2011, 09:15 #14
Для чего 17 строка???
куда будет записываться текст в 23 строке???
0
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 692
29.03.2011, 15:43  [ТС] #15
Цитата Сообщение от ValeryS Посмотреть сообщение
Для чего 17 строка???
Скорее всего осталось от чего-то.
куда будет записываться текст в 23 строке???
в

C++
1
char name[100];
0
29.03.2011, 15:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2011, 15:43
Привет! Вот еще темы с ответами:

Работа с линейными списками. Ошибка "getline: идентификатор не найден" - C++
Вообще не разбираюсь в этом)),но все же курсовую надо сдавать.Тема курсовой: Текст помощи для программы организован как линейный...

"Проскакивает" getline(), если ранее вводилась целочисленная переменная. Почему? - C++
Итак... Имеется кусок кода, который должен принимать с клавиатуры порядковый номер работы (целое число), её название (строка) и описание...

Ошибка : Class не содержит члена "getline" С++ - C++
При написании программы появилась ошибка : &quot;Error: class &quot;std::basic_ofstream&lt;char, std::char_traits&lt;char&gt;&gt;&quot; не содержит члена &quot;getline&quot;....

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru