Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ejercicio en C.

Estas en el tema de Ejercicio en C. en el foro de C/C++ en Foros del Web. Ola a todos, soy un estudiante de ingeniería en ejecución informática y me han dado el siguiente trabajo. Es un problema que debo realizarlo en ...
  #1 (permalink)  
Antiguo 21/05/2009, 12:19
 
Fecha de Ingreso: mayo-2009
Mensajes: 1
Antigüedad: 15 años, 6 meses
Puntos: 0
Ejercicio en C.

Ola a todos, soy un estudiante de ingeniería en ejecución informática y me han dado el siguiente trabajo. Es un problema que debo realizarlo en lenguaje C. Para ello podemos usar cualquier programa. Me gustaría que me ayudaran porque soy nuevo en esto y lo encuentro muy difícil. Cualquier acotación, consejo o ayuda se los agradezco enormemente, ya que el trabajo es para el 25 de este mes y me veo apremiado.

De antemano muchas gracias.

Aquí les dejo mi ejercicio:


I) Problema “Observatorio Astronómico”

En un observatorio astronómico se reciben las señales de la intensidad luminosa de los distintos lugares del cosmos. La información de cada una de las señales luminosas que es detectada por el observatorio, es almacenada en una matriz que representa una región del cosmos, donde cada elemento de la matriz representa la cantidad de luz procedente de la porción de la imagen correspondiente. El rango de intensidad de la luz varía entre 0 y 1 (desde la oscuridad absoluta hasta la luz emitida por una estrella observable a simple vista). Se puede suponer la existencia de una estrella en el área correspondiente a un elemento de la matriz cuando la suma de la intensidad de la luz correspondiente al elemento más el promedio de los elementos adyacentes a él, es mayor o igual a 0,6

(Tabla):

||INDICES|| 0 || ... || j-1 || j || j+1 || ... || n-1 ||
|| 0 || ____ || ____ || ____ || ____ || ____ || ____ || ____ ||
|| … || ____ || ____ || ____ || ____ || ____ || ____ || ____ ||
|| j-1 || ____ || ____ || ____ || ____ || ____ || ____ || ____ ||
|| j || ____ || ____ || ____ || ____ || ____ || ____ || ____ ||
|| j+1 || ____ || ____ || ____ || ____ || ____ || ____ || ____ ||
|| ... || ____ || ____ || ____ || ____ || ____ || ____ || ____ ||
|| n-1 || ____ || ____ || ____ || ____ || ____ || ____ || ____ ||

Se tiene una matriz declarada por:

float matriz[500][500];

Desarrolle un programa en C para determinar la posición de las posibles estrellas encontradas.

Los datos se encuentran almacenados en un archivo, el cual debe ser leido por su programa. Por ello, se deberán considerar las siguientes instrucciones al comienzo del programa, para poder leer los datos correspondientes de la matriz:

#include<stdio.h>

main(){

float matriz[500][500];

FILE *arch;

int i,j;

if ( (arch=fopen("matriz.dat","r") ) == NULL){

printf("No se pudo abrir el archivo\n");

}

else {

for (i=0;i<500;i++)

for (j=0; j<500;j++)

fscanf(arch, "%f", &matriz[i][j]);

fclose(arch);

}

Última edición por maggot_24; 21/05/2009 a las 12:39
  #2 (permalink)  
Antiguo 24/05/2009, 11:07
Avatar de neandertal  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 16 años, 9 meses
Puntos: 1
Sonrisa Respuesta: Ejercicio en C.

Por lo que dices parece que tienes que recorrer la matriz y si hay algun valor mayor o igual que 0.6 mostrar las coordenadas en las que se encuentra.
Aprovechando el código que tienes abajo quedaria algo así:

Código:
#include<stdio.h> 

main(){ 

float matriz[500][500]; 
FILE *arch; 
int i,j; 
if ( (arch=fopen("matriz.dat","r") ) == NULL){ 
     printf("No se pudo abrir el archivo\n"); 
} 
else { 
for (i=0;i<500;i++){
      for (j=0; j<500;j++) {
            fscanf(arch, "%f", &matriz[i][j]);
            if(matriz[i][u]>=0.6)printf("%d-%d\n",i,j);
      }
}
fclose(arch); 
}
Esto lo que hace es mostrar en pantalla las coordenadas en las que hay alguna estrella en un formato como este:

Ejemplo:

32-12
1-33
...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:56.