Witam mam mały problem z moim programem ale najpierw przedstawię to co miałem zrobić:
Napisać program który zawiera w paru funkcjach następujące rzeczy:
- wprowadzanie rozmiaru macierzy kwadratowej ( żeby N=M ); [u mnie w głównym programie]
- randomowe wypisanie tablicy do tablicy wskaznikowej (z dynamiczna alokacja danych, ale moze być też bez); [w funkcji macierz]
- wypisanie tablicy na ekran; [w funkcji wypisanie]
- policzenie sumy liczb z: a> przekątnej macierzy, b> sumy nad przekątna, c> sumy pod przekątna [w funkcji sumowanie]
a tutaj mój program
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int macierz(int**);
int wypisanie(int**);
int sumowanie();
int N, M;
int **tab;
int i, j;
int skos, nad, pod;
int main ()
{
printf("\n Podaj liczbe kolumn oraz wierszy swojej macierzy KWADRATOWEJ: ");
scanf("%d", &N);
M=N;
macierz();
wypisanie();
sumowanie();
for(i=0; i<M; i++) // CZYSZCZENIE TABLICY przez funkcje free
free(tab[i]);
free(tab);
system("pause");
return 0;
}
int macierz(int**)
{
tab=(int**)malloc(N*sizeof(int *)); // ODWOLANIE DO WSKAZNIKOW PRZEZ malloc
for(i=0; i<M; i++)
{
tab[i]=(int*)malloc(M*sizeof(int));
}
srand((unsigned int) time(NULL));
for (i=0; i<N; i++)
for (j=0; j<M; j++)
tab[i][j] = rand() % 10; // dzielone przez dziesiec lczby calkowite do 10
}
int wypisanie(int**)
{
for(i=0;i<N;i++)
{
for(j=0; j<M; j++)
{
printf("%3d ", tab[i][j]);
}
printf("\n");
}
}
int sumowanie()
{
skos = nad = pod = 0;
for (i=0; i<N; i++){
for (j=0; j<M; j++)
{
if (i<j) nad+=tab[i][j];
if (i==j) skos+=tab[i][j];
if (i>j) pod+=tab[i][j];
}
}
printf("a)\tSuma liczb macierzy nad przekatna jest rowna: %d\n",nad);
printf("b)\tSuma liczb macierzy na przekatnej jest rowna: %d\n",skos);
printf("c)\tSuma liczb macierzy pod przekatna jest rowna: %d\n",pod);
}