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

> Внимание!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Умножение_матриц, Столкнулся с проблемой..выдаёт результат 0(
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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

Второй раз одно и то же говорить не буду, писать работающий код - тоже (тебе лень было посмотреть, что я изменил в твоей программе - я потерял интерес к объяснениям). Открывай свой предыдущий вопрос и смотри в моем коде, что у тебя не так. Здесь делаешь те же ошибки, что и там.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 20.04.2024 0:46
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name