|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Помогите пожалуйста решить проблему со словами. |
|
C/C++ - Помогите пожалуйста решить проблему со словами.
|
Новый участник Сообщения: 7 |
Профиль | Отправить PM | Цитировать Проблема такая - я не пойму как например в условии if, например если я ввожу с клавиатуры слово, чтобы он в уловии if отвечал, но не дает, так как он кроме цифр и нескольких символов ничего не хочет брать, буквы задал при помощи ' ' - единичных кавычек, и типом char. Но проблема в том, что он берет только где то до 4-х символов, а если написать больше, то будет ошибка - error C2015: too many characters in constant. Не понимаю в чем дело.
|
|
Отправлено: 22:57, 13-05-2010 |
В Поисках Истины Сообщения: 802
|
Профиль | Отправить PM | Цитировать Ну За Путаницу Извините... Ну А Пример Уже Привел Drongo !!!
|
------- Отправлено: 10:21, 16-05-2010 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Цитата Drongo:
|
|
Последний раз редактировалось Drongo, 16-05-2010 в 12:56. Причина: Тег код - # Отправлено: 12:23, 16-05-2010 | #12 |
В Поисках Истины Сообщения: 802
|
Профиль | Отправить PM | Цитировать Массив - это не константа! на сколько я помню с++ то размер массива можно задавать только при помощи констант! константы это те данные которые невозможно изменить ни в каком месте программы кроме как в объявлении! а массив это как бы набор данных одного и того же типа!
З.Ы. Извините за синтаксические ошибки |
Отправлено: 13:22, 16-05-2010 | #13 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Цитата dakishi:
и использовать тип переменной - string Одинарные кавычки используются когда нужно проверить какой-то один символ а парные, когда нужно проверить строку символов. Дело в том что символьная строка заканчивается нулевым символом '\0'. В общем я сам немного запутался... #include <iostream> using namespace std; #include <cstring> main() { const int size = 510; // размер символьного массива ввода char q1[size]; // Массив с размером в 510 символов char q2[] = "water"; // Проверяемое слово cout << " Enter Massiv 510 Simvolov!\n"; // приглашение ввода cin.getline(q1, size, '\n'); // функция ввода cout << q1 << endl; // ПРОВЕРКА: введённого массива, вывод массва if (strcmp(q1, q2) == 0) { // strcmp - функция сравнивания строк. cout << "1" << endl; // Если возвращает ноль - строки равны. cout << q1; // Если возращает "-1" - то строка q1 Больше q2 } // Если возращает "1" - то строка q1 Меньше q2 else { cout << "2" << endl; cout << q1; }; cin >> q1; return 0; } |
|
------- Отправлено: 13:36, 16-05-2010 | #14 |
ИО Капитана Очевидности Сообщения: 5387
|
Профиль | Отправить PM | Цитировать Цитата Drongo:
Символьные указатели - это настолько сложная в понимании и опасная в использовании тема, что новичкам её лучше не касаться. |
|
------- Отправлено: 09:34, 17-05-2010 | #15 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Спасибо большое! Я все понял. Вы мне очень помогли. Ну, я пока что не дошел до массивов. Я дошел до темы "функции", в которой пока копаюсь, она очень длинная. Да, со string легче, но я обязательно освою и тот способ, с массивом, когда дойду до него. Еще, способ с массивом так много времени тратит, неужели он такой полезный ? А то по сравнению с другим, как то очень долго, хоть и профессионально, он наверно много других возможностей дает, но все же.
|
Отправлено: 18:02, 17-05-2010 | #16 |
ИО Капитана Очевидности Сообщения: 5387
|
Профиль | Отправить PM | Цитировать Цитата dakishi:
Для экспериментов лучше использовать значения типа int (цифры) Цитата dakishi:
Функции работы символьными массивами работают немного быстрее, но программисту при этом самому нужно контролировать операции выделения памяти и проверку длины строк. При этом малейшая ошибка может повредить данные самым непредсказуемым образом. Вот простой пример const char *sourse = "Сорок тысяч обезьян в одно место сунули банан"; //Указатель на массив символов, размещённый в области констант char *target = malloc (32); // Указатель на область памяти размером 32 байт, выделенную в "куче" под массив символов ctrcpy (target, sourse); // Функция копирования строки из области памяти по адресу sourse в область памяти по адресу target В*результате при работе программы неизбежно возникнет множество ошибок, которые "неизвестно почему" проявятся в других участках кода. Выявить причину такой ошибки - дело очень сложное. Так что лучше сразу использовать объекты типа string, которые обеспечивают автоматическую проверку размеров строк и выделения областей памяти. Благо мощность ЭВМ позволяет это делать. А символьные указатели используют только в тех участках программы, где требуется максимальное быстродействие. Но создание таких программ - удел профессионалов, которые хорошо понимают, что и как работает |
||
------- Последний раз редактировалось Delirium, 18-05-2010 в 03:44. Причина: El Scorpio, в качестве примеров выбирайте более цензурные выражения. Отправлено: 02:11, 18-05-2010 | #17 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Спасибо большое!
|
Отправлено: 21:50, 19-05-2010 | #18 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Route/Bridge - Помогите решить проблему | alex.t | Сетевые технологии | 1 | 10-05-2010 19:47 | |
Помогите решить проблему | shron | Сетевые технологии | 2 | 05-08-2007 02:11 | |
Помогите решить проблему!!!! | Guest | Сетевые технологии | 1 | 14-10-2004 23:46 |
|