[SOLUCIONADO] Ayuda ejercicio C

Iniciado por kuhi, Abril 10, 2017, 10:56:06 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Abril 10, 2017, 10:56:06 AM Ultima modificación: Abril 12, 2017, 11:34:17 AM por rollth
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.
Código: php
/* 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);
}
El conocimiento no ocupa lugar, somos libres de saber cuánto queramos...

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.
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Abril 10, 2017, 01:19:11 PM #2 Ultima modificación: Abril 10, 2017, 01:21:25 PM por kuhi
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.
El conocimiento no ocupa lugar, somos libres de saber cuánto queramos...

Abril 10, 2017, 04:32:26 PM #3 Ultima modificación: Abril 10, 2017, 04:35:48 PM por elinsoluble
Código: php
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

Abril 12, 2017, 10:05:33 AM #4 Ultima modificación: Abril 12, 2017, 10:18:50 AM por kuhi
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í:
Código: php
/* 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);
}
El conocimiento no ocupa lugar, somos libres de saber cuánto queramos...

Buenas pues aquí lo tienes arreglado.

Código: c
/* 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
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Hola, muchas gracias!
Podrías decirme que has cambiado exactamente del bucle for?
Me pasa algo raro, con tu código funciona:
Código: php
/* 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.
Código: php
/* 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);
}
El conocimiento no ocupa lugar, somos libres de saber cuánto queramos...

No te funciona por los printf donde pones las tildes, que lo haces con %s en lugar de con %c.

Saludos.
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Mira que lo había mirado un montón de veces! xD
De verdad muchas gracias <3
El conocimiento no ocupa lugar, somos libres de saber cuánto queramos...