Napisati program koji učitava dva prirodna broja n i d(n<10, d<10),a zatim formira
kvadratnu matricu reda n, za koju je ispunjen uslov da svi elementi koji pripadaju
istoj dijagonali (glavnoj ili nekoj dijagonali koja je paralelna sa glavnom)imaju
istu vrijednost(prirodan broj).Elementi na glavnoj dijagonali imaju vrijednost n,
dok se vrijednost na ostalim dijagonalama smanjuje za korak d udaljavanjem od glavne
dijagonale.Na kraju treba ispisati samo sva nenulte elemente matrice, kao što je :
n=4 d=3
4 1 0 0
1 4 1 0
0 1 4 1
0 0 1 4
4 1
1 4 1
1 4 1
1 4
n=3 d=1
3 2 1
2 3 2
1 2 3
3 2 1
2 3 2
1 2 3
n=2 d=3
2 0
0 2
2
2
Za formiranje matrice treba napisati i koristiti funkciju čiji je prototip:
Code:
void create(int mat[10][10], int n, int d);
void create(int mat[10][10], int n, int d);
Za ispis traženog dijela matrice treba napisati i koristiti funkciju čiji je prototip:
Code:
void print(int mat[10][10], int n);
void print(int mat[10][10], int n);
Da mi je bar napisti funkcije!
Napisao sam i ja kod, ali mi neradi baš šta bi trebalo.
Code:
#include <stdio.h>
#include <stdlib.h>
#define max 10
void create(int mat[10][10],int n,int d);
void print(int mat[10][10],int n);
main()
{
int m[10][10]={0};
int n,d,a;
do
{
printf("unesite dva prirodna broja:\n");
scanf("%d %d",&n,&d);
}
while( (n>max)&&(d>max))
;
create(m,n,d);
print(m,n);
system("pause");
}
void create(int mat[10][10],int n,int d) //U defimiciji formalnih argum. morju da se navedu
{ // dimenzije polja
int i,j,a,b;
a=n; b=d;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(i=j)
mat[i][j]=n;
else if((i=j+1) || (j=i+1)) //elementi dijagonale lijevo ili desno od glavne
{ mat[i][j]=n-d; }
}
}
printf("n=%d d=%d\n",a,b); //provjera kreirane matrice
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
printf("%d",mat[i][j]);
printf("\n");
}
printf("\n");
}
void print(int mat[10][10],int n)
{
int i,j;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(mat[i][j]!=0)
printf("%d",mat[i][j]);
}
printf("\n");
}
}
#include <stdio.h>
#include <stdlib.h>
#define max 10
void create(int mat[10][10],int n,int d);
void print(int mat[10][10],int n);
main()
{
int m[10][10]={0};
int n,d,a;
do
{
printf("unesite dva prirodna broja:\n");
scanf("%d %d",&n,&d);
}
while( (n>max)&&(d>max))
;
create(m,n,d);
print(m,n);
system("pause");
}
void create(int mat[10][10],int n,int d) //U defimiciji formalnih argum. morju da se navedu
{ // dimenzije polja
int i,j,a,b;
a=n; b=d;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(i=j)
mat[i][j]=n;
else if((i=j+1) || (j=i+1)) //elementi dijagonale lijevo ili desno od glavne
{ mat[i][j]=n-d; }
}
}
printf("n=%d d=%d\n",a,b); //provjera kreirane matrice
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
printf("%d",mat[i][j]);
printf("\n");
}
printf("\n");
}
void print(int mat[10][10],int n)
{
int i,j;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(mat[i][j]!=0)
printf("%d",mat[i][j]);
}
printf("\n");
}
}