Помощь - Поиск - Пользователи - Календарь
Полная версия: Умножение_матриц
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Другие языки
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("");
        }

} 


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