• Sábado 14 de Diciembre de 2024, 19:34

Autor Tema:  problema en la ejecuciòn  (Leído 1340 veces)

gislena

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
problema en la ejecuciòn
« en: Jueves 24 de Julio de 2008, 03:06 »
0
wenasss!!

hice un programa que da el precio de enviar una carta o paquete segùn sea:

en dia siguiente prioritario:
carta: $8
paquete: $25 hasta un kilo, dsp se le agregan $2 cada 500gr

dia siguiente normal:
carta: $5
paquete: $20 hasta un kilo, dsp se le agregan $1.5 cada 500gr

si se manda en dos o mas dias:
carta: no disponible
paquete: $20 hasta un kilo, dsp se le agregan $1 cada 500gr


ahora mi codigo es este:



// cartas_paquetes_v3.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>


int _tmain(int argc, _TCHAR* argv[])
{
   using namespace std;

   char dia, tipo_servicio, horario_trabajo;

   float peso, total_a_pagar = 0, diferencia; // CALCULA PRECIO UNITARIO DE CADA COSA

   int total_paquete = 0, total_carta = 0; // TOTALES POR TIPO ENTREGA, incializadas

   int total_dia_sig_prioritario = 0, total_dia_sig_normal = 0, total_2_dias_o_mas = 0; // TOTALES POR DIA, ya inicializadas
   int total_dia_siguiente_prioritario_p = 0, total_dia_siguiente_prioritario_c = 0; // TOTALES SIG. PRIO C Y P , inicializadas
   int total_dia_siguiente_prioritario_p1 = 0, total_dia_siguiente_normal_p1 = 0, total_dos_dias_o_mas_p1 = 0; // para paquetes mayores a 1000, inicializadas
   int total_dia_siguiente_normal_p = 0, total_dia_siguiente_normal_c = 0; // TOTAL DIA SIG NORMAL, inicializadas
   int total_dos_dias_o_mas_p = 0; // TOTAL DOS DIAS O MAS, inicializadas

   int totales_de_entregas = 0; // PARA QUE CALCULE EL TOTAL DE ENTREGAS, ya inicializadas
   
   float porcentaje_dia_sig_prioritario, porcentaje_dia_siguiente_normal, porcentaje_dos_dias_o_mas; // PORCENTAJES
   float dinero_recaudado = 0; // TOTAL DINERO RECAUDADO, ya inicializada
   float hora = 0, hora_fin, hora_inicio; // HORA DEL DIA PARA CARGAR LAS COSAS

   int tp, tc;            // CONTADORES    tp, para paquete    tc, para carta
   
   cout << "Ingrese hora a la que empieza a trabajar (hh.mm): ";   
   cin >> hora_inicio;   cout << "n";    
   cout << " Ingrese la hora a la que termina de trabajar (hh.mm): ";   
   cin >> hora_fin;   cout << "n";    
   
   for (hora = hora_inicio; hora < hora_fin; hora++)   
   {      
      cout << " Ingrese tipo de servicio:" << "n";
      cout << " 1 - Carta" << "n";
      cout << " 2 - Paquete" << "n";
      cin >> tipo_servicio;
      cout << " Ingrese tipo de entrega: " << "n";
      cout << " 7 - Dia siguiente prioritario" << "n";
      cout << " 8 - Dia siguiente normal" << "n";
      cout << " 9 - Dos dias o mas" << "n";
      cin >> dia;
      cout << " Ingrese peso EN GRAMOS a enviar: ";
      cin >> peso;
      cout << "n";       
      
      for (tc = 1; tipo_servicio = 1; tc++)
      {
         if ((dia = 7) && (peso < 30))
         {   
            cout << " Se le cobraran 8$ " << "n";
            total_dia_siguiente_prioritario_c += 1;
         }
         else if ((dia = 8) && (peso < 30))
         {
            cout << " Se le cobraran 5$ " << "n";
            total_dia_siguiente_normal_c += 1;
         }
         else if ((dia = 9) && (peso < 30))         
         cout << " No esta disponible$ " << "n";   
      }
      for (tp = 1; tipo_servicio = 2; tp++)
         if (((peso > 30) && (peso < 1000)) && (dia = 7))      
         {
            cout << " Se le cobraran 25$ " << "n";      
            total_dia_siguiente_prioritario_p += 1;
         }
         else if (((peso > 30) && (peso < 1000)) && (dia = 8))   
         {
            cout << " Se le cobraran 20$ " << "n";   
            total_dia_siguiente_normal_p += 1;
         }
         else if (((peso > 30) && (peso < 1000)) && (dia = 9))
         {
            cout << " Se le cobraran 15$ " << "n";   
            total_dos_dias_o_mas_p += 1;
         }
            else if((peso > 1000) && (dia = 7))      
            {
               diferencia = ((peso-1000) / 500);      
               total_a_pagar = (25 + ((diferencia *2) + 2));   
               cout << " Se le cobraran 25$ " << "n";      
               cout << " Y 2$ adicionales por cada 500 gr de màs" << "n";      
               cout << " Se le cobraran" << total_a_pagar << " $ en total" << "n";
               total_dia_siguiente_prioritario_p1 += 1;
            }      
            else if ((dia = 8) && (peso > 1000))   
            {
               diferencia = ((peso-1000) / 500);      
               total_a_pagar = (25 + ((diferencia *2)+2));   
               cout << " Se le cobraran 20$ " << "n";   
               cout << " Y 1.5$ adicionales por cada 500 gr de màs" << "n";   
               cout << " Se le cobraran" << total_a_pagar << " $ en total" << "n";   
               total_dia_siguiente_normal_p1 += 1;
            }      
            else if ((dia = 9) && (peso > 1000))
            {      
               diferencia = ((peso-1000) / 500);   
               total_a_pagar = (25 + ((diferencia *2)+2));   
               cout << " Se le cobraran 15$ " << "n";         
               cout << " Y 1$ adicionales por cada 500 gr de màs" << "n";   
               cout << " Se le cobraran" << total_a_pagar << " $ en total" << "n";
               total_dos_dias_o_mas_p1 += 1;
            }
   }
   

   total_paquete = total_dia_siguiente_normal_p + total_dos_dias_o_mas_p + total_dia_siguiente_prioritario_p;  // TOTAL PAQUETE
   total_carta = total_dia_siguiente_prioritario_c + total_dia_siguiente_normal_c;     //TOTAL CARTAS

   total_dia_sig_prioritario = total_dia_siguiente_prioritario_p + total_dia_siguiente_prioritario_c;            //TOTAL DIA SIGUIENTE PRIORITARIO
   total_dia_sig_normal = total_dia_siguiente_normal_p + total_dia_siguiente_normal_c;     // TOTAL DIA SIGUIENTE NORMAL
   total_2_dias_o_mas = total_dos_dias_o_mas_p;     // TOTAL DOS DIAS O MAS

   cout << "El total de envios por paquete es: " << total_paquete << "n";
   cout << "El total de envios por carta es: " << total_carta << "n";
   cout << "El total de envios en dia siguiente prioritario es: " << total_dia_sig_prioritario << "n";
   cout << "El total de envios en dia siguiente normal es: " << total_dia_sig_prioritario << "n";
   cout << "El total de envios en dos dias o mas es: " << total_dia_sig_prioritario << "n";

   totales_de_entregas = total_paquete + total_carta;      //TOTAL ENTREGAS

   cout << "El total de entregas hechas es: " << total_dia_sig_prioritario << "n";

//   dinero_recaudado = ;

   system ("PAUSE");
   return 0;

}



el codigo anda, pero el problema es que cuando ingreso algo menor a 30 gr, sale el mismo mensaje indefinidamente, y si le pongo algo mayor, directamente no sale nada :S
y no se en què puede estar el error

si alguien me puede ayudar se lo agradezco!!

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: problema en la ejecuciòn
« Respuesta #1 en: Jueves 24 de Julio de 2008, 05:08 »
0
Primero que nada, te recomiendo que siempre pongas tu codigo entre [ code][ /code] (sin espacio en los corchetes) facilita la lectura.

En segundo lugar, despues de darle un viztazo, diria que todo esta mal en realidad, el que un programa corra, no significa que este bien hecho.

Tienes demasiados errores de logica como para decirtelos todos, asi que solo te dire 2:
1.
Código: C
  1.  
  2. for (tc = 1; tipo_servicio = 1; tc++)
  3.  
  4.  

ese ciclo esta mal, no tiene condicion de salida, deberia ser algo como:
Código: C
  1.  
  2. for (tc = 1; tipo_servicio == 1; tc++)
  3.  
  4.  

(nota el == en lugar del =), los ciclos for deben de tener una condicion de salida, si no, se ejecutan por siempre, supongo que esa debe ser la razon de que el mensaje aparece indefinidamente como mencionas, pero ademas, esa condicion no es correcta de todas formas, y  me parece que en realidad no lo necesitas (un ciclo for para elegir el tipo de servico???)

2. una de las condiciones dice:
Citar
en dia siguiente prioritario:
paquete: $25 hasta un kilo, dsp se le agregan $2 cada 500gr

en realidad el if deberia ser algo como:

Código: Text
  1.  
  2. if (((peso <= 1000) && (dia == 7) && tipo_servicio == 2)
  3. costo = 25
  4.  
  5.  

como dije antes, todo esta muuuuy mal, supongo que tienes que analizarlo completamente, necesitas leer un buen libro de algoritmos, o pidele ayuda a tu maestro ;)

saludos :hola:

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Wesker1262

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: problema en la ejecuciòn
« Respuesta #2 en: Jueves 24 de Julio de 2008, 22:00 »
0
Cita de: "ProfesorX"
Primero que nada, te recomiendo que siempre pongas tu codigo entre [ code][ /code] (sin espacio en los corchetes) facilita la lectura.

En segundo lugar, despues de darle un viztazo, diria que todo esta mal en realidad, el que un programa corra, no significa que este bien hecho.

Tienes demasiados errores de logica como para decirtelos todos, asi que solo te dire 2:
1.
Código: C
  1.  
  2. for (tc = 1; tipo_servicio = 1; tc++)
  3.  
  4.  

ese ciclo esta mal, no tiene condicion de salida, deberia ser algo como:
Código: C
  1.  
  2. for (tc = 1; tipo_servicio == 1; tc++)
  3.  
  4.  

(nota el == en lugar del =), los ciclos for deben de tener una condicion de salida, si no, se ejecutan por siempre, supongo que esa debe ser la razon de que el mensaje aparece indefinidamente como mencionas, pero ademas, esa condicion no es correcta de todas formas, y  me parece que en realidad no lo necesitas (un ciclo for para elegir el tipo de servico???)

2. una de las condiciones dice:
Citar
en dia siguiente prioritario:
paquete: $25 hasta un kilo, dsp se le agregan $2 cada 500gr

en realidad el if deberia ser algo como:

Código: Text
  1.  
  2. if (((peso <= 1000) && (dia == 7) && tipo_servicio == 2)
  3. costo = 25
  4.  
  5.  

como dije antes, todo esta muuuuy mal, supongo que tienes que analizarlo completamente, necesitas leer un buen libro de algoritmos, o pidele ayuda a tu maestro ;)

saludos :hola:


completamente deacuerdo con el chavo de aki arriba tu codigo se ve algo muy ambiguo por lo ke explicaste no necesitas hacer tanto o.O almenos yo no me complicaria tanto te recomendaria ke primero agarres una libreta y un lapiz
y vas y entonces dices bien agamos esto

y en la libreta escribes tus funciones

lo primario pss obio el programa digase tu .cpp

y luego lo ke kieres ke haga

kiero ke sume
kiero ke reste
kiero ingresar numero
kiero sumar numero ingrado y ke reste

asi todo lo ke se te pueda ocurrir y luego vas otravez en libreta y dices

ok si kiero ke sume y ke reste pues hago una variable
si tantos gramos ke - precio
si tantos gramos ke + precio

no se si doy mi punto a relucir pero es mucho mejor irte dando a la idea de simplificar tus procesos lo digo por experiencia aun uso mi libreta xD