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

Ограничение ввода переменной

28.05.2020, 13:23. Показов 7562. Ответов 18

Студворк — интернет-сервис помощи студентам
Проблемка такая, мне нужно чтобы при вводе N нельзя было ввести больше 10 и не меньше 1, т.к. прога проходит тесты и на втором тесте проваливается. И чтобы W не превышало 100, но была не меньше 0. Помогите пожалуйста!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
int main()
{
 
int a[1000],i,N,W,M;
M=0;
cin >> N;
for(i=1;i<=N;i++)
cin>>a[i];
cin>>W;
 
for(i=0;i<=N;i++)
if (a[i]<=W)M++;
cout<<M;
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.05.2020, 13:23
Ответы с готовыми решениями:

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

Ограничение ввода
Нужно ограничить ввод заполнения строки. Допустим, пользователь отказался использовать цифры и символы верхнего регистра при заполнении...

Ограничение ввода с клавиатуры
Доброго времени суток. Ребят такой вопрос: Как ограничить ввод данных с клавиатуры. Если точнее: прдставте себе что юзер заснул на...

18
El. Psy. Congroo.
 Аватар для Mightsoul
110 / 92 / 32
Регистрация: 09.01.2018
Сообщений: 344
28.05.2020, 14:15
C++
1
while (N < 1 || N > 10) std::cin >> N;
1
0 / 0 / 0
Регистрация: 23.02.2020
Сообщений: 13
28.05.2020, 14:30  [ТС]
Цитата Сообщение от Mightsoul Посмотреть сообщение
C++
1
while (N < 1 || N > 10) std::cin >> N;
А можно ли сделать так чтобы в массив a[i] можно было ввести только некоторые числа, такие как 1,2,5,10,15,20?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
28.05.2020, 14:33
ChopToha, точно также, вставляешь этот вайл в цикл по массиву
1
El. Psy. Congroo.
 Аватар для Mightsoul
110 / 92 / 32
Регистрация: 09.01.2018
Сообщений: 344
28.05.2020, 14:46
Можно хранить допустимые значения в массиве, а после каждого ввода данных осуществлять итеративную/рекурсивную проверку.
C++
1
2
3
int database[] = {1,2,5,10,15,20};
bool match = false;
for (int count = 0; count < sizeof(database) && !match; ++count) if (N == database[count]) match = true;
1
0 / 0 / 0
Регистрация: 23.02.2020
Сообщений: 13
28.05.2020, 16:07  [ТС]
Цитата Сообщение от Mightsoul Посмотреть сообщение
Можно хранить допустимые значения в массиве, а после каждого ввода данных осуществлять итеративную/рекурсивную проверку.
C++
1
2
3
int database[] = {1,2,5,10,15,20};
bool match = false;
for (int count = 0; count < sizeof(database) && !match; ++count) if (N == database[count]) match = true;
Прошу прощения за то, что туплю, будет выглядеть так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
int main()
{
 
int a[1000],i,N,W,M;
M=0;
int database[] = {1,2,5,10,15,20};
while (N < 1 || N > 10) std::cin >> N;
for(i=1;i<=N;i++)
bool match = false;
for (int count = 0; count < sizeof(database) && !match; ++count) if (N == database[count]) match = true;
cin>>a[i];
while (W < 0 || W > 100) std::cin >> W;
for(i=0;i<=N;i++)
if (a[i]<=W)M++;
cout<<M;
 
    return 0;
}
0
El. Psy. Congroo.
 Аватар для Mightsoul
110 / 92 / 32
Регистрация: 09.01.2018
Сообщений: 344
28.05.2020, 16:20
Где вам нужно ограничить ввод?

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int main () {
    int a[1000], N = 0, W = 0, M = 0;
    int database[] = {1,2,5,10,15,20};
    bool match;
    while (N < 1 || N > 10) std::cin >> N;
    for (int i = 0; i < N; ++i) {
        match = false;
        while (!match) {
            std::cin >> a[i];
            for (int count = 0; count < sizeof(database) && !match; ++count) {
                if (a[i] == database[count]) match = true;
            }
        }
    }
    while (W < 0 || W > 100) std::cin >> W;
    for (int i = 0; i < N; ++i) {
        if (a[i] <= W) ++M;
        std::cout << M;
    }
    return 0;
}
1
0 / 0 / 0
Регистрация: 23.02.2020
Сообщений: 13
28.05.2020, 16:27  [ТС]
Цитата Сообщение от Mightsoul Посмотреть сообщение
Где вам нужно ограничить ввод?

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int main () {
    int a[1000], N = 0, W = 0, M = 0;
    int database[] = {1,2,5,10,15,20};
    bool match;
    while (N < 1 || N > 10) std::cin >> N;
    for (int i = 0; i < N; ++i) {
        match = false;
        while (!match) {
            std::cin >> a[i];
            for (int count = 0; count < sizeof(database) && !match; ++count) {
                if (a[i] == database[count]) match = true;
            }
        }
    }
    while (W < 0 || W > 100) std::cin >> W;
    for (int i = 0; i < N; ++i) {
        if (a[i] <= W) ++M;
        std::cout << M;
    }
    return 0;
}
Смысл задачи в том, что в массиве a[i] можно вводить только числа 1,2,5,10,15,20 в каждый любом количестве ограниченном только числом, которое мы вводим в переменной N. В примере к задаче в массиве вводится 2 2 1 20. Нужно чтобы в массив нельзя была записать например 3 или 12 и тд.
0
El. Psy. Congroo.
 Аватар для Mightsoul
110 / 92 / 32
Регистрация: 09.01.2018
Сообщений: 344
28.05.2020, 16:30
Уже:
C++
1
2
3
4
5
6
while (!match) {
    std::cin >> a[i];
    for (int count = 0; count < sizeof(database) && !match; ++count) {
        if (a[i] == database[count]) match = true;
    }
}
2
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
28.05.2020, 16:55
Цитата Сообщение от Mightsoul Посмотреть сообщение
if (a[i] == database[count]) match = true;
мне иногда ещё нравится
C++
1
 match = (a[i] == database[count]);
Но может ухудшить читаемость.
0
El. Psy. Congroo.
 Аватар для Mightsoul
110 / 92 / 32
Регистрация: 09.01.2018
Сообщений: 344
28.05.2020, 16:59
C++
1
*(((bool*)database)-1) = (!(*(a+i) & ~*(database+count)));
Бугагашеньки.
0
0 / 0 / 0
Регистрация: 23.02.2020
Сообщений: 13
28.05.2020, 17:31  [ТС]
Странно, но что-то она не работает теперь как должна...Когда я ввожу сначала 4, потом 2 2 1 20, я должен ввести 14 и ответ выдаст 3. Но вместо этого он выводит 0000...
Миниатюры
Ограничение ввода переменной  
0
El. Psy. Congroo.
 Аватар для Mightsoul
110 / 92 / 32
Регистрация: 09.01.2018
Сообщений: 344
28.05.2020, 17:32
Цитата Сообщение от ChopToha Посмотреть сообщение
в каждый любом количестве ограниченном только числом, которое мы вводим в переменной N
Что это значит?
0
0 / 0 / 0
Регистрация: 23.02.2020
Сообщений: 13
28.05.2020, 17:33  [ТС]
Цитата Сообщение от Mightsoul Посмотреть сообщение
Что это значит?
Ну, может быть две 2-ки или три 2-ки и тд. Не по одному экземпляру точнее надо было выразиться.
0
El. Psy. Congroo.
 Аватар для Mightsoul
110 / 92 / 32
Регистрация: 09.01.2018
Сообщений: 344
28.05.2020, 17:44
Всё равно непонятно, можете составить хоть какое-то техническое задание?

Добавлено через 1 минуту
C++
1
while (W < 0 || W > 100) std::cin >> W;
Зачем вы поставили здесь 0?

Добавлено через 3 минуты
Я не могу знать, каким должен быть результат, ибо мне неизвестно, что вычисляет эта программа.
0
0 / 0 / 0
Регистрация: 23.02.2020
Сообщений: 13
28.05.2020, 17:52  [ТС]
Наверное надо было раньше отправить это.
Миниатюры
Ограничение ввода переменной  
0
El. Psy. Congroo.
 Аватар для Mightsoul
110 / 92 / 32
Регистрация: 09.01.2018
Сообщений: 344
28.05.2020, 18:07
Лучший ответ Сообщение было отмечено ChopToha как решение

Решение

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int main () {
    int a[1000], N = 0, W = 0, M = 0;
    int database[] = {1,2,5,10,15,20};
    bool match;
    while (N < 1 || N > 10) std::cin >> N;
    for (int i = 0; i < N; ++i) {
        match = false;
        while (!match) {
            std::cin >> a[i];
            for (int count = 0; count < sizeof(database) && !match; ++count) {
                if (a[i] == database[count]) match = true;
            }
        }
    }
    while (W < 1 || W > 100) std::cin >> W;
    for (int i = 0; i < N; ++i) {
        if (a[i] < W) ++M;
    }
    std::cout << M;
    return 0;
}
Добавлено через 1 минуту
Ничего страшного.

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int main () {
    int a[1000], N = 0, W = -1, M = 0;
    int database[] = {1,2,5,10,15,20};
    bool match;
    while (N < 1 || N > 10) std::cin >> N;
    for (int i = 0; i < N; ++i) {
        match = false;
        while (!match) {
            std::cin >> a[i];
            for (int count = 0; count < sizeof(database) && !match; ++count) {
                if (a[i] == database[count]) match = true;
            }
        }
    }
    while (W < 0 || W > 100) std::cin >> W;
    for (int i = 0; i < N; ++i) {
        if (a[i] < W) ++M;
    }
    std::cout << M;
    return 0;
}
Добавлено через 2 минуты
Можете также уменьшить размер программы, убрав отладочные символы:
strip a.exe
1
0 / 0 / 0
Регистрация: 23.02.2020
Сообщений: 13
28.05.2020, 18:21  [ТС]
Цитата Сообщение от Mightsoul Посмотреть сообщение
Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int main () {
    int a[1000], N = 0, W = 0, M = 0;
    int database[] = {1,2,5,10,15,20};
    bool match;
    while (N < 1 || N > 10) std::cin >> N;
    for (int i = 0; i < N; ++i) {
        match = false;
        while (!match) {
            std::cin >> a[i];
            for (int count = 0; count < sizeof(database) && !match; ++count) {
                if (a[i] == database[count]) match = true;
            }
        }
    }
    while (W < 1 || W > 100) std::cin >> W;
    for (int i = 0; i < N; ++i) {
        if (a[i] < W) ++M;
    }
    std::cout << M;
    return 0;
}
Добавлено через 1 минуту
Ничего страшного.

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int main () {
    int a[1000], N = 0, W = -1, M = 0;
    int database[] = {1,2,5,10,15,20};
    bool match;
    while (N < 1 || N > 10) std::cin >> N;
    for (int i = 0; i < N; ++i) {
        match = false;
        while (!match) {
            std::cin >> a[i];
            for (int count = 0; count < sizeof(database) && !match; ++count) {
                if (a[i] == database[count]) match = true;
            }
        }
    }
    while (W < 0 || W > 100) std::cin >> W;
    for (int i = 0; i < N; ++i) {
        if (a[i] < W) ++M;
    }
    std::cout << M;
    return 0;
}
Добавлено через 2 минуты
Можете также уменьшить размер программы, убрав отладочные символы:
strip a.exe
К сожалению, прога все так же проваливается на 2-ом тесте. Но сайт на котором я проверяю и сдаю программы не расписывает проблемы, и нет никакой информации, какие тесты проходит программа...одна лишь надпись wrong answer.
0
El. Psy. Congroo.
 Аватар для Mightsoul
110 / 92 / 32
Регистрация: 09.01.2018
Сообщений: 344
28.05.2020, 18:40
C++
1
sizeof(database) / sizeof(int);
Как-то проглядел.

Добавлено через 9 секунд
Правда это не решает проблему.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.05.2020, 18:40
Помогаю со студенческими работами здесь

Ограничение ввода в int
Здравствуйте, как можно ограничить ввод в переменную типа int? У меня есть переменная dH, в которой пользователь должен записать час...

Ограничение ввода символов.
Здравствуйте, подскажите пожалуйста как ограничеть ввод символолв в программе с помощью кода. Тоесть, например я хочу чтобы в данной...

Ограничение времени ввода.
нада дать юзеру 10 сек на ввод значения Х. Еси он провтыкал 10 сек, то стандартно Х = 0. в худшем случае дать возможность 10 секунд...

Ограничение ввода символов
Здравствуйте. Пишу программку вроде калькулятора, возникла проблема, если вводить не цифры программа соответственно зависает.. Как можно...

Ограничение ввода! Подскажите!
Подскажите как ограничить ввод для значений a и b? нужны только числа совершенно в этом не шарю..


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru