Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2012, 01:09   #1
BloodyRaven
 
Регистрация: 14.09.2012
Сообщений: 4
По умолчанию Ручное заполнение двумерного массива

Здаствуйте. При выполнению кода для ручного заполнения массива
Код:
{
	int row,column,ii,i;
	printf("Введите количество строк ");
	scanf("%d",&row);
	printf("Введите количество столбцов ");
	scanf("%d",&column);

	int **s = (int **) malloc(row * sizeof(int*));
		for (int i = 0; i < row; i++) s[i] = (int *) 
		malloc (column * sizeof(int));

	for( i = 0; i < row; i++)                                     
	{	
		printf("Введите элементы %d строчки матрици:\n",(i+1));		 
		for(ii = 0; ii < column; ii ++)						     
		{															 //заполнение двумерного массива
			printf("Введите %d элемент строчки ",(ii+1));				 
			scanf("%d",s[i][ii]);										 
		}															 
	}
}
на этапе ввода второго числа выходит какаято ошибка

Подскажите что у меня не правильно.
BloodyRaven вне форума Ответить с цитированием
Старый 02.11.2012, 02:04   #2
kuli4ok
Пользователь
 
Регистрация: 23.09.2012
Сообщений: 32
По умолчанию

Если я не ошибаюсь, в с++ желательно использовать new вместо malloc:
Код:
#include <stdio.h>

int** get_memory(int, int);
void get_value(int**, int, int);

int main()
{
int **matrix;
int *k, *l;
k = new int;
l = new int;
printf("Через пробел введите количество строк и столбцов в матрице: ");
scanf("%d%d", k, l);
matrix = get_memory(*k, *l);
get_value(matrix, *k, *l);
delete l;
for(int i=(*k-1); i>0; i++)
{
    delete [] matrix[i];
}
delete matrix;
delete k;
return 0;
}

void get_value(int** mass, int a, int b)
{
for(int i=0; i<a; i++)
{
    for(int j=0; j<b; j++)
    {
        printf("\nВведите элемент %d-ой строчки %d-ого столбца: ", i+1, j+1);
        scanf("%d", &mass[i][j]);
    }
}
puts("Ввод закончен.");
}

int** get_memory(int a, int b)
{
int** mass;
mass = new int*[a];
for(int i=0; i<a; i++)
{
    mass[i]=new int[b];
}
return mass;
}
p.s. писал linux и проверял компилятором g++
Я помог вам? Помогите и вы мне:
WMZ: Z401849412998
WMR: R251473869576

Последний раз редактировалось kuli4ok; 02.11.2012 в 02:09.
kuli4ok вне форума Ответить с цитированием
Старый 02.11.2012, 08:42   #3
Murashov
Форумчанин
 
Аватар для Murashov
 
Регистрация: 30.10.2012
Сообщений: 121
По умолчанию

при scanf нужно писать адрес переменной. и желательно перед этьим очистить буфер fflush(stdin);
Murashov вне форума Ответить с цитированием
Старый 03.11.2012, 13:33   #4
BloodyRaven
 
Регистрация: 14.09.2012
Сообщений: 4
По умолчанию

Спасибо за код, буду разбиратся
BloodyRaven вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение двумерного массива из файла. KorPaEv Общие вопросы C/C++ 6 19.09.2011 17:46
Заполнение двумерного массива pisikaker Паскаль, Turbo Pascal, PascalABC.NET 2 15.05.2011 10:01
заполнение двумерного массива katena88 Общие вопросы Delphi 1 14.12.2010 14:15
Заполнение двумерного массива (Delphi 7) Gerard Помощь студентам 3 24.05.2010 22:44
[Pascal] заполнение двумерного массива Рамик Помощь студентам 13 18.02.2009 20:08