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

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

Войти
Регистрация
Восстановить пароль
 
Oguno4ka
2 / 2 / 0
Регистрация: 08.05.2013
Сообщений: 41
#1

Защитить массив от неправильного ввода - C++

11.06.2013, 21:00. Просмотров 337. Ответов 5
Метки нет (Все метки)

Вот немного не корректно работает, подскажите как сделать правильно. Нужно так, если в массив вводя число прописью то он выбивал ошибку ну или вводят число больше 5 или меньше 1.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
int main()
{
    setlocale(LC_ALL,"rus");
    int arr[5],a=0,i;
    printf("Пять оценок студента:");
    do
    {
        scanf("%i", &arr[i++]);
        fflush(stdin);
    }while(i<4|| 
           scanf("%i", &arr[i])!=1 && printf("Надо вводить число!")
         ||arr[i]>5 && printf("Надо вводить число <=5")
           );
    for(i=0;i<=4;i++)
    {
        std::cout<<arr[i];
    };
    system("pause>>void");
    return 0;
}
Добавлено через 10 часов 0 минут
ребята, вы где?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2013, 21:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Защитить массив от неправильного ввода (C++):

Зашита от неправильного ввода - C++
Здравствуйте! Подскажите пожалуйста как ограничить возможность ввода ? Ну к примеру мне нужно вводить всего 2 символа 'y' и 'n' остальные...

Защита от неправильного ввода - C++
Приветствую, делаю контрольную работу по программированию, основное задание сделал, но вот решил добавить защиту от неправильного ввода, но...

Как защититься от неправильного ввода - C++
#include&lt;iostream&gt; using namespace std; int main(){ setlocale(LC_ALL,&quot;Rus&quot;); const int N=5; int i=0; int x,y,ch; char...

Обработка двумерного массива. Защита от неправильного ввода - C++
Заполнить двумерный массив размерности n*m с клавиатуры только числами кратными 3, предусмотрев защиту элементов этого массива от...

Сбой компьютера от неправильного кода С++ - C++
Читал книгу про массивы в С++ и вот что вычитал: Вы должны соблюдать осторожность, чтобы не выйти за верхнюю границу массива. Одним из...

Обработка ошибок неправильного заполнения структуры tm? - C++
Это простой вопрос. Допустим такой код: void main(){ int day=31, mon=5,year=82; time_t seconds = time(NULL); tm* timeinfo =...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
VEINHORN
543 / 92 / 22
Регистрация: 16.12.2011
Сообщений: 317
12.06.2013, 01:37 #2
вводя число прописью
Это как?
0
Oguno4ka
2 / 2 / 0
Регистрация: 08.05.2013
Сообщений: 41
12.06.2013, 12:45  [ТС] #3
Цитата Сообщение от MCKLAS Посмотреть сообщение
Это как?
например не "5", а "пять" - буквами
0
Oguno4ka
2 / 2 / 0
Регистрация: 08.05.2013
Сообщений: 41
13.06.2013, 15:26  [ТС] #4
Цитата Сообщение от MCKLAS Посмотреть сообщение
Это как?
Ты не знаешь как это сделать?
0
VEINHORN
543 / 92 / 22
Регистрация: 16.12.2011
Сообщений: 317
13.06.2013, 15:41 #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
24
25
26
27
28
#include<iostream>
using namespace std;
 
int main() 
{   
    setlocale(LC_CTYPE,"Russian");
    const int size = 5;
    bool flag = false;
    int arr[size];
    cout << "Пять оценок студента:";
    for(int i = 0;i < size;i++) {
        int tmp = 0;
        cin >> tmp;
        if(tmp < 1 || tmp > 5) {
            cout << "Ошибка!";
            flag = true;
            break;
        }
        else
            arr[i] = tmp;
    }
    if(!flag)
        for(int i = 0;i < size;i++)
            cout << arr[i] << " ";
    cout << endl;
    system("pause");
    return 0;
}
2
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
13.06.2013, 15:44 #6

Не по теме:

Цитата Сообщение от Oguno4ka Посмотреть сообщение
Защитить массив от неправельного ввода
Ещё бы название темы защитить...


Попробуйте так:
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
#include <iostream>
#include <cstdio>
#include <clocale>
#include <cstdlib>
 
int main()
{
    setlocale(LC_ALL,"rus");
    int arr[5];
    int i = 0;
    printf("Пять оценок студента:");
    do
    {
        if( 1 == scanf("%i", &arr[i]) )
        {
            if( arr[i] > 0 && arr[i] < 6 )
            {
                i++;    
            }
            else
            {
               printf("Надо вводить 1<= число <=5");
            }
        }
        else
        {
            fflush(stdin);
            printf("Надо вводить число!");
        }
    }while(i<5);
    
    for(i=0;i<5;i++)
    {
        std::cout << arr[i];
    };
    system("pause>>void");
    return 0;
}
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2013, 15:44
Привет! Вот еще темы с ответами:

Найти площадь вписанного в окружность радиуса R неправильного 10-угольника - C++
помогите написть задачу на С++ Найти площадь вписанного в окружность радиуса R неправильного 10-угольника, если его стороны – это хорды,...

Найти площадь вписанного в окружность радиуса R неправильного 10-угольника - C++
помогите написть задачу на С++ Найти площадь вписанного в окружность радиуса R неправильного 10-угольника, если его стороны – это хорды,...

Ошибка ввода в массив - C++
#include &lt;iostream&gt; using namespace std; int main() { cout &lt;&lt; &quot;vvedite colovo chisel: &quot;; int q = 0; cin &gt;&gt; q; int s =...

Оптимизация ввода в строковой массив - C++
cin &gt;&gt; n &gt;&gt; m; for (int i = 0; i &lt; m; i++){ for (int j = 0; j &lt; n; j++){ cin &gt;&gt; mass; } } Существует ли более...


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

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

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