Matriz en espiral, duda sobre código
Publicado por Zulema (2 intervenciones) el 17/02/2020 01:05:35
Hola! Bueno, en mi carrera tenemos de ejercicio desarrollar un programa que en primera reciba datos en formato caracter, los ordene y después los acomode en forma de espiral, ya he logrado lo primero, sin embargo, he presentado muchas dificultades para desarrollar lo segundo. He aquí el código en C


En este ultimo, ilustro mas el ejemplo. Debería de quedar
1 2 3
8 9 4
7 6 5
pero pues nada más no:(
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//Ordenar los elementos de una matriz n x m de tipo caracter de Menor a Mayor.
//Poner los elementos de la matriz del ejercicio anterior y organizarlos en forma de espiral.
#include <stdio.h>
#define FILAS 3
#define COLUMNAS 3
int main(){
int fila=0, columna, fxc, i, j, FXC=FILAS*COLUMNAS, a, f ,c, pos;
char m[FILAS][COLUMNAS], temp;
printf("Llena la matriz con un caracter por posicion\n");
for(fxc=0; fxc<FXC; fxc++){
scanf("%s", &m[0][fxc]);
}
printf("\nMatriz ingresada\n");
for(fila=0; fila<FILAS; fila++){
for (columna=0; columna<COLUMNAS; columna++){
printf("%c ", m[fila][columna]);
}
printf("\n");
}
for (i=0; i<FXC; i++){
for (j=0; j<FXC; j++){
if (m[0][j]>m[0][j+1]){
temp=m[0][j];
m[0][j]=m[0][j+1];
m[0][j+1]=temp;
}
}
}
printf("\n");
printf("\nMatriz ordenada\n");
for(fila=0; fila<FILAS; fila++){
for (columna=0; columna<COLUMNAS; columna++){
m[fila][columna]=m[fila][columna+1];
printf("%c ", m[fila][columna]);
}
//printf("\n");
}
a=0;
f=FILAS;
c=COLUMNAS;
pos=0;
while (pos<FXC){
for (columna=a; columna<c; columna++){
m[fila][columna]=m[0][pos];
pos++;
}
for (fila=a+1; fila<f; fila++){
m[fila][columna]=m[0][pos];
pos++;
}
for (columna=c-1; columna>a; columna--){
m[fila-1][columna-1]=m[0][pos];
pos++;
}
for (fila=f-1; fila>a+1; fila--){
m[fila-1][columna]=m[0][pos];
pos++;
}
a++;
f--;
c--;
}
printf("\n\n\n");
for(fila=0; fila<FILAS; fila++){
for (columna=0; columna<COLUMNAS; columna++){
printf("%c ", m[fila][columna]);
}
printf("\n");
}
return 0;
}


En este ultimo, ilustro mas el ejemplo. Debería de quedar
1 2 3
8 9 4
7 6 5
pero pues nada más no:(
Valora esta pregunta


0