no se que esta mal, se supone que debe poner 6 "1" , sin sobre esribir ninguno, pero no se porque no se puede
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#define N 5
#define M 5
int main()
{
int tablero[N][M];
int i,j,k;
int numbarcos=(N*M)/4;
printf("se colocaran %d barcos",numbarcos);
for(i=0;i<N;i++)
for(j=0;j<M;j++)
tablero[i][j]=0;
printf ("tablero original\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%i\t",tablero[i][j]);
printf("\n");
}
int hora,r,col;
hora=time(NULL);
srand(hora);
for(k=0;k<numbarcos;k++){
if(tablero[rand()%N][rand()%M]==0){
tablero[rand()%N][rand()%M]=1;
}else {
while(tablero[rand()%N][rand()%M]==1){
if(tablero[rand()%N][rand()%N]==0){
tablero[rand()%N][rand()%M]=1;}
break;
}
}
int c=0;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if (tablero[i][j]==1)
c=c+1;
printf("se colocaron %d barcos\n",c);
printf("tablero con barcos\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%i\t",tablero[i][j]);
printf("\n");
}
}
system("PAUSE");
return 0;
}
Mod: Los códigos van entre etiquetas GeSHi. Temas sobre C/C++ van al subforo de C/C++
muestra una pantalla del programa en ejecución porque tu codigo no es justamente el más facil de leer
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í:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define FILAS 5
#define COLUMNAS 5
#define MAX_BARCOS (FILAS * COLUMNAS / 4)
void mostrar_tablero(int tablero[][COLUMNAS]) {
int x, y;
for(y = 0; y < FILAS; ++y) {
for(x = 0; x < COLUMNAS; ++x)
printf("%i ", tablero[y][x]);
putchar('\n');
}
}
int main() {
int tablero[FILAS][COLUMNAS] = {0};
int i;
int x, y;
int num_barcos = 0;
srand(time(NULL));
printf("se colocaran %d barcos\n", MAX_BARCOS);
puts("tablero original\n");
mostrar_tablero(tablero);
for(i = 0; i < MAX_BARCOS; ++i) {
x = rand() % COLUMNAS;
y = rand() % FILAS;
if(tablero[y][x] == 0) {
tablero[y][x] = 1;
printf("\nse colocaron %d barcos\n", ++num_barcos);
puts("tablero con barcos\n");
mostrar_tablero(tablero);
}
else
--i;
}
return 0;
}