Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
2 / 1 / 4
Регистрация: 21.04.2018
Сообщений: 204
1

Ограничение на длину ввода поля

25.10.2018, 15:18. Показов 1676. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
К примеру есть дата
День месяц год
Как поставить ограничение чтобы пользователь мог написать только 2018,не больше 4 символов,и так же в месяце не больше двух чисел.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2018, 15:18
Ответы с готовыми решениями:

Можно ли преодолеть ограничение на длину поля в триггере
Вопрос в следующем: в БД (Oracle) есть поле в таблице типа CHAR, у него максимальная длина 10, при...

Ограничение для поля ввода
Как сделать чтобы в поле для ввода нельзя было вводить число меньше 0.3 (например)

Ограничение ввода поля memo
Здравствуйте. Пытаюсь ограничить количество символов для поля memo, но кроме MaxLength ничего не...

Программа "Введите имя". Применение стиля к тексту, проверка поля на пустоту, ограничение ввода
Условие: Разработать приложение для ввода имени и вывода в Label фразы "Добрый день, <введенное...

9
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
25.10.2018, 15:28 2
Yamis, как вариант
C++
1
2
3
std::uint16_t date;
std::cin >> date;
assert(date > 1899 && date < 3001);
0
2 / 1 / 4
Регистрация: 21.04.2018
Сообщений: 204
25.10.2018, 15:54  [ТС] 3
Azazel-San,
А когда я пишу так,и ввожу число 41,проверка считает число правильное,и переходит на следующий ввод.

C
1
2
3
4
5
6
cin>>p[i].DATA[0];
        while ((p[i].DATA[0])>0 &&(p[i].DATA[0])<31) {
            cout<<"Введите день от 1 до 31 "<<endl;
            cin.clear();
            cin.ignore(100,'\n');
        }
У меня структура
C
1
int DATA[3];
-Хранит DATA[0]-это день,DATA[1]-это месяц,DATA[2]-это год
0
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
25.10.2018, 15:57 4
Yamis, что за p[i]?
0
2 / 1 / 4
Регистрация: 21.04.2018
Сообщений: 204
25.10.2018, 16:04  [ТС] 5
Azazel-San, Покажчик на структуру

Ну я переделал так,и уже работает,но когда ввожу символ,то у меня зацикливание.Мне еще нужно проверить на ввод буквы,ее нне должно быть
C
1
2
3
4
5
6
7
8
do {
        printf("Введіть День виїзду   ");
        cin >> p[i].DATA[0];
        cin.ignore(1);
        if(p[i].DATA[0] < 1 || 31 < p[i].DATA[0])) {
            cout << "Wrong age. Retry.\n";
        }
    } while(p[i].DATA[0] < 1 || 31 < p[i].DATA[0]));
0
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
25.10.2018, 16:09 6
Цитата Сообщение от Yamis Посмотреть сообщение
Покажчик на структуру
шо?
Это скорее массив структур у вас?
Цитата Сообщение от Yamis Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
do {
* * * * printf("Введіть День виїзду * ");
* * * * cin >> p[i].DATA[0];
* * * * cin.ignore(1);
* * * * if(p[i].DATA[0] < 1 || 31 < p[i].DATA[0])) {
* * * * * * cout << "Wrong age. Retry.\n";
* * * * }
* * } while(p[i].DATA[0] < 1 || 31 < p[i].DATA[0]));
мдя.. лучше скиньте весь свой код
0
2 / 1 / 4
Регистрация: 21.04.2018
Сообщений: 204
25.10.2018, 16:17  [ТС] 7
Azazel-San, хочу сделать проверку ввода данных,ну и повторения ввода,пока не будет правильно,на Дате
C
1
2
3
4
5
6
7
8
struct Tyru
{
char NAME[20];
int VARTIST;
int TRUVAL;
 int DATA[3];
char PLACE[10];
};
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
void vvidend(char filename[])
{
    FILE *f;
    int n = 0;
    f = fopen(filename, "a+");
    cout << "Введите сколько записов хотите добавить:"; 
    cin >> n;
    Tyru *p = new Tyru[n];
    for (int i = 0; i < n; i++)
    {
        printf("\nВведите назву тура   ");
        cin >> p[i].NAME;
        printf("Введите стоимость тура   ");
        cin >> p[i].VARTIST;
        printf("Свободные места  ");
        cin >> p[i].PLACE;
        printf("Длительность   ");
        cin >> p[i].TRUVAL;
         do {
        printf("День выезда   ");
        cin >> p[i].DATA[0];
        cin.ignore(1);
        if(p[i].DATA[0] < 1 || 31 < p[i].DATA[0]) {
            cout << "Wrong age. Retry.\n";
        }
    } while(p[i].DATA[0] < 1 || 31 < p[i].DATA[0]); \
        printf("Месяц выезда   ");
        scanf("%d",&p[i].DATA[1]); 
        printf("Год выезда   ");
        scanf("%d",&p[i].DATA[2]);
    }
    for (int i = 0; i < n; i++)
    fprintf(f,"\n%s\t\t%d\t\t%d %d %d\t\t%d\t\t%s", p[i].NAME, p[i].VARTIST,p[i].DATA[0],p[i].DATA[1],p[i].DATA[2],p[i].TRUVAL,p[i].PLACE);
    
    fclose(f);
    delete[]p;
}
0
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
25.10.2018, 16:49 8
Цитата Сообщение от Yamis Посмотреть сообщение
C++
1
Tyru *p = new Tyru[n];
почему используете new? Если выше Сишные методы для записи в файл? Не смешивайте.
Цитата Сообщение от Yamis Посмотреть сообщение
C++
1
while(p[i].DATA[0] < 1 || 31 < p[i].DATA[0]);
Зачем здесь вообще цикл?
Цитата Сообщение от Yamis Посмотреть сообщение
if(p[i].DATA[0] < 1 || 31 < p[i].DATA[0])
Условие в целом не верно

Добавлено через 6 минут
Yamis, простой пример, дальше сами
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
struct Tours
{
    int data[3];
};
 
int main()
{
    Tours t[5];
    for (size_t i = 0; i < 5; ++i)
    {
        int year;
        std::cin >> year;
        
        if (year > 1899 && year < 3001)
        {
            t[i].data[0] = year;
        }
        else
        {
            std::cerr << "wrong year";
            break;
        }
    }
}
Добавлено через 1 минуту
А может лучше будет вообще вынести это в функции
0
2 / 1 / 4
Регистрация: 21.04.2018
Сообщений: 204
25.10.2018, 17:02  [ТС] 9
Azazel-San, while для того чтобы вводить пока не будет верно,и что значит

"Сишные методы для записи в файл? Не смешивайте"
Какие тогда использовать
0
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
25.10.2018, 17:10 10
Цитата Сообщение от Yamis Посмотреть сообщение
while для того чтобы вводить пока не будет верно
аа, ну суть не меняется условие у вас не верно.
Цитата Сообщение от Yamis Посмотреть сообщение
Какие тогда использовать
Гуглите! или вы таки на Си пишите, а не на С++?
0
25.10.2018, 17:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2018, 17:10
Помогаю со студенческими работами здесь

Как создать ограничение? Надо создать ограничение ввода букв, а то программа виснет!
var a:integer; begin repeat; writeln ('Введите число не равное еденице'); ...

Ограничение вариантов заполнения поля в форме на основе уже заполненного поля
Здравствуйте. Сразу к делу- Имеется база, в ней,кроме прочих,существуют таблицы &quot;Структура мест...

Как числа из поля ввода в программе отправить в поле ввода браузера?
Есть обработчик кнопки ,в поле ввода- числа. Как из поля программы отправить эти числа в нужное...

Очистка поля ввода Edit для следующего ввода значения
Здравствуйте! Необходим совет. Нужно реализовать следующую возможность: в поле ввода Edit вводится...


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

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