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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2020, 16:35   #1
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию Двухмерные массивы

Начал изучать двухмерные массивы есть вопрос по теории. Есть две программы с define и без него .Программа без define не работает корректно и выдает мусор какой-то.Возможно ли сделать ввод и вывод матрицы без указателей и define ?
1-
Код:
#include<stdio.h>
#define ROW 4
#define COL 4
void myScanf(int box[][COL], int  row, int column);
void myPrintf(int box[][COL], int row, int column);
int main(void)
{
	int box[ROW][COL];
	myScanf(box, ROW, COL);
	myPrintf(box, ROW, COL);
	return 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
void myScanf(int box[][COL], int  row, int column)
{
	int i, j;
	printf("Enter numbers:");
	for (i = 0; i<ROW; i++)
		for (j = 0; j<COL; j++)
			scanf("%d", &box[i][j]);
}
////////////////////////////////////////////////////////////////////////////////////////////////
void myPrintf(int box[][COL], int row, int column)
{
	int i, j;
	for (i = 0; i<ROW; i++)
	{
		for (j = 0; j<COL; j++)
			printf("%d,", box[i][j]);
		printf("\n");
	}
}
2-
Код:
#include<stdio.h>
void fill( int m[ ] [5])
{
	int i, j;
	printf("\n Enter matrix 3X5 :\n");
	for (i = 0; i < 3; i++)
		//printf("\n");
		for (j = 0; j < 5; j++)
		{
		//	printf("\n");
			scanf("%d \n", &m[i][j]);
		}
}
void print(int m[ ][5])
{
	int i, j;
	printf("\n \n");
	for (i = 0; i < 3; i++)
		for (j = 0; j < 5; j++)
			printf("%3d",m[i][j]);
	printf("\n");
}
void main(void)
{
	int m[3][5];
	fill(m);
	print(m);
}
Alexalex777 вне форума Ответить с цитированием
Старый 04.06.2020, 16:42   #2
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

вышло )) \n убрал
Код:
scanf("%d ", &m[i][j]);
ввод через пробел
Alexalex777 вне форума Ответить с цитированием
Старый 04.06.2020, 16:56   #3
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Но все равно матрицу печатает в строчку и выдает мусор если ставить после for /n
Код:
printf(" /n");
Alexalex777 вне форума Ответить с цитированием
Старый 04.06.2020, 19:24   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,218
По умолчанию

А если \n
Arigato на форуме Ответить с цитированием
Старый 04.06.2020, 19:56   #5
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Arigato так и писал )) Думаю без define или константы распечатать матрицу не возможно так она воспринимается компилятором как простой строчный массив. ((
Alexalex777 вне форума Ответить с цитированием
Старый 04.06.2020, 20:16   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

В первом коде печать новой строки внутри цикла, а во втором коде - нет.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 04.06.2020, 20:38   #7
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Код:
void print(int m[][5])
{
	int i, j;
		for (i = 0; i < 3; i++)
	{
		printf("\n");
		for (j = 0; j < 5; j++)
			printf("%d ", m[i][j]);
	}
	printf("\n");
}
Так нормально печатает
Скобок не хватало
Alexalex777 вне форума Ответить с цитированием
Старый 04.06.2020, 20:42   #8
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Еше интересно можно ли сделать так чтоб scanf в консоли строил матрицу ? которая вводится ...те чтоб scanf переводила строчки сам во время ввода и было видно матрицу .
Alexalex777 вне форума Ответить с цитированием
Старый 04.06.2020, 21:05   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Думаю что нет. scanf обработает ввод только после нажатия enter.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 04.06.2020, 21:37   #10
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Может и можно но очень заморочено выйдет.Эта программка останавливается при вводе решетки тоже можно и на пробел чтоб она переводила на новую строку , но пробелы после каждой цифры, значит надо чтоб строка переводилась на каждый 5й пробел. Жесть вообще))
Код:
#include<stdio.h>
int main(void)
{
	int i = 1;
	char b[50];
	printf("ENTER CHARR\n");
	scanf("%c", &b[i]);// чтоб программа переспрашивала
	while (b[i] != '#')
	{
		i++;
		scanf("%c", &b[i]);
	}
	b[i] = '\0';
	i = 0;//со знаком или без
	while (b[i] != '\0')
	{
		printf("%c", b[i]);
		i++;
	}
		return 0;
}
Alexalex777 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двухмерные массивы yusef95 Помощь студентам 1 09.06.2013 22:12
ДВУХМЕРНЫЕ МАССИВЫ Pandemona18 Паскаль, Turbo Pascal, PascalABC.NET 1 31.03.2011 20:39
Двухмерные массивы lilia2121 Помощь студентам 0 25.05.2010 10:37
про двухмерные массивы alexov Общие вопросы C/C++ 7 07.12.2008 21:03
Двухмерные массивы (С++) Nattka Помощь студентам 2 04.12.2008 21:15