Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
1 / 1 / 1
Регистрация: 09.11.2014
Сообщений: 68

Проверка на корректный ввод символов

29.12.2018, 20:14. Показов 4935. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как исправить? Нужно ввести строку и проверить на корректный ввод. Отмечу, что по заданию библиотеку string использовать нельзя
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
#include "pch.h"
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    char* a = new char[100];
    cout << "Введите символьную строку: ";
    for (int i = 0; i < 100; i++)
    {
        cin >> a[i];
        if (!(a[i] >= '224'&& a[i] <= '255' || a[i] >= '192'&& a[i] <= '223' || a[i] == '128'))
        {
            cout << "Неверный ввод!Введите строку, состоящую из символов: ";
            cin.clear();
            cin.ignore(255, '\n');
        }
        else
        {
            cout << a[i];
            break;
 
        }
    }
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.12.2018, 20:14
Ответы с готовыми решениями:

Проверка на корректный ввод числа
Вводится число, если оно введено верно, нужно вывести hello world это количество раз, а если введено что-либо другое, то вывести Error. ...

Проверка на корректный ввод числа
Мне нужно вывести hello world то количество раз, какое напишет пользователь, но если введено что-то кроме чисел, надо вывести error. В моем...

Проверка на корректный ввод. Выходит из цикла раньше времени
Хочется чтобы код заставлял вводить юзера снова и снова пока тот не ввидет корректный инпут. А у меня получается что он просто проверяет...

4
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
29.12.2018, 20:47
lilulu, здравствуйте! Вам эту проверку нужно делать после ввода всей строки или прямо во время ввода?
0
1 / 1 / 1
Регистрация: 09.11.2014
Сообщений: 68
29.12.2018, 22:12  [ТС]
Fixer_84, вечер добрый! во время ввода
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
31.12.2018, 21:09
lilulu, не совсем понятно, какие символы вводить нельзя. Но вот пример программы по вашему запросу (проверка во время ввода):

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
/*
Проверить строку на корректный ввод. Если введена цифра, ввести строку заново.
*/
 
#include <iostream> 
#include <cctype> 
#include <conio.h>
 
    using namespace std;
 
int main() {
    char* a = new char[10]; //Символьный массив из 10 элементов
    cout << "Enter a string:\n";
    int i = 0;
    do {
        a[i] = _getch();
        if (isdigit(a[i])) {
            cout << "\nYou can't enter a digit!";
            i = -1;
            cout << "\nEnter a string again:\n";
        } else {
            cout << a[i];
        }
        i++;
    } while (i != 10);
    cout << "\n";
    system("pause");
    return 0;
}
1
1 / 1 / 1
Регистрация: 09.11.2014
Сообщений: 68
08.01.2019, 00:11  [ТС]
Fixer_84, можно вводить только русские символы.
Я тут накатала, но...
Во-первых, у меня не завершается цикл. Наверно из-за того, что там 100 элементов и неиспользуемые записываются нулями. Я там попыталась скинуть их, но не вышло.
Еще интересует вот что...Как сделать так, чтобы он выводил результат не слитно, а с пробелами (если они используются при вводе)?
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
#include "pch.h"
#include "windows.h"
#include <iostream>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_ALL, "rus");
    const int n = 100;
    unsigned char a[n];
    unsigned int int_a[n];
    cout << "Введите символьную строку: ";
    int i = 0;
    do
    {
        cin >> a[i];
        int_a[i] = a[i];
        if (!(int_a[i] >= 192 && int_a[i] <= 255 || int_a[i] == 160))
        {
            cout << "Неверный ввод!Введите строку, состоящую из символов русского алфавита: ";
            cin.clear();
            cin.ignore(255, '\n');
            i = -1;
        }
        else
        {
            cout << a[i];
        }
        i++;
        if ((int_a[i] == 0))
        {
            break;
        }
    } while (i != n);
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.01.2019, 00:11
Помогаю со студенческими работами здесь

Проверка на ввод только символов (строковый класс)
Здравствуйте, проблема заключается в том, что не знаю как сделать проверку на ввод только символов в строковом классе. string color; ...

Корректный ввод с cin
Пусть в программе есть оператор cin &gt;&gt; n, где n типа int, а пользователь вводит набор символов Как отследить это, не выдавая ошибку, и не...

Как организовать корректный ввод?
Добрый день всем. Собственно говоря вопрос такой есть класс data, я перегрузил для него оператор ввода. Все бы хорошо, но теперь не могу...

Корректный ввод структуры и ее обработка
Добрый день. Есть вопрос, как мне правильно ввести структуру, что бы потом корректно с ней работать. Задание:Нужно составить...

Корректный ввод данных, goodbit,зацикливание
Всем привет! У меня вопрос следующего характера. Не понятно почему происходит зацикливание в следующем коде если за комментировать...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru