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

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

Войти
Регистрация
Восстановить пароль
 
SHAFT007
2 / 2 / 1
Регистрация: 29.01.2012
Сообщений: 25
#1

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

30.01.2012, 12:47. Просмотров 1052. Ответов 7
Метки нет (Все метки)

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

Нужно сделать, чтобы программа состояла из 3 функций, тоесть 1-ая функция ввода массива, 2-ая основная функция, 3-я- вывод массива - C++
Есть программа #include &lt;iostream&gt; #include &lt;algorithm&gt; const int N = 5; int handSet(void) { int a; std::cout...

Функция ввода двумерного массива - C++
Ребят, помогите! Надо написать функцию чтобы с помощью нее мы вводили двумерный массив! Не знаю какие параметры задать и что внутри...

Функция для ввода массива неизвестной длины - C++
Как реализовать ввод массива неизвестной длины Без использования vector

Функция для ввода двухмерного динамического массива - C++
Поправьте, что не так! void input (int **a = new int, int n) { for(int i=0;i&lt;n; i++) for(int j=0; j&lt;n;...

Цикл ввода строкового массива работает не так, как нужно - C++
Объясните пожалуйста, почему цикл выполняется на один раз меньше числа, которое мы вводим с клавиатуры. То есть если я введу число 5, то...

Не работает функция вывода массива - C++
#include &lt;stdio.h&gt; #include &lt;locale&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; void input_mas(int **mas,int n); void...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
30.01.2012, 12:51 #2
видимо следует сделать (short &mas... ) ?

Добавлено через 59 секунд
и судя по передаванию размеров массива - он либо динамика, либо псевдодинамика.
хренач динамический массив ужо
0
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 минут
Потом вывод абрыкадабры (заполнения массива непонятными числами). И после введения аномального числа сразу переходит к выводу и другим функциям
0
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
30.01.2012, 14:23 #4
надо передавать, думаю так :

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

input (A[][SIZE],M,N)
0
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)
Нет не пашет
0
go
Эксперт C++
3586 / 1366 / 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));
Зачем это. Всегда ложь ведь будет.
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
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)
0
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];
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2012, 18:25
Привет! Вот еще темы с ответами:

Функция не работает (максимальный элемент массива) - C++
Нужно написать функцию, которая находила бы максимальный элемент массива. Мой код: #include &lt;iostream&gt; #include &lt;conio.h&gt; using...

Выяснить почему после ввода первого элемента массива цикл не работает (std::cin в цикле for) - C++
Добрый день! Взялся за простой пример из книги Лафоре. #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; const...

Некорректно работает функция рандомайз при заполнении массива - C++
Задача - внести случайные числа в динамический массив. Проблема - почему-то при первом запуске программы в первый элемент массива...

функция ввода - C++
есть такой кодclass kv{ int a,b,c; public: void get () {cin&gt;&gt;a&gt;&gt;b;} int iu (){return 2*(a+b); } kv(){a=b=0;} }; void main...


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

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

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