danny te falto postear este de la tarea xD!, no habia cachao este topic antes >.<, loka ociosa 10k de post hawhahw, ubb presente! go jamaik ^^;
Enunciado
y el codigo;
saludos
Enunciado
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
Se tiene una matriz declarada por
[FONT="]float matriz[500][500];[/FONT]
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:
[FONT="]#include<stdio.h>[/FONT]
[FONT="]main(){[/FONT]
[FONT="] float matriz[500][500];[/FONT]
[FONT="] FILE *arch;[/FONT]
[FONT="] int i,j;[/FONT]
[FONT="] if ( (arch=fopen("matriz.dat","r") ) == NULL){[/FONT]
[FONT="]printf("No se pudo abrir el archivo\n");[/FONT]
[FONT="]}[/FONT]
[FONT="] else {[/FONT]
[FONT="] for (i=0;i<500;i++)[/FONT]
[FONT="] for (j=0; j<500;j++)[/FONT]
[FONT="] fscanf(arch, "%f", &matriz[j]);[/FONT]
[FONT="] fclose(arch);[/FONT]
[FONT="] }[/FONT]
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
Se tiene una matriz declarada por
[FONT="]float matriz[500][500];[/FONT]
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:
[FONT="]#include<stdio.h>[/FONT]
[FONT="]main(){[/FONT]
[FONT="] float matriz[500][500];[/FONT]
[FONT="] FILE *arch;[/FONT]
[FONT="] int i,j;[/FONT]
[FONT="] if ( (arch=fopen("matriz.dat","r") ) == NULL){[/FONT]
[FONT="]printf("No se pudo abrir el archivo\n");[/FONT]
[FONT="]}[/FONT]
[FONT="] else {[/FONT]
[FONT="] for (i=0;i<500;i++)[/FONT]
[FONT="] for (j=0; j<500;j++)[/FONT]
[FONT="] fscanf(arch, "%f", &matriz[j]);[/FONT]
[FONT="] fclose(arch);[/FONT]
[FONT="] }[/FONT]
y el codigo;
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define MAX 499
#define MIN 0
void cal_promedio(int fil, int col);
float matriz[500][500],x=0.6; /*aca se calcula si es mayor que 0.6*/
float suma=0,promedio=0;
main(){
FILE *arch;
int i,j;
if ( (arch=fopen("matriz.txt","r") ) == NULL){ /*acá abrimos el archimo matriz.txt*/
printf("No se pudo abrir el archivo\n");
}
else {
for (i=0;i<500;i++){ /*acá leemos la matriz*/
for (j=0; j<500;j++){
fscanf(arch, "%f", &matriz[j]);
}
}
fclose(arch);
for (i=0;i<500;i++){
for (j=0; j<500;j++){
cal_promedio(i,j);
}
}
}
}
void cal_promedio(int fil, int col)
{
if(fil==MIN){
if(col==MIN){
promedio=(matriz[fil+1][col]+matriz[fil][col+1]+matriz[fil+1][col+1])/3;
}
else if(col==MAX){
promedio=(matriz[fil+1][col]+matriz[fil][col-1]+matriz[fil+1][col-1])/3;
}
else if((col>MIN)&&(col<MAX)){
promedio=(matriz[fil][col-1]+matriz[fil+1][col-1]+matriz[fil+1][col]+matriz[fil][col+1]+matriz[fil+1][col+1])/5;
}
}
else if(fil==MAX){
if(col==MIN){
promedio=(matriz[fil-1][col]+matriz[fil-1][col+11]+matriz[fil][col+1])/3;
}
else if(col==MAX){
promedio=(matriz[fil-1][col]+matriz[fil][col-1]+matriz[fil-1][col-1])/3;
}
else{
promedio=(matriz[fil][col-1]+matriz[fil-1][col-1]+matriz[fil-1][col]+matriz[fil-1][col+1]+matriz[fil][col+1])/5;
}
}
else if((fil>MIN)&&(fil<MAX)){
if(col==MIN){
promedio=(matriz[fil-1][col]+matriz[fil+1][col]+matriz[fil-1][col+1]+matriz[fil][col+1]+matriz[fil+1][col+1])/5;
}
else if(col==MAX){
promedio=(matriz[fil-1][col]+matriz[fil-1][col-1]+matriz[fil][col-1]+matriz[fil+1][col-1]+matriz[fil+1][col])/5;
}
else{
promedio=(matriz[fil-1][col-1]+matriz[fil][col-1]+matriz[fil+1][col-1]+matriz[fil-1][col]+matriz[fil+1][col]+matriz[fil-1][col+1]+matriz[fil][col+1]+matriz[fil+1][col+1])/8;
}
}
suma=matriz[fil][col]+promedio;
if(suma>=x){
printf("[%d][%d] %f + %f Es una estrella ===> %f", fil, col,matriz[fil][col],promedio,suma);
system("pause");
}
}
#include<stdlib.h>
#include<conio.h>
#define MAX 499
#define MIN 0
void cal_promedio(int fil, int col);
float matriz[500][500],x=0.6; /*aca se calcula si es mayor que 0.6*/
float suma=0,promedio=0;
main(){
FILE *arch;
int i,j;
if ( (arch=fopen("matriz.txt","r") ) == NULL){ /*acá abrimos el archimo matriz.txt*/
printf("No se pudo abrir el archivo\n");
}
else {
for (i=0;i<500;i++){ /*acá leemos la matriz*/
for (j=0; j<500;j++){
fscanf(arch, "%f", &matriz[j]);
}
}
fclose(arch);
for (i=0;i<500;i++){
for (j=0; j<500;j++){
cal_promedio(i,j);
}
}
}
}
void cal_promedio(int fil, int col)
{
if(fil==MIN){
if(col==MIN){
promedio=(matriz[fil+1][col]+matriz[fil][col+1]+matriz[fil+1][col+1])/3;
}
else if(col==MAX){
promedio=(matriz[fil+1][col]+matriz[fil][col-1]+matriz[fil+1][col-1])/3;
}
else if((col>MIN)&&(col<MAX)){
promedio=(matriz[fil][col-1]+matriz[fil+1][col-1]+matriz[fil+1][col]+matriz[fil][col+1]+matriz[fil+1][col+1])/5;
}
}
else if(fil==MAX){
if(col==MIN){
promedio=(matriz[fil-1][col]+matriz[fil-1][col+11]+matriz[fil][col+1])/3;
}
else if(col==MAX){
promedio=(matriz[fil-1][col]+matriz[fil][col-1]+matriz[fil-1][col-1])/3;
}
else{
promedio=(matriz[fil][col-1]+matriz[fil-1][col-1]+matriz[fil-1][col]+matriz[fil-1][col+1]+matriz[fil][col+1])/5;
}
}
else if((fil>MIN)&&(fil<MAX)){
if(col==MIN){
promedio=(matriz[fil-1][col]+matriz[fil+1][col]+matriz[fil-1][col+1]+matriz[fil][col+1]+matriz[fil+1][col+1])/5;
}
else if(col==MAX){
promedio=(matriz[fil-1][col]+matriz[fil-1][col-1]+matriz[fil][col-1]+matriz[fil+1][col-1]+matriz[fil+1][col])/5;
}
else{
promedio=(matriz[fil-1][col-1]+matriz[fil][col-1]+matriz[fil+1][col-1]+matriz[fil-1][col]+matriz[fil+1][col]+matriz[fil-1][col+1]+matriz[fil][col+1]+matriz[fil+1][col+1])/8;
}
}
suma=matriz[fil][col]+promedio;
if(suma>=x){
printf("[%d][%d] %f + %f Es una estrella ===> %f", fil, col,matriz[fil][col],promedio,suma);
system("pause");
}
}
saludos
/*espero le sirva a alguien*/