Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/05/2014, 23:31
shikamarucb
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 8 meses
Puntos: 0
Generar matriz en forma de caracol

Hola a todos, tengo el siguiente algoritmo para generar un matriz en forma de caracol, funciona con algunas dimensiones pero no con todas; como por ejemplo (19x8) Necesito ayuda...

Código C++:
Ver original
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. using namespace std;
  6.  
  7. int main(){
  8.  
  9. srand(time(NULL));
  10.  
  11. int f,c,ax=0,ay=1,i=0,j=0,a,b;
  12. float **m;
  13.  
  14. do{
  15. cout<<"Digite el numero de filas";
  16. cin>>f;
  17. a=f;}while(f<2);
  18.  
  19. do{
  20. cout<<"Digite el numero de Columnas";
  21. cin>>c;
  22. b=c;}while(c<2);
  23.  
  24. m= new float *[f];
  25.  
  26. for(int i=0;i<f;i++){
  27.     m[i]=new float[c];
  28. }
  29.  
  30. ciclo:
  31.  
  32. for(j;j<c;j++){
  33.     m[i][j]=rand()%150;
  34.     if(j==c-1){
  35.        i++;
  36.        break;}
  37. }
  38.  
  39. for(i;i<f;i++){
  40.     m[i][j]=rand()%150;
  41.     if(i==f-1){
  42.        j--;
  43.        break;}
  44. }
  45.  
  46. for(j;j>=ax;j--){
  47.     m[i][j]=rand()%150;
  48.     if(j==ax){
  49.        i--;
  50.        break;}
  51. }
  52.  
  53. for(i;i>=ay;i--){
  54.     m[i][j]=rand()%150;
  55.     if(i==ay){
  56.        c=c-2;
  57.        f=f-2;
  58.        j++;
  59.        ax++;
  60.        ay++;
  61.        break;}
  62. }
  63.  
  64. if(f<2||c<2){
  65.    goto continuar;
  66. }else{goto ciclo;}
  67.  
  68. continuar:
  69.  
  70. for(i=0;i<a;i++){
  71.     for(j=0;j<b;j++){
  72.         cout.width(5);
  73.         cout<<m[i][j];
  74.     }cout<<endl;
  75. }
  76.  
  77. }