Ayuda con unas funciones que no se inician

Pira?
02 de Septiembre del 2008
Hola es el juego de hundir la flota, estoy haciendo las flotas, pero lo que pasa es que me genera los barquitos, pero los que quiere y cuando quiere el programa, algo tendra q ver con la funcion rand, porque lafuncion esta bien, se trata de barco_( uno dos tres y cuatro ) son las funciones, quisiera saber si saben arreglar ese problema, gracias.

#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;

do{
numero=rand()%7;
num = rand()%10;
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][numero]==cad[0] && matriz1[num][numero-1]==cad[0] && matriz1[num-1][numero]==cad[0] && matriz1[num+1][numero]==cad[0] && matriz1[num][numero+1]==cad[0] && matriz1[num+1][numero+1]==cad[0] && matriz1[num-1][numero+1]==cad[0] && matriz1[num][numero+2]==cad[0] && matriz1[num+1][numero+2]==cad[0] && matriz1[num-1][numero+2]==cad[0] && matriz1[num][numero+3]==cad[0] && matriz1[num-1][numero+3]==cad[0] && matriz1[num+1][numero+3]==cad[0] && matriz1[num][numero+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][numero]!=cad[0] && matriz1[num][numero-1]!=cad[0] && matriz1[num-1][numero]!=cad[0] && matriz1[num+1][numero]!=cad[0] && matriz1[num][numero+1]!=cad[0] && matriz1[num+1][numero+1]!=cad[0] && matriz1[num-1][numero+1]!=cad[0] && matriz1[num][numero+2]!=cad[0] && matriz1[num+1][numero+2]!=cad[0] && matriz1[num-1][numero+2]!=cad[0] && matriz1[num][numero+3]!=cad[0] && matriz1[num-1][numero+3]!=cad[0] && matriz1[num+1][numero+3]!=cad[0] && matriz1[num][numero+4]!=cad[0] && vert>0){
matriz1[num][numero]=cad[0];
matriz1[num][numero+1]=cad[0];
matriz1[num][numero+2]=cad[0];
matriz1[num][numero+3]=cad[0];
}

}

char barco_tres ( char matriz[M][N] ){
char cad[1]="#";
int numero, num;
int vert;
do{
numero=rand()%8;
num = rand()%10;
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][numero]==cad[0] && matriz[num][numero-1]==cad[0] && matriz[num-1][numero]==cad[0] && matriz[num+1][numero]==cad[0] && matriz[num][numero+1]==cad[0] && matriz[num+1][numero+1]==cad[0] && matriz[num-1][numero+1]==cad[0] && matriz[num][numero+2]==cad[0] && matriz[num+1][numero+2]==cad[0] && matriz[num-1][numero+2]==cad[0] && matriz[num][numero+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][numero]!=cad[0] && matriz[numero][numero-1]!=cad[0] && matriz[num-1][numero]!=cad[0] && matriz[num+1][numero]!=cad[0] && matriz[num][numero+1]!=cad[0] && matriz[num+1][numero+1]!=cad[0] && matriz[num-1][numero+1]!=cad[0] && matriz[num][numero+2]!=cad[0] && matriz[num+1][numero+2]!=cad[0] && matriz[num-1][numero+2]!=cad[0] && matriz[num][numero+3]!=cad[0] && vert>0){
matriz[num][numero]=cad[0];
matriz[num][numero+1]=cad[0];
matriz[num][numero+2]=cad[0];
}

}

char barco_dos ( char matriz[M][N] ){
char cad[1]="#";
int numero, num;
int vert;
do{
numero=rand()%9;
num = rand()%10;
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[num][numero]==cad[0] && matriz[num][numero-1]==cad[0] && matriz[num-1][numero]==cad[0] && matriz[num+1][numero]==cad[0] && matriz[num][numero+1]==cad[0] && matriz[num+1][numero+1]==cad[0] && matriz[num-1][numero+1]==cad[0] && matriz[num][numero+2]==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] && vert<=0){
matriz[numero][num]=cad[0];
matriz[numero+1][num]=cad[0];
}
else if ( matriz[num][numero]!=cad[0] && matriz[num][numero-1]!=cad[0] && matriz[num-1][numero]!=cad[0] && matriz[num+1][numero]!=cad[0] && matriz[num][numero+1]!=cad[0] && matriz[num+1][numero+1]!=cad[0] && matriz[num-1][numero+1]!=cad[0] && matriz[num][numero+2]!=cad[0] && vert>0){
matriz[num][numero]=cad[0];
matriz[num][numero+1]=cad[0];
}

}

char barco_uno ( char matriz[M][N] ){
char cad[1]="#";
int numero, num;
do{
numero = rand() % 10;
num = rand()%10;

}
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]);
{
}

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][num]=cad[0];
}

}

char imprimir_tablero ( char matriz1[M][N], char matriz2[M][N]){
int i, j;
printf (" |0123456789tt |0123456789n");
printf ("------------tt------------n");
for (i=0; i<M; i++){
printf ("%d|", i);
for (j=0; j<N; j++){
printf ("%c", matriz1[i][j]);
}
printf("tt");
printf ("%d|", i);
for (j=0; j<N; j++){
printf ("%c", matriz2[i][j]);
}
printf ("n");
}
printf ("nn");
}

char barcos ( char matriz[M][N] ){
barco_uno (matriz);
barco_uno (matriz);
barco_uno (matriz);
barco_uno (matriz);
barco_dos (matriz);
barco_dos (matriz);
barco_dos (matriz);
barco_tres (matriz);
barco_tres (matriz);
barco_cuatro (matriz);
}


main (){
int i, j;
char miflota[M][N];
char mistiradas[M][N];
char suflota[M][N];
char sustiradas[M][N];
srand( time(NULL) );
rellena (miflota);
rellena (mistiradas);
rellena (suflota);
rellena (sustiradas);
barcos(miflota);
imprimir_tablero (miflota, mistiradas);
}