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

ejercicio de vectores

Estas en el tema de ejercicio de vectores en el foro de C/C++ en Foros del Web. Hola, el enunciado dice así: Una compañía inmobiliaria tiene 25 vendedores. Cada operación que hace un vendedor se guarda con las siguientes informaciones: número del ...
  #1 (permalink)  
Antiguo 04/08/2010, 06:48
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
ejercicio de vectores

Hola, el enunciado dice así: Una compañía inmobiliaria tiene 25 vendedores. Cada operación que hace un vendedor se guarda con las siguientes informaciones: número del vendedor (int), nombre del vendedor (20 char), monto de la venta (float). Estas informaciones se almacenarán en tres vectores, y se deberá escribir un programa que calcule el total de ventas realizado por cada uno de los vendedores por separado, expresando el resultado como:

NUMERO DEL VENDEDOR NOMBRE DEL VENDEDOR TOTAL DE VENTAS

1 pepe 1500.54
2 ana 55741.38

He empezado haciendo esto:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define N_VENDEDORES 4
  5. #define N_VENTAS 4
  6.  
  7. int main(){
  8.     int num_del_vend[N_VENDEDORES];
  9.     char nom_del_vend[N_VENDEDORES][21];
  10.     float monto_venta[N_VENDEDORES];
  11.     int i;
  12.      
  13.     for(i=1; i<=N_VENDEDORES; i++){
  14.         monto_venta[i]=0.0;
  15.         printf("Numero del vendedor: ");
  16.         scanf("%d", &num_del_vend[i]);
  17.         printf("Nombre del vendedor: ");
  18.         scanf("%20s", nom_del_vend[i]);
  19.         printf("Monto de la venta: ");
  20.         scanf("%f", &monto_venta[i]);
  21.   }

¿Cómo hago para introducir de teclado varias ventas realizadas por un sólo vendedor, luego sumarlas y almacenarlas en un vector?. No me aclaro, si podéis ayudarme. Gracias.
  #2 (permalink)  
Antiguo 05/08/2010, 08:04
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ejercicio de vectores

Hola, el enunciado dice así: Una compañía inmobiliaria tiene 25 vendedores. Cada operación que hace un vendedor se guarda con las siguientes informaciones: número del vendedor (int), nombre del vendedor (20 char), monto de la venta (float). Estas informaciones se almacenarán en tres vectores, y se deberá escribir un programa que calcule el total de ventas realizado por cada uno de los vendedores por separado, expresando el resultado como:

NUMERO DEL VENDEDOR NOMBRE DEL VENDEDOR TOTAL DE VENTAS

1 pepe 1500.54
2 ana 55741.38


Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define N_VENDEDORES 4
  5. #define N_VENTAS 10
  6.  
  7. int main(){
  8.     int num_del_vend[N_VENDEDORES];
  9.     char nom_del_vend[N_VENDEDORES][21];
  10.     float total_vend[N_VENDEDORES];
  11.    
  12.     int num_vend_venta[N_VENTAS];
  13.     char nom_vend_venta[N_VENTAS][21];
  14.     float monto_venta[N_VENTAS];
  15.     int i,j,k;
  16.     char final;
  17.    
  18.     for(i=0; i<=(N_VENDEDORES-1); i++){
  19.         printf("Numero del vendedor: ");
  20.         scanf("%d", &num_del_vend);
  21.         printf("Nombre del vendedor: ");
  22.         scanf("%20s", nom_del_vend[i]);
  23.         total_vend[i]=0.0;    
  24.     }  
  25.     printf("\n\nVENTAS:\n ");
  26.     final = 'n';
  27.     i=0;
  28.     while((i<=(N_VENTAS-1))&&((final != 's') && (final != 'S'))) {
  29.         printf("Numero del vendedor: ");
  30.         scanf("%d", &num_vend_venta[i]);
  31.         printf("Nombre del vendedor: ");
  32.         scanf("%30s", nom_vend_venta[i]);
  33.         printf("Monto de la venta: ");
  34.         scanf("%f", &monto_venta[i]);
  35.         printf("¿Salir? (s/n)");
  36.         scanf("%1s", &final);
  37.         i++;
  38.     }
  39.     for(j=0; j<=(N_VENDEDORES-1); j++)
  40.         for(k=0; k<=(i-1); k++)
  41.            if(num_vend_venta[k]==num_del_vend[j])
  42.                total_vend[j]+=monto_venta[k];
  43.                
  44.     printf("%s %s %s\n", "NUMERO DEL VENDEDOR", "NOMBRE DEL VENDEDOR", "TOTAL DE VENTAS");
  45.        for(i=0; i<=(N_VENDEDORES-1); i++)
  46.           printf("\n\n%d     %s      %.2f\n",num_del_vend[i],nom_del_vend[i],total_vend[i]);
  47.          
  48.         getchar();
  49.         getchar();
  50. }

Cuando lo compilo no me suma las ventas de cada vendedor y además el número del vendedor no es correcto:

Numero del vendedor: 1
Nombre del vendedor: ana
Numero del vendedor: 2
Nombre del vendedor: carlos
Numero del vendedor: 3
Nombre del vendedor: tomas
Numero del vendedor: 4
Nombre del vendedor: pablo

VENTAS:
Número del vendedor: 1
Nombre del vendedor: ana
Monto de la venta: 45.12
¿Salir? (s/n) n
Número del vendedor: 1
Nombre del vendedor: ana
Monto de la venta: 10.12
¿Salir? (s/n) n
Número del vendedor: 2
Nombre del vendedor: carlos
Monto de la venta: 11.15
¿Salir? (s/n) n
Número del vendedor: 2
Nombre del vendedor: carlos
Monto de la venta: 85.32

NUMERO DEL VENDEDOR NOMBRE DEL VENDEDOR TOTAL DE VENTAS
4 ana 0.00
7812632 carlos 0.00
52 tomas 0.00
2130567168 pablo 0.00
  #3 (permalink)  
Antiguo 05/08/2010, 22:41
Avatar de gvite666  
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años, 7 meses
Puntos: 4
Respuesta: ejercicio de vectores

pues tu programa ya esta completo, solo hay que modificarle un error
Código C:
Ver original
  1. printf("Numero del vendedor: ");
  2.         scanf("%d", &num_del_vend[i]);//te faltaron los corchetes donde le indicas el numero del array
  #4 (permalink)  
Antiguo 06/08/2010, 05:04
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ejercicio de vectores

El número de vendedores va del 1 al 4, por qué cuenta desde i = 0; i<=(N_VENDEDORES-1); i++ ¿no lo entiendo? ¿No estaría bien también poner i=1; i<N_VENDEDORES; i++? Gracias.
  #5 (permalink)  
Antiguo 06/08/2010, 10:04
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: ejercicio de vectores

La variable del for estaba bien. Lo que te faltaban eran unos cochetes!! En la linea 20 de tu codigo!
  #6 (permalink)  
Antiguo 06/08/2010, 11:34
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ejercicio de vectores

En el primer for por qué usa la misma variable i para guardar el nombre del vendedor y no usa otra variable. Me hago lío con el bucle for externo que recorre la j y el bucle for interno que recorre la k, ¿podéis explicarme qué hace cada uno?. Gracias
  #7 (permalink)  
Antiguo 06/08/2010, 12:42
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: ejercicio de vectores

Veamos en el primer for se cagan los datos...
Código C++:
Ver original
  1. for(i=0; i<=(N_VENDEDORES-1); i++){
  2.         printf("Numero del vendedor: ");
  3.         scanf("%d", &num_del_vend);
  4.         printf("Nombre del vendedor: ");
  5.         scanf("%20s", nom_del_vend[i]);
  6.         total_vend[i]=0.0;    
  7.     }

Despues viene un while donde se cargan las ventas y la variable "i" lleva la cuenta de cuantas ventas se ingresan.

Código C++:
Ver original
  1. while((i<=(N_VENTAS-1))&&((final != 's') && (final != 'S'))) {
  2.         printf("Numero del vendedor: ");
  3.         scanf("%d", &num_vend_venta[i]);
  4.         printf("Nombre del vendedor: ");
  5.         scanf("%30s", nom_vend_venta[i]);
  6.         printf("Monto de la venta: ");
  7.         scanf("%f", &monto_venta[i]);
  8.         printf("¿Salir? (s/n)");
  9.         scanf("%1s", &final);
  10.         i++;
  11.     }

Luego por cada Vendedor se recorren todas las ventas y se busca cual venta esta ligada a ese vendedor. Y lo que se hace se suma el valor.

Código C++:
Ver original
  1. for(j=0; j<=(N_VENDEDORES-1); j++)  // Por cada vendedor
  2.         for(k=0; k<=(i-1); k++)  // me fijo en cada venta
  3.            if(num_vend_venta[k]==num_del_vend[j])  // si le pertenece
  4.                total_vend[j]+=monto_venta[k]; // la sumo a su total

Por ultimo se imprimen los valores.
  #8 (permalink)  
Antiguo 07/08/2010, 04:20
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ejercicio de vectores

En el bucle for interno con variable k: for(k=0; k<=(i-1); k++)
la segunda expresión k<=(i-1) ¿qué significa?. Gracias.
  #9 (permalink)  
Antiguo 07/08/2010, 08:03
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: ejercicio de vectores

Significa que que tiene que ser menor o igual a (i-1). Y esto es porque cuando ingresas la ultima compra se aumenta la variable i en uno y queda fuera de rango por un lugar. Acordate que empezamos a contar desde el 0 y que i siempre marca (en este ejercicio) la proxima posicion a almacenar.

Por lo tanto K tiene que ir desde 0 a i-1.

Etiquetas: vectores
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 04:05.