#include <stdio.h>
#include <stdlib.h>
#define loe if(i>=arv){break;}else{a[rida][veerg]=m[i]; i++;}//kokkuhoid
#define d 9
#define pole_viga 0
#define on_viga 1
//globaalmuutuja
int rand_seed=10;
//prototüübid
void kuva_massiiv(int [][d]);
void taida_massiiv(int [][d], int*, int);
int rand();
//funktsioonid
int main(void){
//Muutujate deklareerimine
int rida=d, veerg=d, arv=40, i;
//Massiivi deklareerimine
int m[rida*veerg];
//2-dimensioonilise massiivi deklareerimine
int a[rida][veerg];
//1)
//Masiivi väärtustamine
for (i=0; i < arv; i++){
m[i]=1;
}
//Massiivi initsialiseerimine
while(rida-->0){while(veerg-->0){a[rida][veerg]=0;}veerg=d;}
taida_massiiv(a,m,arv);
kuva_massiiv(a);
//Massiivi initsialiseerimine
while(rida-->0){while(veerg-->0){a[rida][veerg]=0;}veerg=d;}
//2)
//Kuva kahe maatriksi vahele rida
printf("\nNende suvaliste arvudega täidetakse maatriks:");
//Muudame genereeritavate arvude pikkust
arv=65;
//Masiivi väärtustamine
for (i=0; i < arv; i++){
m[i]=rand();
printf(" %d,",m[i]);
}
printf("\n");
taida_massiiv(a,m,arv);
kuva_massiiv(a);
//windowsi puhul kommenteeri järgmine rida välja
//getchar(); getchar();
return pole_viga; //Funktsiooni edukuse tagastamine
}
/* Kirjutanud K&R
- ragastab suvalise arvu 0 ja 32767 vahel.*/
int rand(){
rand_seed = rand_seed * 1103515245 +12345;
return (unsigned int)(rand_seed / 65536) % 10;
}
void taida_massiiv(int a[d][d], int *m, int arv){
int i = 0;
int x=0, y=d, rida=0, veerg=0;
while(1>0){
for(veerg=x; veerg<y; veerg++){rida=x;loe} //Vasakult paremale read
for(rida=x+1; rida<y; rida++){veerg=y-1;loe} //Ülevalt alla veerud
for(veerg=y-2; veerg!=x; veerg--){rida=y-1;loe} //Paremalt vasakule read
for(rida=y-1; rida!=x; rida--){veerg=x;loe} //Alt üles veerud
if(i>=arv){break;}else{x++;y--;}
}
}
void kuva_massiiv(int a[d][d]){
int rida=d, veerg=d;
while(rida-->0){ //Massiivi initsialiseerimine
while(veerg-->0){
printf("| %d ",a[rida][veerg]);
}
veerg=d;
printf("|\n");
}
}