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

ventas mínimas mensuales y del año completo

Estas en el tema de ventas mínimas mensuales y del año completo en el foro de C/C++ en Foros del Web. Holaque , estoy con un ejercicio de vectores que no me sale. Dice así: Escribe un programa que genere un informe anual de ventas. Este ...
  #1 (permalink)  
Antiguo 09/08/2010, 10:25
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
ventas mínimas mensuales y del año completo

Holaque , estoy con un ejercicio de vectores que no me sale. Dice así: Escribe un programa que genere un informe anual de ventas. Este informe deberá señalar las ventas mínimas de cada mes y del año completo. De cada operación se guarda la siguiente información: total de la venta y el número del mes, donde cada mes se indica por un entero del 1 al 12. Estas operaciones se almacenan en dos vectores y el tamaño del vector se definirá como 100 aunque el número de operaciones podrá ser menor.

He intentado hacer la primera parte que es buscar la venta mínima de cada mes, pero cuando lo compilo me da error:
C:\Users\asus\Desktop\venta minima vectores.c In function `main':
33 C:\Users\asus\Desktop\venta minima vectores.c subscripted value is neither array nor pointer
34 C:\Users\asus\Desktop\venta minima vectores.c subscripted value is neither array nor pointer

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. #define N_VENTAS 100
  6. #define N_MESES 12
  7.  
  8. int main(){
  9.       float total_venta[N_VENTAS];
  10.       int mes[N_MESES];
  11.       int i,j;
  12.       char final;
  13.       int venta_menor;
  14.      
  15.       for(i=0; i<N_MESES; i++){
  16.            printf("Mes: ");
  17.            scanf("%d", &mes[i]);
  18.       }
  19.       final='n';
  20.       i=0;
  21.       while((i<N_VENTAS) && (final != 's') && (final != 'S')){
  22.             printf("Mes: ");
  23.             scanf("%d", &mes[i]);
  24.             printf("Valor de la venta: ");
  25.             scanf("%lf", &total_venta[i]);
  26.             printf("¿Salir? (s/n) ");
  27.             scanf("%1s", &final);
  28.             i++;
  29.       }
  30.       venta_menor=0;
  31.       for(i=0; i<N_MESES; i++)
  32.           for(j=1; j<N_VENTAS; j++)
  33.               if(total_venta[i]<venta_menor[j])
  34.                   printf("La venta menor del mes %d es: %.2lf\n", mes[i],venta_menor[i]);
  35. }
  #2 (permalink)  
Antiguo 09/08/2010, 10:41
 
Fecha de Ingreso: febrero-2007
Mensajes: 163
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

La variable venta_menor no es un array, deberias sacarle el [j]
  #3 (permalink)  
Antiguo 09/08/2010, 11:01
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

Si venta_menor no es un array, quito la j entre corchetes y ¿que pongo en su lugar?. Lo he modificado.

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. #define N_VENTAS 100
  6. #define N_MESES 12
  7.  
  8. int main(){
  9.       float total_venta[N_VENTAS];
  10.       int mes[N_MESES];
  11.       int i,j;
  12.       char final;
  13.       int venta_menor;
  14.      
  15.       for(i=0; i<N_MESES; i++){
  16.            printf("Mes: ");
  17.            scanf("%d", &mes[i]);
  18.       }
  19.       final='n';
  20.       i=0;
  21.       while((i<N_VENTAS) && (final != 's') && (final != 'S')){
  22.             printf("Mes: ");
  23.             scanf("%d", &mes[i]);
  24.             printf("Valor de la venta: ");
  25.             scanf("%lf", &total_venta[i]);
  26.             printf("¿Salir? (s/n) ");
  27.             scanf("%1s", &final);
  28.             i++;
  29.       }
  30.       venta_menor=0;
  31.       for(i=0; i<N_MESES; i++)
  32.           for(j=1; j<N_VENTAS; j++)
  33.               if(total_venta[i]<venta_menor)
  34.                   venta_menor=i;
  35.                   printf("La venta menor del mes %d es: %.2lf\n", mes[i],venta_menor[i]);
  36. }

Me da fallo: 35 C:\Users\asus\Desktop\venta minima vectores.c subscripted value is neither array nor pointer
  #4 (permalink)  
Antiguo 09/08/2010, 15:07
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: ventas mínimas mensuales y del año completo

Tienes el mismo errror en la linea 35. En el Printf.

Para que sepas: los "[]" corchetes solo se utilizan si tu variables es un array!!

Fiajte que el compilador de lo dice todo: en la linea 25 en el archivo vectores.c el valor no es ni un array ni un puntero.
  #5 (permalink)  
Antiguo 10/08/2010, 05:50
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

Me estoy haciendo un lío, ¿cómo lo puedo solucionar?
  #6 (permalink)  
Antiguo 10/08/2010, 13:05
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: ventas mínimas mensuales y del año completo

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. #define N_VENTAS 100
  6. #define N_MESES 12
  7.  
  8. int main(){
  9.       float total_venta[N_VENTAS];
  10.       int mes[N_MESES];
  11.       int i,j;
  12.       char final;
  13.       int venta_menor;
  14.      
  15.       for(i=0; i<N_MESES; i++){
  16.            printf("Mes: ");
  17.            scanf("%d", &mes[i]);
  18.       }
  19.       final='n';
  20.       i=0;
  21.       while((i<N_VENTAS) && (final != 's') && (final != 'S')){
  22.             printf("Mes: ");
  23.             scanf("%d", &mes[i]);
  24.             printf("Valor de la venta: ");
  25.             scanf("%lf", &total_venta[i]);
  26.             printf("¿Salir? (s/n) ");
  27.             scanf("%1s", &final);
  28.             i++;
  29.       }
  30.       venta_menor=0;
  31.       for(i=0; i<N_MESES; i++) {
  32.           for(j=1; j<N_VENTAS; j++)
  33.               if(total_venta[i]<total_venta[venta_menor])
  34.                   venta_menor=i;
  35.       printf("La venta menor del mes %d es: %.2lf\n", mes[i],total_venta[venta_menor]);
  36.      }
  37. }

Ahi creo que quedo como lo querias. Tenesj un problema con array e indices. Tendrias que repasar ese tema.
  #7 (permalink)  
Antiguo 11/08/2010, 10:24
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

He vuelto a modificar el ejercicio y lo que hago al compilar es esto: Introduzco los
números del 1 al 12, luego hago:

Mes: 1
Valor de la venta: 12.14
¿Salir? (s/n) n
Mes: 1
Valor de la venta: 45.12
¿Salir? (s/n) s

En este caso, hay dos ventas en el primer mes y lo que quiero es imprimir la venta mínima, pero como resultado me sale esto: La venta menor del mes 1 es: -0.00.
¿Por que razón no me sale la venta mínima?

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. #define N_VENTAS 100
  6. #define N_MESES 12
  7.  
  8. int main(){
  9.       float total_venta[N_VENTAS];
  10.       int mes[N_MESES];
  11.       int i,j;
  12.       int n_mes[N_VENTAS];
  13.       char final;
  14.       int venta_menor;
  15.      
  16.       for(i=0; i<N_MESES; i++){
  17.            printf("Mes: ");
  18.            scanf("%d", &mes[i]);
  19.       }
  20.       final='n';
  21.       j=0;
  22.       while((j<N_VENTAS) && (final != 's') && (final != 'S')){
  23.             printf("Mes: ");
  24.             scanf("%d", &n_mes[j]);
  25.             printf("Valor de la venta: ");
  26.             scanf("%lf", &total_venta[j]);
  27.             printf("¿Salir? (s/n) ");
  28.             scanf("%1s", &final);
  29.             j++;
  30.       }
  31.      
  32.       for(i=0; i<N_MESES; i++)
  33.           venta_menor=0;
  34.           for(j=1; j<N_VENTAS; j++)
  35.              if(mes[i]==n_mes[j]){
  36.               if(total_venta[i]<total_venta[venta_menor])
  37.                   venta_menor=i;}
  38.                   printf("La venta menor del mes %d es: %.2lf\n", mes[venta_menor],total_venta[venta_menor]);
  39.       getchar();
  40.       getchar();            
  41. }
  #8 (permalink)  
Antiguo 11/08/2010, 12:20
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: ventas mínimas mensuales y del año completo

Prueba inicializando todos los valores de los array a cero.

for(i=0; i<N_MESES; i++)
total_venta[i] = 0;

for(j=1; j<N_VENTAS; j++){
mes[j]=0;
n_mes[j]=0;
}

Otra cosas de tu codigo. en el for for(j=1; j<N_VENTAS; j++) la variable "j" no tiene que ir hasta N_VENTAS sino hasta el numero de ventas que ingresaste. Yo agregaria una variable extra k y pondria ese for de la siguinte manera:

for(k=1; k<j; k++) La j lleva el valor de los ingresos que hiciste.
Despues cambia los indices de los array. La j por la k.
  #9 (permalink)  
Antiguo 12/08/2010, 04:35
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

He hecho lo que me has dicho:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. #define N_VENTAS 100
  6. #define N_MESES 12
  7.  
  8. int main(){
  9.       float total_venta[N_VENTAS];
  10.       int mes[N_MESES];
  11.       int i,j,k;
  12.       int n_mes[N_VENTAS];
  13.       char final;
  14.       int venta_menor;
  15.      
  16.       for(i=0; i<N_MESES; i++){
  17.            printf("Mes: ");
  18.            scanf("%d", &mes[i]);
  19.            total_venta[i]=0.0;
  20.       }
  21.       final='n';
  22.       i=0;
  23.       while((i<N_VENTAS) && (final != 's') && (final != 'S')){
  24.             printf("Mes: ");
  25.             scanf("%d", &n_mes[i]);
  26.             printf("Valor de la venta: ");
  27.             scanf("%lf", &total_venta[i]);
  28.             printf("¿Salir? (s/n) ");
  29.             scanf("%1s", &final);
  30.             i++;
  31.       }
  32.      
  33.       for(j=0; j<N_MESES; j++)
  34.           venta_menor=0;
  35.           for(k=1; k<i; k++){
  36.                 mes[i]=0;
  37.                 n_mes[j]=0;
  38.              if(mes[i]==n_mes[j]){
  39.               if(total_venta[k]<total_venta[venta_menor])
  40.                   venta_menor=k;}
  41.         }      
  42.                   printf("La venta menor del mes %d es: %.2lf\n", mes[venta_menor],total_venta[venta_menor]);
  43.       getchar();
  44.       getchar();            
  45. }

Resulatdo de la compilación: La venta menor del mes 1 es: -0.00
  #10 (permalink)  
Antiguo 12/08/2010, 14:29
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: ventas mínimas mensuales y del año completo

Veo que no entendes muy bien la logicas de lo programas.
La idea es inicializar todo a 0 al principio del codigo, no en el pr¡imer for.

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. #define N_VENTAS 100
  6. #define N_MESES 12
  7.  
  8. int main(){
  9.       float total_venta[N_VENTAS];
  10.       int mes[N_MESES];
  11.       int i,j,k;
  12.       int n_mes[N_VENTAS];
  13.       char final;
  14.       int venta_menor;
  15.      
  16.       for(i=0; i<N_VENTAS; i++){
  17.                n_mes[i]=0;
  18.                total_venta[i]=0.0;
  19.       }
  20.  
  21.       for(i=0; i<N_MESES; i++){
  22.            printf("Mes: ");
  23.            scanf("%d", &mes[i]);
  24.            
  25.       }
  26.       final='n';
  27.       i=0;
  28.       while((i<N_VENTAS) && (final != 's') && (final != 'S')){
  29.             printf("Mes: ");
  30.             scanf("%d", &n_mes[i]);
  31.             printf("Valor de la venta: ");
  32.             scanf("%lf", &total_venta[i]);
  33.             printf("¿Salir? (s/n) ");
  34.             scanf("%1s", &final);
  35.             i++;
  36.       }
  37.      
  38.       for(j=0; j<N_MESES; j++)
  39.           venta_menor=0;
  40.           for(k=1; k<i; k++){
  41.              if(mes[i]==n_mes[j]){
  42.               if(total_venta[k]<total_venta[venta_menor])
  43.                   venta_menor=k;}
  44.         }      
  45.                   printf("La venta menor del mes %d es: %.2lf\n", mes[venta_menor],total_venta[venta_menor]);
  46.       getchar();
  47.       getchar();            
  48. }
  #11 (permalink)  
Antiguo 13/08/2010, 05:27
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

Lo he hecho tal y como me has mostrado, pero cuando al primer mes le pongo dos ventas me sale como resultado la venta menor del mes 1 es: 0.00. ¿Por qué no compara el número del mes y después recorre las ventas de dicho mes y las compara para sacar la venta menor?. No entiendo por qué no funciona.

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. #define N_VENTAS 100
  6. #define N_MESES 12
  7.  
  8. int main(){
  9.       float total_venta[N_VENTAS];
  10.       int mes[N_MESES];
  11.       int i,j,k;
  12.       int n_mes[N_VENTAS];
  13.       char final;
  14.       int venta_menor;
  15.      
  16.       for(i=0; i<N_MESES; i++){
  17.          n_mes[i]=0;  
  18.          total_venta[i]=0.0;
  19.       }
  20.      
  21.       for(i=0; i<N_MESES; i++){
  22.            printf("Mes: ");
  23.            scanf("%d", &mes[i]);
  24.       }
  25.       final='n';
  26.       i=0;
  27.       while((i<N_VENTAS) && (final != 's') && (final != 'S')){
  28.             printf("Mes: ");
  29.             scanf("%d", &n_mes[i]);
  30.             printf("Valor de la venta: ");
  31.             scanf("%lf", &total_venta[i]);
  32.             printf("¿Salir? (s/n) ");
  33.             scanf("%1s", &final);
  34.             i++;
  35.       }
  36.      
  37.       for(j=0; j<N_MESES; j++)
  38.           venta_menor=0;
  39.           for(k=1; k<i; k++){
  40.              if(mes[i]==n_mes[j]){
  41.               if(total_venta[k]<total_venta[venta_menor])
  42.                   venta_menor=k;}
  43.         }      
  44.                   printf("La venta menor del mes %d es: %.2lf\n", mes[venta_menor],total_venta[venta_menor]);
  45.       getchar();
  46.       getchar();            
  47. }
  #12 (permalink)  
Antiguo 14/08/2010, 05:43
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

Puesto que mi forma no funciona he recurrido a la solución del maestro:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define TAM 100
  5.  
  6. int main(){
  7.     int mes[TAM];
  8.     float venta[TAM];
  9.     float minimo[12];
  10.     int n;
  11.     char final;
  12.     int i,j;
  13.     float minimo_anual;
  14.     n=0;
  15.    
  16.     do{
  17.         printf("Mes: ");
  18.         scanf("%d", &mes[n]);
  19.         printf("Valor de la venta: ");
  20.         scanf("%lf", &venta[n]);
  21.         printf("n: ", n);
  22.         printf("Pulse 1 para finalizar.");
  23.         scanf("%d", &final);
  24.         n++;
  25.     }while((n<TAM) && (final != 1));
  26.     for(i=0; i<=11; i++)
  27.        minimo[i]=-1.0;
  28.     for(i=0; i<=1; i++)
  29.         for(j=0; j=(n-1); j++)
  30.            if((i+1)==mes[j])
  31.              if(minimo[i]==-1.0)
  32.                 minimo[i]=venta[j];
  33.              else
  34.                 if(venta[j]<minimo[i])
  35.                    minimo[i]=venta[j];
  36.                    
  37.     minimo_anual=minimo[0];
  38.     for(i=0; i<=11; i++){
  39.         printf("La venta minima es: %.2lf\n", minimo[i]);
  40.         if(minimo[i]<minimo_anual)
  41.            minimo_anual=minimo[i];
  42.     }
  43.     printf("La venta minima del año es: %.2lf.\n", minimo_anual);
  44.     getchar();
  45.     getchar();
  46. }

Cuando lo compilo la venta mínima de cada mes y la venta mínima anual me da
-1.00
  #13 (permalink)  
Antiguo 15/08/2010, 05:49
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

Contestadme, por favor.
  #14 (permalink)  
Antiguo 15/08/2010, 08:55
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: ventas mínimas mensuales y del año completo

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define TAM 100
  5.  
  6. int main ()
  7. {
  8.     int mes[TAM];
  9.     float venta[TAM];
  10.     float minimo[13];
  11.     int n = 0;
  12.     char final;
  13.     int i,j;
  14.     float minimo_anual;
  15.    
  16.     do{
  17.         printf("Mes: ");
  18.         scanf("%d", &mes[n]);
  19.         printf("Valor de la venta: ");
  20.         scanf("%f", &venta[n]);
  21.         printf("%d: Pulse 1 para finalizar ", n);
  22.         scanf("%d", &final);
  23.         n++;
  24.     }while((n<TAM) && (final != 1));
  25.    
  26.     for (i=1;i<=12;i++) minimo[i]= 989898.0;
  27.    
  28.     for (i=0;i<n;i++)
  29.         if (minimo[mes[i]] > venta[i])
  30.             minimo[mes[i]] = venta[i];
  31.    
  32.     for (i=1;i<=12;i++)
  33.         if (minimo[i] == 989898.0) printf("El mes %d no ocurrieron ventas \n",i);
  34.         else printf("La venta minima del mes %d fue %f\n",i,minimo[i]);
  35.        
  36.     return 0;
  37.    
  38.  
  39. }
  #15 (permalink)  
Antiguo 15/08/2010, 13:22
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

Lo he compilado, cuando introduzco dos ventas en el primer mes y la primera es menor que la segunda me imprime la venta mínima que es lo que quiero, pero cuando la primera venta es mayor que la segunda me imprime la venta mayor en lugar de imprimir la menor. He intentado corregirlo, pero no me sale.
  #16 (permalink)  
Antiguo 15/08/2010, 17:12
Avatar de gvite666  
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años, 7 meses
Puntos: 4
Respuesta: ventas mínimas mensuales y del año completo

pues haber que te parece esto:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define VENTA 100
  5. #define MES 12
  6. int main ()
  7. {
  8.     int mes;
  9.     float venta[MES][VENTA];/*variable que lleva las ventas de cada mes*/
  10.                            
  11.     int numVenta[MES];/*lleva el numero de ventas realizadas cada mes*/
  12.     float ventaMenor[MES];/*variable que lleva la venta menor de cada mes */
  13.     float ventaMenorAnio;/*variable para la asignacion de la venta menor*/
  14.     char final;
  15.     int i,j;
  16.  
  17.     final='n';
  18.     i=0;
  19.     for(i=0;i<MES;i++)//inicializamos valores de nuestros vectores
  20.     {
  21.         numVenta[i]=0;
  22.         ventaMenor[i]=0;
  23.     }
  24.     while((final != 's') && (final != 'S'))
  25.     {
  26.         printf("Mes: ");
  27.         scanf("%d", &mes);
  28.         if(mes>0&&mes<13)//nos aseguramos que el mes es valido
  29.         {
  30.             mes--;/*disminuimos un valor el mes ya que en
  31.             nuestro arreglo empieza desde el 0 y no desde el 1*/
  32.             printf("Valor de la venta: ");
  33.             scanf("%f", &venta[mes][numVenta[mes]]);
  34.             /*
  35.             depende de que mes ingresen la venta se va a almacenar en
  36.             su respactiva variable, por ejemplo: si la primera vez si
  37.             ingresamos mes = 1, y venta =45, entonces se almacena en
  38.             venta[0][0] ya que numVenta a sido inicializado a 0  y asi
  39.             sucesibamente
  40.             */
  41.             printf("¿Salir? (s/n) ");
  42.             scanf("%1s", &final);
  43.             numVenta[mes]++;
  44.             /*incrementamos el numero de ventas para que la proxima vez
  45.             que ingresemos una venta sea(siguiendo el ejemplo anterior)
  46.             venta[0][1]*/
  47.         }
  48.         else
  49.             printf("Ingrese un mes valido\n");
  50.     }
  51.     for(i=0;i<MES;i++)//este for sirve para sacar la menor venta de cada mes
  52.     {
  53.         if(numVenta[i]!=0)/*en caso de que sea 0 es porque no hay ventas
  54.             entonces tenemos que acegurarno de que ese mes tenga ventas */
  55.             ventaMenor[i]=venta[i][0];//asi ponemos el primer valor en la venta
  56.                                     //menor
  57.         for(j=0;j<numVenta[i];j++)
  58.         {
  59.             if(ventaMenor[i]>venta[i][j])//comparamos nuestra ventas con cada venta del mes
  60.                 ventaMenor[i]=venta[i][j];
  61.         }      
  62.     }
  63.     j=0;
  64.     i=-1;
  65.     /*el while se usa una vez que tenemos todas nuestras ventas menores
  66.     de cada mes, asi buscamos el primer mes en tener ventas para "inicializar"
  67.     nuestra variable de la venta del año*/
  68.     while(i!=0)
  69.     {
  70.         if(ventaMenor[j]!=0)
  71.         {
  72.             ventaMenorAnio=ventaMenor[j];
  73.             i=0;
  74.         }
  75.         else
  76.             j++;
  77.     }
  78.     for(i=j;i<MES;i++)/*una vez obtenida nuestra primer venta minima
  79.         la comparamos con la de los demas meses que tienen ventas*/
  80.     {
  81.         if(ventaMenor[i]!=0)
  82.             if(ventaMenorAnio>ventaMenor[i])
  83.                 ventaMenorAnio=ventaMenor[i];
  84.     }
  85.    
  86.     for(i=0;i<MES;i++)//imprimimos todos nuestros datos.
  87.     {
  88.         if(ventaMenor[i]==0)
  89.             printf("Mes %i no hubo ventas\n",i+1);
  90.         else
  91.             printf("Venta Minima de Mes %i: %f\n",i+1,ventaMenor[i]);
  92.     }
  93.     printf("\n La venta minima del anio fue de: %f",ventaMenorAnio);
  94.     return 0;
  95. }
Saludos.
  #17 (permalink)  
Antiguo 16/08/2010, 03:49
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

Muchas gracias, lo he compilado y funciona correctamente.
  #18 (permalink)  
Antiguo 16/08/2010, 13:35
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

¿Puedes mostrarme cómo se almacenaría gráficamente los meses y las ventas de cada uno?. He intentado hacerlo, pero no me aclaro. Gracias.
  #19 (permalink)  
Antiguo 16/08/2010, 22:33
Avatar de gvite666  
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años, 7 meses
Puntos: 4
Respuesta: ventas mínimas mensuales y del año completo

claro mira haz de cuenta que tienes tu matriz asi:

1 2 3 4 5 6 7 8 9 10 11 12 mes
1 _ _ _ _ _ _ _ _ _ _ _ _
2 _ _ _ _ _ _ _ _ _ _ _ _
3 _ _ _ _ _ _ _ _ _ _ _ _
4 _ _ _ _ _ _ _ _ _ _ _ _ ventas
.
.
.
100 _ _ _ _ _ _ _ _ _ _ _ _

por ejemplo ingresas un dato: mes=1 venta = 5, entonces ese dato va a
1 2 3 4 5 6 7 8 9 10 11 12 mes
1 5 _ _ _ _ _ _ _ _ _ _ _
2 _ _ _ _ _ _ _ _ _ _ _ _
3 _ _ _ _ _ _ _ _ _ _ _ _
4 _ _ _ _ _ _ _ _ _ _ _ _ ventas
.
.
.
100 _ _ _ _ _ _ _ _ _ _ _ _

luego ingresas mes=1 venta=8:
1 2 3 4 5 6 7 8 9 10 11 12 mes
1 5 _ _ _ _ _ _ _ _ _ _ _
2 8 _ _ _ _ _ _ _ _ _ _ _
3 _ _ _ _ _ _ _ _ _ _ _ _
4 _ _ _ _ _ _ _ _ _ _ _ _ ventas
.
.
.
100 _ _ _ _ _ _ _ _ _ _ _ _

y luego mes=8 y venta=7
1 2 3 4 5 6 7 8 9 10 11 12 mes

1 5 _ _ _ _ _ _ 7 _ _ _ _
2 8 _ _ _ _ _ _ _ _ _ _ _
3 _ _ _ _ _ _ _ _ _ _ _ _
4 _ _ _ _ _ _ _ _ _ _ _ _ ventas
.
.
.
100 _ _ _ _ _ _ _ _ _ _ _ _

y asi se van llenando los espacios, bueno es como se veria graficamente. Ya que logicamente es una matriz
y se almacenarian: el primero en venta[0][0] luego venta[0][1] despues venta[7][0] y asi sucesivamente.
solo recuerda que si hablamos de matrices tenemos que tener en cuenta que sus elementos empiezan desde 0 y no desde uno como se podria pensar, asi que si el usuario ingresa el mes de uno nosotros como programadores tenemos la tarea de organizar nuestros datos para que el comienzo sea desde cero y no desde uno.
Fue la manera que encontre mas grafica, ya que por este medio no se me ocurrio otro. Espero te halla quedado mas claro. sino dimelo para ver de que otra forma te lo explico.
Saludos.
  #20 (permalink)  
Antiguo 17/08/2010, 11:17
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

¿Los meses no irían en vertical y las ventas en horizontal?, ya que la variable que guarda las ventas de cada mes la hemos declarado de la siguiente forma: float venta[MES][VENTA]. MES son las filas y VENTA las columnas.
  #21 (permalink)  
Antiguo 17/08/2010, 11:26
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

¿Los meses no irían en vertical y las ventas en horizontal?, ya que la variable que guarda las ventas de cada mes la hemos declarado de la siguiente forma: float venta[MES][VENTA]. MES son las filas y VENTA las columnas. Si guardamos mas de una venta en el mismo mes ¿cómo se almacena gráficamente. El numero de ventas de cada mes va desde 0 hasta n-1 ¿no?.
  #22 (permalink)  
Antiguo 17/08/2010, 22:24
Avatar de gvite666  
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años, 7 meses
Puntos: 4
Respuesta: ventas mínimas mensuales y del año completo

Pues viendolo mejor tienes razon y recuerda que cuando declaras un arreglo le indicas el numero de "variables" que quieres, pero éstas empiezan desde la posicion 0 hasta n-1 como lo indicaste. asi que el numero de ventas es dependiente del mes que tenga, osea cada mes puede almacennar 100 ventas como maximo (en nuestro programa) y esto nos dara un total de 1200 ventas, que son el numero de variables declaradas (la ventaja de los arreglos, que puedes tener tantas variables como quieras sin tener que declararlas una por una).

ejemplo, solo te pongo un mes ya que seria muy extenso poner todos:
(Enero(0), venta1 (0)),(Enero (0), venta2(1)),( Enero (0), venta3(2)), (Enero(0), venta4(3)),...,(Enero (0), venta100(99)).

en la variable en si seria:
venta[0][0]que representa el mes uno y la venta uno
venta[0][1]mes uno venta2
venta[0][2]mes uno venta3
venta[0][3]mes uno venta4
.
.
.
venta[0][99]mes uno venta100

asi todos los meses tendrian una variable que se llama "venta1", pero no son la misma ya que al buscar la variable la buscas como "mes n y venta 1" y no solo como "venta1".
Saludos.
  #23 (permalink)  
Antiguo 18/08/2010, 05:39
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

La siguiente sentencia if (mes > 0) && (mes < 13) significa que el número que introduzcamos tiene que ser desde el 1 hasta el 12, hasta ahí lo entiendo, pero luego mes -- no haría falta ponerlo ¿no? si más arriba está el for(i=0; i<MES; i++). No entiendo por qué hay que disminuir el mes.
  #24 (permalink)  
Antiguo 18/08/2010, 08:37
Avatar de gvite666  
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años, 7 meses
Puntos: 4
Respuesta: ventas mínimas mensuales y del año completo

Nop mira el primer for es muy aparte del demas, solo es para que nuestras variables no tengan basura por asi decirlo, ya que al final preguntamos si ventamenor[n]=0 y como no sabemos si todos los meses tendran ventas, entonces tenemos inicializarlas en algo al igual que numventas[n].

Con respecto a la disminucion del mes, cuando declaras un arreglo lo haces asi arr[3] y si lo observas uno por uno sria asi arr[0],arr[1],arr[2], son tus tres variables que pediste, pero para poder ingresar a ellos es desde 0 hasta 2, no mas si tu pones arr[3] te marca un error ya que estas intentando ingresar a una variable que ni existe. Dicho lo anterior.Uno como programador tiene que ver la logica tanto del lenguaje del compilador como el lenjuaje humano, nosotros estamos acostumbrados a iniciar las cuentas desde 1 (Enero=1,Febrero=2,..,diciembre=12) y pues esto nos causa un doble razonamiento en cuanto a los arreglos ya q como t lo vuelvo a repetir sus cuentas empiezan desde 0(Enero=0,Febrero=1,..,diciembre=11), asi si el usuario ingrsa un mes, nosotros los programadores tenemos la tarea de meter el dato en la variable correcta.
si ingresa mes=1 quiere decir que es enero, pero nosotros la tenemos que meter en mes=0 ya que esa es la posicion del arreglo. por eso se le tiene que disminuir uno.
  #25 (permalink)  
Antiguo 18/08/2010, 11:38
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

Cuando introducimos el valor de la venta, scanf("%f", &venta[mes][numVenta[mes]]¿por qué dentro de los corchetes la palabra mes va en minúsculas en lugar de mayúsculas tal y como está en el define si de lo que se trata es de indicar la posición en la que se encuentra el mes y el número de la venta ¿no?.
  #26 (permalink)  
Antiguo 18/08/2010, 22:07
Avatar de gvite666  
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años, 7 meses
Puntos: 4
Respuesta: ventas mínimas mensuales y del año completo

hee nop, si te das cuenta "MES" y "mes" son muy diferentes, uno esta declarado en un #define(macro) y el otro es un int (variable entera) respectivamente, creo que debi cambiar el nombre de la variable para que no te confundas, pero espero te quede mas claro.
  #27 (permalink)  
Antiguo 19/08/2010, 04:26
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ventas mínimas mensuales y del año completo

Perdona, pero es que las explicaciones que me das me confunden todavía más. Vamos paso por paso:

1 Cuando disminuimos el valor del mes, disminuye en uno el número del mes que hemos introducido por teclado ¿no? ¿lo hace por orden, es decir, desde el primero hasta el último? Esta disminución se hace para obtener la posición en la que se encuentra el número de cada mes?


2 scanf("%f", &venta[mes][numVenta[mes]]); Aquí, al lado de la variable venta, ¿por que usamos la variable mes si es el número que le corresponde a cada mes(1,2,3, etc) en lugar de utilizar MES que está definido en la macro y que nosa indica la posición. Al lado de numVenta ¿por qué se usa la misma variable y por qué antes de la variable numVentay después de la variable mes hay corchetes?

3 Para pasar al siguiente elemento de la matriz, ¿por qué usa la variable numVenta y entre corchetes la variable mes?

Lo que me confunde es que al declarar las variables usemos MES y VENTA, ambas definidas en la macro y que luego a lo largo del programa no las volvamos a usar. Deben usarse ¿no?, son útiles para el funcionamiento del programa.

Ya sé que me he extendido, perdonad.
  #28 (permalink)  
Antiguo 19/08/2010, 05:13
 
Fecha de Ingreso: julio-2010
Mensajes: 153
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: ventas mínimas mensuales y del año completo

no vi con mucho detenimiento el código, lo que te puedo decir es:
MES Y VENTA solo es para poder cambiar el tamaño del array de una manera mas fácil, la variable mes es donde queda almacenado el mes que introduces por el teclado

y que te leas un buen libro.
  #29 (permalink)  
Antiguo 19/08/2010, 20:12
Avatar de gvite666  
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años, 7 meses
Puntos: 4
Respuesta: ventas mínimas mensuales y del año completo

hola minette1988 ya que veo que asi no abansamos mucho, que te parece si me agregas al msg y asi poder explicar mas rapido una cosa. Bueno si te parece mi msg es [email protected].
__________________
No pienses si no vas a actuar.

Etiquetas: año, completo, ventas
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 12:25.