Jest to jeden z podpunktów zadania więc np. funkcję są troche bardziej rozbudowane.
Musze, pracować na wskaźnikach.
Problem leży w odnajdywaniu wartości najmniejsze i największej w wierszach.
Ten kod w teorii coś liczy, jednak rzadko te wyniki są poprawne, czy mógłby mi ktoś podpowiedzieć gdzie myślę źle?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int row_statistics(const int *ptr, int width, int height, int row_id, int* max,
int* min, float *avg);
int column_statistics(const int *ptr, int width, int height, int column_id,
int* max, int* min, float *avg);
int main(int argc, const char * argv[])
{
srand((unsigned)time(0));
int i,j;
int max=0, min=0;
int* p_max=&max;
int* p_min=&min;
float avg=0;
float* p_avg=&avg;
int a[5][5];
int (*p_a)[5];
p_a=a;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
*(*(p_a+i)+j)=rand()%100;
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%2d ", *(*(p_a+i)+j));
}
printf("\n");
}
printf("\n");
row_statistics(*p_a, 5, 5, 5,p_max, p_min, p_avg);
//printf("%d",*(*(p_a+3)+4));
return 0;
}
int row_statistics(const int *ptr, int width, int height, int row_id, int* max,
int* min, float *avg)
{
int i,j;
if(!ptr||!width||!height||!row_id||!max||!min||!avg)
{
return 0;
}
else
{
for(i=0;i<width;i++)
{
for(j=0;j<height;j++)
{
if(i==0 &&j==0)
{
*max=*ptr;
*min=*ptr;
printf("%d %d ",*max,*min);
}
else
{
if((*(ptr+i*5+j))>*max)
{
*max=(*(ptr+i*5+j));
}
else if((*(ptr+i*5+j))<*min)
{
*min=(*(ptr+i*5+j));
}
if(j==4)
{
printf("%d %d ",*max,*min);
*max=(*(ptr+i*5));
*min=(*(ptr+i*5));
}
}
}
}
}
return 1;
}