Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: kuhi en Abril 10, 2017, 10:56:06 AM

Título: [SOLUCIONADO] Ayuda ejercicio C
Publicado por: kuhi en Abril 10, 2017, 10:56:06 AM
Hola! Llevo casi 2 meses esperando ayuda de mi profesor y la verdad ya he tirado la toalla, me responde a las 2 semanas y encima me devuelve el ejercicio "corregido" lo pruebo y tiene el mismo error que el original, ahora sigo esperando y sin respuesta.
Os dejo el código, con su explicación.
/* Crear un programa llamado vendedores que cree un array de 18 X 10 indicando
que poseemos una empresa de 18 vendedores cada uno de los cuales vende 10
productos.
El array almacena los ingresos obtenidos por cada vendedor en cada producto, de
modo que un menú permite almacenar los ingresos, revisar el total de cada
vendedor y obtener los ingresos totales */

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

int vendedores[18][10], producto;
void almacenar_ingresos();
void revisar_total();
void total_total();
int menu();
int nvendedor, nproducto, ventas;
int suma, resp, i, j;
char oacute = 162, euro = 8364, eacute = 130;


void main()
{
resp=menu();
while(resp!=4)
{
  switch(resp)
  {
   case 1:
    almacenar_ingresos();
    break;
   case 2:
    revisar_total();
    break;
   case 3:
    total_total();
    break;
  }
  resp=menu();
}
}

int menu()
{
printf("Seleccione una opci%cn:\n\n",oacute);
printf("[1] Almacenar ingresos de cada vendedor.\n");
printf("[2] Revisar el total de cada vendedor.\n");
printf("[3] Obtener los ingresos totales.\n");
printf("[4] Salir.\n\n");
scanf("%i",&resp);
}

void almacenar_ingresos()
{
system("cls");
printf("Ha seleccionado: almacenar ingresos de cada vendedor.\n\n");

printf("Introduzca numero de vendedor: \n");
scanf("%i",&nvendedor);
printf("Introduzca numero de producto: \n");
scanf("%i",&nproducto);
printf("Cantidad vendida: \n");
scanf("%i",&ventas);

vendedores[nvendedor][nproducto]=ventas;

printf("Se han actualizado los valores con %sxito.\n\n",eacute);
}

void revisar_total()

system("cls");
printf("Ha seleccionado: revisar el total de cada vendedor.\n\n");

printf("Introduzca el numero de vendedor: \n");
scanf("%i",&nvendedor);
suma=0;
 
for(i=0;i<10;i++)
{
  suma = suma+vendedores[nvendedor][i];
}

printf("El total del vendedor %i es: %i%s",nvendedor,suma,euro);
}

void total_total()
{
system("cls");
printf("Ha seleccionado: obtener los ingresos totales.\n\n");
suma=0;

for(i=0;i<nvendedor;i++)
{
  for(j=0;j<nproducto;j++)
  {
   suma = suma + vendedores[i][j];
  }
}

printf("La cantidad total es de: %i%s",suma,euro);
}
Título: Re:Ayuda ejercicio C
Publicado por: rollth en Abril 10, 2017, 12:10:36 PM
Si dices el error que tienes pues sería más fácil ayudarte, si no tenemos que compilar el código y buscarlo nosotros, y dudo que nadie haga eso.

Saludos.
Título: Re:Ayuda ejercicio C
Publicado por: kuhi en Abril 10, 2017, 01:19:11 PM
Precisamente pido ayuda porque no se donde está el error.  :'(
Cada vez que se cumple y acaba un switch se cierra el programa, como cuando tienes un bucle sin fin.
O almenos eso creo que pasa.
Título: Re:Ayuda ejercicio C
Publicado por: elinsoluble en Abril 10, 2017, 04:32:26 PM
void menu()
{
printf("Seleccione una opci%cn:\n\n",oacute);
printf("[1] Almacenar ingresos de cada vendedor.\n");
printf("[2] Revisar el total de cada vendedor.\n");
printf("[3] Obtener los ingresos totales.\n");
printf("[4] Salir.\n\n");
scanf("%i",&resp);
}


tendria que ser un void la funcion ya que no devuelve nada.

Y en el main solo llama asi

menu();

Proba si funciona
Título: Re:Ayuda ejercicio C
Publicado por: kuhi en Abril 12, 2017, 10:05:33 AM
Nada, lo he intentado y sigo teniendo el mismo problema.
Cuando intento almacenar los ingresos de un vendedor, se crashea.
Por ejemplo:
1. Abro el programa y selecciono la opción 1 del menú que es Almacenar ingresos de cada vendedor.
2. Entro en la opción de Almacenar ingresos y introduzco el numero de vendedor 1.
3. El programa solicita el numero de producto y le digo el 1.
4. El programa solicita el dinero obtenido de ese producto, lo introduzco y crash.

Con lo que he ido actualizando, el código ahora es así:
/* Crear un programa llamado vendedores que cree un array de 18 X 10 indicando
que poseemos una empresa de 18 vendedores cada uno de los cuales vende 10
productos.
El array almacena los ingresos obtenidos por cada vendedor en cada producto, de
modo que un menú permite almacenar los ingresos, revisar el total de cada
vendedor y obtener los ingresos totales */

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

int vendedores[18][10], producto;
void almacenar_ingresos();
void revisar_total();
void total_total();
int menu();
int nvendedor, nproducto, ventas;
int suma, resp, i, j;
char oacute = 162, eacute = 130;


int main()
{
menu();
while(resp!=4)
{
switch(resp)
{
case 1:
almacenar_ingresos();
break;
case 2:
revisar_total();
break;
case 3:
total_total();
break;
}
menu();
}
}

int menu()
{
printf("Seleccione una opci%cn:\n\n",oacute);
printf("[1] Almacenar ingresos de cada vendedor.\n");
printf("[2] Revisar el total de cada vendedor.\n");
printf("[3] Obtener los ingresos totales.\n");
printf("[4] Salir.\n\n");
scanf("%i",&resp);
return resp;
}

void almacenar_ingresos()
{
system("cls");
printf("Ha seleccionado: almacenar ingresos de cada vendedor.\n\n");

printf("Introduzca numero de vendedor: \n");
scanf("%i",&nvendedor);
printf("Introduzca numero de producto: \n");
scanf("%i",&nproducto);
printf("Cantidad vendida: \n");
scanf("%i",&ventas);

vendedores[nvendedor][nproducto]=ventas;

printf("Se han actualizado los valores con %sxito.\n\n",eacute);
}

void revisar_total()
{
system("cls");
printf("Ha seleccionado: revisar el total de cada vendedor.\n\n");

printf("Introduzca el numero de vendedor: \n");
scanf("%i",&nvendedor);
suma=0;

for(i=0;i<10;i++)
{
suma = suma+vendedores[nvendedor][i];
}

printf("El total del vendedor %i es: %i euros.",nvendedor,suma);
}

void total_total()
{
system("cls");
printf("Ha seleccionado: obtener los ingresos totales.\n\n");
suma=0;

for(i=0;i<18;i++)
{
for(j=0;j<10;j++)
{
suma = suma + vendedores[i][j];
}
}

printf("La cantidad total es de: %i euros.",suma);
}
Título: Re:Ayuda ejercicio C
Publicado por: rollth en Abril 12, 2017, 11:33:42 AM
Buenas pues aquí lo tienes arreglado.

/* Crear un programa llamado vendedores que cree un array de 18 X 10 indicando
que poseemos una empresa de 18 vendedores cada uno de los cuales vende 10
productos.
El array almacena los ingresos obtenidos por cada vendedor en cada producto, de
modo que un menú permite almacenar los ingresos, revisar el total de cada
vendedor y obtener los ingresos totales */

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

int vendedores[18][10], producto;
void almacenar_ingresos();
void revisar_total();
void total_total();
int menu();
int nvendedor, nproducto, ventas;
int suma, resp, i, j;
char oacute = 162, euro = 8364, eacute = 130;


void main()
{
resp=menu();
while(resp!=4)
{
  switch(resp)
  {
   case 1:
    almacenar_ingresos();
    break;
   case 2:
    revisar_total();
    break;
   case 3:
    total_total();
    break;
  }
  resp=menu();
}
}

int menu()
{
printf("Seleccione una opci%cn:\n\n",oacute);
printf("[1] Almacenar ingresos de cada vendedor.\n");
printf("[2] Revisar el total de cada vendedor.\n");
printf("[3] Obtener los ingresos totales.\n");
printf("[4] Salir.\n\n");
scanf("%i",&resp);
return resp;
}

void almacenar_ingresos()
{
system("cls");
printf("Ha seleccionado: almacenar ingresos de cada vendedor.\n\n");

printf("Introduzca numero de vendedor: \n");
scanf("%i",&nvendedor);
printf("Introduzca numero de producto: \n");
scanf("%i",&nproducto);
printf("Cantidad vendida: \n");
scanf("%i",&ventas);

vendedores[nvendedor][nproducto] = ventas;

printf("Se han actualizado los valores con %cxito.\n\n",eacute);
}

void revisar_total()

system("cls");
printf("Ha seleccionado: revisar el total de cada vendedor.\n\n");

printf("Introduzca el numero de vendedor: \n");
scanf("%i",&nvendedor);
suma=0;
 
for(i=0;i<10;i++)
{
  suma = suma+vendedores[nvendedor][i];
}

printf("El total del vendedor %i es: %i%c",nvendedor,suma,euro);
}

void total_total()
{
system("cls");
printf("Ha seleccionado: obtener los ingresos totales.\n\n");
suma=0;

for(i=0;i<18;i++)
{
  for(j=0;j<10;j++)
  {
   suma = suma + vendedores[i][j];
  }
}

printf("La cantidad total es de: %i%c",suma,euro);
}


Tenías varios problemas, primero intentabas imprimir en un char como si fuera un string %s, segundo el bucle for que recorre el vector está mal, te lo he arreglado.

Voy a dar el tema por solucionado, si surgen mas dudas respecto a este tema puede escribir aquí.

Saludos
Título: Re:[SOLUCIONADO] Ayuda ejercicio C
Publicado por: kuhi en Abril 13, 2017, 05:31:06 AM
Hola, muchas gracias!
Podrías decirme que has cambiado exactamente del bucle for?
Me pasa algo raro, con tu código funciona:
/* Crear un programa llamado vendedores que cree un array de 18 X 10 indicando
que poseemos una empresa de 18 vendedores cada uno de los cuales vende 10
productos.
El array almacena los ingresos obtenidos por cada vendedor en cada producto, de
modo que un menú permite almacenar los ingresos, revisar el total de cada
vendedor y obtener los ingresos totales */

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

int vendedores[18][10], producto;
void almacenar_ingresos();
void revisar_total();
void total_total();
int menu();
int nvendedor, nproducto, ventas;
int suma, resp, i, j;
char oacute = 162, euro = 8364, eacute = 130;


void main()
{
resp=menu();
while(resp!=4)
{
  switch(resp)
  {
   case 1:
    almacenar_ingresos();
    break;
   case 2:
    revisar_total();
    break;
   case 3:
    total_total();
    break;
  }
  resp=menu();
}
}

int menu()
{
printf("Seleccione una opci%cn:\n\n",oacute);
printf("[1] Almacenar ingresos de cada vendedor.\n");
printf("[2] Revisar el total de cada vendedor.\n");
printf("[3] Obtener los ingresos totales.\n");
printf("[4] Salir.\n\n");
scanf("%i",&resp);
return resp;
}

void almacenar_ingresos()
{
system("cls");
printf("Ha seleccionado: almacenar ingresos de cada vendedor.\n\n");

printf("Introduzca numero de vendedor: \n");
scanf("%i",&nvendedor);
printf("Introduzca numero de producto: \n");
scanf("%i",&nproducto);
printf("Cantidad vendida: \n");
scanf("%i",&ventas);

vendedores[nvendedor][nproducto] = ventas;

printf("Se han actualizado los valores con %cxito.\n\n",eacute);
}

void revisar_total()

system("cls");
printf("Ha seleccionado: revisar el total de cada vendedor.\n\n");

printf("Introduzca el numero de vendedor: \n");
scanf("%i",&nvendedor);
suma=0;
 
for(i=0;i<10;i++)
{
  suma = suma+vendedores[nvendedor][i];
}

printf("El total del vendedor %i es: %i%c",nvendedor,suma,euro);
}

void total_total()
{
system("cls");
printf("Ha seleccionado: obtener los ingresos totales.\n\n");
suma=0;

for(i=0;i<18;i++)
{
  for(j=0;j<10;j++)
  {
   suma = suma + vendedores[i][j];
  }
}

printf("La cantidad total es de: %i%c",suma,euro);
}


Y el mío que es igual no funciona, si podéis fijaros bien porque yo los veo completamente idénticos.
Que puede estar pasando? No es la primera vez que tengo un código bueno y no me funciona, lo vuelvo a hacer cerrando y abriendo el Dev-C++ como proyecto nuevo, sin copiar y pegar, escrito de 0 y funciona. Pero me ha pasado hasta con ejemplos muy básicos tipo un z=x+y; printf("%i",z); Sabéis porque podría pasar? Yo pensaba que una vez compilado, si tenia errores, se quedaban algunos y por eso pasaba, pero he probado guardándolo como nuevo proyecto y tampoco.
He comparado los códigos 4 veces por mirar si es error de sintaxis y tampoco detecto diferencias.
/* Crear un programa llamado vendedores que cree un array de 18 X 10 indicando
que poseemos una empresa de 18 vendedores cada uno de los cuales vende 10
productos.
El array almacena los ingresos obtenidos por cada vendedor en cada producto, de
modo que un menú permite almacenar los ingresos, revisar el total de cada
vendedor y obtener los ingresos totales */

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

int vendedores[18][10], producto;
void almacenar_ingresos();
void revisar_total();
void total_total();
int menu();
int nvendedor, nproducto, ventas;
int suma, resp, i, j;
char oacute = 162, eacute = 130;


void main()
{
resp=menu();
while(resp!=4)
{
switch(resp)
{
case 1:
almacenar_ingresos();
break;
case 2:
revisar_total();
break;
case 3:
total_total();
break;
}
resp=menu();
}
}

int menu()
{
printf("Seleccione una opci%cn:\n\n",oacute);
printf("[1] Almacenar ingresos de cada vendedor.\n");
printf("[2] Revisar el total de cada vendedor.\n");
printf("[3] Obtener los ingresos totales.\n");
printf("[4] Salir.\n\n");
scanf("%i",&resp);
return resp;
}

void almacenar_ingresos()
{
system("cls");
printf("Ha seleccionado: almacenar ingresos de cada vendedor.\n\n");

printf("Introduzca numero de vendedor: \n");
scanf("%i",&nvendedor);
printf("Introduzca numero de producto: \n");
scanf("%i",&nproducto);
printf("Cantidad vendida: \n");
scanf("%i",&ventas);

vendedores[nvendedor][nproducto]=ventas;

printf("Se han actualizado los valores con %sxito.\n\n",eacute);
}

void revisar_total()
{
system("cls");
printf("Ha seleccionado: revisar el total de cada vendedor.\n\n");

printf("Introduzca el numero de vendedor: \n");
scanf("%i",&nvendedor);
suma=0;

for(i=0;i<10;i++)
{
suma = suma+vendedores[nvendedor][i];
}

printf("El total del vendedor %i es: %i euros.",nvendedor,suma);
}

void total_total()
{
system("cls");
printf("Ha seleccionado: obtener los ingresos totales.\n\n");
suma=0;

for(i=0;i<18;i++)
{
for(j=0;j<10;j++)
{
suma = suma + vendedores[i][j];
}
}

printf("La cantidad total es de: %i euros.",suma);
}
Título: Re:[SOLUCIONADO] Ayuda ejercicio C
Publicado por: rollth en Abril 13, 2017, 09:04:13 AM
No te funciona por los printf donde pones las tildes, que lo haces con %s en lugar de con %c.

Saludos.
Título: Re:[SOLUCIONADO] Ayuda ejercicio C
Publicado por: kuhi en Abril 14, 2017, 04:52:39 PM
Mira que lo había mirado un montón de veces! xD
De verdad muchas gracias <3