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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
c1st
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 14
#1

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

01.03.2012, 22:53. Просмотров 713. Ответов 9
Метки нет (Все метки)

не могу разобраться
хочу проверить вводимую строку типа 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();
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2012, 22:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить вводимую строку типа strint(не char) на совпадение с алфавитом (C++):

Читать строку типа string из файла, разбить ее на массив слов типа char - C++
Нужно сделать так что бы строчка вида &quot;&lt;слово1&gt;:&lt;слово2&gt;:&lt;слово3&gt;:&lt;слово4&gt;&quot; , считывалась и каждое слово заносилось в свою переменную....

Перевести строку типа char в массив типа int - C++
Задание : В текстовом файле INPUT.TXT записаны целые числа через пробел, возможно, в несколько строк. За один просмотр файла сформировать...

Проверить правильность ввода в строке типа char - C++
Здравствуйте. Такой вопрос: Есть строковый массив и запись в него, но как при этом проверить все это дело на содержание в нем, либо при...

Как вставить строку типа char по индексу в массив? - C++
как вставить строку типа char по индексу в массив Вот что имеется #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cstring&gt; ...

Подскажите, как создать одномерную, динамическую строку типа char - C++
Подскажите, как создать одномерную, динамическую строку типа char. И что бы символы вводились с клавиатуры)))

Как присоединить одну строку к другой типа const char * - C++
Создаю группу файло, передаю путь. Нужно соединить строки. const char *path=&quot;C:\\Program Files\\Microsoft Visual...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Arnaulf
15 / 15 / 1
Регистрация: 22.12.2008
Сообщений: 69
01.03.2012, 22:55 #2
Это полный код ?
0
miriganua
131 / 102 / 4
Регистрация: 05.02.2012
Сообщений: 241
01.03.2012, 22:56 #3
У тебя m и n не инициализированы.
0
c1st
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 14
01.03.2012, 22:58  [ТС] #4
Цитата Сообщение от Arnaulf Посмотреть сообщение
Это полный код ?
нет, убрал все лишнее
0
d3v1l
1 / 1 / 0
Регистрация: 01.03.2012
Сообщений: 12
01.03.2012, 23:03 #5
У тебя условие цикла не правильное, в любом случае выйдет за приделы массива. При сравнивании букв будут проверяться только буквы в верхнем регистре и по этому n никогда не обнулится(и опять же выход за пределы массива).
0
miriganua
131 / 102 / 4
Регистрация: 05.02.2012
Сообщений: 241
01.03.2012, 23:04 #6
Я не уверен, но у тебя не корректное условие окончания цикла.
0
c1st
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 14
01.03.2012, 23:18  [ТС] #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;
     }
0
d3v1l
1 / 1 / 0
Регистрация: 01.03.2012
Сообщений: 12
01.03.2012, 23:30 #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*/
}
0
c1st
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 14
01.03.2012, 23:38  [ТС] #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 оказался.
спасибо, вроде разобрался
0
d3v1l
1 / 1 / 0
Регистрация: 01.03.2012
Сообщений: 12
01.03.2012, 23:42 #10
Цитата Сообщение от c1st Посмотреть сообщение
в этой штуке if (0 <= size) кокраз должен был быть count вместо 0, хз почему там 0 оказался.
спасибо, вроде разобрался
в любом случае незачем считать количество символов в строке, так как есть стандартный метод.
т.е. parol.length()
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2012, 23:42
Привет! Вот еще темы с ответами:

Написать функцию, которая переворачивает строку (массива типа char). - C++
Вот задание: Написать функцию reversit(), которая переворачивает строку (массива типа char). Используйте цикл for, которая меняет первый...

Считать с файла строку типа char до знака окончания строки - C++
Всем доброго времени суток. Мне нужно считать с файла строку типа char до знака окончания строки ( '\0'). Как мне это сделать? Я...

Аргумент типа char** не совместим с параметром типа const char* - C++
Программа должна позволять заносить в структуру данные и выводить на экран информацию о поездах, следующих до определенной станции: ...

Добавление в массив типа char * одного элемента типа char - C++
Дан класс Строка, содержащий указатель на char - адрес динамически выделенной для размещения символов строки памяти и длину строки. Нужен...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.03.2012, 23:42
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru