IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

 
 Ответить  Открыть новую тему 
> Умножение_матриц, Столкнулся с проблемой..выдаёт результат 0(
Marya
сообщение 3.12.2010 21:05
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Владислав

Репутация: -  0  +


float dobutok(float A,float B)
{ unsigned int i,k,l;
a=(float**)malloc(A*sizeof(float*));
for(i=0;i<A;i++)
a[i]=(float*)malloc(A*sizeof(float));
for(i=0;i<A;i++)
for(k=0;k<A;k++)
{
printf("VVidit a[%u][%u]=",i,k);
scanf("%f",&a[i][k]);
}
for(i=0;i<A;i++)
{ for(k=0;k<A;k++)
printf("%.0f ",a[i][k]);
puts("");
}
b=(float**)malloc(A*sizeof(float*));
for(k=0;k<A;k++)
b[i]=(float*)malloc(B*sizeof(float));
for(k=0;k<A;k++)
for(j=0;j<B;j++)
{
printf("VVidit a[%u][%u]=",k,j);
scanf("%f",&a[k][j]);
}
for(i=0;i<A;i++)
{ for(j=0;j<B;j++)
printf("%.0f ",a[i][j]);
puts("");
}

c=(float **)malloc(A*sizeof(float*));
if (c==NULL) return;
for(i=0;i<A;i++)
c[i]=(float*)malloc(B*sizeof(float));

for(i=0;i<A;i++)
for(j=0;j<B;j++)
for(k=0;k<A;k++)
c[i][j]+=a[i][k]*b[k][j];
puts("\nMatrucia dobutku:\n");
for(i=0;i<A;i++)
{ for(j=0;j<B;j++)
printf("%.0f ",c[i][j]);
puts("");
}



}


Нужно умножить две матрици...квадратную на прямоугольную..и вывести на екранsad.gif
Я не правильно выделил память? или она не выделилась..потому-что я её не чистил?(

Сообщение отредактировано: Marya - 3.12.2010 21:16
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.12.2010 21:58
Сообщение #2


Гость






Цитата
Я не правильно выделил память? или она не выделилась..потому-что я её не чистил?(
Это ты о чем вообще? Все правильно выделено, матрицы возможно перемножить, они сцепленные. Единственное, чего ты не сделал - не обнулил элементы матрицы C.

Второй раз одно и то же говорить не буду, писать работающий код - тоже (тебе лень было посмотреть, что я изменил в твоей программе - я потерял интерес к объяснениям). Открывай свой предыдущий вопрос и смотри в моем коде, что у тебя не так. Здесь делаешь те же ошибки, что и там.
 К началу страницы 
+ Ответить 
Marya
сообщение 3.12.2010 23:30
Сообщение #3





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Владислав

Репутация: -  0  +


float dobutok(int A,int B)
{ unsigned int i,k,l;
a=(float**)malloc(A*sizeof(float*));
for(i=0;i<A;i++)
a[i]=(float*)malloc(A*sizeof(float));
for(i=0;i<A;i++)
for(k=0;k<A;k++)
{
printf("VVidit a[%u][%u]=",i,k);
scanf("%f",&a[i][k]);
}
for(i=0;i<A;i++)
{ for(k=0;k<A;k++)
printf("%.0f ",a[i][k]);
puts("");
}
b=(float**)malloc(A*sizeof(float*));
for(i=0;i<A;i++)
b[i]=(float*)malloc(B*sizeof(float));
for(i=0;i<A;i++)
for(j=0;j<B;j++)
{
printf("VVidit b[%u][%u]=",i,j);
scanf("%f",&b[i][j]);
}
for(i=0;i<A;i++){
for(j=0;j<B;j++){
printf("%.0f ",b[i][j]);
puts("");
}
}

c=(float **)malloc(A*sizeof(float*));
if (c==NULL) return;
for(i=0;i<A;i++)
c[i]=(float*)malloc(B*sizeof(float));
for(i=0;i<A;i++){
for(j=0;j<B;j++){
c[i][j] = 0;
}
}

for(i=0;i<A;i++)
for(j=0;j<B;j++)
for(k=0;k<A;k++)
c[i][j]+=a[i][k]*b[k][j];
puts("\nMatrucia dobutku:\n");
for(i=0;i<A;i++)
{ for(j=0;j<B;j++)
printf("%.0f ",c[i][j]);
puts("");
}

}


Не знаю исправил ли я те же ошибки...
Работает правильно,какие-то замечания ещё будут?

Сообщение отредактировано: Marya - 3.12.2010 23:41
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.07.2025 2:33
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"