Ayuda con unas funciones que no se inician
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);
}
#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);
}
