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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  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 3,712 veces)
kuhi

Desconectado Desconectado

Mensajes: 37


50 shadows of Kappa


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

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


Desconectado Desconectado

Mensajes: 1.603



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

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

kuhi

Desconectado Desconectado

Mensajes: 37


50 shadows of Kappa


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

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


Desconectado Desconectado

Mensajes: 1.603



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

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

kuhi

Desconectado Desconectado

Mensajes: 37


50 shadows of Kappa


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

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 am por kuhi » En línea

El conocimiento no ocupa lugar, somos libres de saber cuánto queramos...
MAFUS


Desconectado Desconectado

Mensajes: 1.603



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

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

kuhi

Desconectado Desconectado

Mensajes: 37


50 shadows of Kappa


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

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...
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda] Ejercicio C 100
Ejercicios
Dem0ny 2 6,007 Último mensaje 19 Diciembre 2007, 22:45 pm
por Dem0ny
Ayuda co un ejercicio de C#
.NET (C#, VB.NET, ASP)
hitori batusai 2 5,320 Último mensaje 22 Febrero 2008, 01:53 am
por hitori batusai
Ayuda con ejercicio de VB
Programación Visual Basic
guada_sp 5 3,311 Último mensaje 8 Marzo 2008, 02:54 am
por ‭‭‭‭jackl007
Ayuda con ejercicio
.NET (C#, VB.NET, ASP)
elbrunosimpson 4 3,493 Último mensaje 4 Septiembre 2008, 23:16 pm
por Meta
Ayuda ejercicio de Pascal, cuando uno no lo ve claro pide ayuda
Programación General
manu3742 1 3,203 Último mensaje 31 Marzo 2011, 15:43 pm
por d(-_-)b
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines