Ahmm hola aquí te dejo un código .. disculpa que no esta estructurado ni muy optimizado... lo hice rapidito , pero creo que te sirve para comenzar o mejorarlo .De todas maneras mándame un PM o lo que sea :P.
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
#define SPECIES 3
#define ISLAND 2
main()
{
/* Posiciones geograficas :*/
int xSub, ySub, xGeo, yGeo, xIsland, yIsland , xSpecie, ySpecie;
/* Contadores :*/
int countH=0,countV=0, i, j;
do{
puts("Insert Geopraphic area (x,y):"); scanf("%d %d", &xGeo
, &yGeo
); }while (xGeo < 0 || yGeo<0); /* no negativo */
int geoPos[xGeo][yGeo]; /* Creando vector geografico*/
do{
puts("Insert submarine position (x,y):"); scanf("%d %d",&xSub
, &ySub
); }while(ySub == 1 || xSub == 1 || xSub == xGeo || ySub == yGeo || xSub<0 || ySub<0);
geoPos[xSub][ySub] = 'S'; /* Submarino = S , y que no este en borde geografico*/
for (i=0 ; i<ISLAND ; i++)
{
do{
printf("Insert island 0%d position (x,y): ",i
); scanf("%d %d",&xIsland
, &yIsland
); }while(xIsland<0 || yIsland<0 || geoPos[xIsland][yIsland] == 'S' || geoPos[xIsland][yIsland] == 'I' );
geoPos[xIsland][yIsland] = 'I'; /* No sobreponer una isla sobre otra isla o sobre el submarino*/
}
for (i=0 ; i<SPECIES ; i++)
{
do{
printf("Insert specie %d position (x,y):",i
); scanf("%d %d",&xSpecie
, &ySpecie
); }while(xSpecie<0 || ySpecie<0 || geoPos[xSpecie][ySpecie] == 'S' || geoPos[xSpecie][ySpecie] == 'I'
|| geoPos[xSpecie][ySpecie] == 'E' ); /* No sobreponer una especie sobre una isla, especie o submarino*/
geoPos[xSpecie][ySpecie] = 'E';
}
/* Vista del submarino horizontalmente */
for (j=1; j<yGeo ; j++)
{
if (geoPos[xSub][ySub+j] == 'E')
countH += 1;
else if (geoPos[xSub][ySub+j] == 'I')
break;
}
for (i=1 ,j=ySub; j>0 ; j--, i++)
{
if (geoPos[xSub][ySub-i] == 'E')
countH += 1;
else if (geoPos[xSub][ySub-i] == 'I')
break;
}
/* Vista del submarino verticalmente*/
for (j=1 ; j<xGeo; j++)
{
if (geoPos[xSub+j][ySub] == 'E')
countV += 1;
else if (geoPos[xSub+j][ySub] == 'I')
break;
}
for (i=1 ,j=xSub; j>0 ; j--, i++)
{
if (geoPos[xSub-i][ySub] == 'E')
countV += 1;
else if (geoPos[xSub-i][ySub] == 'I')
break;
}
printf("Localizadas %d especies horizontalmente\n\n",countH
); printf("Localizadas %d especies verticalmente\n\n",countV
);
}
saludos desde edo. carabobo xD