Pues, estoy haciendo el hundir la flota en C, y nada con la funcion rand() imprimo en la matriz los barquitos, pero entra solo una vez es decir, yo llamo a la funcion y m imprime el barquito, la llamo otra ve y se muestra lo mismo... pero esque llamo a otra funcion q imprime barquitos de menos o mas casillas y nada, m imprime el anterior..., la verda q no se que puede pasar, ademas, quise poner un bucle para que me hiciera dos veces el barquito, pero nada! aqui les dejo el codigo aver si alguien me puede ayudar
#define M 10
#define N 10
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
time_t time( time_t *time );
int rand( void );
char rellena ( char matriz[][N]){
char cadena[1]=".";
int i,j;
for (i=0; i<M; i++){
for(j=0; j<N; j++){
matriz[i][j]=cadena[0];
}
}
}
char barco_cuatro ( char matriz1[M][N] ){
char cad[1]="#";
int numero, num;
int vert, hor;
do{
srand( time(NULL) );
numero = rand() % 7;
num = rand()%10;
hor = rand()%7;
vert = rand()%2;
}
while ((matriz1[numero][num-1]==cad[0] && matriz1[numero][num+1]==cad[0] && matriz1[numero-1][num]==cad[0] && matriz1[numero][num]==cad[0] && matriz1[numero+1][num]==cad[0] && matriz1[numero+1][num+1]==cad[0] && matriz1[numero+1][num-1]==cad[0] && matriz1[numero+2][num]==cad[0] && matriz1[numero+2][num-1]==cad[0] && matriz1[numero+2][num+1]==cad[0] && matriz1[numero+3][num]==cad[0] && matriz1[numero+3][num-1]==cad[0] && matriz1[numero+3][num+1]==cad[0] && matriz1[numero+4][num]==cad[0]) || ( matriz1[num][hor]==cad[0] && matriz1[num][hor-1]==cad[0] && matriz1[num-1][hor]==cad[0] && matriz1[num+1][hor]==cad[0] && matriz1[num][hor+1]==cad[0] && matriz1[num+1][hor+1]==cad[0] && matriz1[num-1][hor+1]==cad[0] && matriz1[num][hor+2]==cad[0] && matriz1[num+1][hor+2]==cad[0] && matriz1[num-1][hor-2]==cad[0] && matriz1[num][hor+3]==cad[0] && matriz1[num-1][hor+3]==cad[0] && matriz1[num+1][hor+3]==cad[0] && matriz1[num][hor+4]==cad[0]));
{
}
if ( matriz1[numero][num-1]!=cad[0] && matriz1[numero][num+1]!=cad[0] && matriz1[numero-1][num]!=cad[0] && matriz1[numero][num]!=cad[0] && matriz1[numero+1][num]!=cad[0] && matriz1[numero+1][num+1]!=cad[0] && matriz1[numero+1][num-1]!=cad[0] && matriz1[numero+2][num]!=cad[0] && matriz1[numero+2][num-1]!=cad[0] && matriz1[numero+2][num+1]!=cad[0] && matriz1[numero+3][num]!=cad[0] && matriz1[numero+3][num-1]!=cad[0] && matriz1[numero+3][num+1]!=cad[0] && matriz1[numero+4][num]!=cad[0] && vert<=0){
matriz1[numero][num]=cad[0];
matriz1[numero+1][num]=cad[0];
matriz1[numero+2][num]=cad[0];
matriz1[numero+3][num]=cad[0];
}
else if ( matriz1[num][hor]!=cad[0] && matriz1[num][hor-1]!=cad[0] && matriz1[num-1][hor]!=cad[0] && matriz1[num+1][hor]!=cad[0] && matriz1[num][hor+1]!=cad[0] && matriz1[num+1][hor+1]!=cad[0] && matriz1[num-1][hor+1]!=cad[0] && matriz1[num][hor+2]!=cad[0] && matriz1[num+1][hor+2]!=cad[0] && matriz1[num-1][hor-2]!=cad[0] && matriz1[num][hor+3]!=cad[0] && matriz1[num-1][hor+3]!=cad[0] && matriz1[num+1][hor+3]!=cad[0] && matriz1[num][hor+4]!=cad[0] && vert>0){
matriz1[num][hor]=cad[0];
matriz1[num][hor+1]=cad[0];
matriz1[num][hor+2]=cad[0];
matriz1[num][hor+3]=cad[0];
}
}
char barco_tres ( char matriz[M][N] ){
char cad[1]="#";
int numero, num;
int i=0;
int vert, hor;
do{
srand( time(NULL) );
numero = rand() % 7;
num = rand()%10;
hor = rand()%7;
vert = rand()%2;
}
while ((matriz[numero][num-1]==cad[0] && matriz[numero][num+1]==cad[0] && matriz[numero-1][num]==cad[0] && matriz[numero][num]==cad[0] && matriz[numero+1][num]==cad[0] && matriz[numero+1][num+1]==cad[0] && matriz[numero+1][num-1]==cad[0] && matriz[numero+2][num]==cad[0] && matriz[numero+2][num-1]==cad[0] && matriz[numero+2][num+1]==cad[0] && matriz[numero+3][num]==cad[0]) || ( matriz[num][hor]==cad[0] && matriz[num][hor-1]==cad[0] && matriz[num-1][hor]==cad[0] && matriz[num+1][hor]==cad[0] && matriz[num][hor+1]==cad[0] && matriz[num+1][hor+1]==cad[0] && matriz[num-1][hor+1]==cad[0] && matriz[num][hor+2]==cad[0] && matriz[num+1][hor+2]==cad[0] && matriz[num-1][hor-2]==cad[0] && matriz[num][hor+3]==cad[0]));
{
}
if ( matriz[numero][num-1]!=cad[0] && matriz[numero][num+1]!=cad[0] && matriz[numero-1][num]!=cad[0] && matriz[numero][num]!=cad[0] && matriz[numero+1][num]!=cad[0] && matriz[numero+1][num+1]!=cad[0] && matriz[numero+1][num-1]!=cad[0] && matriz[numero+2][num]!=cad[0] && matriz[numero+2][num-1]!=cad[0] && matriz[numero+2][num+1]!=cad[0] && matriz[numero+3][num]!=cad[0] && vert<=0){
matriz[numero][num]=cad[0];
matriz[numero+1][num]=cad[0];
matriz[numero+2][num]=cad[0];
}
else if ( matriz[num][hor]!=cad[0] && matriz[num][hor-1]!=cad[0] && matriz[num-1][hor]!=cad[0] && matriz[num+1][hor]!=cad[0] && matriz[num][hor+1]!=cad[0] && matriz[num+1][hor+1]!=cad[0] && matriz[num-1][hor+1]!=cad[0] && matriz[num][hor+2]!=cad[0] && matriz[num+1][hor+2]!=cad[0] && matriz[num-1][hor-2]!=cad[0] && matriz[num][hor+3]!=cad[0] && vert>0){
matriz[num][hor]=cad[0];
matriz[num][hor+1]=cad[0];
matriz[num][hor+2]=cad[0];
}
return matriz[M][N];
}
char imprimir_tablero ( char matriz1[M][N], char matriz2[M][N]){
int i, j;
printf (" |0123456789\t\t |0123456789\n");
printf ("------------\t\t------------\n");
for (i=0; i<M; i++){
printf ("%d|", i);
for (j=0; j<N; j++){
printf ("%c", matriz1[i][j]);
}
printf("\t\t");
printf ("%d|", i);
for (j=0; j<N; j++){
printf ("%c", matriz2[i][j]);
}
printf ("\n");
}
printf ("\n\n");
}
main (){
int i, j;
char miflota[M][N];
char mistiradas[M][N];
char suflota[M][N];
char sustiradas[M][N];
rellena (miflota);
rellena (mistiradas);
rellena (suflota);
rellena (sustiradas);
barco_cuatro (mistiradas);
imprimir_tablero (miflota, mistiradas);
}
bueno y si ven alguna cosa que se pueda mejorar...pues bienvenida sea la correcion, gracias de antemano