Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для parkito
15 / 14 / 10
Регистрация: 22.03.2010
Сообщений: 695

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

24.03.2011, 21:52. Показов 1269. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.03.2011, 21:52
Ответы с готовыми решениями:

MV Studio Express 2012, компилятор си не разрешает объявлять переменные вне начала функции
компилятор си не разрешает объявлять переменные вне начала функции. по googlu 99 версия компилятора. вопрос? как это исправить в...

Компилятор пропускает getline
добрый вечер, пишу лабу для 10 класса по переводу числа из одной СС в другую. По неведомой мне причине компилятор пропускает строчку с...

Компилятор ругается на getline
#include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; void InChar(int &amp;NumbOfBits, char *NumberInBin) { ...

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

Добавлено через 43 секунды
Цитата Сообщение от parkito Посмотреть сообщение
Мой компилятор не принимает "getline"
Всмисле ошибку выдает или как ?
0
 Аватар для parkito
15 / 14 / 10
Регистрация: 22.03.2010
Сообщений: 695
24.03.2011, 22:41  [ТС]
Поработал с программой. Ошибок больше нет, но не могу вести в нее имя персоны.
как исправить ?
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
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
24.03.2011, 22:48
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
15 / 14 / 10
Регистрация: 22.03.2010
Сообщений: 695
24.03.2011, 22:55  [ТС]
asics Спасибо. А что за очистка потока ? не разу не слышал.
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
24.03.2011, 23:02
parkito, Когда Вы первый раз ввели имя(нажали Enter) в строку не записался символ \n, то бишь он остался в потоке и что бы его от-туда удалить используем метод sync() класа istream http://www.cplusplus.com/refer... ream/sync/
0
 Аватар для parkito
15 / 14 / 10
Регистрация: 22.03.2010
Сообщений: 695
25.03.2011, 09:07  [ТС]
Как сделать струкутуру

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
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
25.03.2011, 17:08
parkito,
C++
1
getline(cin, str);
0
 Аватар для parkito
15 / 14 / 10
Регистрация: 22.03.2010
Сообщений: 695
28.03.2011, 22:57  [ТС]
Имеется прога

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
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
28.03.2011, 22:59
После ввода напиши
C++
1
2
if(!cin)
  //ERROR
0
 Аватар для parkito
15 / 14 / 10
Регистрация: 22.03.2010
Сообщений: 695
28.03.2011, 23:00  [ТС]
Цитата Сообщение от asics Посмотреть сообщение
После ввода напиши
C++
1
2
if(!cin)
  //ERROR
Поясните пожалуйста как работает это решение.
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
28.03.2011, 23:06
чей то тут накрутили
для того чтобы создать динамический массив структур достаточно вместо
Цитата Сообщение от parkito Посмотреть сообщение
person p[a];
написать
C++
1
person * p=new person[a];
а то получается( в другой версии)
имя вводится в одной и той же переменной
arrive[a];
бесполезная(опасная выход за границы массива) строка
1
 Аватар для parkito
15 / 14 / 10
Регистрация: 22.03.2010
Сообщений: 695
29.03.2011, 08:04  [ТС]
Ой я вас дезынформировал... то что вы видели в предыдущем посте это была прошлая версия программы. В этой исправлены некоторые, мною найденные, недочеты.

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
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
29.03.2011, 09:15
Для чего 17 строка???
куда будет записываться текст в 23 строке???
0
 Аватар для parkito
15 / 14 / 10
Регистрация: 22.03.2010
Сообщений: 695
29.03.2011, 15:43  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
Для чего 17 строка???
Скорее всего осталось от чего-то.
куда будет записываться текст в 23 строке???
в

C++
1
char name[100];
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
29.03.2011, 18:25
Цитата Сообщение от parkito Посмотреть сообщение
в
C++
1
char name[100];
а при второй итерации(проходе цикла) пятой...десятой
Туда же.
т.е в буфере будет последняя введенная строка (остальные затрутся)

Добавлено через 1 минуту
C++
1
2
for(int x = 0;x<a;x++)
        {cout<<"Персона "<<x+1<<" имя "<<name<<" и твой рост "<<arrive[x]<<endl;
вот здесь будет выводится одно и тоже имя. Последнее
0
 Аватар для parkito
15 / 14 / 10
Регистрация: 22.03.2010
Сообщений: 695
29.03.2011, 19:19  [ТС]
Так он и выводятся на экран и в файл. Информация не теряется
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
29.03.2011, 20:38
т.е. ты хочешь сказать что введя 10 имен
и в файле получишь 10 разных
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.03.2011, 20:38
Помогаю со студенческими работами здесь

Не хочет работать cin.getline
cin.getline(comp.processor, 50); Должно работать до энтера (в другом вижуале нормально работает), а в 2015 не работает без трех...

Компилятор выдаёт ошибку на getline
#include &quot;pch.h&quot; #include&lt;iostream&gt; #include&lt;fstream&gt; #include &lt;string&gt; #include &lt;string&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; ...

Компилятор не принимает R.id.background
По идее прога должна менять фон на мои картинки при нажатии на кнопки, код взяла с какого-то сайта, но вот проблема - компилятор не...

Компилятор не принимает решение задачи
Добрый вечер, такая вот задачка: Найдите все вершины графа, которые являются истоками, и все его вершины, которые являются стоками. ...

Компилятор не принимает then в операторе условия
Здравствуйте, недавно начал изучать Pascal, и столкнулся с проблемой, я не могу понять почему компилятор хочет вставить then посреди...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru