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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con codigo C++
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con codigo C++  (Leído 16,928 veces)
rjobel

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ayuda con codigo C++
« Respuesta #10 en: 10 Abril 2011, 03:35 am »

Gracias por la observacion Akai.

Modifiqué le código y ahora no compila. Se traba en la declaración de las funciones.

¿Alguna idea de cual sea el problema?

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. /*Declaracion de Variables*/
  6.       struct prod{
  7.              char nomProd[30];
  8.              char fecha[10];
  9.              char categoria[20];
  10.              float costo;
  11.              } prod[50];/*Arreglo de tipo estructura*/
  12.  
  13.  
  14.              int entrada(void);
  15.              int buscar(void);
  16.              int precio(void);
  17.              int salir(void);
  18.  
  19.       main()
  20.       {
  21.             int c=0, opc, clave;
  22.  
  23.             do{
  24.              printf ("Abarrotes Bel-Yes - Registro de Productos \n\n");
  25.              printf ("Opciones \n");
  26.              printf ("1) Registrar producto \n");
  27.              printf ("2) Buscar producto \n");
  28.              printf ("3) Precio de venta \n");
  29.              printf ("4) Salir \n\n");
  30.              printf ("Elige una opcion: \n");
  31.              scanf ("%d", &opc);
  32.  
  33.  
  34.                   switch (opc){      /*Opciones*/
  35.                     case 1:
  36.                          entrada();
  37.                          break;
  38.                     case 2:
  39.                          buscar();
  40.                          break;
  41.                     case 3:
  42.                          precio();
  43.                          break;  
  44.                     case 4:
  45.                          salir();    
  46.                     default:
  47.                              printf ("Esa es una opcion invalida \n");
  48.                              return 0;
  49.                              break;                              
  50.                          }
  51.              while (opc!=4);
  52.                     }        
  53.  
  54.       /*Declaracion de Funciones*/
  55.  
  56.      int entrada()
  57.       {
  58.           int c=0;
  59.  
  60.            if (c>=50)
  61.                          printf ("No hay espacio para mas productos en el abarrotes \n");
  62.                          else {
  63.                               printf ("Ingresa los datos del producto \n");
  64.                               printf ("Clave %.2d \n", c);
  65.                               printf ("Nombre del Producto: ");
  66.                               fflush (stdin);
  67.                               gets (prod[c].nomProd);
  68.                               printf ("Fecha de Entrada[dd/mm/aa]: ");
  69.                               gets (prod[c].fecha);
  70.                               printf ("Categoria del Producto: ");
  71.                               gets (prod[c].categoria);
  72.                               printf ("Costo del Producto: ");
  73.                               scanf ("%f", &prod[c].costo);
  74.                               c=c+1;
  75.                               }
  76.                               system ("pause");
  77.                               system ("cls");
  78.                                           }
  79.  
  80.       int buscar()
  81.       {
  82.           int clave;
  83.          printf ("Ingresa la clave a buscar [0-50] \n");
  84.                           scanf ("%d", &clave);
  85.                           while (clave<=50 || clave>0){
  86.                                 printf ("Nombre del Producto: %s \n", prod[clave].nomProd);
  87.                                 printf ("Fecha de Entrada: %s \n", prod[clave].fecha);
  88.                                 printf ("Categoria: %s \n", prod[clave].categoria);
  89.                                 printf ("Costo del Producto: %.2f pesos\n\n\n", prod[clave].costo);
  90.                                 system ("pause");
  91.                                 system ("cls");
  92.  
  93.          }  }
  94.  
  95.       int precio()
  96.       {
  97.           int clave;
  98.            printf ("Ingresa la clave a buscar [0-50] \n");
  99.                           scanf ("%d", &clave);
  100.                           while (clave<=50 || clave>0){
  101.                           printf ("Nombre del Producto: %s \n", prod[clave].nomProd);          
  102.                           printf ("El precio sugerido de Venta es: %.2f pesos\n\n\n", (prod[clave].costo)*1.30);
  103.                           system ("pause");
  104.                           system ("cls");
  105.                           break;
  106.            }}
  107.  
  108.        int salir()
  109.        {
  110.            return 0;
  111.            }
  112.  


En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Ayuda con codigo C++
« Respuesta #11 en: 10 Abril 2011, 11:48 am »

Si, tu problema está en que tanto precio, buscar y clave son funciones de tipo int y no tienen return.

Si pretendes que no devuelvan nada, decláralas como void.

Por otro lado, no se que clase de compilador estás usando, pero como mínimo, se le podría prestar un poco de atención a los avisos y /o errores, y de paso, cuando preguntes, ponerlos aquí.


En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Ayuda con codigo C++
« Respuesta #12 en: 10 Abril 2011, 17:28 pm »

el problema aquí también está en el cierre de un bloque, al parecer no has leido atento el anterior mensaje de Akai, ya que el problema se encuentra en el do-while en donde falta una llave, aparte de eso a continuación dejo la la salida de la compilación con parametros -Wall y -Wextra para que mires en que partes del código tienes fallas:

Código:
oo.c:20: warning: return type defaults to ‘int’
oo.c: In function ‘main’:
oo.c:21: warning: unused variable ‘clave’
oo.c:21: warning: unused variable ‘c’
oo.c: In function ‘precio’:
oo.c:107: warning: control reaches end of non-void function
oo.c: In function ‘buscar’:
oo.c:94: warning: control reaches end of non-void function
oo.c: In function ‘entrada’:
oo.c:79: warning: control reaches end of non-void function
oo.c: In function ‘main’:
oo.c:52: warning: control reaches end of non-void function
/tmp/ccEQ4tAC.o: In function `entrada':
oo.c:(.text+0x144): warning: the `gets' function is dangerous and should not be used.

Como podrás ver casi todo es porque las funciones no retornan un entero siendo declaradas como tal, debes retornar un valor al final de cada función según el tipo correspondiente, como podrás ver también se advierte sobre la omision de la declaración del tipo de main que debería ser entero y que además no tiene valor de retorno, unas cuantas variables que declaras y no usas, y por último los riesgos de usar 'gets'

Saludos
En línea

rjobel

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ayuda con codigo C++
« Respuesta #13 en: 11 Abril 2011, 01:35 am »

Gracias a todos por su ayuda.

El programa ya jala bien. Espero ir mejorando para no caer en errores tan simples.

Saludos
En línea

Firos
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.410


Enseña lo que sepas... y oculta lo peor...


Ver Perfil
Re: Ayuda con codigo C++
« Respuesta #14 en: 11 Abril 2011, 02:36 am »

Te vendría bien organizarte el cógido.

Si usas las funciones de esa manera usalas asi:
Código
  1. void buscar(void){ }

void quiere decir que no devuelve nada, y void entre paréntesis quiere decir que no se le pasa ningún parámetro a la funcion

Por otro lado, para organizarte el código es mejor que declares las funciones arriba, antes del main, quedándote de tal manera:
Código
  1. #include ...las librerias...
  2.  
  3. // DECLARAS AQUI LOS PROTOTIPOS DE LAS FUNCIONES
  4. void buscar(void);
  5. void precio(void);
  6.  
  7. int main{
  8. ...TU PROGRAMA...
  9.  
  10. // Como ves, cuando declaras una funcion o el cuerpo con INT (podrias hacerlo tambien con void) tienes que hacer return 0; para que el programa sepa que termina bien.
  11. return 0;
  12.  
  13. }
  14.  
  15. void buscar(){
  16. LA FUNCION
  17. }
  18.  
  19. void precio(){
  20. LA FUNCION
  21. }

Declarando las funciones con el prototipo arriba podras usarlas en cualquier parte del programa.

Cuando metas en una variable el valor de lo que devuelve la función solo tienes que aplicarle un poco de lógica.
Código
  1. #include <stdio.h>
  2.  
  3. int funcion();
  4.  
  5. int main()
  6. {
  7. int variable;
  8.  
  9. variable=funcion();
  10.  
  11. printf("%d",variable);
  12.  
  13. return 0;
  14. }
  15.  
  16. int funcion()
  17. {
  18. int a=5, b=2;
  19.  
  20. return (a+b);
  21. }
  22.  
  23.  

Este programa lo que hace es sumar a+b por lo que cuando ejecute la funcion() lo que devuelva se meterá dentro de variable y al hacer printf %d variable nos saldrá un 7. Como ves declaramos la función con INT porque "variable" esta declarada como INT, por lo que trabajara con números enteros y ambas deben ser del mismo tipo, tanto la función como la variable que recoge los datos de la función.


Espero te sirva un poco. Cuando manejes esto, mira el tema de pasar parametros a las funciones. Para programar hay que aprender tambien a simplificar el main.


Un saludo.
« Última modificación: 11 Abril 2011, 02:38 am por Firos » En línea

El final del camino no está determinado, lo determinamos nosotros mismos paso a paso, día a día, y se puede cambiar.
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Codigo
Programación Visual Basic
Mitsu_POWA 1 2,133 Último mensaje 26 Julio 2005, 00:25 am
por byebye
Ayuda Con Un Codigo
Programación Visual Basic
Nichas 3 2,249 Último mensaje 26 Agosto 2005, 02:23 am
por ZEALOT
Ayuda con codigo en C (no me ejecuta un for y necesito ayuda) « 1 2 3 »
Programación C/C++
Søra 22 12,638 Último mensaje 22 Mayo 2010, 00:22 am
por Littlehorse
¿Cuál es la diferencia entre código objeto, código máquina y código binario?
Programación General
Aikanáro Anário 9 30,486 Último mensaje 23 Diciembre 2010, 15:19 pm
por pucheto
Ayuda con código mutante C
Programación C/C++
NeoB 4 4,284 Último mensaje 28 Enero 2014, 21:54 pm
por systemfirst97
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines