Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 20.05.2009, 23:44   #11
papercut
Пользователь
 
Регистрация: 19.05.2009
Сообщений: 16
По умолчанию

Прошу прошения за назойливость) Завтра буду защищать эту задачку, поэтому хочу разобраться во всем до конца! Итак вот что я понял:

cin.getline - оператор для ввода строки с клавиатуры
___________________________________ __________
for(i=0; i<256; i++)
mas[i] = 0;
// пока нет никаких символов

здесь мы очищаем массив от всех символов
___________________________________ __________
for(i=0; i<strlen(text); i++) //идем по тексту

не совсем понятно что означает i<strlen(text);, что-то вроде не далее конца строки?
___________________________________ ___________________
mas[(int)text[i]]++; // увеличиваем элемент массива с индексом, равным коду символа

На этом этапе как я понял из комментария, мы сортируем массив по возрастанию букв
___________________________________ ______________________
for(i=0; i<256; i++) // выводим символы
if(mas[i]>0) cout<<(char)i<<endl;

Ну тут понятно все, кроме вот этого: (char)i
то есть проше говоря мы выводим все символы i берущиеся из цикла?
___________________________________ ______________________

Пара вопросов:

Для чего нужна библиотека #include <string.h> ?
Я так понимаю что-то со строками?!

Затем, я не очень понял про коды символов, откуда они берутся? И как сделать чтобы отсеить все символы, кроме латинских строчных букв (русские у меня почему то не срабатывают)?

Если очень надоел можно не отвечать, а просто указать где почитать)
papercut вне форума
Старый 21.05.2009, 00:31   #12
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
cin.getline - оператор для ввода строки с клавиатуры
Да.
Первый параметр - строковая переменная. Второй - количество символов, которое будет прочитано. Третий ('\n') - символ-разделитель, встретив который ввод окончится.
Цитата:
for(i=0; i<256; i++)
mas[i] = 0; // пока нет никаких символов

здесь мы очищаем массив от всех символов
Вроде того. Говорим, что каждый символ встретился 0 раз.
Цитата:
не совсем понятно что означает i<strlen(text);, что-то вроде не далее конца строки?
strlen - возвращает длину строки, указанной в аргументе.
Цитата:
mas[(int)text[i]]++; // увеличиваем элемент массива с индексом, равным коду символа

На этом этапе как я понял из комментария, мы сортируем массив по возрастанию букв
Нет. Тут ничего не сортируется.
У нас есть символ text[i]. Он имеет ASCII-код (от 0 до 255). Мы берем этот код и увеличиваем элемент массива mas с таким индексом.
Цитата:
Ну тут понятно все, кроме вот этого: (char)i
то есть проше говоря мы выводим все символы i берущиеся из цикла?
(char)i - это приведение переменной i к типу char. i здесь - число от 0 до 255. Но нам нужно вывести символ, а не число. Поэтому мы приводим его к типу char.
Цитата:
Для чего нужна библиотека #include <string.h> ?
Я так понимаю что-то со строками?!
Да. В ней описана функция strlen.
Цитата:
Затем, я не очень понял про коды символов, откуда они берутся? И как сделать чтобы отсеить все символы, кроме латинских строчных букв (русские у меня почему то не срабатывают)?
Каждый символ имеет свой ASCII-код - число от 0 до 255.
Символы латинского алфавита имеют коды 65-90 (заглавные буквы) и 97-122 (строчные). Чтобы выводить только их, нужно в последний цикл (в котором выводим) добавить в условие проверку на вхождение кода (i) в этот диапазон.
А можно просто в самом цикле пройти именно по этому диапазону.

С русскими не работает из-за кодировок. Вы вводите в консоль символы в кодировке 1251. Но в консоли кодировка - 866.
Если вам все-таки нужны именно русские символы, то вбейте в поиск CharToOem. Там найдете пример ее использования.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 22.05.2009, 20:38   #13
papercut
Пользователь
 
Регистрация: 19.05.2009
Сообщений: 16
По умолчанию

Спасибо! Вы мне очень помогли)
papercut вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на сортировку СРОЧНО! theFEAR Паскаль, Turbo Pascal, PascalABC.NET 0 29.04.2009 20:00
Помогите переделать файловую сортировку на сортировку динамич. списков Taisja Помощь студентам 2 15.06.2008 16:10
Задача на сортировку... Sota Помощь студентам 4 25.05.2008 19:26
Задача на сортировку массива Acid Паскаль, Turbo Pascal, PascalABC.NET 1 17.06.2007 00:16