[C con Clase] Necesito ayuda

Ricardo Torres rictor en cuhrt.com
Vie Jul 2 10:21:15 CEST 2010


Luis Arenas escribió:
> Mi intencion no es que me hagan las tareas ni nada por el estilo pido
> disculpas si se mal interpreto mi peticion, solo pedia un codigo para
> orientarme si es que alguien sabia como recorrerlo y cosas asi, no me
> manejo mucho en este lenguaje es mas desde que empezo el ramo ha sido
> una perdicion en mi.
Hola Luis

Pues aclarado el asunto y con la nueva info que has proporcionado veamos
si te podemos ayudar en algo...
> ahora tengo esto
> asigno el mapa con 8 para los bloques y 2 para las calles (No se si
> esta bien asi )
Por simplicidad yo usaría 1 para los bloques y 0 para las calles, pero
podrías usar cualquier valor siempre y cuando lo documentes, te he
modificado un poco, creo que va mejor asi!
> , me crea la matriz pero despues cuando quiero asignarle las direccion
> me pide la primera direccion se qeuda pegado y ndice qe win no
> responde ahora en el asunto de las direcciones en el trabajo me dice
> lo siguiente "Cada calle es unidireccional y su dirección queda
> definida por el último bit de
> su número en formato binario donde el 1 representa izquierda o abajo
> según sea horizontal y vertical la calle, análogamente el 0 representa
> derecha o arriba."  eso de el ultimo bit en formato binario no lo
> entiendo esta bien como lo pongo yo mas abajo o no??
Según veo el documento, la dirección de cada calle está dada por el
número de la posición de la calle en la matriz, ejemplo, la segunda
calle horizontal corresponde a la fila o renglón 4 de la matriz, ya que
en lenguaje C todos los arreglos comienzan en cero.

Ahora 4 en binario es 100 y el último bit es entonces 0, por lo tanto la
dirección de la segunda calle es hacia la derecha, como se puede
observar en la figura del documento.

Sería bueno que hicieras el caso para las 1a y 3er calle para que veas
que coincide.

Finalmente entonces la dirección de las calles no las da el usuario, se
pueden obtener dependiendo de en que calle te encuentres, a lo mejor
sería conveniente hacer una función.
>
> saludos y gracias por la ayuda
>
#include <stdio.h>
#include <stdlib.h>

int mapa[100][100];
int i,j,n,direc;


main(){
       printf("ingrese tamaño del mapa(multiplo de 3, mayor que 9):");
       scanf("%d",&n);
       if(n%3==0 && n>=9)
       {
       /* Llena la matriz con bloques */
        for(i=0;i<n;i++) {
           for(j=0;j<n;j++) {
               mapa[i][j]=8;
           }
        }
        
       /* Crea las calles horizontales */
        for(i=0;i<n;i++)
       {
          for(j=1;j<n;j+=3) /* Ahora los incrementos son de 3 en 3 */
          {
             mapa[i][j]= 2;
          /* la variable j es incrementada una ves por el for y luego
dos veces más,
             así que es equivalente a incrementarla de 3 en 3 y se puede
omitir las
             siguientes dos líneas, por eso están comentadas.
             j++;
             j++;
         */
          }
       }

        /* Crea las calles verticales */
        for(j=0;j<n;j++)
        {for(i=1;i<n;i+=3) /* lo mismo que el caso anterior */
          {
           mapa[i][j]= 2;
          }
        }

         /* Imprime el mapa en pantalla y sería conveniente imprimir el
sentido de las calles*/
          for(i=0;i<n;i++)
         {
           for(j=0;j<n;j++)             
           {
            printf("%d",mapa[i][j]);
            }
            printf("\n");
            }
           printf("\n\n");            
              printf("En la matriz los numeros '2' son igual a calles y
\n los numeros '8' bloques de casa u otro \n\n");       

           printf("Ahora ingresar la direccion de las calles, usted \n
tiene %d calles horizontales y verticales \n\n",n/3);
           printf("calles verticales \n");             

     /* Estos for's no tienen sentido */     
       for(j=1;j<n;j++)
          {
          printf("Ingrese la direc. de la calle %d. (1 abajo 0
arriba)\n\n",j);          
          scanf("%d",direc);
           mapa[n][j]= direc;
           j++;
           j++;
          }
       printf("calles horizontales\n\n");
       for(i=1;i<n;i++)
          {
          printf("Ingrese la direc. de la calle %d. (1 izq 0
derecha)\n\n",j);          
          scanf("%d",direc);          
           mapa[i][n]= direc;
           i++;
           i++;
          }           }
          else(
       printf("Numero no es correcto"));
       system("PAUSE");}
--------

Espero te sea de utilidad!
Saludos
Ricardo Torres




Más información sobre la lista de distribución Cconclase