Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 14
1

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

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

Author24 — интернет-сервис помощи студентам
не могу разобраться
хочу проверить вводимую строку типа 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2012, 22:53
Ответы с готовыми решениями:

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

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

Сравнить каждый элемент с каждым, если есть совпадение, то соединить всю строку, в которой найдено совпадение
Доброго времени суток! Есть два массива строк разного размера (элементы массива разделены...

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

9
15 / 15 / 5
Регистрация: 22.12.2008
Сообщений: 69
01.03.2012, 22:55 2
Это полный код ?
0
136 / 107 / 61
Регистрация: 05.02.2012
Сообщений: 241
01.03.2012, 22:56 3
У тебя m и n не инициализированы.
0
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 14
01.03.2012, 22:58  [ТС] 4
Цитата Сообщение от Arnaulf Посмотреть сообщение
Это полный код ?
нет, убрал все лишнее
0
2 / 2 / 1
Регистрация: 01.03.2012
Сообщений: 12
01.03.2012, 23:03 5
У тебя условие цикла не правильное, в любом случае выйдет за приделы массива. При сравнивании букв будут проверяться только буквы в верхнем регистре и по этому n никогда не обнулится(и опять же выход за пределы массива).
0
136 / 107 / 61
Регистрация: 05.02.2012
Сообщений: 241
01.03.2012, 23:04 6
Я не уверен, но у тебя не корректное условие окончания цикла.
0
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
2 / 2 / 1
Регистрация: 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
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
2 / 2 / 1
Регистрация: 01.03.2012
Сообщений: 12
01.03.2012, 23:42 10
Цитата Сообщение от c1st Посмотреть сообщение
в этой штуке if (0 <= size) кокраз должен был быть count вместо 0, хз почему там 0 оказался.
спасибо, вроде разобрался
в любом случае незачем считать количество символов в строке, так как есть стандартный метод.
т.е. parol.length()
0
01.03.2012, 23:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2012, 23:42
Помогаю со студенческими работами здесь

Условие типа if( масив типа char[x] [y] != переменная типа char) не срабатывает
Создал функцию ChangeWay(). Все, кроме if(map !=ar) (обе переменные типа char) работает...

Разложить строку типа char *
Добрый день! Подскажите как осуществить разложение строки типа char* в элементы вектора. Сама...

Проверить вводимую цифру
Подскажите пожалуйста, как проверить вводимую цифру (1 и 2)? cin &gt;&gt; char; while ((char != '1')...

Аргумент типа (const char*) несовместим с параметром типа (char*). Как исправить?
#include &quot;Table.h&quot; #include &quot;Contour.h&quot; #include &quot;TwoShape.h&quot; #include &lt;iostream&gt; int...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru