Tengo Un Problema Con Un Algorismo En Lenguaje C

Topic created · 2 Posts · 443 Views
  • El Algorismo Es En Lenguaje C!!!

    Las Multas

    En la ciudad de San Cristóbal, la Municipalidad ha prohibido girar a la derecha. Para obligar al cumplimiento de esta regla, es obligatorio instalar en todo vehículo un aparato que registra las coordenadas en plano cartesiano del vehículo cada vez que éste dobla.

    Al terminar un viaje, una sucesión de posiciones se transmite a una computadora municipal que calcula el total de la multa sumando Bs.F 5 por cada giro a la derecha. Es problema a resolver es: dada la sucesión de posiciones de un vehículo, calcular el total de la multa.

    Detalles:

    Para facilidad, un viaje será representado como una sucesión de 3 puntos: p1, p2, p3. Cada punto es un par de números (i, j), donde i y j son las coordenadas del punto en un sistema de coordenadas que tiene como origen al edificio de la Municipalidad.

    p1 es el punto donde empezó el viaje, p3 es donde terminó y p2 es la esquina donde el vehículo dobló. Las calles son rectas de dirección arbitraria. Entonces los datos a recibir se representan de la siguiente forma:

    AKI ESTA LA IMAGEN
    [http://www.subeimagenes.com/img/22-24125.html][0]">[http://www.subeimagenes.com/img/22-24125.html][1]

    El problema consiste en escribir un programa que contenga un menú con las siguientes opciones:
    1. Recibir por teclado los datos correspondientes a las coordenadas de varios carros
    2. Calcular la multa de cada uno de los carros
    3. Mostrar por pantalla el grafico de recorrido de un vehículo cualquiera que el usuario introduzca por teclado. (El usuario introduce el numero del vehículo a ver)
    4. Salir

    Cuando el usuario presione opción 1:

    El programa deberá permitir que el usuario ingrese los datos de las coordenadas del movimiento de los vehículos. No se sabe exactamente cuántos vehículos se estudiaran pero se sabe que al menos llegará uno.

    Cuando el usuario presione opción 2:
    El programa deberá calcular la multa de cada uno de los vehículos introducidos sumando BsF 5 por cada giro a la derecha del automóvil.

    En el ejemplo dado, estos son los recorridos: (FIJESE QUE SOLO SE MULTA A LOS VEHICULOS QUE REALIZARON CRUCE A LA DERECHA)
    AKI ESTA LA IMAGEN
    [http://www.subeimagenes.com/img/223-24127.html][0]">[http://www.subeimagenes.com/img/223-24127.html][2]

    El formato de salida debe ser el siguiente:

    Vehículo 1. Carlos Pérez. Multa Bs.F 5
    Vehículo 2. Juan Suarez. Multa Bs.F 0

    Cuando el usuario presione opción 3:
    El programa preguntará cual número de vehículo se va a visualizar. La visualización quedará a su gusto, pero este es un ejemplo. OJO: Por efectos de visualización nunca se pondrán coordenadas mayores a -10 o 10 en el eje de las x, ni a -10 o 10 en el eje de las Y.

    Ejemplo: Supongamos que el usuario desea visualizar el vehiculo 0, entonces por pantalla se veria algo como lo siguiente:
    AKI ESTA LA IMAGEN
    [http://www.subeimagenes.com/img/2235-24130.html][0]">[http://www.subeimagenes.com/img/2235-24130.html][3]

    [0]: <a href=
    [1]: http://www.subeimagenes.com/img/22-24125.html
    [2]: http://www.subeimagenes.com/img/223-24127.html
    [3]: http://www.subeimagenes.com/img/2235-24130.html

  • ¿Por que vuelves a postear esto? _xD_
    Justo hoy en matemáticas he empezado el tema de rectas y se me ha ocurrido una forma. Con coordenadas de destino menos coordenadas de origen tienes el vector director de la recta que sería la trayectoria del coche, es decir P2x - P1x para la componente x del vector director y P2y - P1y para la componente y del vector. Ahora hallas la pendiente de la recta (si el vector es u sería uy/ux). Haces lo mismo con el primer punto y el tercero (P3x - P1x y P3y - P1y), y hallas la pendiente de esa segunda recta. Ahora para que el giro sea a la derecha depende del cuadrante. En el primer y segundo cuadrante el giro es hacia la derecha si y solamente si el valor absoluto de la pendiente de la primera recta es mayor que el valor absoluto de la pendiente de la segunda recta. En el tercer y cuarto cuadrante es lo mismo pero al revés es decir, el giro será hacia la derecha solo cuando el valor absoluto de la pendiente de la primera recta sea menor que el valor absoluto de la pendiente de la segunda recta. Supongo que ya sabrás programar en C, así que eso te lo dejo a ti.

    Un saludo.

Log in to reply