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

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

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

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

11.06.2013, 21:00. Просмотров 322. Ответов 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 минут
ребята, вы где?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2013, 21:00     Защитить массив от неправильного ввода
Посмотрите здесь:

C++ Сбой компьютера от неправильного кода С++
C++ Обработка ошибок неправильного заполнения структуры tm?
Ошибка ввода в массив C++
C++ Найти площадь вписанного в окружность радиуса R неправильного 10-угольника
C++ Найти площадь вписанного в окружность радиуса R неправильного 10-угольника
Зашита от неправильного ввода C++
C++ Оптимизация ввода в строковой массив
C++ Как защититься от неправильного ввода
Обработка двумерного массива. Защита от неправильного ввода C++
C++ Особенности ввода в динамический массив
C++ Защита от неправильного ввода
Проверить массив на правильность ввода C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VEINHORN
542 / 91 / 22
Регистрация: 16.12.2011
Сообщений: 317
12.06.2013, 01:37     Защитить массив от неправильного ввода #2
вводя число прописью
Это как?
Oguno4ka
2 / 2 / 0
Регистрация: 08.05.2013
Сообщений: 41
12.06.2013, 12:45  [ТС]     Защитить массив от неправильного ввода #3
Цитата Сообщение от MCKLAS Посмотреть сообщение
Это как?
например не "5", а "пять" - буквами
Oguno4ka
2 / 2 / 0
Регистрация: 08.05.2013
Сообщений: 41
13.06.2013, 15:26  [ТС]     Защитить массив от неправильного ввода #4
Цитата Сообщение от MCKLAS Посмотреть сообщение
Это как?
Ты не знаешь как это сделать?
VEINHORN
542 / 91 / 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;
}
Tulosba
:)
Эксперт С++
4383 / 3226 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
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;
}
Yandex
Объявления
13.06.2013, 15:44     Защитить массив от неправильного ввода
Ответ Создать тему
Опции темы

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