Помощь - Поиск - Пользователи - Календарь
Полная версия: Умножение_матриц
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Marya
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
Я не правильно выделил память? или она не выделилась..потому-что я её не чистил?(
volvo
Цитата
Я не правильно выделил память? или она не выделилась..потому-что я её не чистил?(
Это ты о чем вообще? Все правильно выделено, матрицы возможно перемножить, они сцепленные. Единственное, чего ты не сделал - не обнулил элементы матрицы C.

Второй раз одно и то же говорить не буду, писать работающий код - тоже (тебе лень было посмотреть, что я изменил в твоей программе - я потерял интерес к объяснениям). Открывай свой предыдущий вопрос и смотри в моем коде, что у тебя не так. Здесь делаешь те же ошибки, что и там.
Marya
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("");
}

}


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