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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2011, 20:56   #1
novak3
Пользователь
 
Регистрация: 05.05.2011
Сообщений: 33
По умолчанию Работа с двумерным массивом

Столкнулся с интересным моментом. Нужно ввести числовые данные в двумерный массив через scanf. Подскажите как сделать
Код:
int main()
{int n,m,i;
printf("Vvod kol-va strok n=");
scanf("%d",&n);
printf("Vvod kol-va stolbov m=");
scanf("%d",&m);
float A[n][m];
for(i=0;i<n*m;i++)
{printf("Vvod A[%d]=",i+1);
scanf("%f",& A ?

Последний раз редактировалось Stilet; 06.05.2011 в 07:42.
novak3 вне форума Ответить с цитированием
Старый 05.05.2011, 21:28   #2
Trust_357
Пользователь
 
Регистрация: 10.03.2011
Сообщений: 68
По умолчанию

Код:
for(int i=0;i<n;i++)
{
	for(int j=0;j<m;j++)
	{
		cin>>mas[i][j];
	}
}
Так же, только замени cin на scanf, просто Я им не пользуюсь
Trust_357 вне форума Ответить с цитированием
Старый 05.05.2011, 21:40   #3
ftk
Новичок
Джуниор
 
Регистрация: 05.05.2011
Сообщений: 2
По умолчанию

вариант со сканэфом
Код:
for(int i = 0; i < n; i++)
{
	for(int j = 0; j < m; j++)
	{
		printf("a[%d][%d] = ", i, j);
		scanf("%f", &A[i][j]);
	} 
}
ftk вне форума Ответить с цитированием
Старый 05.05.2011, 21:40   #4
novak3
Пользователь
 
Регистрация: 05.05.2011
Сообщений: 33
По умолчанию

Оказывается все так просто, большое спасибо!

Теперь столкнулся еще с проблемой.
Нужно, чтобы после команды 999 выходили на экран значения которые были введены в массив b[i][j], а выходят одни нули.
Не пойму в чем ошибка, плз, подскажите кто может.
Код:
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
int m,n,o;
int i=0, j=0;
printf("Vvod kol-va strok n=");
scanf("%d",&n);
printf("Vvod kol-va stolbov m=");
scanf("%d",&m);
float a[n][m],b[i][j];
for (i = 0; i < n; i++)
{for (j = 0; j < m; j++)
scanf ("%d", &b[i][j]);}
 
printf("Vvod komandy\n");
scanf ("%d",&o);
if (o==999)
{for (i = 0; i < n; i++)
{for (j = 0; j < m; j++)
printf ("%d ", b[i][j]);
printf ("\n");}}
}

Последний раз редактировалось Stilet; 06.05.2011 в 07:44.
novak3 вне форума Ответить с цитированием
Старый 06.05.2011, 01:24   #5
RgnRok
Пользователь
 
Аватар для RgnRok
 
Регистрация: 13.01.2009
Сообщений: 19
По умолчанию

Цитата:
Сообщение от novak3 Посмотреть сообщение
printf ("%d ", b[i][j]);
Если вы объявили матрицу как float, то и выводить ее нужно как float ("%f")

Код:
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int m,n,o;
	int i=0, j=0;
	printf("Vvod kol-va strok n=");
	scanf("%d",&n);
	printf("Vvod kol-va stolbov m=");
	scanf("%d",&m);

	float b[n][m];

	for (i = 0; i < n; i++)
		{for (j = 0; j < m; j++)
			scanf("%f", &b[i][j]);
		};

	printf("Vvod komandy\n");
	scanf ("%d",&o);
	if (o==999)
	{for (i = 0; i < n; i++)
		{for (j = 0; j < m; j++)
			printf ("%f     ", b[i][j]);
			printf ("\n");}
		}
		getchar();
		getchar();
return 0;	
}
RgnRok вне форума Ответить с цитированием
Старый 06.05.2011, 01:37   #6
Trust_357
Пользователь
 
Регистрация: 10.03.2011
Сообщений: 68
По умолчанию

Когда пишеш код нажимай на решётку над сообщением
Trust_357 вне форума Ответить с цитированием
Старый 06.05.2011, 01:47   #7
novak3
Пользователь
 
Регистрация: 05.05.2011
Сообщений: 33
По умолчанию

С выводом значений на экран я разобрался, теперь не получается вроде бы элементарщина, но битый час над ней сижу. Не суммируютя значения массива, выходит ответ нуль. В чем дело не пойму.
Плз, подскажите кто может.

Код:

 [C]#include <stdio.h>

 int main()
 {
 int m,n,o;
 int i, j;
 float sum;
 printf("Vvod kol-va strok n=");
 scanf("%d",&n);
 printf("Vvod kol-va stolbov m=");
 scanf("%d",&m);
 float b[n][m];
 for (i = 0; i < m; i++)
 {for (j = 0; j < n; j++)
 scanf ("%f", &b[j][i]);}
 printf("Vvod komandy\n");

 scanf ("%d",&o);
 if (o==9)

 for (i = 0; i < m; i++)
 {for (j = 0,sum=0.0; j < n; j++)
 printf ("%f ", b[j][i]);
 printf ("\n");
 sum +=b[j][i];}
 printf ("%f \n", sum);
 printf ("\n");
 }
novak3 вне форума Ответить с цитированием
Старый 06.05.2011, 02:28   #8
Trust_357
Пользователь
 
Регистрация: 10.03.2011
Сообщений: 68
По умолчанию

Код:
for (i = 0; i < m; i++)
 {for (j = 0,sum=0.0; j < n; j++)
 printf ("%f ", b[j][i]);
 printf ("\n");
 sum +=b[j][i];}
 printf ("%f \n", sum);
 printf ("\n");
 }
У Тебя во вложенном цикле
Код:
for (j = 0,sum=0.0; j < n; j++)
когда входит в цикл sum всегда приравнивается нулю и считается заново
По поводу вывода массива обычно он выводится так
Код:
for(int i=0;i<n;i++)//выводятся столбцы через табуляцию, по окончанию строки переход на новый ряд
{
	for(int j=0;j<m;j++)
	{
		cout<<mas[i][j]<<"\t";
	}
	cout<<endl;
}
Ты по ходу на Си пишешь, не на плюсах, вот не знаю как в Си, на плюсах там бы скобок нехватало {}
В С++ если непоставил скобки то выполняется только первая строка после оператора, сложить всё в кучу так и получается массив выводит, а остальное не делается.

Последний раз редактировалось Trust_357; 06.05.2011 в 03:07.
Trust_357 вне форума Ответить с цитированием
Старый 06.05.2011, 03:15   #9
novak3
Пользователь
 
Регистрация: 05.05.2011
Сообщений: 33
По умолчанию

Да, точно я не поставил скобки во вложенном цикле. И Sum=0.0 действительно нужно было поставить во внешний цикл. Спасибо!
novak3 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с двумерным массивом kami46 Помощь студентам 3 20.11.2010 17:51
паскаль, работа с двумерным массивом leraaa Паскаль, Turbo Pascal, PascalABC.NET 0 18.04.2010 21:49
Работа с двумерным массивом SaimaN Помощь студентам 0 16.03.2010 15:23
Помогите с двумерным массивом в С++ Vultar Помощь студентам 11 12.11.2009 18:28
Задача с двумерным массивом. svobodys Помощь студентам 3 13.12.2008 15:44