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

Implementar esta función en C

Estas en el tema de Implementar esta función en C en el foro de C/C++ en Foros del Web. ¿Alguien sabe como puedo implementar esta funcion en C? Es para la práctica 3 de Programación 1 de la Universidad a Distancia (UNED) de Ingeniería ...
  #1 (permalink)  
Antiguo 05/01/2009, 11:19
Avatar de Lecquio  
Fecha de Ingreso: mayo-2004
Ubicación: Asturias, España
Mensajes: 948
Antigüedad: 20 años
Puntos: 34
Implementar esta función en C

¿Alguien sabe como puedo implementar esta funcion en C?



Es para la práctica 3 de Programación 1 de la Universidad a Distancia (UNED) de Ingeniería Técnica de Sistemas. En realidad es en modula 2, pero me vale verla implementada en C para hacerme una idea, porque estoy en blanco sobre como implementarla.

El enunciado completo de la práctica está aquí:
http://www.uned.es/infor-1-programac...rcera08_09.pdf

Gracias.
  #2 (permalink)  
Antiguo 05/01/2009, 12:38
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Implementar esta función en C

¿Qué parte es la que no te sale?
  #3 (permalink)  
Antiguo 06/01/2009, 15:12
Avatar de Lecquio  
Fecha de Ingreso: mayo-2004
Ubicación: Asturias, España
Mensajes: 948
Antigüedad: 20 años
Puntos: 34
Respuesta: Implementar esta función en C

No se como pasar a codigo la formula para estimar la idoneidad de una poblacion para establecer un centro comercial.
Tengo dos RECORD: uno con poblaciones y otro con datos del centro comercial.
Se supone que tengo que hallar la distancia entre 2 poblaciones, pero entre que 2 poblaciones tengo que calcular la distancia.
Esto es lo que he hecho hasta ahora:
Código:
FOR c:=1 TO n DO
		FOR d:=c+1 TO n DO
			(*calculo distancia del pueblo d al siguiente, y si estoy en el ultimo pueblo, al primero*)
			distancia2:= (pueblo[c].centro.x-pueblo[d].centro.x)*(pueblo[c].centro.x-pueblo[d].centro.x)+(pueblo[c].centro.y-pueblo[d].centro.y)*(pueblo[c].centro.x-pueblo[d].centro.x);
			distancia:=sqrt(FLOAT(distancia2));
			aux:=TRUNC(distancia);
			aux2:=fpob[1];
			IF d=c+1 THEN
				fpob[c] := centro[1].tamano * pueblo[c].precio -(habitantes * aux);
			ELSE
				IF fpob[c]>(centro[1].tamano * pueblo[c].precio -(habitantes * aux)) THEN
					fpob[c] := centro[1].tamano * pueblo[c].precio -(habitantes * aux);
				END;
			END;
			WriteInt (fpob[c],5); (*imprimimos los distintos resultados de la formula*)
			WriteInt(c,3);
			
			WriteLn();
		END;
	END;
Meto los resultados de la formula en un array y luego comparo resultados para ver cual es más bajo.
Pero no estoy seguro de que este bucle este correcto para esa formula.
  #4 (permalink)  
Antiguo 06/01/2009, 15:30
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Implementar esta función en C

TIenes que calcular las distancias, desde cada población a todas las demás:

La fórmula f(pob) se traduce claramente a una función, la función que da la idoneidad de una población. Así, en esa función básicamente tendrías que hacer algo así:

Código:
int idoneidad(Poblacion, Lista) es:
    idoneidad = t · p; // primera parte de la formula
    Para cada puebloI de Lista que no sea poblacion:
        idoneidad = idoneidad - habitantesDeI · distancia(poblacion, puebloI); // segunda parte de la fórmula
    end for;
    return idoneidad;
end;
Luego, en el código principal de tu programa tendrás que tener otro bucle, en el que llamas a idoneidad para cada uno de las poblaciones y vas guardando los resultados. Luego miras cuál es el mejor resultado y ya está.

distancia(pobA,pobB) es otra función que calcula la distancia entre las dos ciudades que le pasas.
  #5 (permalink)  
Antiguo 08/01/2009, 15:45
Avatar de Lecquio  
Fecha de Ingreso: mayo-2004
Ubicación: Asturias, España
Mensajes: 948
Antigüedad: 20 años
Puntos: 34
Respuesta: Implementar esta función en C

Ya me ha salido.
Muchas gracias.
  #6 (permalink)  
Antiguo 15/01/2009, 06:28
 
Fecha de Ingreso: enero-2009
Mensajes: 1
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Implementar esta función en C

Hola... he visto q estas con la tercera practia de modula, yo no puedo con ella, si me haces el favor de mandarme lo que tengas hecho yo lo comparo con la mia y a ver si puedo terminarla... muchas gracias de antemano.
[email protected]
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 14:24.