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

Не работает программа проверки ввода цифр - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
Parmaster
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 35
07.06.2012, 14:23     Не работает программа проверки ввода цифр #1
Программа упорядочивает массив по убыванию. Надо было сообразить защиту от ввода НЕ цифр, кроме символа (-), вроде правильно, но не работает! В чем проблема? =(


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
printf ("Введите массив:\n");
    for (i=1;i<10;i++)
    {
        scanf("%d", &c);
        if (c>'-100' || c<'100')
            {
                mass[i]=c;
                i++;
            }
        else
        {
            printf("Введен символ. Пожалуйста, вводите цифры");
        }
    }

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for (int i = 1; i < SIZE; ++i) printf("%d ",mass[i]);
    printf("\n");
    for (int i = 1; i<SIZE-1; ++i){
        int tmp = 0;
        for (int j=(i+1); j<SIZE; ++j)
            if (mass[i]<mass[j]) {
                tmp = mass[i];
                mass[i] = mass[j];
                mass[j] = tmp;        
                }
    }
    for (int i = 1; i < SIZE; ++i) printf("%d ",mass[i]);
    printf("\n");
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2012, 14:23     Не работает программа проверки ввода цифр
Посмотрите здесь:

Программа ждет ввода числа и в зависимости от количества цифр в числе выдает сообщение об их разрядности: трехзначное, пятизначное и т.д C++
C++ Проверки ввода
Не работает gets (программа игнорирует операцию ввода) C++
C++ Программа проверки числа на простоту. Не могу понять как она работает.
автомат для проверки ввода C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
07.06.2012, 15:06     Не работает программа проверки ввода цифр #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
24
25
26
27
#include <iostream> 
#include <algorithm> // для сорт
#include <ctime>
using namespace std;
int main() 
{   
    setlocale(0,"Rus");
    const int size = 10; // размер массива
    srand((unsigned)time(0)); 
    int array[size];
    int i;
    
    for ( i = 0; i < size; i++) array[i] = rand() % 100; // заполняем случайными числами
 
    for ( i = 0; i < size; i++) cout << array[i] << " ";  // выводим исходный
 
    cout << "Исходный массив " << endl;
 
    sort(array,array+size);  // сортируем
 
    cout << "Отсортированный массив " << endl;
 
    for ( i = 0; i < size; i++) 
        cout << array[i] << " ";  
 
    system("Pause");
}
Parmaster
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 35
07.06.2012, 23:01  [ТС]     Не работает программа проверки ввода цифр #3
Спасибо конечно, но мне надо не рандом а ввод с клавиатуры -_-
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
07.06.2012, 23:41     Не работает программа проверки ввода цифр #4
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream> 
#include <iomanip>
using namespace std; 
int main() 
{   
    setlocale(0, "Rus");
    const int size = 2; // размер матрицы
    int array[size][size]; 
    int i, j;  
    int arr[size] = {0}; // массива счётчика нулей
 
     
    for ( i = 0; i < size; i++)  
      for ( j = 0; j < size; j++)   
      {
            cout << "Введите элемент матрицы " << endl;  
            cin >> array[i][j]; 
       }
 
 
 
    for ( i = 0; i < size; i++) 
    {
        for ( j = 0; j < size; j++) 
            cout <<setw(3) <<  array[i][j]; // выводим исходную матрицу
            cout << endl; 
    }  
 
    for ( i = 0; i < size; i++) 
        for ( j = 0; j < size; j++) // считаем нули
            if(array[i][j] == 0) 
                arr[j]++; 
 
    for ( i = 0; i < size; i++) 
        cout << "В столбце " << i << "   " <<  arr[i] << " нулей " << endl;  
 
    int max = arr[0]; 
    int index = 0;  // индекс столбца где больше всег нулей
 
    for ( i = 1; i < size; i++) 
        if(max < arr[i]) 
            index = i; 
 
    cout << "Больше всего нулей в строке номер " << index << endl; 
 
for ( i = 0; i < size / 2; i++) 
{ 
    int temp = array[i][index]; 
    array[i][index] = array[size-1-i][index]; // переставляем местами элементы
    array[size-1-i][index] = temp; 
} 
 
cout << endl; 
 
for ( i = 0; i < size; i++)  // выводим изменнённую матрицу
{
    for ( j = 0; j < size; j++) 
        cout << setw(3) <<array[i][j]; 
    cout << endl; 
} 
 
system("Pause");
 
return 0;
}
Спасибо здесь говорят по другому
qfisher
30 / 30 / 1
Регистрация: 24.05.2012
Сообщений: 156
07.06.2012, 23:58     Не работает программа проверки ввода цифр #5
C++
1
2
3
4
5
6
int x ; 
cin > > x; 
if ( cin . good ( ) = = true) 
cout << x < < endl ; 
else 
cout < < "ERROR" < < endl;
Parmaster
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 35
08.06.2012, 00:13  [ТС]     Не работает программа проверки ввода цифр #6
Цитата Сообщение от David Sylva Посмотреть сообщение
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream> 
#include <iomanip>
using namespace std; 
int main() 
{   
    setlocale(0, "Rus");
    const int size = 2; // размер матрицы
    int array[size][size]; 
    int i, j;  
    int arr[size] = {0}; // массива счётчика нулей
 
     
    for ( i = 0; i < size; i++)  
      for ( j = 0; j < size; j++)   
      {
            cout << "Введите элемент матрицы " << endl;  
            cin >> array[i][j]; 
       }
 
 
 
    for ( i = 0; i < size; i++) 
    {
        for ( j = 0; j < size; j++) 
            cout <<setw(3) <<  array[i][j]; // выводим исходную матрицу
            cout << endl; 
    }  
 
    for ( i = 0; i < size; i++) 
        for ( j = 0; j < size; j++) // считаем нули
            if(array[i][j] == 0) 
                arr[j]++; 
 
    for ( i = 0; i < size; i++) 
        cout << "В столбце " << i << "   " <<  arr[i] << " нулей " << endl;  
 
    int max = arr[0]; 
    int index = 0;  // индекс столбца где больше всег нулей
 
    for ( i = 1; i < size; i++) 
        if(max < arr[i]) 
            index = i; 
 
    cout << "Больше всего нулей в строке номер " << index << endl; 
 
for ( i = 0; i < size / 2; i++) 
{ 
    int temp = array[i][index]; 
    array[i][index] = array[size-1-i][index]; // переставляем местами элементы
    array[size-1-i][index] = temp; 
} 
 
cout << endl; 
 
for ( i = 0; i < size; i++)  // выводим изменнённую матрицу
{
    for ( j = 0; j < size; j++) 
        cout << setw(3) <<array[i][j]; 
    cout << endl; 
} 
 
system("Pause");
 
return 0;
}
Спасибо здесь говорят по другому
А причем тут матрица? если не секрет)
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
08.06.2012, 09:03     Не работает программа проверки ввода цифр #7
Извини это я не тот код вставил теме в тему.

Добавлено через 4 минуты
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> 
#include <algorithm> // для сорт
using namespace std;
int main() 
{   
    setlocale(0,"Rus");
    const int size = 10; // размер массива
    int array[size];
    int i;
    
    for ( i = 0; i < size; i++) 
    { 
        cout << "Введите элемент массива "; cin >> array[i]; 
    }
 
    for ( i = 0; i < size; i++) cout << array[i] << " ";  // выводим исходный
 
    cout << "Исходный массив " << endl;
 
    sort(array,array+size);  // сортируем
 
    cout << "Отсортированный массив " << endl;
 
    for ( i = 0; i < size; i++) 
        cout << array[i] << " ";  
 
    system("Pause");
}
С вводом из клавиатуры
Parmaster
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 35
08.06.2012, 17:50  [ТС]     Не работает программа проверки ввода цифр #8
Ты издеваешься? -_-"
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
08.06.2012, 17:53     Не работает программа проверки ввода цифр #9
Нет я просто перепутал темы.
Parmaster
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 35
08.06.2012, 17:56  [ТС]     Не работает программа проверки ввода цифр #10
Мне не нужен ввод с клавиатуры, мне надо ограничить ввод символов, чтоб при вводе букв с клавиатуры или символов программа выдавала ошибку, и просила повторить ввод
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
08.06.2012, 18:06     Не работает программа проверки ввода цифр #11
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() 
{   
    setlocale(0, "Rus");
    int number; 
 
    while(true) 
    { 
        cout << "Введите целое число "; 
        cin >> number; 
        if(cin.good()) 
        { 
            cin.ignore(10, '\n'); 
            break; 
        } 
        cin.clear(); 
        cout << "Неправильный ввод данных " << endl; 
        cin.ignore(10, '\n'); 
    } 
    cout << "Целое число " << number << endl; 
}
Попрбуй вот такой вариант.
Parmaster
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 35
09.06.2012, 00:24  [ТС]     Не работает программа проверки ввода цифр #12
Что то у меня не получается массив заполнить(
Постоянно пишет что ввожу не число

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 "stdafx.h"
#include <algorithm> // для сорт
#include <ctime>
#include <iostream> 
using namespace std;
const int size=10;
int main() 
{   
    setlocale(0, "Rus");
    int number[size]; 
    int i=0;
    char c;
    while(true) 
    {   cout << "Заполните массив, размерностью " << size << " чисел" << endl;
    rpt:cout << "Введите число:"; 
        cin >> c; 
        if(cin.good()) 
        { 
            number[i]=c; 
            i++;
            cin.ignore(10, '\n'); 
        } 
        cin.clear(); 
        cout << "Введено не число. Пожалуйста, введите число!" << endl; 
        cin.ignore(10, '\n'); 
    } 
    goto rpt;
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
09.06.2012, 10:49     Не работает программа проверки ввода цифр #13
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
#include <iostream> 
using namespace  std; 
int main() 
{   
    setlocale(0,"rus");
    int i = 0;
    const int size = 5; 
    int array[size]; 
 
    for ( i = 0; i < size; i++) 
    {
    while(true) 
    { 
        cout << "Введите целое число " << endl; 
        cin >> array[i]; 
        if(cin.good()) 
        { 
            cin.ignore(10, '\n'); 
            break; 
            i++;
        } 
        cin.clear(); 
        cout << "Неправильный ввод "; 
        cin.ignore(10, '\n'); 
    } 
      
}
 
    for ( i = 0; i < size; i++) 
        cout << array[i] << " "; 
}
Вот так работает на ввод чисел в массив. Использовать goto вообще не стоит никогда.
qfisher
30 / 30 / 1
Регистрация: 24.05.2012
Сообщений: 156
10.06.2012, 16:35     Не работает программа проверки ввода цифр #14
Цитата Сообщение от David Sylva Посмотреть сообщение
Использовать goto вообще не стоит никогда.
а в выходе из вложенных циклов?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2012, 17:27     Не работает программа проверки ввода цифр
Еще ссылки по теме:

Программа ввода и проверки пароля C++
Добавить в программу функцию проверки правильности ввода даты C++
C++ Ошибка проверки ввода

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

Или воспользуйтесь поиском по форуму:
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
10.06.2012, 17:27     Не работает программа проверки ввода цифр #15
Неправильно выразился, имел ввиду в данном случае.
Yandex
Объявления
10.06.2012, 17:27     Не работает программа проверки ввода цифр
Ответ Создать тему
Опции темы

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