Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - deifk

#11
Saludos!
Esta semana hemos estado dando punteros en clase de programacion en c y han mandado un par de ejercicios para casa, uno de los cuales no me compila y no se porque, agradeceria que me dijeran a que se refiere el fallo del compilador tras observar el programa.

El programa trata de ordenar 3 numeros reales dados por el usuario de mayor a menor, a traves de una funcion y logicamente tengo que hacer uso de punteros.

void ordenar (float, float, float, float *, float *, float *);

#include <stdio.h>

main()

{
float a, b ,c;
float p_a, p_b, p_c;

Printf("Introduzca 3 numeros: ");
scanf("%f%f%f", &a, &b, &c);

ordenar(a, b, c, &p_a,&p_b,&p_c);
printf("Los numeros ordenados son %f>%f>%f", p_a, p_b, p_c);

}


void ordenar(float a, float b, float c, float *p_a, float *p_b,float *p_c)
{
float aux1, aux2, aux3;

if(a<b)
{
aux1=a;
*p_a=b;
*p_b=aux1;
}
if(b<c)
{
aux2=b;
*p_b=c;
*p_c=aux2;
}
if(a<b)
{
aux3=a;
*p_a=b;
*p_b=aux3;
}
}

Fallo al compilar:

/tmp/cci1exKv.o: In function `main':
ejercicio4.c:(.text+0x1a): undefined reference to `Printf'
collect2: ld devolvió el estado de salida 1

Ruego me perdonen incoherencias que puedan encontrar, soy bastante "novato" en esto, muchas gracias por su ayuda.
Un saludo


#12
Programación C/C++ / Re: Problema del viajante
8 Noviembre 2011, 16:31 PM
Algo de lo que me comentas me suena de haberlo dado hace un par de años, pero creo que no puedo utilizarlo, aun no hemos dado llamadas a funciones nose si eso podre ponerlo, de todas formas leere sobre el tema gracias por contestar tan rapido, si alguien tiene una solucion simple al problema solo con las herramientas que he expuesto y me puede dar alguna pista mas se lo agradeceria.
un saludo
#13
Programación C/C++ / Problema del viajante
8 Noviembre 2011, 16:04 PM
Hola! por primera vez escribo en este foro para pedir ayuda sobre un programa que han mandado en clase, el problema del viajante. Para hacerlo solo dispongo de las herramientas, if-else y switch, ya que no hemos dado mas haya este año, se me ocurre formas de hacer el programa con el for y un vector, pero eso no lo puedo utilizar, asi que haber si me podeis ayudar y decirme el porque mi programa no se ejecuta correctamente.
El problema que se plantea es el siguiente, dispongo de un punto inicial, y digamos otros 3 posibles puntos, con sus respectivas coordenadas, los cuales son introducidos por el usuario. Pues bien el objetivo es que el programa saque por pantalla, el recorrido minimo (en distancia) y el numero de recorrido, para ello utilizo las variables x e y, las cuales las inicializo y supongo que la distancia t123 es la minima.

/*Problema del viajante, calculo de la distancia minima*/

#include <stdio.h>
#include <math.h>

main()

{
float x1,y1,x2,y2,x3,y3,d01,d02,d03,d12,d13,d23,d10,d20,d30,d21,d31,d32,t123,t132,t213,t231,t312,t321,x,y;

printf("Introduzca las coordenadas del punto 1: ");
scanf("%f%f", &x1, &y1);
printf("Introduzca las coordenadas del punto 2: ");
scanf("%f%f", &x2, &y2);
printf("Introduzca las coordenadas del punto 3: ");
scanf("%f%f", &x3, &y3);

d01=d10=sqrt(x1*x1+y1*y1);
d02=d20=sqrt(x2*x2+y2*y2);
d03=d30=sqrt(x3*x3+y3*y3);
d12=d21=sqrt((pow((x2-x1),2))+(pow((y2-y1),2)));
d13=d31=sqrt((pow((x3-x1),2))+(pow((y3-y1),2)));
d23=d32=sqrt((pow((x3-x2),2))+(pow((y3-y2),2)));

t123=d01+d12+d23+d30;
t132=d01+d13+d32+d20;
t213=d02+d21+d13+d30;
t231=d02+d23+d31+d10;
t312=d03+d31+d12+d20;
t321=d03+d32+d21+d10;

x=t123;
y=123;
 
if(t213<t123 && t213<t132 && t213<t231 && t213<t312 && t213<t321)
   {
    x=t213;
    y=213;
   }
else if(t132<t123 && t132<t213 && t132<t231 && t132<t312 && t132<t321)
   {
    x=t132;
    y=132;
   }
else if(t231<t123 && t231<t132 && t231<t213 && t231<t312 && t231<t321)
   {
    x=t231;
    y=231;
   }
else if(t312<t123 && t312<t132 && t312<t213 && t312<t231 && t312<t321)
   {
    x=t312;
    y=312;
   }
else if(t321<t123 && t321<t132 && t321<t213 && t321<t231 && t321<t312)
   {
    x=t321;
    y=321;
   }       
           
printf("El identificador de recorrido minimo es 0-%3.0f-0 y la distancia minima %0.4f\n", y,x);
}