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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.96
БлондинкаЯ
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
#1

Работа с символьным массивом - C++

02.11.2009, 18:37. Просмотров 2872. Ответов 18
Метки нет (Все метки)

А мучаюсь я с созданием символьного массива...Понятно, что через Char? а вот чего дальше с ним делать не понятно. Чем он отличается от числового массива?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dexs
 Аватар для Dexs
411 / 281 / 2
Регистрация: 29.07.2009
Сообщений: 1,982
02.11.2009, 18:39     Работа с символьным массивом #2
Цитата Сообщение от БлондинкаЯ Посмотреть сообщение
мучаюсь я с созданием символьного массива
Цитата Сообщение от БлондинкаЯ Посмотреть сообщение
Чем он отличается от числового массива?
Ответ никакой не напрашивается?
БлондинкаЯ
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
02.11.2009, 18:54  [ТС]     Работа с символьным массивом #3
Вывод напрашивается, что кто-то не любит блондинок...А насчёт отличия символьного и числового массива спросила ради интереса. Тогда сформулируем вопрос по-другому: как впринципе описывается символьный массив?
Dexs
 Аватар для Dexs
411 / 281 / 2
Регистрация: 29.07.2009
Сообщений: 1,982
02.11.2009, 18:58     Работа с символьным массивом #4
http://www.do2.rksi.ru/library/courses/demo/tema1_7.dbk
blackswan
12 / 12 / 0
Регистрация: 08.07.2009
Сообщений: 61
02.11.2009, 18:58     Работа с символьным массивом #5
C
1
char <название переменной массива>[<количество элементов>]
- символы <> тут лишние, их на самом деле нет, это если статический, динамический сложнее.
Neonjke
18 / 18 / 1
Регистрация: 08.10.2009
Сообщений: 94
02.11.2009, 18:59     Работа с символьным массивом #6
Цитата Сообщение от Dexs Посмотреть сообщение
Ответ никакой не напрашивается?
Конечно понятно, что это сарказм...да еще и не верный.
Не слушайте Dexs, потому что намеки он вам дает неверные.

Символьный массив - по своей сути от массива числового ничем не отличается.
Вам стоит до конца понять, что же такое символьный массив.
Символьный массив - это, по факту, строка. Но это пользователь видит ее в качестве строки. В действительности, символьный массив - это массив, в каждой ячейке которого хранятся числа (да-да, господин Dexs, числа), и каждое число является соотв. кодом символа (для каждой кодировки(Unicode, ASCI и т. д.) у каждого символа свой код).

А делать с ним вы можете все то же, что и с числовым массивом. Только при работе с char массивами вам стоит учитывать, что кодировки бывают разные...и поэтому, допустим, если Вам надо сравнить какой либо элемент массива (фактически символ, по сути - цифру), то сравнивать его надо не как числа ( if(a==5).... ) а с символами ( if(a=='5') ). Любой компилятор Си распознает что-то, как символ, когда это что-то заключено в одинарные кавычки.
Хотя, к примеру, для кодировки ASCI сравнение ( if(a==97) ), в случае если в A помещен символ 'a' будет также TRUE.
Dexs
 Аватар для Dexs
411 / 281 / 2
Регистрация: 29.07.2009
Сообщений: 1,982
02.11.2009, 19:01     Работа с символьным массивом #7
Цитата Сообщение от Neonjke Посмотреть сообщение
потому что намеки он вам дает неверные.
Угу. канешна! Ведь число и символ тоже самое
ProNoooob
72 / 72 / 6
Регистрация: 14.10.2009
Сообщений: 121
02.11.2009, 19:03     Работа с символьным массивом #8
Цитата Сообщение от БлондинкаЯ Посмотреть сообщение
как впринципе описывается символьный массив?
В языке С нет такого типа как буква.
Но умные люди придумали таблицу символов, где каждой букве\цифре и знаку препинания соответствует свой номер. Самый большой номер всеже вмещается в тип char Он же байт или 8 бит.
Пример:
C
1
2
3
4
5
char simvol = 'a'; //вот наша буковка
 
char stroka[5] = "abvg"; //это строка из 5ти символов. Пятый символ это \0 или просто 0. Он явно не указан, но его наличие обозначают двойные ковычки.
 
char *stroka2 = "abvg"; //тоже самое, что и строчка выше
Neonjke
18 / 18 / 1
Регистрация: 08.10.2009
Сообщений: 94
02.11.2009, 19:11     Работа с символьным массивом #9
Цитата Сообщение от Dexs Посмотреть сообщение
Угу. канешна! Ведь число и символ тоже самое
Для компьютера да.

Ведь символ 'A'=97 (для ASCI). И никакой компилятор вы в обратном не переубедите.

И можно ведь сложить 'A'+'B'. умеете складывать символы? я тоже нет. а вот компьютер почему то умеет. и получит 195 (для ASCI). Как же это так, он нам символы сложил?!
Не надо перекладывать свое мышление на законы и основы программирования.

P.S. Сам только начинаю изучать программирование, но это усвоил сразу.
Dexs
 Аватар для Dexs
411 / 281 / 2
Регистрация: 29.07.2009
Сообщений: 1,982
02.11.2009, 19:15     Работа с символьным массивом #10
Для компьютера да.
Да это и слону понятно.
Цитата Сообщение от Neonjke Посмотреть сообщение
Как же это так, он нам символы сложил?!
Действительно, как это так? Ану-ка давайте распишите поподробнее
Neonjke
18 / 18 / 1
Регистрация: 08.10.2009
Сообщений: 94
02.11.2009, 19:22     Работа с символьным массивом #11
Цитата Сообщение от Dexs Посмотреть сообщение
Ану-ка давайте распишите поподробнее
Если вам действительно нужно объяснить это, то пожалуйста.
СИМВОЛОВ НЕ СУЩЕСТВУЕТ. есть цифры. как в алфавите. А=1, Б=2, В=3, Г=4 и т.д.

Поэтому все арифметические операции с двумя операндами относительно "якобы символьных переменных" в C производятся с их кодами в используемой кодировке.
То же самое, если вы к примеру сложите символ 'b' и переход на следующую строку (\n), то получите 108 (число).

НИ СИМВОЛОВ, НИ СЛОВ, НИ БУКВ НЕТ. И не стоит заблуждаться.
По сути, символьный массив не отличается ничем от числового.
audiophile
9 / 9 / 0
Регистрация: 01.11.2009
Сообщений: 67
02.11.2009, 19:24     Работа с символьным массивом #12
Цитата Сообщение от Neonjke Посмотреть сообщение
Если вам действительно нужно объяснить это, то пожалуйста.
Neonjke, я думаю, это был сарказм .
Neonjke
18 / 18 / 1
Регистрация: 08.10.2009
Сообщений: 94
02.11.2009, 19:25     Работа с символьным массивом #13
Цитата Сообщение от audiophile Посмотреть сообщение
Neonjke, я думаю, это был сарказм .
Dexs
 Аватар для Dexs
411 / 281 / 2
Регистрация: 29.07.2009
Сообщений: 1,982
02.11.2009, 19:26     Работа с символьным массивом #14
Neonjke,
Спасибо, но audiophile, был прав
niXman
Эксперт C++
 Аватар для niXman
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
02.11.2009, 20:45     Работа с символьным массивом #15
Цитата Сообщение от БлондинкаЯ Посмотреть сообщение
Вывод напрашивается, что кто-то не любит блондинок...
а кто любит? нынче это не модно. щас брюнетки рулят. вот

п.с.
мдя малчики.. не благодарное дело
Pallada
losin' wt I don't deserve
 Аватар для Pallada
1111 / 22 / 7
Регистрация: 09.09.2009
Сообщений: 266
02.11.2009, 20:49     Работа с символьным массивом #16
Цитата Сообщение от niXman Посмотреть сообщение
щас брюнетки рулят
Dexs
 Аватар для Dexs
411 / 281 / 2
Регистрация: 29.07.2009
Сообщений: 1,982
02.11.2009, 20:52     Работа с символьным массивом #17
Цитата Сообщение от niXman Посмотреть сообщение
щас брюнетки рулят
Угу!
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
02.11.2009, 20:53     Работа с символьным массивом #18
Цитата Сообщение от ProNoooob Посмотреть сообщение
C
1
2
char stroka[5] = "abvg"; //это строка из 5ти символов. Пятый символ это \0 или просто 0. Он явно не указан, но его наличие обозначают двойные ковычки.
char *stroka2 = "abvg"; //тоже самое, что и строчка выше
Да ну здрасте..
C
1
char *stroka2 = "abvg";
это указатель на константную строку..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2009, 21:45     Работа с символьным массивом
Еще ссылки по теме:

C++ Работа с массивом указателей
C++ Работа с массивом структур
C++ Работа с массивом! Сдвиг
Работа с новым массивом C++

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

Или воспользуйтесь поиском по форуму:
БлондинкаЯ
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 35
02.11.2009, 21:45  [ТС]     Работа с символьным массивом #19
А я вот поняла насчёт сложения сивмолов, Neonjke всё понятно и доступно объяснил. Только у меня задание создать символьный массив через char, а все маленькие латинские буквы заменить на $. Я нашла такую функцию, как islower и выводится вроде как так:
cout<<(islower('p')? "p is" : "p is not")<<" a small type"<<"\n";
cout<<(islower('P')? "P is" : "P is not")<<" a small type"<<"\n";
Только по-моему там идёт замена символа p, а мне нужны маленькие латинские буквы...
Yandex
Объявления
02.11.2009, 21:45     Работа с символьным массивом
Ответ Создать тему
Опции темы

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