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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2009, 12:35   #1
lutuygrey1
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 30
По умолчанию cи++/си

помогите пожалуйста с задачей. Дан двумерный массив A размерностью N*M. Сформировать массив В элементами которого являются суммы элементов каждой строки A с помощью динамического массива.
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main(void)
{int i,j,n,m;
int **masa;
int *masb;
printf("\n Дан двумерный массив A размерностью N*M. Сформировать массив В элементами которого являются суммы элементов каждой строки A ");
printf("\n %d %d,n,m);
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
masa=(int**)calloc(m,sizeof(int*));
masa[i]=(int*)calloc(n,sizeof(int));
}
scanf("%7d",&masa[i][j]);
fflush(stdin);
puts("\n исходный массив")
for(i=0;i<n;i++){
for(j=0;j<m;j++)
printf("%7d",masa[i][j]);
printf("\n");}
masb=(int*)calloc(i,sizeof(int));
masb=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
masb[i]=masb[i]+masa[i][j];
printf("\n массив сумм");
printf("\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
printf("%7d",masb[i]);
free(masa);
free(masa[i]);
free(masb);
getch();
return 0;
}
пожалуйста укажите где ошибка и в чём...
lutuygrey1 вне форума Ответить с цитированием
Старый 11.10.2009, 15:01   #2
Geg[C/c++]
Пользователь
 
Аватар для Geg[C/c++]
 
Регистрация: 18.02.2009
Сообщений: 76
По умолчанию

Код:
printf("\n %d %d,n,m);
Тут нет символа "
Надо так:
Код:
printf("\n %d %d",n,m);
И тут пропущено ";"
Код:
puts("\n исходный массив");
Там компилятор же говорит, мол до цикла упущен знак ";"
Всё, ошибок нет. (по крайней мере в синтаксисе )
Все что не делается все к ... А какого черта? Делайте все что задумали и все что вам захочется.
Если конечно задуманное вами не попадает под статью.. © Geg[C/c++][поиск]

Последний раз редактировалось Geg[C/c++]; 11.10.2009 в 15:53.
Geg[C/c++] вне форума Ответить с цитированием
Старый 11.10.2009, 16:43   #3
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

рабочий вариант будет примерно такой
красоту сам уж наводи там
Код:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

int main(void)
{
	
	int i,j,n,m;
	int **masa;
	int *masb;
	//printf("\n Дан двумерный массив A размерностью N*M. Сформировать массив	 В элементами которого являются суммы элементов каждой строки A ");

	scanf("%d%d",&n,&m);
	printf("\n %d %d", n,m);

	masa = (int **)calloc(m, sizeof(*masa));			
		for(int i = 0; i < n; ++i)
		masa[i] = (int*)calloc(n, sizeof(*masa[i]));

	fflush(stdin);
	printf("\n исходный массив");
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			masa[i][j] = 1+rand()%50 ;
			printf(" %d  ",masa[i][j]);		
		}
	printf("\n");
	}

	masb = (int*)calloc(n,sizeof(int));
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			masb[i] = masb[i]+masa[i][j];
		}
	}

	printf("\n массив сумм");
	printf("\n");
	for(int i=0; i<n; i++)
		printf(" %d  ",masb[i]);

	for(int i = 0; i < n; ++i)
		free(masa[i]);
	free(masa);

	free(masb);

	getch();
	return 0;
}
m0nax вне форума Ответить с цитированием
Старый 11.10.2009, 17:22   #4
lutuygrey1
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 30
По умолчанию

спасибо большое m0nax, Geg[C/c++]теперь всё заработало!!!!!!!!!!!
lutuygrey1 вне форума Ответить с цитированием
Старый 26.10.2009, 22:16   #5
lutuygrey1
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 30
По умолчанию ошибка

у меня в программе написано вроде всё правильно а при компиляции есил я ввожу 2 и 3 то мне выдаёт такую матрицу
0 0 -23526
0 0 -23544
массив сумм
-2325 -2346
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main(void)
{int i,j,n,m;
int **masa;
int *masb;
printf("\n текст"
" текст \n");
scanf("%d%d",&n,&m);
printf("\n текст \n ",n,m);
masa=(int**)calloc(m,sizeof(*masa)) ;
for(i=0;i<n;i++)
masa[i]=(int*)calloc(n,sizeof(*masa[i]));
fflush(stdin);
printf("\n исходный масив n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%7d",masa[i][j]);
}
printf("\n");
}
masb=(int*)calloc(n,sizeof(masb));
for(i=0;i<n;i++)
for(j=0;j<m;j++)
masb[i]=masb[i]+masa[i][j];
printf("\n бд®а¬Ёа®ў***л© ¬*ббЁў б㬬 ");
printf("\n");
for(i=0;i<n;i++)
printf("%7d",masb[i]);
for(i=0;i<n;i++)
free(masa[i]);
free(masa);
free(masb);
getch();
return 0;
}
программа работает только не так как надо м.б. ошибка в выделении или я строчки не так поставил что прога выделяет неправильно динамическую память
как сделать так чтобы при компиляции были нормальные целые числа?
заранее спасибо

Последний раз редактировалось lutuygrey1; 26.10.2009 в 22:19.
lutuygrey1 вне форума Ответить с цитированием
Старый 27.10.2009, 10:08   #6
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Код:
masa=(int**)calloc(m,sizeof(*masa)) ;
for(i=0;i<n;i++)
masa[i]=(int*)calloc(n,sizeof(*masa[i]));
Вы выделяете память для массива в m строк и n столбцов, а потом
Код:
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
массив из n строк и m столбцов.
Используйте тег CODE, для чего выделите программу и нажмите значок #
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Ответ


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