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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
Parmaster
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 35
#1

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

07.06.2012, 14:23. Просмотров 2104. Ответов 14
Метки нет (Все метки)

Программа упорядочивает массив по убыванию. Надо было сообразить защиту от ввода НЕ цифр, кроме символа (-), вроде правильно, но не работает! В чем проблема? =(


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");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2012, 14:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не работает программа проверки ввода цифр (C++):

Программа ввода и проверки пароля - C++
Я хочу написать программу запрашивающая пароль пока тот не станет верным написал прогоамма работало но даже если пароль был не верен просто...

Программа для проверки цифр в числе на чётность - C++
как проверить каждую цифру в четырёхзначном числе на чётность без массива в DevC++ Я написал программу, которая делает это действие в...

Программа проверки числа на простоту. Не могу понять как она работает. - C++
У меня в учебнике есть программа, она правильно работает, но я не могу понять каким образом она это делает. int i, j; ...

Не работает gets (программа игнорирует операцию ввода) - C++
Помогите. Не работает оператор gets в моей программе! Что делать? Как изменить? Все идет нормально, никаких ошибок. Но когда доходит дело...

При вводе вместо цифр символов программа перестаёт ожидать ввода на следующей итерации цикла. Почему? - C++
Почему это происходит? #include &lt;iostream&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;Russian&quot;); void...

Программа ждет ввода числа и в зависимости от количества цифр в числе выдает сообщение об их разрядности: трехзначное, пятизначное и т.д - C++
1) Программа ждет ввода числа и в зависимости от количества цифр в числе выдает сообщение об их разрядности: трехзначное, пятизначное и...

14
David Sylva
1288 / 950 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
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");
}
0
Parmaster
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 35
07.06.2012, 23:01  [ТС] #3
Спасибо конечно, но мне надо не рандом а ввод с клавиатуры -_-
0
David Sylva
1288 / 950 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
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;
}
Спасибо здесь говорят по другому
1
qfisher
31 / 31 / 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;
0
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;
}
Спасибо здесь говорят по другому
А причем тут матрица? если не секрет)
0
David Sylva
1288 / 950 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
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");
}
С вводом из клавиатуры
0
Parmaster
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 35
08.06.2012, 17:50  [ТС] #8
Ты издеваешься? -_-"
0
David Sylva
1288 / 950 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
08.06.2012, 17:53 #9
Нет я просто перепутал темы.
0
Parmaster
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 35
08.06.2012, 17:56  [ТС] #10
Мне не нужен ввод с клавиатуры, мне надо ограничить ввод символов, чтоб при вводе букв с клавиатуры или символов программа выдавала ошибку, и просила повторить ввод
0
David Sylva
1288 / 950 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
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; 
}
Попрбуй вот такой вариант.
0
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;
0
David Sylva
1288 / 950 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
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 вообще не стоит никогда.
0
qfisher
31 / 31 / 1
Регистрация: 24.05.2012
Сообщений: 156
10.06.2012, 16:35 #14
Цитата Сообщение от David Sylva Посмотреть сообщение
Использовать goto вообще не стоит никогда.
а в выходе из вложенных циклов?
0
David Sylva
1288 / 950 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
10.06.2012, 17:27 #15
Неправильно выразился, имел ввиду в данном случае.
0
10.06.2012, 17:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2012, 17:27
Привет! Вот еще темы с ответами:

Проверки ввода - C++
Подскажите пожалуйста: 1. Как сделать проверку &quot;введено число или не-число&quot; ? 2. Если при вводе используется переменная char, как...

Ошибка проверки ввода - C++
Помогите пожалуйста исправить проверку ввода { cout&lt;&lt;setw(15)&lt;&lt;&quot;Year: \t&quot;; cin&gt;&gt;note.date; if (note.date&lt;1950 &amp; note.date&gt;2000) ...

Нет проверки ввода - C++
Функция void Enter_Information() { system(&quot;cls&quot;); cout &lt;&lt; &quot;ЗАПОЛНЕНИЕ ИНФОРМАЦИИ ОБ УЧАЩЕМСЯ:&quot;&lt;&lt;endl; bool flag1 =...

автомат для проверки ввода - C++
Доброго времени суток, Нужно проверять ввод на ошибки, читаю матрицу. Пример ввода: /*{ {1.0,2.0,3.0}, {4.0,5.0,6.0} ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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