Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
4 / 4 / 4
Регистрация: 14.09.2012
Сообщений: 64
1

Организовать ввод слов с клавиатуры в массив

14.09.2012, 00:12. Показов 3619. Ответов 15
Метки нет (Все метки)

Как организовать ввод слов с клавиатуры в массив таким образом, что-бы каждое слово помещалось в новую строку? Подскажите пожалуйста.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.09.2012, 00:12
Ответы с готовыми решениями:

Организовать ввод 8 целых чисел с клавиатуры, используя массив, и вывести на экран элементы массива больше 1
Организовать ввод 8 целых чисел с клавиатуры используя массив и вывести на экран элементы массива...

Организовать ввод данных с клавиатуры
помогите разобраться с заданиями. я не изучал VB, и не знаю как работать с формами. Меня попросили...

Как лучше организовать ввод с клавиатуры?
здравствуйте что лучше для ввода с клавы класс Sccanner или этот код BufferedReader reader = new...

Как организовать ввод с клавиатуры в pc-lisp 3.0?
Здравствуйте! Я в общем-то хотел просто предоставить возможность ввода данных(списка) в консоли с...

15
1174 / 887 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
14.09.2012, 00:18 2
C++
1
2
3
4
5
6
7
char strings[ 5 ][ 256 ] = {{ '\0' }};
 
for ( std::size_t i = 0; i < 5; i++ )
   std::cin >> strings[ i ];
 
for ( std::size_t i = 0; i < 5; i++ )
   std::cout << strings[ i ] << std::endl;
1
4 / 4 / 4
Регистрация: 14.09.2012
Сообщений: 64
14.09.2012, 00:34  [ТС] 3
Дело в том, что я пробовал уже аналогичным образом, но тут получается необходимый ввод 5 слов. Как сделать так, что-бы кол-во слов не ограничивалось?
0
1174 / 887 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
14.09.2012, 00:41 4
C++
1
2
3
4
5
for ( std::size_t i = 0; std::cin >> strings[ i ]; i++ )
   ;
 
std::cin.clear();
std::cin.sync();
Но тут опять же, не больше 5 слов, так как мы выделили память всего лишь под 5 строк. Можно так же воспользоваться классами string и vector.

C++
1
2
3
4
5
6
7
8
9
10
11
std::vector< std::string > strings;
std::string tempString;
 
while ( std::cin >> tempString )
   strings.push_back( tempString );
 
std::cin.cleare();
std::cin.sync();
 
for ( std::size_t i = 0; i < strings.size(); i++ )
   std::cout << strings[ i ] << std::endl;
ADD: для окончанию ввода в обоих случаях нужно ввести вместо нового слова комбинацию EOF ( ctrl + z в Win );
0
4 / 4 / 4
Регистрация: 14.09.2012
Сообщений: 64
14.09.2012, 01:18  [ТС] 5
Нужно именно через массив. И представляет интерес ввод меньшего кол-ва слов. Допустим я хочу ввести 3 слова из 5 ти. Сохраняются ли они в массиве и просто не выводятся через cout? Если не сохраняются, то возможно ли использовать динамический массив, для достижения требуемого эффекта?
Дело в том, что массив нужен для решения задачи: подсчитать кол-во слов начинающихся на гласную и т.д. при условии, что программа читает по одному слову за раз Массив нужен для выделения первой буквы.Ну и решение максимально простыми средствами, точнее с использованием азов. Я решил ее несколькими способами, но они кажутся слишком громоздкими.
0
1174 / 887 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
14.09.2012, 01:23 6
А ну тогда Вам совершенно не нужен массив под слова, этого ведь не сказано в задачи. Все делается очень просто:
C++
1
2
3
4
5
6
char word[ 256 ]; //создаем массив символов для ввода слова
 
while ( std::cin >> word ) { //вводим следующее слово, или EOF ( ctrl + z в Win ) для завершения.
   //тут выполняем 
   //необходимые действия
}
0
4 / 4 / 4
Регистрация: 14.09.2012
Сообщений: 64
14.09.2012, 01:56  [ТС] 7
Цитата Сообщение от Toshkarik Посмотреть сообщение
cin >> word
В условии сказано: ввод целой строки. А в данном случае после пробела оставшаяся инфа теряется и нужно вводить следующее слово за пробелом снова. Нужно следующее: написание строки, а уже ее загрузка в переработку по словам.Пробовал даже так, все работает, но самый "долгоиграющий"))
C++
1
2
3
4
5
6
7
8
9
char a[10];
cin>>a;
char a1[10]; 
cin>>a1;
.....
int x=0; 
if(a[0]=='a'||a[0]=='e'||...)
++x;
if(a1[0]=='a'||....) \\ и т.д.
0
1174 / 887 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
14.09.2012, 02:11 8
Цитата Сообщение от Valli1 Посмотреть сообщение
В условии сказано: ввод целой строки.
А это тогда что?
Цитата Сообщение от Valli1 Посмотреть сообщение
программа читает по одному слову за раз
0
4 / 4 / 4
Регистрация: 14.09.2012
Сообщений: 64
14.09.2012, 02:23  [ТС] 9
Напишите программу которая читает по одному слову за раз..... Вводите слова: qwerty asdfg zxcvb.?
0
1174 / 887 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
14.09.2012, 02:25 10
Все верно, Вам дали список слов. Это никак не означает что нужно вводить строку слов. Ясно написано ведь по одному слову за раз
0
4 / 4 / 4
Регистрация: 14.09.2012
Сообщений: 64
14.09.2012, 02:36  [ТС] 11
Обозначает. Однозначно. Следует из стиля постановки задач в этой книге: Пратта С.Язык программирования С++ стр.305.
0
1174 / 887 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
14.09.2012, 02:40 12
Нет, не означает. Я не читал эту книгу, но если Вы дословно написали задание, то значит нужно вводить по одному слову за раз.
0
4 / 4 / 4
Регистрация: 14.09.2012
Сообщений: 64
14.09.2012, 03:05  [ТС] 13
Возможно имеется ввиду, что при
C++
1
cin>>a;
слово пробелом который заменяется \0, преобразуется в строку и помещается в массив, затем следующее слово помещается в следующий свободный массив таким образом достигается поступление слов по одному, а не загоняется вся написанная строка как например в
C++
1
cin.getline(a,size);
Может просто некорректно сформулировано условие.
Написал дословно.
0
1174 / 887 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
14.09.2012, 03:09 14
Какое название темы этого упражнения?
0
4 / 4 / 4
Регистрация: 14.09.2012
Сообщений: 64
14.09.2012, 03:40  [ТС] 15
Операторы ветвления и логические операции.
0
1174 / 887 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
14.09.2012, 03:48 16
Тогда могу сказать с вероятностью 99%, что имелось ввиду именно ввод по одному слову, здесь массив не нужен, просто вводите слова по одному, и увеличиваете счетчик, если попадается слово, в котором первая буква гласная. В конце просто выводите данное количество.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.09.2012, 03:48

Как организовать ввод числа с клавиатуры?
как сделать ввод числа с клавиатуры?: ввод закнчивается # то есть ввожу число:102,1 ставлю #...

Организовать ввод с клавиатуры строки длиной 10 символов
нужно организовать ввод с клавиатуры строки длиной 10 символов. Введённую информацию сохранить в...

Организовать ввод с клавиатуры одномерного динамического массива
Организовать ввод с клавиатуры одномерного динамического массива произвольной длины. Найти...

Можно ли организовать ввод разрядности массива с клавиатуры?
Можно ли организовать ввод разрядности массива с клавиатуры? Что-то вроде этого: program...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru