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

Проверить вводимую строку типа strint(не char) на совпадение с алфавитом - C++

Восстановить пароль Регистрация
 
c1st
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 14
01.03.2012, 22:53     Проверить вводимую строку типа strint(не char) на совпадение с алфавитом #1
не могу разобраться
хочу проверить вводимую строку типа strint(не char) на совпадение с алфавитом, но выводится ошибка в месте while, что я делаю не так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <string>
using namespace std;
string parol;
cin >> parol;
int m = 0, n = 0;
string massiv = "ABCDEFGHIJKLMNOPQRSTUVWXTZ";
while ( parol[m])
{
    if( parol[m] == massiv[n])
    {
    m++;
    n=0;
    }
    else          
    n++;       
}
cin.get();
cin.get();
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2012, 22:53     Проверить вводимую строку типа strint(не char) на совпадение с алфавитом
Посмотрите здесь:

Подскажите, как создать одномерную, динамическую строку типа char C++
C++ Как присоединить одну строку к другой типа const char *
Написать функцию, которая переворачивает строку (массива типа char). C++
C++ Считать с файла строку типа char до знака окончания строки
Аргумент типа char (*)[1000] несовместим с параметром типа char** C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Arnaulf
15 / 15 / 1
Регистрация: 22.12.2008
Сообщений: 69
01.03.2012, 22:55     Проверить вводимую строку типа strint(не char) на совпадение с алфавитом #2
Это полный код ?
miriganua
129 / 100 / 4
Регистрация: 05.02.2012
Сообщений: 241
01.03.2012, 22:56     Проверить вводимую строку типа strint(не char) на совпадение с алфавитом #3
У тебя m и n не инициализированы.
c1st
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 14
01.03.2012, 22:58  [ТС]     Проверить вводимую строку типа strint(не char) на совпадение с алфавитом #4
Цитата Сообщение от Arnaulf Посмотреть сообщение
Это полный код ?
нет, убрал все лишнее
d3v1l
1 / 1 / 0
Регистрация: 01.03.2012
Сообщений: 12
01.03.2012, 23:03     Проверить вводимую строку типа strint(не char) на совпадение с алфавитом #5
У тебя условие цикла не правильное, в любом случае выйдет за приделы массива. При сравнивании букв будут проверяться только буквы в верхнем регистре и по этому n никогда не обнулится(и опять же выход за пределы массива).
miriganua
129 / 100 / 4
Регистрация: 05.02.2012
Сообщений: 241
01.03.2012, 23:04     Проверить вводимую строку типа strint(не char) на совпадение с алфавитом #6
Я не уверен, но у тебя не корректное условие окончания цикла.
c1st
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 14
01.03.2012, 23:18  [ТС]     Проверить вводимую строку типа strint(не char) на совпадение с алфавитом #7
Цитата Сообщение от d3v1l Посмотреть сообщение
У тебя условие цикла не правильное, в любом случае выйдет за приделы массива. При сравнивании букв будут проверяться только буквы в верхнем регистре и по этому n никогда не обнулится(и опять же выход за пределы массива).
ок, вот весь код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
            string parol;
            cin >> parol;
            const int size = 24;
     const int size_m = 26;
     string massiv = "ABCDEFGHIJKLMNOPQRSTUVWXTZ"; 
     int count = 0;
     int i = 0;
     while (parol[i] != 0)
     {
          count++;
          i++;
     }
     if (0 <= size)
     {
        int m = 0, n = 0;
        while ( parol[m])
        {
            if( parol[m] == massiv[n])
            {
                m++;
                n=0;
            }
            else          
                if (n == size_m)
                {
                     cout << "Error! str" << endl;
                     return flag = false;
                     break;
                }
                else
                    n++;       
        }
        if(n!=size_m)
            cout << "Parol veren: " << parol << endl;
            return flag = true;
     }
     else
     {
      cout << "Error! col" << endl;
      return flag = false;
     }
d3v1l
1 / 1 / 0
Регистрация: 01.03.2012
Сообщений: 12
01.03.2012, 23:30     Проверить вводимую строку типа strint(не char) на совпадение с алфавитом #8
Цитата Сообщение от c1st Посмотреть сообщение
C++
1
int count = 0; int i = 0; while (parol[i] != 0) { count++; i++; }
в этом куске вообще нет смысла, так как (count, i) нигде не используются

Цитата Сообщение от c1st Посмотреть сообщение
C++
1
if (0 <= size)
всегда будет возвращать true, тоже смысла в этом нет.

для того чтоб пройтись по всему массиву , я бы использовал другую конструкцию.
C++
1
2
3
4
5
for (int i = 0;i<parol.length();i++)
{
    /*выполнять какие-то действия с parol[i].
        в этом случае точно не выйдет за приделы массива parol*/
}
c1st
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 14
01.03.2012, 23:38  [ТС]     Проверить вводимую строку типа strint(не char) на совпадение с алфавитом #9
Цитата Сообщение от d3v1l Посмотреть сообщение
для того чтоб пройтись по всему массиву , я бы использовал другую конструкцию.
C++
1
2
3
4
5
for (int i = 0;i<parol.length();i++)
{
    /*выполнять какие-то действия с parol[i].
        в этом случае точно не выйдет за приделы массива parol*/
}
в этой штуке if (0 <= size) кокраз должен был быть count вместо 0, хз почему там 0 оказался.
спасибо, вроде разобрался
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2012, 23:42     Проверить вводимую строку типа strint(не char) на совпадение с алфавитом
Еще ссылки по теме:

C++ Списки. Не выводит первую вводимую строку
C++ Читать строку типа string из файла, разбить ее на массив слов типа char
C++ Как вставить строку типа char по индексу в массив?

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

Или воспользуйтесь поиском по форуму:
d3v1l
1 / 1 / 0
Регистрация: 01.03.2012
Сообщений: 12
01.03.2012, 23:42     Проверить вводимую строку типа strint(не char) на совпадение с алфавитом #10
Цитата Сообщение от c1st Посмотреть сообщение
в этой штуке if (0 <= size) кокраз должен был быть count вместо 0, хз почему там 0 оказался.
спасибо, вроде разобрался
в любом случае незачем считать количество символов в строке, так как есть стандартный метод.
т.е. parol.length()
Yandex
Объявления
01.03.2012, 23:42     Проверить вводимую строку типа strint(не char) на совпадение с алфавитом
Ответ Создать тему
Опции темы

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