Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: KIDRAP1 en 14 Julio 2013, 18:39 pm



Título: Pregunta programa en c
Publicado por: KIDRAP1 en 14 Julio 2013, 18:39 pm
Hola amigos mi pregunta es la siguiente, tengo 4 vendedores de los cuales debo guardar uno por uno, nombre, numero de ventas, codigo y descripcion y motrarlo por pantalla y mostrar las ventas totales de todos los vendedores, pero al final debo mostrar cual vendedor tiene el record de haber vendido mas articulos y en eso es que tengo el problema por favor ayudenme a solucionarlo se los agradezco, aqui les dejo lo que eh hecho. 
Código:
#include <stdio.h>
#include <stdlib.h>
char codigo1[106];
char nom1[50];
char d1[100];
int n1;
int c1,acumulador;
int main()
{
for(c1=1;c1<=4;c1++){
printf("                      Editorial vida - Gestion de ventas\n\n\n");
printf("                          Ingrese datos de   vendedor\n\n");
printf("\nIngrese nombre de vendedor  ");
scanf("%s",&nom1);

printf("\nIngrese cantidad de productos ");
scanf("%d",&n1);

printf("\n\nIngrese codigo de producto ");
scanf("%s",&codigo1);
printf("\nIngrese descripcion del producto\n\n ");
scanf("%s",&d1);
acumulador=n1+acumulador;
getchar();
system ("cls");

printf("                           Informe de articulos vendidos\n\n\n\n");
printf("Vendedor: %s     Articulos vendidos:%d Codigo: %s\n\n",nom1,n1,codigo1);
printf("Descripcion de productos\n\n%s\n\n\n\n",d1);

printf("Total de artículos vendidos: %d\n\n",acumulador);
system("pause");
system("cls");
}
if(



 
  system("PAUSE");
  return 0;
}
[code=c][code=c]
[/code][/code]


Título: Re: Pregunta programa en c
Publicado por: αиσиyмσυรCร en 14 Julio 2013, 19:36 pm
Yo ando aprendiendo C poco a poco pero creo que puedes resolver tu duda haciendo las variables de los 4 vendedores ejemplo: w, x, y, z y compararlas al final de tal forma que hacemos una variable para compararlos opino que asi:

Código:
int mayor;

if ((w>x)&&(w>y)&&(w>z)
   mayor=w;
else if ((x>y)&&(x>z))
     mayor=x;
     else if (y>z)
           mayor=y;
           else mayor=z;

Espero haberte sido de ayuda y que te salga el programa :)

Un saludo αиσиyмσυรCร


Título: Re: Pregunta programa en c
Publicado por: Caster en 14 Julio 2013, 19:45 pm
Lo mejor sería que hicieras un programa para guardar todos los datos sobre todos los vendedores, y al final los comparases.

Saludos


Título: Re: Pregunta programa en c
Publicado por: αиσиyмσυรCร en 14 Julio 2013, 23:26 pm
Lo mejor sería que hicieras un programa para guardar todos los datos sobre todos los vendedores, y al final los comparases.

Saludos

A eso me refería yo :P le puse un ejemplo mas o menos


Título: Re: Pregunta programa en c
Publicado por: crksergio en 15 Julio 2013, 02:10 am
Debes hacer un ciclo de comparación empezando por una variable que tenga un valor como 0 (si es que deseas ver quién vendió más) y también tener una variable auxliar para poder hacer el cambio sin perder los datos, para poder hacer algo como lo siguiente.

Código:
int NumVend[4]; //Este es el vector para guardar la ventas de tus 4 vendedores.
int VendMayor=0,VendAux; //VendMayor es donde va a quedar el valor de quién haya vendido más y VendAux es para poder dejar un dato estacionariamente sin perderlo al reescribir las variables.

for(i=0;i<4;i++)
{
 if(NumVend>VendMayor)
 {
  VendAux=VendMayor;
  VendMayor=NumVend[i];
  NumVend[i]=VendAux;
  }
}

De esta manera, en la variable VendMayor queda el valor de quién vendió más.

Espero te sirva, eso fue lo que yo entendí al leer tu problema. Saludos.


Título: Re: Pregunta programa en c
Publicado por: Miky Gonzalez en 15 Julio 2013, 11:18 am
Puedes, para practicar, hacer una función para comparar 4 números y retornar el mayor:

Código
  1. int retornar_mayor(int a, int b, int c, int d) {
  2.    if((a > b) && (a > c) && (a > d)
  3.        return a;
  4.    else if((b > c) && (b > d))
  5.        return b;
  6.    else if(c > d)
  7.        return c;
  8.    else
  9.        return d;
  10. }
  11.  

Si quieres practicar con el preprocesador de C, puedes hacer que en vez de función sea una directiva. Esto lo puedes hacer como:

Código
  1. #define COMPARAR(a, b, c, d) if((a > b) && (a > c) && (a > d) printf("%d", a); \
  2.     else if((b > c) && (b > d)) printf("%d", b); \
  3.     else if(c > d) printf("%d", c); \
  4.     else printf("%d", d);

Para llamar a esta función es muy sencillo; Por ejemplo, podrías hacer:

Código
  1. retornar_mayor(vend_1, vend_2, vend_3, vend_4);

Esto te retornará el valor mayor de todos los vendedores, pero no te dirá cuál es. Puede modificar la función para que te retorne una matriz con el nombre del vendedor y su valor:

Código
  1. char** lista; // char lista[][];
  2. lista[][] = {{"VENDEDOR", "50"}}; // Un ejemplo en bruto

Para retornar una matriz (sea de la dimensión que sea) debes retornar un puntero hacia la matriz.


Título: Re: Pregunta programa en c
Publicado por: aguml en 15 Julio 2013, 11:30 am
yo no lo habria planteado asi, habria creado un array de 4 estructuras (una por vendedor) y así habria quedado mas ordenado a mi entender.
Luego lo que yo haría tras cada venta sería ordenar el array por el valor de las ventas y así tendria un ranking desde el mejor vendedor al peor y podria consultarlo cuando quisiera.


Título: Re: Pregunta programa en c
Publicado por: Miky Gonzalez en 15 Julio 2013, 14:51 pm
A mi, el programa, a mi entender, podría quedar algo como lo que sigue. Sería una muy buena forma de implementarlo y trabajar con punteros y demás, que es lo que más suele costar al principio:

Citar
Hola amigos mi pregunta es la siguiente, tengo 4 vendedores de los cuales debo guardar uno por uno, nombre, numero de ventas, codigo y descripcion y motrarlo por pantalla y mostrar las ventas totales de todos los vendedores, pero al final debo mostrar cual vendedor tiene el record de haber vendido mas articulos y en eso es que tengo el problema por favor ayudenme a solucionarlo se los agradezco, aqui les dejo lo que eh hecho. 

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define NUM_VENDEDORES 4
  5.  
  6. typedef struct vendedores {
  7.    char *nombre;
  8.    unsigned int numero_ventas;
  9.    unsigned int codigo;
  10.    char *descripcion; // 255chr + \0
  11. } vendedores_t;
  12.  
  13. int main(int argc, char **argv) {
  14.    vendedores_t *vendedor = malloc(sizeof(vendedores_t) * 4);
  15.    unsigned int bucle_i = 0;
  16.  
  17.    while(bucle_i < 4) {
  18. printf("Ingrese los datos para vendedor %d (nombre - ventas - codigo - desc): ", bucle_i + 1);
  19. scanf("%s %i %i %s", vendedor[bucle_i].nombre, &vendedor[bucle_i].numero_ventas, &vendedor[bucle_i].codigo, vendedor[bucle_i].descripcion);


Título: Re: Pregunta programa en c
Publicado por: crksergio en 15 Julio 2013, 15:51 pm
Aquí ya tienes muchas soluciones. Yo creo que te queda buscar la que más se adecue a tu problema y que consuma menos memoria, obvio.


Título: Re: Pregunta programa en c
Publicado por: amchacon en 15 Julio 2013, 15:53 pm
Miky, te has liado con las llaves  :silbar:


Título: Re: Pregunta programa en c
Publicado por: 0xDani en 15 Julio 2013, 15:58 pm
@Miky Gonzalez, y no sólo con las llaves, sino también con los punteros. Fíjate que reservas un array de cuatro estructuras, pero no reservas espacio para los miembros nombre y descripción de cada array. Luego intentas llenarlos con scanf.