matriz espiral
hola... pongo este post para ver si alguien sabe como se hace la matriz espiral (o envolvente) y la matriz desenvolvente yo tengo la espiral pero no me muestra el ultimo numero osea el centro del espiral ... entonces a ver si alguien la tiene o me ayuda a saber que le falta a mi codigo este es:
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
void main ( )
{ int C[20][20],A,B,a,b,r,num,opc,i,j,k,l;
int S[20][20],e,d,f,M,N,t,u,v,w;
do
{ clrscr ( );
cout << "1. Matriz Envolvente o Espiral "<<endl;
cout << "2. Matriz Desenvolvente "<<endl;
cout << "3. salir "<<endl;
cout << "DIGITE OPCION: ";
cin >>opc;
switch (opc)
{ case 1: cout <<"dimension ";
cin >>num;
B=1; A=num; r=1;
while (r<(num*num))
{ for (i=B;i<=A-1;i++)
C[i][B]=r++;
for (j=B;j<=A-1;j++)
C[A][j]=r++;
for (k=A;k>=B+1;k--)
C[k][A]=r++;
for (l=A;l>=B+1;l--)
C[B][l]=r++;
B++;A--;
C[3][3]=r;
}
cout<<"la matriz envolvente es "<<endl;
for (a=1;a<=num;a++)
{ for (b=1;b<=num;b++)
printf ("%4d",C[b][a]);
printf ("n");
}
break;
/* case 2: cout <<"dimension ";
cin >> num;
f=(num+1)/2;
C[f][f]=1;
N=f-1;
M=f+1;
r=2;
while (r<(num*num))
{ for (t=b+1;t<=M;t++)
C[t][N]=r++;
for (u=N+1;u<=M;u++)
C[M][u]=r++;
for (v=M-1;v>=N;v--)
C[v][M]=r++;
for (w=M-1;w>=N;w--)
C[N][w]=r++;
N--; M++;
}
cout <<"la matriz desenvolvente es "<<endl;
for (e=1;e<=num;e++)
{ for (d=1;d<=num;d++)
printf ("%4d",C[e][d]);
printf("n");
}
break;*/
}
getch ( );
}
while (opc!=3);
}
si alguien sabe que le debo arreglar al case 1 le agradezco...
el case 2 esta en comentario ya que es supuestamente la desenvolvente pero no me da ... pido que si alguien la tiene y me hace el favor la ponga como respuesta o me diga que le debo hacer a mi codigo para que este funcione... gracias...
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
void main ( )
{ int C[20][20],A,B,a,b,r,num,opc,i,j,k,l;
int S[20][20],e,d,f,M,N,t,u,v,w;
do
{ clrscr ( );
cout << "1. Matriz Envolvente o Espiral "<<endl;
cout << "2. Matriz Desenvolvente "<<endl;
cout << "3. salir "<<endl;
cout << "DIGITE OPCION: ";
cin >>opc;
switch (opc)
{ case 1: cout <<"dimension ";
cin >>num;
B=1; A=num; r=1;
while (r<(num*num))
{ for (i=B;i<=A-1;i++)
C[i][B]=r++;
for (j=B;j<=A-1;j++)
C[A][j]=r++;
for (k=A;k>=B+1;k--)
C[k][A]=r++;
for (l=A;l>=B+1;l--)
C[B][l]=r++;
B++;A--;
C[3][3]=r;
}
cout<<"la matriz envolvente es "<<endl;
for (a=1;a<=num;a++)
{ for (b=1;b<=num;b++)
printf ("%4d",C[b][a]);
printf ("n");
}
break;
/* case 2: cout <<"dimension ";
cin >> num;
f=(num+1)/2;
C[f][f]=1;
N=f-1;
M=f+1;
r=2;
while (r<(num*num))
{ for (t=b+1;t<=M;t++)
C[t][N]=r++;
for (u=N+1;u<=M;u++)
C[M][u]=r++;
for (v=M-1;v>=N;v--)
C[v][M]=r++;
for (w=M-1;w>=N;w--)
C[N][w]=r++;
N--; M++;
}
cout <<"la matriz desenvolvente es "<<endl;
for (e=1;e<=num;e++)
{ for (d=1;d<=num;d++)
printf ("%4d",C[e][d]);
printf("n");
}
break;*/
}
getch ( );
}
while (opc!=3);
}
si alguien sabe que le debo arreglar al case 1 le agradezco...
el case 2 esta en comentario ya que es supuestamente la desenvolvente pero no me da ... pido que si alguien la tiene y me hace el favor la ponga como respuesta o me diga que le debo hacer a mi codigo para que este funcione... gracias...
A continuacion, un programa que genera una matriz de numeros en espiral :
// program espiral.
// rellenar una matriz NxN en espiral.
// 8/4/2005
// written in Borland CPP ver 4.5
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#define N 5
void Show(int a[][N])
{
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
cout << setw(5) << a[i][j];
cout << endl;
}
cout << endl;
} // SHOW
void Process()
{
int a[N][N],i,j,k = 1;
for(int delta = 1; delta < N/2 + 1; delta++)
{
i = j = delta - 1;
for(;j < N-delta;j++)
a[i][j] = k++;
for(;i < N-delta;i++)
a[i][j] = k++;
for(;j >= delta;j--)
a[i][j] = k++;
for(;i >= delta;i--)
a[i][j] = k++;
}
if(N%2)
a[N/2][N/2] = k;
Show(a);
} // PROCESS
int main()
{
Process();
cout << "end of program - good bye ! ! !n";
return 0;
} // MAIN
// program espiral.
// rellenar una matriz NxN en espiral.
// 8/4/2005
// written in Borland CPP ver 4.5
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#define N 5
void Show(int a[][N])
{
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
cout << setw(5) << a[i][j];
cout << endl;
}
cout << endl;
} // SHOW
void Process()
{
int a[N][N],i,j,k = 1;
for(int delta = 1; delta < N/2 + 1; delta++)
{
i = j = delta - 1;
for(;j < N-delta;j++)
a[i][j] = k++;
for(;i < N-delta;i++)
a[i][j] = k++;
for(;j >= delta;j--)
a[i][j] = k++;
for(;i >= delta;i--)
a[i][j] = k++;
}
if(N%2)
a[N/2][N/2] = k;
Show(a);
} // PROCESS
int main()
{
Process();
cout << "end of program - good bye ! ! !n";
return 0;
} // MAIN