elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Píldoras formativas en seguridad de la información


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Ayuda ejercicio C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda ejercicio C  (Leído 639 veces)
kuhi

Desconectado Desconectado

Mensajes: 30



Ver Perfil
Ayuda ejercicio C
« en: 10 Abril 2017, 15:21 »

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:
/* 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);
}


En línea

El conocimiento no ocupa lugar, somos libres de saber cuánto queramos... Como informáticos una vez tenemos conocimientos podemos decidir si estaremos en el lado de La Luz o en el Lado Oscuro, de nosotros depende la elección. Aún así la libertad no tiene precio.
MAFUS


Desconectado Desconectado

Mensajes: 900



Ver Perfil
Re: Ayuda ejercicio C
« Respuesta #1 en: 10 Abril 2017, 19:33 »

Te enumero los errores.

1. En la línea
Código:
char oacute = 162, euro = 8364, eacute = 130;
euro no debería tener ese valor. Un char tiene como máximo el valor 255, y si tu máquina lo trata como signed solo puede llegar hasta 127.

2. En la línea
Código:
void main
main, en C, debe ser siempre entero. void es pre-ansi o para C++.

3. La función menu() debe devolver el entero resp, sin embargo no regresa nada.

4. En la función revisar_total() y total_total() donde dicen
Código:
printf("El total del vendedor %i es: %i%s",nvendedor,suma,euro);
y
Código:
printf("La cantidad total es de: %i%s",suma,euro);
tienes el argumento %s para mostrar un carácter pero éste debería ser %c.

5. En la función total_total() tienes
Código:
for(i=0;i<nvendedor;i++)
 {
  for(j=0;j<nproducto;j++)
  {
el límite superior no deben ser las variables nvendedor y nproducto ya que sirven para guardar posiciones a modificar en el array por las demás funciones, no para marcar el número máximo de elementos en el array. Debería ser 18 y 10 respectivamente.

Ahora, haciendo juicio crítico: tu profesor no mira mucho por sus alumnos, pero por otra parte son errores sencillos de descubrir. No deberías esperar "dos meses" en que tu profesor te devuelva un ejercicio corregido. Más con ese tiempo ya deberías tener la suficiente experiencia para depurar un programa tan sencillo.


En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
kuhi

Desconectado Desconectado

Mensajes: 30



Ver Perfil
Re: Ayuda ejercicio C
« Respuesta #2 en: 12 Abril 2017, 15:17 »

Muchas gracias por tu respuesta. Si la verdad el profesor no está por nosotros y el material que tenemos está muy mal redactado, códigos con errores, explicaciones ilegibles, etc... pero bueno no vengo a criticar a nadie, en ese caso necesitaría 1 foro para mi solo.

Sigo teniendo el mismo error.
Este es el código actualizado:

Código:
/* 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);
}

En línea

El conocimiento no ocupa lugar, somos libres de saber cuánto queramos... Como informáticos una vez tenemos conocimientos podemos decidir si estaremos en el lado de La Luz o en el Lado Oscuro, de nosotros depende la elección. Aún así la libertad no tiene precio.
MAFUS


Desconectado Desconectado

Mensajes: 900



Ver Perfil
Re: Ayuda ejercicio C
« Respuesta #3 en: 12 Abril 2017, 18:01 »

El otro problema que podrías tener es el uso del include conio.h. Muy pocos compiladores lo soportan, además no usas ninguna función de esta librería.
En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
kuhi

Desconectado Desconectado

Mensajes: 30



Ver Perfil
Re: Ayuda ejercicio C
« Respuesta #4 en: 13 Abril 2017, 10:11 »

tampoco, lo he probado y es lo mismo.
edito:

me han pasado el ejercicio corregido y después de comparar los códigos 4 veces, mi código es idéntico al corregido, exceptuando que yo quité el conio haciendo caso a vuestros comentarios, y el euro porque supera el 255 del char. Lo cual no afecta.

Que puede estar pasando? No es la primera vez que me pasa que comparo dos códigos completamente idénticos y uno funciona y el otro no.

Este es el mio:
Código:
/* 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);
}

Y este es el corregido:
Código:
/* 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);
}
« Última modificación: 13 Abril 2017, 10:35 por kuhi » En línea

El conocimiento no ocupa lugar, somos libres de saber cuánto queramos... Como informáticos una vez tenemos conocimientos podemos decidir si estaremos en el lado de La Luz o en el Lado Oscuro, de nosotros depende la elección. Aún así la libertad no tiene precio.
MAFUS


Desconectado Desconectado

Mensajes: 900



Ver Perfil
Re: Ayuda ejercicio C
« Respuesta #5 en: 13 Abril 2017, 17:31 »

Copia los errores y warnings que te da el compilador.
En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
kuhi

Desconectado Desconectado

Mensajes: 30



Ver Perfil
Re: Ayuda ejercicio C
« Respuesta #6 en: 14 Abril 2017, 21:54 »

Hola, ya está solucionado, el error está en que seguía teniendo %s en las tildes en vez de %c.
Muchas gracias por vuestra ayuda de verdad! <3
En línea

El conocimiento no ocupa lugar, somos libres de saber cuánto queramos... Como informáticos una vez tenemos conocimientos podemos decidir si estaremos en el lado de La Luz o en el Lado Oscuro, de nosotros depende la elección. Aún así la libertad no tiene precio.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con ejercicio
GNU/Linux
xusa 7 1,681 Último mensaje 12 Junio 2004, 07:01
por xusa
ayuda con un ejercicio
Programación C/C++
chiiquiitoo 3 1,479 Último mensaje 29 Septiembre 2005, 15:56
por P[i]
Ayuda con ejercicio.
Programación C/C++
Kasswed 6 1,876 Último mensaje 17 Diciembre 2005, 21:18
por Kasswed
Ayuda ejercicio de Pascal, cuando uno no lo ve claro pide ayuda
Programación General
manu3742 1 1,322 Último mensaje 31 Marzo 2011, 15:43
por d(-_-)b
Ayuda Con Ejercicio
ASM
sebis 1 1,331 Último mensaje 10 Septiembre 2012, 13:12
por Eternal Idol
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines