Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка текста, Шифровщик текста 
:(
    Опции темы
Phoenix13
Дата 12.3.2010, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



Как сделать так чтобы инструкция if проверяла не конкретную по счёту букву а все сообщение на наличие в ней искомой буквы?

Код

#include <iostream>                                             
#include <cstring>                                              
#include <cstdio>                                                                                          
#include <string.h>

using namespace std;                                           
                                                                                                 
const int ALPHABET_SIZE = 34;                                   
const char alphabet[ALPHABET_SIZE]="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; 


int main()                                                     
{  
char a='a';      
int i=3;
char massage[120];                                               
setlocale(LC_ALL, "Russian");                                  
cout<<"Введите ссообщение: ";                                   
gets(massage);                

cout<<"Зашифрованное сообщение: ";
if (a==massage[i])
{
cout<<"ABV";
}
else
{
    cout<<massage[i];
}
 
cin.get();                                                     
}  

Может как-то через цикл for это можно сделать?
PM MAIL Skype   Вверх
bsa
Дата 12.3.2010, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Phoenix13 @  12.3.2010,  11:22 Найти цитируемый пост)
Может как-то через цикл for это можно сделать? 
можно конечно, если хочется изобрести велосипед. А если не хочется, то можно использовать функции strchr() (для си строк) и std::find или std::string::find.

Кстати, подключать одновременно string.h и cstring смысла нет никакого, так как cstring сам подключает string.h и заворачивает стандартные функции в пространство имен std.
ты используешь, setlocale, но у тебя нет #include <clocale>.
PM   Вверх
Phoenix13
Дата 12.3.2010, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



Я новичек, если можно пример. 
smile 

 И насчет Setlocate, почему cout выводит слова на русском в консоли, а когда я вписываю на русском что-либо, то он возвращает иероглифы? Можно ли это исправить?
PM MAIL Skype   Вверх
bsa
Дата 12.3.2010, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Phoenix13 @  12.3.2010,  11:51 Найти цитируемый пост)
Я новичек, если можно пример. 
пример чего? не знаешь как вызывать функцию с двумя параметрами, один из которых строка, а второй символ? Или ты вообще не знаешь, сколько у нее параметров? Гугл рулит!

PM   Вверх
Phoenix13
Дата 12.3.2010, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



С функциями незнаком((
PM MAIL Skype   Вверх
Ozerich
Дата 12.3.2010, 12:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 2.8.2009
Где: Минск, Беларусь

Репутация: 4
Всего: 5



Вот тебе самописная функция поиска и цикл for
Код

#include <string>
#include <iostream>
#include <clocale>

using namespace std;
                                                                                                 
bool find_letter(string &s, char a)
{
    for(int i = 0; i < s.size(); i++)
        if(s[i] == a)
            return true;
    return false;
}

int main()                                                     
{  
char letter;
string message;
setlocale(LC_ALL, "Russian");                                  
cout<<"Введите сообщение: ";                                   
cin >> message;      
cout<<"Введите букву: ";                                   
cin >> letter;      
if(find_letter(message,letter))
cout << "Буква такая есть";
else cout <<" Буквы нету";
cin.get();                                                     
}  

--------------------
C++(STL) / DHTML(CSS) / Javascript / PHP  Developer
PM MAIL ICQ Skype   Вверх
Phoenix13
Дата 12.3.2010, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



Ozerich
, спасибо!! smile  Как всегда чётко по теме) Только ещё хочется понять как работают отдельные моменты.
find_letter это название функции которая начнёт выполняться в if.  
Код

if(find_letter(message,letter))

Как работает само (message,later)? Я имею ввиду и алгоритм и синтаксис.
PM MAIL Skype   Вверх
Ozerich
Дата 12.3.2010, 12:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 2.8.2009
Где: Минск, Беларусь

Репутация: 4
Всего: 5



Цитата

Как работает само (message,later)? Я имею ввиду и алгоритм и синтаксис. 


это параметы которые передаются в функцию. 1-ый параметр это само сообщение, 2-ой - буква. Функция возвращает true, если буква содержится в сообщение, иначе возвращает false
--------------------
C++(STL) / DHTML(CSS) / Javascript / PHP  Developer
PM MAIL ICQ Skype   Вверх
Phoenix13
Дата 12.3.2010, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



Код

bool find_letter(string &s, char a)
{
    for(int i = 0; i < s.size(); i++)
        if(s[i] == a)
            return true;
    return false;
}

А здесь 
Код

(string &s, char a)
как это работает?
И ещё это не очень аонятно
Код

for(int i = 0; i < s.size(); i++)
        if(s[i] == a)


Explain, please)
PM MAIL Skype   Вверх
Ozerich
Дата 12.3.2010, 12:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 2.8.2009
Где: Минск, Беларусь

Репутация: 4
Всего: 5



Код

bool find_letter(string &s, char a)

Это уже сама функция. 
Здесь : if(find_letter(message,letter)) функция вызывается а тут : bool find_letter(string &s, char a) идет описание её(что она должна делать)

Код

for(int i = 0; i < s.size(); i++)
        if(s[i] == a)


Проходим циклом по каждому символу в строке и во второй строке условие : Если текущий символ равен тому который мы ищем то функция завершается успешно
--------------------
C++(STL) / DHTML(CSS) / Javascript / PHP  Developer
PM MAIL ICQ Skype   Вверх
Phoenix13
Дата 12.3.2010, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



А можно чуть по подробнее? Про то что циклом проходим понятно. 
Непонятно как работает это:
Код

(string &s, char a)

и вот это:
Код

i < s.size(); 

PM MAIL Skype   Вверх
Ozerich
Дата 12.3.2010, 13:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 2.8.2009
Где: Минск, Беларусь

Репутация: 4
Всего: 5



i < s.size(); 
значение переменной i меньше длины текста    
(string &s, char a)
это параметры для функции. первый параметр s типа string(строка)(амперсанд можно убрать) и второй параметр а типа char(символ)
--------------------
C++(STL) / DHTML(CSS) / Javascript / PHP  Developer
PM MAIL ICQ Skype   Вверх
Phoenix13
Дата 12.3.2010, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



как я понимаю size() стандартная функция, которая определяет длину строки?
PM MAIL Skype   Вверх
Ozerich
Дата 12.3.2010, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 2.8.2009
Где: Минск, Беларусь

Репутация: 4
Всего: 5



Цитата(Phoenix13 @ 12.3.2010,  12:18)
как я понимаю size() стандартная функция, которая определяет длину строки?

Да. Так и есть. Но эта функция только в STL строках  smile
В С-строках функция strlen(s)

Это сообщение отредактировал(а) Ozerich - 12.3.2010, 13:20
--------------------
C++(STL) / DHTML(CSS) / Javascript / PHP  Developer
PM MAIL ICQ Skype   Вверх
Phoenix13
Дата 12.3.2010, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



А в чём разница между строками С и STL smile 
PM MAIL Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0909 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.