IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Проблема со строками в С++
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Добрый день ! Изучая язык С++ после Паскаля столкнулся с такой проблемой: Необходимо написать программу в которой при вводе строки вводятся ограничения. Само задание :

Вводится тест из заглавных и строчных латинских букв, пробелов. Количество символов в тексте не должно превышать 200. Слова разделяются пробелами. Определить и вывести слова, начинающиеся и заканчивающиеся одной и той же буквой.

Скачал массу книг по С++ преподователь рекомендавал книгу Бьерна Страуструпа, начал ее читать по- началу показалось не сложной, но затем пробуя примеры из книги столкнулся с такими проблемами во многих книгах написано что есть такой тип данных string который находится в библиотеке string.h, и тип boolean <bool> но как я понят как такового типа string нет, есть массив символов т.е это конечно string это и есть массив символов, только объявление по-другому char str[200] если я не прав поправте пожалуйста, а то совсем запутался. Толи это зависит от компилятора, толи от версии... я пишу на Turbo C++ Ver 3.0

Идея решения моей задачи такова, считывать каждый раз 1 символ и прибавлять его в массив символов, задача заключается именно в том чтобы самому написать функцию ограничивающую ввод.

#include <conio.h>
#include <iostream.h>

proverka()
{
char ch[1];
char ch1[200];
int k=1;

do
{
//scanf("%s",&ch);
cin >> ch;
ch1[k]=ch[1];
k++;
ch1[200]=NULL;
}
while (k!=10);
return 0;
}

void main ()
{
clrscr();
proverka();
getch();
}


только каждый раз приходится нажимать кнопку ENTER, думал прибавлять к считываемому символу еще код ENTER'a #13 но ничего не получается.

и почему то ошибка не могу понять почему, т.е если делать по шагам, то на строке ch1[k]=ch[1]; в переменную ch1[k] попадает совсем не то значение.

Спасибо за помощь.

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
сообщение
Сообщение #2


Гость






Цитата
во многих книгах написано что есть такой тип данных string который находится в библиотеке string.h, и тип boolean <bool> но как я понят как такового типа string нет, есть массив символов
Есть еще такое понятие, как разные компиляторы. Старые и новые. Так вот в любом новом компиляторе можно подключить

#include <string>
// и потом работать с типом std::string


Turbo C++ 3.0 - это уже очень устаревший компилятор, там естественно этого нет.

Цитата
задача заключается именно в том чтобы самому написать функцию ограничивающую ввод.
Можно разъяснить, в чем именно задача? Что ограничивать? Зачем ограничивать? Ограничение - это чтобы нельзя было ввести больше 200 символов? Или еще что-то есть?

Не надо ничего придумывать. Задача у тебя - вывести слова, которые начинаются и заканчиваются на одну и туже букву. Про написание функции, ограничивающей ввод ничего не сказано. Поиск по форуму по словам gets и strtok приведет тебя к посту в котором я досконально разжевывал процесс разбиения строки на слова.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


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

Сообщение отредактировано: ninja -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






#include <iostream.h>

int main()
{
char s[10] = {0};
cin.getline(s, 9);

cout << s << endl;
return 0;
}

Вводи хоть 256 символов с клавиатуры. Прочитается максимум столько, сколько указано вторым параметром в getline. Или, если нажмешь Enter раньше чем 9 символов - то будет прочитано сколько есть.

Или тебе надо, чтобы вообще нельзя было набрать больше 200 символов? Тогда тебе надо вручную читать и собирать строку через getch, одновременно подсчитывая количество введенных символов.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Да, нужно чтобы вообще нельзя было набрать 200 символов. Извиняюсь за неверное объяснение проблемы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 18.04.2024 23:12
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name