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

Не работает функция ввода массива - C++

Восстановить пароль Регистрация
 
SHAFT007
2 / 2 / 1
Регистрация: 29.01.2012
Сообщений: 25
30.01.2012, 12:47     Не работает функция ввода массива #1
У меня стоит задача вводить массива с клавиатуры размера M на N, с проверкой на диапазон. Вот мой код функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void input (short mas [][SIZE],int r,int c)
{
    for (int i=0;i<r;i++)
    {       
       for (int j=0;j<c;j++)
       {
           do
           {
        cout << "Введите элемент " << i << " - строки " << j << " - столбца\n";
        cin >> mas[i][j];
           }
        while ((mas[i][j]<SHRT_MIN)||(mas[i][j]>SHRT_MAX));
       }
    }
   return ;
}
Вот как я ей передаю значения:
C++
1
input (A,M,N)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2012, 12:47     Не работает функция ввода массива
Посмотрите здесь:

Функция не работает (максимальный элемент массива) C++
Функция ввода двумерного массива C++
C++ Функция ввода
C++ Функция для ввода двухмерного динамического массива
функция ввода C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
30.01.2012, 12:51     Не работает функция ввода массива #2
видимо следует сделать (short &mas... ) ?

Добавлено через 59 секунд
и судя по передаванию размеров массива - он либо динамика, либо псевдодинамика.
хренач динамический массив ужо
SHAFT007
2 / 2 / 1
Регистрация: 29.01.2012
Сообщений: 25
30.01.2012, 13:00  [ТС]     Не работает функция ввода массива #3
Если ввести число аномальное, то не работает и происходит зацикливание. А если ввести просто которое входит в диапазон, то все норм и продолжается ввод элементов. Вот что происходит при вводе аномального числа которое превышает диапазон:
Введите элемент 0 - строки 0 - столбца
40000
Введите элемент 0 - строки 1 - столбца
Введите элемент 0 - строки 2 - столбца
Введите элемент 0 - строки 3 - столбца
Введите элемент 0 - строки 4 - столбца
Введите элемент 1 - строки 0 - столбца
Введите элемент 1 - строки 1 - столбца
Введите элемент 1 - строки 2 - столбца
Введите элемент 1 - строки 3 - столбца
Введите элемент 1 - строки 4 - столбца
Введите элемент 2 - строки 0 - столбца
Введите элемент 2 - строки 1 - столбца
Введите элемент 2 - строки 2 - столбца
Введите элемент 2 - строки 3 - столбца
Введите элемент 2 - строки 4 - столбца
Введите элемент 3 - строки 0 - столбца
Введите элемент 3 - строки 1 - столбца
Введите элемент 3 - строки 2 - столбца
Введите элемент 3 - строки 3 - столбца
Введите элемент 3 - строки 4 - столбца

Добавлено через 5 минут
Потом вывод абрыкадабры (заполнения массива непонятными числами). И после введения аномального числа сразу переходит к выводу и другим функциям
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
30.01.2012, 14:23     Не работает функция ввода массива #4
надо передавать, думаю так :

input (A[SIZE],M,N)
или

input (A[][SIZE],M,N)
SHAFT007
2 / 2 / 1
Регистрация: 29.01.2012
Сообщений: 25
30.01.2012, 17:57  [ТС]     Не работает функция ввода массива #5
Цитата Сообщение от Андрей2011 Посмотреть сообщение
надо передавать, думаю так :
input (A[SIZE],M,N)
или
input (A[][SIZE],M,N)
Нет не пашет
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
30.01.2012, 18:06     Не работает функция ввода массива #6
Цитата Сообщение от Андрей2011 Посмотреть сообщение
адо передавать, думаю так :
Нет. Так не надо.

Добавлено через 1 минуту
Цитата Сообщение от SHAFT007 Посмотреть сообщение
while ((mas[i][j]<SHRT_MIN)||(mas[i][j]>SHRT_MAX));
Зачем это. Всегда ложь ведь будет.
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
30.01.2012, 18:20     Не работает функция ввода массива #7
Давайте весь код, будет легче помочь.
C
1
void input (short mas [][SIZE],int r,int c)
Как-то оно не хорошо у вас, лучше принимайте указатель на первый элемент а в виде остальных параметров уже размеры вашего двумерного массива
C
1
void input(short *mas,int r, int c)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2012, 18:25     Не работает функция ввода массива
Еще ссылки по теме:

C++ Некорректно работает функция рандомайз при заполнении массива
Не работает функция вывода массива C++
C++ Функция ввода / вывода

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

Или воспользуйтесь поиском по форуму:
mishe4ka
0 / 0 / 0
Регистрация: 21.09.2011
Сообщений: 21
30.01.2012, 18:25     Не работает функция ввода массива #8
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
// vvod matrici
double** inputm(int n,int m)
{
    int i,j;
    double** a;
    a=new double*[n];
    if(a==NULL)
    {cout<<endl;
                 exit(1);
    }
 
    for(i=0;i<n;i++)
    {
        a[i]=new double[m];
        if(a[i]==NULL)
        {
            cout<<"net op";
        }
    }
    //vvod matrici
    for(i=0;i<n;i++)
    {
        cout<<"\nVvesti "<<i<<"stroky"<<endl;
        for(j=0;j<m;j++)
            cin>>a[i][j];
    }
    return a;
}
//////////////////////////////////////////////////
//vivod matrici
void outputm(double** a,int n,int m)
{
    int i,j;
    
    for(i=0;i<n;i++)
    {
        cout<<endl;
        for(j=0;j<m;j++)
            cout<<setw(10)<<a[i][j];
    }
}
Yandex
Объявления
30.01.2012, 18:25     Не работает функция ввода массива
Ответ Создать тему
Опции темы

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