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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  no se que esta mal
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: no se que esta mal  (Leído 1,592 veces)
kjg

Desconectado Desconectado

Mensajes: 3


Ver Perfil
no se que esta mal
« en: 1 Diciembre 2016, 06:45 am »

no se que esta mal, se supone que debe poner 6 "1" , sin sobre esribir ninguno, pero no se porque no se puede

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include<time.h>
  4. #define N 5
  5. #define M 5
  6. int main()
  7. {
  8.  int tablero[N][M];
  9.  int i,j,k;
  10.  int numbarcos=(N*M)/4;
  11.  printf("se colocaran %d barcos",numbarcos);
  12.  for(i=0;i<N;i++)
  13.      for(j=0;j<M;j++)
  14.           tablero[i][j]=0;
  15.           printf ("tablero original\n");
  16.           for(i=0;i<N;i++)
  17.           {
  18.           for(j=0;j<M;j++)
  19.          printf("%i\t",tablero[i][j]);
  20.          printf("\n");
  21. }
  22.  int hora,r,col;
  23.  hora=time(NULL);
  24.  srand(hora);
  25.  for(k=0;k<numbarcos;k++){
  26.  if(tablero[rand()%N][rand()%M]==0){
  27.  tablero[rand()%N][rand()%M]=1;
  28.  }else {
  29.  while(tablero[rand()%N][rand()%M]==1){
  30.  if(tablero[rand()%N][rand()%N]==0){
  31.  tablero[rand()%N][rand()%M]=1;}
  32.  break;
  33. }
  34. }
  35.  int c=0;
  36.  
  37.  for(i=0;i<N;i++)
  38.      for(j=0;j<M;j++)
  39.             if (tablero[i][j]==1)
  40.             c=c+1;
  41.  
  42.              printf("se colocaron %d barcos\n",c);
  43.  
  44.             printf("tablero con barcos\n");
  45.             for(i=0;i<N;i++)
  46.             {
  47.             for(j=0;j<M;j++)
  48.             printf("%i\t",tablero[i][j]);
  49.             printf("\n");
  50.             }
  51.  
  52.                                                                          }
  53.  system("PAUSE");
  54.  return 0;
  55. }

Mod: Los códigos van entre etiquetas GeSHi. Temas sobre C/C++ van al subforo de C/C++


« Última modificación: 1 Diciembre 2016, 07:11 am por kjg » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: no se que esta mal
« Respuesta #1 en: 1 Diciembre 2016, 06:49 am »

muestra una pantalla del programa en ejecución porque tu codigo no es justamente el más facil de leer


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: no se que esta mal
« Respuesta #2 en: 1 Diciembre 2016, 20:59 pm »

Como dice engel lex tu código es demasiado complicado. Debes aprender a refactorizar tus bucles para simplificarlos y los códigos que se repiten y siempre son los mismos ponlos dentro de una función. Y cuida de las identaciones: además de funcional debe ser bonito visualmente para que se pueda seguir bien.

Tu código rehecho y funcional quedaría así:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define FILAS 5
  6. #define COLUMNAS 5
  7. #define MAX_BARCOS (FILAS * COLUMNAS / 4)
  8.  
  9. void mostrar_tablero(int tablero[][COLUMNAS]) {
  10.    int x, y;
  11.  
  12.    for(y = 0; y < FILAS; ++y) {
  13.        for(x = 0; x < COLUMNAS; ++x)
  14.            printf("%i ", tablero[y][x]);
  15.        putchar('\n');
  16.    }
  17. }
  18.  
  19. int main() {
  20.    int tablero[FILAS][COLUMNAS] = {0};
  21.    int i;
  22.    int x, y;
  23.    int num_barcos = 0;
  24.  
  25.    srand(time(NULL));
  26.  
  27.    printf("se colocaran %d barcos\n", MAX_BARCOS);
  28.    puts("tablero original\n");
  29.  
  30.    mostrar_tablero(tablero);
  31.  
  32.    for(i = 0; i < MAX_BARCOS; ++i) {
  33.        x = rand() % COLUMNAS;
  34.        y = rand() % FILAS;
  35.  
  36.        if(tablero[y][x] == 0) {
  37.            tablero[y][x] = 1;
  38.  
  39.            printf("\nse colocaron %d barcos\n", ++num_barcos);
  40.            puts("tablero con barcos\n");
  41.  
  42.            mostrar_tablero(tablero);
  43.        }
  44.        else
  45.            --i;
  46.    }
  47.  
  48.    return 0;
  49. }
« Última modificación: 1 Diciembre 2016, 21:02 pm por MAFUS » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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