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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2011, 14:25   #1
Narim
Пользователь
 
Регистрация: 14.11.2010
Сообщений: 26
По умолчанию массив с указателями

Здраствуйте.задали сделать задачу с указателями. я никак не могу сделать) Задача на языке СИ.вот условие: Дана матрица А размера m*n получить матрицу AAT (её размер m*n).
вот код
Код:
#include<stdio.h>
#include<conio.h>
#define m 3
#define n 4
main()
{
int i,j,k,a[m][n],b[n][m],c[m][m];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
scanf("%d\t",&a[i][j]);
b[j][i]=a[i][j];
}

for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
printf("\nX\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%3d",b[i][j]);
printf("\n");
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
c[i][j]=0;
for(k=0;k<n;k++)
c[i][j]+=a[i][k]*b[k][j];
}
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
printf("%3d ",c[i][j]);
printf("\n");
}
getch();
}
задача работает, но ее надо переделать с помощью указателей. заранее спасибо.

Последний раз редактировалось ACE Valery; 11.04.2011 в 18:33.
Narim вне форума Ответить с цитированием
Старый 10.04.2011, 14:52   #2
niki123
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 16
По умолчанию

День добрый. Наверное нужно динамическое выделение памяти для массивов
Для массива а:
Код:
int **a;
a=new int*[m];
for (int i=0; i < m; i++)
{
  a [i] = new int [n];
}
А дальше без изменений, можно использовать запись массива вида а[i][j]

Последний раз редактировалось niki123; 10.04.2011 в 14:54.
niki123 вне форума Ответить с цитированием
Старый 11.04.2011, 10:00   #3
Narim
Пользователь
 
Регистрация: 14.11.2010
Сообщений: 26
По умолчанию

попробывал и так сделать, но никаких результатов нет.
Narim вне форума Ответить с цитированием
Старый 11.04.2011, 10:58   #4
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Narim Посмотреть сообщение
получить матрицу AAT (её размер m*n).
m*m

Цитата:
Сообщение от Narim
задача работает
Сомневаюсь. Вы матрицу c[][] недосчитываете.

Цитата:
Сообщение от Narim
ее надо переделать с помощью указателей.
Код:
#include<stdio.h>
#include<conio.h>

#define m 3
#define n 4

main() {

   int i,j,k,a[m*n],b[n*m],c[m*m];

   for (i=0;i<m;i++) {
      for(j=0;j<n;j++) {
         scanf( "%d", a+i*n+j ) ;
         *(b+j*m+i) = *(a+i*n+j) ;
      }
   }


   for(i=0;i<m;i++) {
      for(j=0;j<n;j++)
         printf("%3d", *(a+i*n+j) ) ;
      printf("\n");
   }

   printf("\nAT\n");
   for(i=0;i<n;i++) {
      for(j=0;j<m;j++)
         printf("%3d", *(b+i*m+j) ) ;
      printf("\n");
   }


   for(i=0;i<m;i++) {
      for(j=0;j<m;j++) {
         *(c+i*m+j) = 0 ;
         for(k=0;k<n;k++)
            *(c+i*m+j) += *(a+i*n+k) * *(b+k*m+j) ;
      }
   }

   printf("\nA AT\n");
   for(i=0;i<m;i++) {
      for(j=0;j<m;j++)
         printf("%3d ", *(c+i*m+j) ) ;
      printf("\n");
   }

   getch();

   return 0 ;

}
Vago вне форума Ответить с цитированием
Старый 13.04.2011, 16:20   #5
Narim
Пользователь
 
Регистрация: 14.11.2010
Сообщений: 26
По умолчанию

спасибо, у меня возник вопрос, как он вычисляет транспонированную матрицу?
Narim вне форума Ответить с цитированием
Старый 13.04.2011, 16:36   #6
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

Цитата:
спасибо, у меня возник вопрос, как он вычисляет транспонированную матрицу?
Код:
   for (i=0;i<m;i++) {
      for(j=0;j<n;j++) {
         scanf( "%d", a+i*n+j ) ;
         *(b+j*m+i) = *(a+i*n+j) ;//здеся
      }
   }
ololo-schoolboy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с указателями Byurrer Общие вопросы C/C++ 8 02.04.2011 21:09
проблемы с указателями оскар_топотушка Visual C++ 0 06.11.2010 21:34
Работа с указателями (C) pixel_ Помощь студентам 1 28.08.2009 14:07
Работа с указателями Mango Помощь студентам 2 23.11.2008 10:33
Проблема с указателями novicer Общие вопросы Delphi 5 17.06.2007 00:21