Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Помогите подкоректировать программу


Автор: Slay1 18.5.2006, 22:06
Не знаю как обращаться к елементам двухмерного массива с помощью указателей.
То есть например для одномернго a[i] == *(a+1), а как для двухмерного? a[i][j] == ??
Мне в программе нужно везде заменить обращения к массиву с индексов на указатели.
Код

#include <stdio.h>
#include <conio.h>
#include <alloc.h>

void main()
{
 int n,q,k,s,i,j,**a;
 clrscr();
 printf("Enter size:");
 scanf("%d",&n);
 a=(int**)malloc(n*n*sizeof(int*));
 printf("Enter matrix:\n");
 for (j=0; j<n; j++)
   for (i=0; i<n; i++)
     {
      printf("a[%d][%d]=",j+1,i+1);
      scanf("%d",&a[j][i]);
     }
 printf("\nYour matrix:\n");
 for (j=0; j<n; j++)
   for (i=0; i<n; i++)
     {
      printf("%d  ",a[j][i]);
      if (i==n-1) printf("\n");
     }
 s=0;
 q=1;
 for (i=0; i<n; i++)
 s+=a[0][i];
 printf("\nSumm of elements of each row & col must be=%d",s);
 for (j=0; j<n; j++)
   {
    k=0;
    for (i=0; i<n; i++)
      k+=a[j][i];
    if (k!=s)
     {
      printf("\nRows check failed.");
      q=0;
      break;
     }
    }
 for (i=0; i<n; i++)
   {
    k=0;
    for (j=0; j<n; j++)
      k+=a[j][i];
    if (k!=s)
     {
      printf("\nColums check failed.");
      break;
      q=0;
     }
    }
 if (q) printf("\nMatrix is a magic square.");
 else printf("\nMatrix is not a magic square.");
 getch();
}             


P.S. Программу я конечно же подкорректирую сам, только пожалуйста подскажите как решить описанный выше вопрос. 

Автор: MAKCim 18.5.2006, 22:08
a[i][j] equal *(*(a+i)+j); 

Автор: Slay1 18.5.2006, 22:17
MAKCim, спасибо! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)