• Sábado 9 de Noviembre de 2024, 03:25

Autor Tema:  Duda vectores y matrices  (Leído 2171 veces)

pabloarg

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Duda vectores y matrices
« en: Lunes 26 de Julio de 2010, 15:22 »
0
Hola a todos, necesito ayuda con en ejercicio para un TP, el ej. dice así:

Una empresa de turismo realiza excursiones a las cuatro regiones del mundo

Región   Nombre   Costo
1   América   3500
2   Europa   4000
3   Asia   4500
4   África   2000

Cada vez que recibe un pedido tomado por alguna de sus 6 agencias, tiene la siguiente información, finalizando con número de pedido =0

Número de pedido
Agencia
Mes
Destino
Cantidad de mayores
Cantidad de menores

Se sabe que los menores pagan un 75% del valor del tour.


Se desea conocer:

1.   El porcentaje que representa lo recaudado por cada agencia sobre el total.
2.   Cuantos pasajeros viajaron a cada destino en cada mes.
3.   Que agencia tomó más pedidos en el mes de Julio.
4.   Cuantos pedidos superaron los 11 pasajeros en total.
5.   Imprimir ordenado por destino:
A.   La recaudación.
B.   La cantidad total de pasajeros transportados.


Lo que tengo hasta ahora es:

Código: C++
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<string.h>
  4.  
  5. void main ()
  6. {
  7. int np,ag,mes,dest,cmay,cmen,f,c,i;
  8. int vra[7],vrd[6],mcant[5][13],mped[7][13];
  9.  
  10. for(i=1;i<=6;i++)
  11.     {
  12.     vra[i]=0;
  13.     }
  14. for(i=1;i<=5;i++)
  15.     {
  16.     vrd[i]=0;
  17.     }
  18. for(f=1;f<=4;f++)
  19.     {
  20.     for(c=1;c<=12;c++)
  21.             {
  22.             mcant[f][c]=0;
  23.             }
  24.     }
  25. for(f=1;f<=6;f++)
  26.     {
  27.     for(c=1;c<=12;c++)
  28.             {
  29.             mped[f][c]=0;
  30.             }
  31.     }
  32. clrscr();
  33.         printf("Ingrese numero de pedido");
  34.         scanf("%d",&np);
  35.         while(np!=0)
  36.         {
  37.         printf("Ingrese numero de agencia");
  38.         scanf("%d",&ag);
  39.         printf("Ingrese numero de mes");
  40.         scanf("%d",&mes);
  41.         printf("Ingrese el destino");
  42.         scanf("%d",&dest);
  43.         printf("Ingrese la cantidad de mayores");
  44.         scanf("%d",&cmay);
  45.         printf("Ingrese la cantidad de menores");
  46.         scanf("%d",&cmen);
  47.         mcant[dest][mes]=mcant[dest][mes]+cmay+cmen;
  48.         mped[ag][mes]=mped[ag][mes]+1;
  49.         {
  50.         for(f=1;f<=4;f++)
  51.             {
  52.             for(c=1;c<=12;c++)
  53.                 {
  54.                 printf("al destino %d en el mes %d hubieron %d pasajeros n",f,c,mcant[f][c]);
  55.                 }
  56.             }
  57.         printf("Ingrese numero de pedido");
  58.         scanf("%d",&np);
  59. }
  60. }
  61. }
  62.  



El tema esta en que me deja cargar un solo grupo de datos y ejectua ese grupo. Como hago para cargar por ejemplo 5 grupos y que despues ejecute ese grupo ??

Gracias !

vite666

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Duda vectores y matrices
« Respuesta #1 en: Sábado 31 de Julio de 2010, 20:42 »
0
pues podrias vaciar tus datos en un archivo, con eso puedes vaciar o cargar cuantos grupos desees.
solo busca en google sobre el "manejo de archivos en C" no te envio a ninguna pagina xq no puedo, po eso de los privilegios.

Mikan

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Duda vectores y matrices
« Respuesta #2 en: Domingo 1 de Agosto de 2010, 21:45 »
0
Creo que el problema está en que para salir del bloque while esperas la entrada "0".
Prueba lo siguiente, que para finalizar el programa, debas introducir un pedido número 99.
Entonces quedaría:

clrscr();
        printf("Ingrese numero de pedido");
        scanf("%d",&np);
        while(np!=99)
        ...

Prueba y me cuentas!

pabloarg

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Duda vectores y matrices
« Respuesta #3 en: Martes 3 de Agosto de 2010, 00:57 »
0
Gracias por su ayuda, ya lo solucioné, ahora necesito armar un menu, tienen idea de como sería ?

Código: C
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<string.h>
  4. void main ()
  5. {
  6. int np,ag,mes,dest,cmay,cmen,f,c,i;
  7. int vra[7],vrd[6],mcant[5][13],mped[7][13];
  8. for(i=1;i<=6;i++)
  9.     {
  10.     vra[i]=0;
  11.     }
  12. for(i=1;i<=5;i++)
  13.     {
  14.     vrd[i]=0;
  15.     }
  16. for(f=1;f<=4;f++)
  17.     {
  18.     for(c=1;c<=12;c++)
  19.         {
  20.         mcant[f][c]=0;
  21.         }
  22.     }
  23. for(f=1;f<=6;f++)
  24.     {
  25.     for(c=1;c<=12;c++)
  26.         {
  27.         mped[f][c]=0;
  28.         }
  29.     }
  30. clrscr();
  31. printf("Ingrese numero de pedido");
  32. scanf("%d",&np);
  33. while(np!=0)
  34. {
  35. printf("Ingrese numero de agencia");
  36. scanf("%d",&ag);
  37. printf("Ingrese numero de mes");
  38. scanf("%d",&mes);
  39. printf("Ingrese el destino");
  40. scanf("%d",&dest);
  41. printf("Ingrese la cantidad de mayores");
  42. scanf("%d",&cmay);
  43. printf("Ingrese la cantidad de menores");
  44. scanf("%d",&cmen);
  45. mcant[dest][mes]=mcant[dest][mes]+cmay+cmen;
  46. printf("Ingrese numero de pedido");
  47. scanf("%d",&np);
  48. }
  49. for(f=1;f<=4;f++)
  50.     {
  51.     for(c=1;c<=12;c++)
  52.     {
  53.     printf("al destino %d en el mes %d hubieron %d pasajeros n",f,c,mcant[f][c]);
  54.     }
  55.     }
  56.     getch();
  57. }
  58.  

Gracias !

vite666

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Duda vectores y matrices
« Respuesta #4 en: Martes 3 de Agosto de 2010, 17:59 »
0
con un switch
Ejemplo:
Código: C
  1.  
  2. int opcion;
  3. printf("1. opcion 1n 2.opcion2n...");
  4. scanf("%i",&opcion);
  5. switch(opcion)
  6. {
  7. case 1:
  8.        //codigo que quieres que haga si elige la opcion 1
  9.        break;
  10. case 2:
  11.        //codigo
  12.        break;
  13. .
  14. .
  15. .
  16. default:
  17.        //codogo en caso de que no sea valida la opcion
  18.        break;
  19. }
  20.  
  21.  

pabloarg

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Duda vectores y matrices
« Respuesta #5 en: Miércoles 4 de Agosto de 2010, 20:09 »
0
Ya casi lo tengo listo, pero no se porque al terminar la carga de datos con numero de pedido =0, no me ejecuta las opciones sino que vuelve al codigo: Ayuda !

Código: C
  1. #include<stdio.h>
  2. #include<conio.h>
  3.  
  4. int mcant[5][13]={0}, vped[7]={0},vcant[5]={0};
  5. int c11=0,ctot=0,numped=0,na=0,mayor=0,mes,dest,may,men,i,j;
  6. float vra[7]={0},vrd[5]={0},vimp[5]={0};
  7. char vnumped[5][10]={"","america","europa","asia","africa",};
  8.  
  9. void main()
  10. {
  11. vimp[1]=3500;
  12. vimp[2]=4000;
  13. vimp[3]=4500;
  14. vimp[4]=2000;
  15.  
  16. int opcion;
  17. clrscr();
  18. printf("0- Ingresar datos n");
  19. printf("1- Porcentaje que representa lo recaudado por cada agencia sobre el total n");
  20. printf("2- Cantidad de pasajeros que viajaron a cada destino en cada mes n");
  21. printf("3- Agencia que tom¢ m s pedidos en el mes de julio n");
  22. printf("4- Cantidad de pedidos que superaron los 11 pasajeros n");
  23. printf("5- Recaudaci¢n por destino n");
  24. printf("6- Cantidad de pasajeros transportados por destino n");
  25.  
  26. scanf("%d",&opcion);
  27. switch(opcion)
  28. {
  29. case 0:
  30. printf("ingrese el n£mero de pedido: ");
  31. scanf("%d",&numped);
  32. while(numped!=0)
  33.     {
  34.     printf("ingrese el numero de agencia: ");
  35.     scanf("%d",&na);
  36.     printf("ingrese el mes: ");
  37.     scanf("%d",&mes);
  38.     printf("ingrese el destino (1=Am‚rica,2=Europa,3=Asia,4=Africa): ");
  39.     scanf("%d",&dest);
  40.     printf("ingrese la cantidad de mayores: ");
  41.     scanf("%d",&may);
  42.     printf("ingrese la cantidad de menores: ");
  43.     scanf("%d",&men);
  44.  
  45.     vra[na]=vra[na]+(vimp[dest]*may)+(vimp[dest]*men*0.75);
  46.     mcant[dest][mes]=mcant[dest][mes]+may+men;
  47.     vped[na]=vped[na]+1;
  48.     if ((may+men)>11)
  49.         {
  50.         c11=c11+1;
  51.         }
  52.     vrd[dest]=vrd[dest]+(vimp[dest]*may)+(vimp[dest]*men*0.75);
  53.     vcant[dest]=vcant[dest]+may+men;
  54.     mayor=vped[1];
  55.     na=1;
  56.  
  57.     printf("ingrese el n£mero de pedido: ");
  58.     scanf("%d",&numped);
  59.     }
  60.     break;
  61. case 1:
  62.         for(i=1;i<=7;i++)
  63.         {
  64.             printf("Lo recaudado por la agencia %d representa el %f porciento del total",i,(vra[i]*100/ctot));
  65.         }
  66.         break;
  67. case 2:
  68.         for(i=1;i<=5;i++)
  69.         {
  70.             for(j=1;j<=13;j++)
  71.             {
  72.             printf("Al destino %d en el mes %d viajaron %d pasajeros",i,j,mcant[i][j]);
  73.             }
  74.         }
  75.         break;
  76. case 3:
  77.         for(i=2;i<=7;i++)
  78.         {
  79.             if(vped[i]>mayor)
  80.             {
  81.             mayor=vped[i];
  82.             na=i;
  83.             }
  84.         }
  85.         for(i=1;i<=7;i++)
  86.         {
  87.             if(vped[i]==mayor)
  88.             {
  89.             printf("En el mes de Julio la agencia %d tomo la mayor cantidad de pedidos, que fueron %d",i,mayor);
  90.             }
  91.         }
  92.         break;
  93. case 4:
  94.         printf("Hubieron %d pedidos mayores a 11 pasajeros",c11);
  95.         break;
  96. case 5:
  97.         for(i=1;i<=5;i++)
  98.         {
  99.         printf("El destino %d recaud¢ %f",i,vrd[i]);
  100.         }
  101.         break;
  102. case 6:
  103.         for(i=1;i<=5;i++)
  104.         {
  105.         printf("Al destino %d viajaron %d pasajeros",i,vcant[i]);
  106.         }
  107.         break;
  108. default:
  109.         printf("error!");
  110.         break;
  111. }
  112. }
  113.  

pabloarg

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Duda vectores y matrices
« Respuesta #6 en: Miércoles 4 de Agosto de 2010, 20:29 »
0
Ademas cuando lo ejecuto sin el menu me manda el mensaje "Floating point error: Domain Abnormal program termination"

vite666

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Duda vectores y matrices
« Respuesta #7 en: Jueves 5 de Agosto de 2010, 11:56 »
0
puedes meter una nueva opcion que sea salir y todo lo pones dentro dentro de un while
Código: C
  1. opcion=1//forsamos a que entre al while
  2. while(opcion!=7)//mientras el usuario no de opcion de salir lo seguira repitiendo
  3. {
  4.         printf("7. Salir");
  5.         switch(opcion)
  6.         {
  7.                case 1:
  8.                       printf("...");/*como en estas opciones solo muestras informacion el programa lo va a mostrar pero demaciado rapido que ni lo vas a ver*/
  9.                       getch();/*esto es para hacer una pausa en el programa, es parte de <conio.h> si trabajas en windows en linux no recuerdo la libreria, el problema es que no es ANSI asi que si no te corre utiliza getchar() dos veces, y si sigue no funcionado prueva buscar el google "pausa en c"*/
  10.                       break;
  11.                case 7:
  12.                      break;
  13.         }
  14. }
  15.  
  16.  
con respecto el error que te marca, tal vez es porque no inicializaste "opcion" y cuando tratas de utilizarla en el switch pues no la puede evaluar ya que tiene "basura" por el momento. ya que si dices la linea donde te marca el error te lo confirmaria.