forked from arquimago/espiralC
-
Notifications
You must be signed in to change notification settings - Fork 0
/
espiral.cpp
67 lines (63 loc) · 1.06 KB
/
espiral.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//inicio uma tabela pra receber as espirais até 100x100
int tabela[101][101];
void imprime(int linhas,int colunas){
int i=0,j=0;
for(i=0;i<linhas;i++){
for(j=0;j<colunas;j++){
printf("%4d ",tabela[i][j]);
}
printf("\n");
}
return;
}
void gera_espiral(int linhas,int colunas){
int i=0,j=0,k=0,l=0;
int N=0,E=1,S=0,W=0;
l=colunas*linhas;
for(k=0;k<l;k++){
tabela[i][j]=k+1;
if(E==1){
j++;
if(tabela[i][j+1]!=0) {
E=0;
S=1;
}
}else if(S==1){
i++;
if(tabela[i+1][j]!=0){
S=0;
W=1;
}
}else if(W==1){
j--;
if(tabela[i][j-1]!=0){
W=0;
N=1;
}
}else if(N==1){
i--;
if(tabela[i-1][j]!=0){
N=0;
E=1;
}
}
}
return;
}
int main(){
int i=0,j=0,linhas=0,colunas=0;
printf("Digite o numero de linhas e colunas\n");
scanf("%d %d",&linhas,&colunas);
memset(*tabela,0xff,sizeof(tabela));
for(i=0;i<linhas;i++){
for(j=0;j<colunas;j++){
tabela[i][j]=0;
}
}
gera_espiral(linhas,colunas);
imprime(linhas,colunas);
return 0;
}