Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
Krist_ALL
9 / 9 / 2
Регистрация: 01.02.2010
Сообщений: 317
1

Массив слов

07.03.2010, 13:38. Просмотров 3231. Ответов 10
Метки нет (Все метки)

Мне нужно сделать массив слов.
char words[] = { "lalala","loplpo"};
как то так но вылазит оибка, так как массив получается двумерный.
но когда я делаю words*[] все норм. объясните почему?


и еще написано на одном сайте что string удобнее чара... так ли это?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2010, 13:38
Ответы с готовыми решениями:

Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов
мне нужна функция, которая во входе получает строку слов и рзделителей (" ",...

Дан массив слов. Определить количество слов массива, которые не являются «перевертышем».
Дан массив слов. Определить количество слов массива, которые не являются...

Запись всех повторяющихся слов в новый массив слов
компилируется без ошибок, запускаю консоль после 13 строчки, а именно ввода...

Использование библиотеки STL , контейнер string. Дан массив слов.Надо удалить все цифры из слов
#include "StdAfx.h" #include <string> #include <iostream> #include...

Ввод слов в массив и подсчёт введённых слов
как можно решить эту задачу:Напишите программу,использующую массив char и цикл...

10
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,542
07.03.2010, 14:02 2
ЕСли тебе нужен массив слов, то старайся его как-то воплотить в жизнь.
C++
1
char words[] = { "lalala","loplpo"};
Это не массив слов, а непонятно что.
Более всего это похоже на МАССИВ СИМВОЛОВ (ибо char), неправильно инициализированный

Вот так бы я поправил:
C++
1
char words[] = {'a','b','c'};
0
Krist_ALL
9 / 9 / 2
Регистрация: 01.02.2010
Сообщений: 317
07.03.2010, 14:05  [ТС] 3
мне нужно так
words[] = { "cat","dog"};
0
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,542
07.03.2010, 14:15 4
Тебе сёдня нужно так, а завтра эдак. А синтаксис и вчера был и сёдня есть и завтра будет. Изволь относиться к нему с уважением.
0
Krist_ALL
9 / 9 / 2
Регистрация: 01.02.2010
Сообщений: 317
07.03.2010, 14:23  [ТС] 5
но когда я делаю words*[] все норм. объясните почему?
0
XuTPbIu_MuHTAu
Эксперт С++
2234 / 749 / 25
Регистрация: 27.05.2008
Сообщений: 1,498
07.03.2010, 14:25 6
Цитата Сообщение от Krist_ALL Посмотреть сообщение
char words[] = { "lalala","loplpo"};
как то так но вылазит оибка, так как массив получается двумерный.
В си для хранения строки используется указатель на её начало и нулевой терминальный символ. Все,что между ними - строка.

Поэтому, строка ассоциируется с типом char *. Это не значит, что тип char * - строковый,а char - "буквенный". char - целочисленный, char * - вполне себе указатель. Строкового типа в языке Си нет. Однако,есть все,что нужно для того,чтобы самому описать обработку строк. Тип string - класс,который её инкапсулирует. Можно пользоваться им,можно написать свой. Пользоваться готовым проще,поскольку работа с указателями и памятью требует постоянных проверок на ошибки.

Итак,к твоей проблеме, тебе нужен массив указателей,для того,обращаться к строкам. Твоё ошибочное объявление - объявления массива "букв",который ты пытаешься инициализировать указателями. В общем-то, то,что ты хочешь,выглядит так :

char * words [] = {"word1","word2",};
1
Krist_ALL
9 / 9 / 2
Регистрация: 01.02.2010
Сообщений: 317
07.03.2010, 17:18  [ТС] 7
Рсшифруйте плз строку кода
C++
1
char * words [] = {"word1","word2",};
вордс хранит адрес первого элемента двумерного массива?
1 - w,o,r,d,1
2 - w,o,r,d,2
0
al072
15 / 15 / 4
Регистрация: 03.02.2010
Сообщений: 133
07.03.2010, 17:32 8
Цитата Сообщение от Krist_ALL Посмотреть сообщение
Рсшифруйте плз строку кода
C++
1
char * words [] = {"word1","word2",};
вордс хранит адрес первого элемента двумерного массива?
1 - w,o,r,d,1
2 - w,o,r,d,2
words, в данном случае массив указателей на char.

words[]- это не двумерный массив!
двумерный массив записывался бы следующим образом words[3][2]
0
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,542
07.03.2010, 17:58 9
Цитата Сообщение от Krist_ALL Посмотреть сообщение
Рсшифруйте плз строку кода
Код C++
1
2
3

char * words [] = {"word1","word2",};

вордс хранит адрес первого элемента двумерного массива?
1 - w,o,r,d,1
2 - w,o,r,d,2
Хм. Значи, объявлен массив указателей на типа char. То есть каждый элемент массива это переменная, содержащая адрес переменной типа char
Этот массив назыввается words

Кроме того
В памяти процесса (программы) созданы два таких массивчика-строки:
'w', 'o', 'r', 'l', 'd', '1', 0
'w', 'o', 'r', 'l', 'd', '2', 0

Эти два массивчика располождены в областях памяти, называемых ячейками.
Символ 'w' НУЛЕВОГО массивчика лежит в ячейке с неоторым адресом, например, это адрес 33fd20 (шестнадцатиричная запись... О, Господи!)
Важно: нулевой элемент массива words содержит значение 33fd20!

Задание тебе: что содержится в первом элементе массива words? (Чему равно words [1]?)
1
Krist_ALL
9 / 9 / 2
Регистрация: 01.02.2010
Сообщений: 317
07.03.2010, 18:35  [ТС] 10
в words [1] содержится указатель на адрес первого элемента (буквы) массива 'w', 'o', 'r', 'l', 'd', '2', 0
0
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,542
07.03.2010, 19:27 11
Неправильно.
В words [1] содержится не указатель на адрес чего-то там, а АДРЕС нулевого элемента (буквы) массива 'w', 'o', 'r', 'l', 'd', '2', 0

не указатель на адрес, а АДРЕС
(можно сказать и так: указатель на нулевой элемент (букву) массива 'w', 'o', 'r', 'l', 'd', '2', 0)

Да, ещё я там неточность допустил, когда сказал, что два массива расположены в областях памяти, называемых ячейками.
Надо быть точным.
В каждой ячейке- один символ расположен.
А в раду ячеек соответственно все слово word1

ЭТО значит шесть ячеек подряд дадут такое слово. На шестую ячейку приходится символ 0, он АВТОМАТИЧЕСКИ вставляется компилятором.
0
07.03.2010, 19:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2010, 19:27

Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов)
Написать программу, в которой с клавиатуры вводится строка символов. Подсчитать...

Массив слов
Доброго времени суток, уважаемые форумчане. Будьте любезны, подскажите как...

Запись слов в массив
Доброй ночи! Задание: задан массив из 6 записей., каждая запись состоит из...


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

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

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