[C] Drukowanie i sumowanie w tablicy 2d

0

Witam
Chciałbym napisać program (a raczej funkcje do programu) w postaci wskaźników. Prawie mi się udaje, ale ucina mi wartości pierwszych komórek w każdym rzędzie. Bardzo bym prosił o podpowiedź na razie związaną z drukowaniem. Oto kod:

#include<stdio.h>
#include<math.h>
#define N 7

double boundsum(double sqtab[N][N])
{
	int i;
	double sum=0;

    for (i=0;i<N;i++)
	{sum=sum+sqtab[i][6]+sqtab[i][0];}

	for (i=1;i<N;i++)
	{sum=sum+sqtab[0][i]+sqtab[6][i];}

	
			return(sum);

}
  



void printtabpoint(double sqtab[N][N]) //<---Chodzi mi o ten fragment
{int i,j;
double *pprin;

pprin=sqtab;  

	 for(j=0;j<N;j++) 
   { 
      for(i=0;i<N;i++) 
      { 
         printf("[%d][%d]=%f ",i,j,*(pprin+j*N+i));
			
		} 
pprin++; 
printf("\n");
	}}




void printtab(double sqtab[N][N]) 
{ int i,j;
 for( i=0;i<N;i++) 
 { 
  for( j=0;j<N;j++) 
   printf("[%d][%d]=%f ",j,i,sqtab[i][j]); 
  printf("\n"); 
 } 
}


main()
{
int patt[N]={1,2,3,8,16,24,48},  i,j;
double sqtab[N][N];



    for (i=0;i<N;i++)
     {for (j=0;j<N;j++)
     sqtab[i][j]=log(patt[i]+patt[j]);  
     }
	

    printf("The boundary sum is equal to %f\n", boundsum(sqtab));

	printtab(sqtab);
	printf("\n\n");
	printtabpoint(sqtab);
printf("\n");
}

Pozdrawiam

0
printf("[%d][%d]=%f ",i,j,*(pprin+j*N+i));

?????

Jak masz tablice dwuwymiarową to inaczej się sumuje.. bo np. dla tablicy alokowanej przez malloc() nie zadziała :P

((tab_name+pierwszy_wymiar)+drugi_wymiar) <= tutaj masz konkretną komórkę tablicy NxM

0

Przez takie coś wyskakuje mi błąd: illegal indirection. Mógłbyś zmodyfikowac tę funkcję żeby zadziałała?

void printtabpoint(double sqtab[N][N]) 
{int i,j;
double *pprin;

pprin=sqtab;  

	 for(j=0;j<N;j++) 
   { 
      for(i=0;i<N;i++) 
      { 
         printf("[%d][%d]=%f ",i,j,*(*(pprin+i)+j));
			
		} 
pprin++; 
printf("\n");
	}}
0
void printtabpoint(double sqtab[N][N])
{
      int i,j;
      for(j=0;j<N;j++)
      {
            for(i=0;i<N;i++)
           {
                 printf("[%d][%d]=%f ",i,j,*(*(sqtab+j)+i));
           }
           printf("\n");
      }
}

PS. Rób jakieś normalne wcięcia bo sie sam w kodzie pogubisz (albo i już się pogubiłeś) :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1