elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Matriz en forma de serpiente
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Matriz en forma de serpiente  (Leído 4,471 veces)
chonazar1

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Matriz en forma de serpiente
« en: 3 Noviembre 2020, 02:37 am »

Tengo una duda y es que tengo que hacer una matriz en forma de serpiente donde se lean las filas y columnas y que estos no sean mayores a 20

EJEMPLO
n=2 m=5
1   2  3  4  5
10 9  8  7  6

Mi duda es como hacer el indice j en el ciclo for, mi profesor nos recomendo hacerla por renglones pares e impares pero no entiendo muy bien ademas de que mi codigo me da numeros muy grandes y la matriz no empeza desde 1

Si pudieran darme unos consejos se lo agradeceria

Código
  1. #include <stdio.h>
  2. int main (){
  3. int c,i,j,m,n;
  4. scanf ("%d %d",&n,&m);
  5. int ma [n][m];
  6. for (i=0;i<n;i++){
  7. for (j=0; j<m;j++){
  8.    printf(" %d ",ma[n][m]);
  9. }
  10.   printf(" \n ");
  11.    }
  12. return 0;
  13.  


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Matriz en forma de serpiente
« Respuesta #1 en: 3 Noviembre 2020, 03:19 am »

Al decirte renglones pares e impares, es porque los impares, son crecientes y los pares decrecientes.

Luego en un bucle externo de 'renglones, añades 2 bucles, uno que recorrer creciente y otro decreciente...

Hay varias formas de montarlos, para llegar al mismo resultado... He aquí el pseudocódigo para una de tales formas...

Código:
i=1
bucle para k desde 1 hasta n en pasos de 2
    Bucle para j desde i hasta i+m-1
        Imprimir j    //1 2 3 4 5, 11 12 13 14 15,...
    Siguiente
    i=(i+m+m)
    Bucle para j desde i-1 hasta j-1 retrocediendo // en pasos de - 1
        Imprimir j // 10 9 8 7 6, 20 19 18 17 16,...
    Siguiente
Siguiente


La salida para n=4, m=5, será lo comentado:
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16

La salida para n=4, m=4, sería:
1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13

La salida para n=2, m=7, sería :
1 2 3 4 5 6 7
14 13 12 11 10 9 8


En línea

chonazar1

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Matriz en forma de serpiente
« Respuesta #2 en: 3 Noviembre 2020, 03:33 am »

muchas gracias creo que ya comprendo
En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Matriz en forma de serpiente
« Respuesta #3 en: 3 Noviembre 2020, 05:10 am »

Tengo una duda y es que tengo que hacer una matriz en forma de serpiente donde se lean las filas y columnas y que estos no sean mayores a 20

Recuerda comprobar también que los valores de n y m no sean mayores que 20 pues es un requisito del programa. Para esto tienes que usar un filtro con el bucle do-while():
Código
  1. const int MIN_FILAS = 1;
  2. const int MIN_COLUMNAS = 1;
  3. const int MAX_FILAS = 20;
  4. const int MAX_COLUMNAS = 20;
  5.  
  6. int main(){
  7.  int filas, columnas;
  8.  do {
  9.    scanf("%d %d", &filas, &columnas);
  10.  } while(filas < MIN_FILAS || filas > MAX_FILAS || columnas < MIN_COLUMNAS || columnas > MAX_COLUMNAS);
  11.  // ...
  12. }
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines