Pregunta programa en c

Iniciado por KIDRAP1, 14 Julio 2013, 18:39 PM

0 Miembros y 2 Visitantes están viendo este tema.

KIDRAP1

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.  #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]

αиσиyмσυรCร

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:


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ร

Caster

Lo mejor sería que hicieras un programa para guardar todos los datos sobre todos los vendedores, y al final los comparases.

Saludos

αиσиyмσυรCร

Cita de: 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

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

crksergio

#4
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.


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.

Miky Gonzalez

#5
Puedes, para practicar, hacer una función para comparar 4 números y retornar el mayor:

int retornar_mayor(int a, int b, int c, int d) {
   if((a > b) && (a > c) && (a > d)
       return a;
   else if((b > c) && (b > d))
       return b;
   else if(c > d)
       return c;
   else
       return d;
}


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

#define COMPARAR(a, b, c, d) if((a > b) && (a > c) && (a > d) printf("%d", a); \
    else if((b > c) && (b > d)) printf("%d", b); \
    else if(c > d) printf("%d", c); \
    else printf("%d", d);


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

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:

char** lista; // char lista[][];
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.
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:

EN CONSTRUCCIÓN

aguml

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.

Miky Gonzalez

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:

CitarHola 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. 

#include <stdio.h>
#include <stdlib.h>

#define NUM_VENDEDORES 4

typedef struct vendedores {
    char *nombre;
    unsigned int numero_ventas;
    unsigned int codigo;
    char *descripcion; // 255chr + \0
} vendedores_t;

int main(int argc, char **argv) {
    vendedores_t *vendedor = malloc(sizeof(vendedores_t) * 4);
    unsigned int bucle_i = 0;
   
    while(bucle_i < 4) {
printf("Ingrese los datos para vendedor %d (nombre - ventas - codigo - desc): ", bucle_i + 1);
scanf("%s %i %i %s", vendedor[bucle_i].nombre, &vendedor[bucle_i].numero_ventas, &vendedor[bucle_i].codigo, vendedor[bucle_i].descripcion);
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:

EN CONSTRUCCIÓN

crksergio

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.

amchacon

Miky, te has liado con las llaves  :silbar:
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar