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

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Hola soy nuevo en código en C, tengo este código pero no se en que tengo error, me podrían ayudar por favor
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Hola soy nuevo en código en C, tengo este código pero no se en que tengo error, me podrían ayudar por favor  (Leído 3,521 veces)
Fernando13

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Hola soy nuevo en código en C, tengo este código pero no se en que tengo error, me podrían ayudar por favor
« en: 19 Diciembre 2022, 00:49 am »

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef struct Bodega{
  4.    char Nombre_producto;
  5.    int codigo_barras;
  6.    int cantidad;
  7.    float precio;
  8. }Producto;
  9. int Pedir_cantidad();
  10. Producto Agregar_producto();
  11. void Mostrar_productos(Producto *productos,int Num_productos);
  12. void Mostrar_producto(Producto *productos,int posicion);
  13. int Busqueda(Producto *productos,int Codigo,int contador);
  14.  
  15. int main()
  16. {
  17.    int Num_productos,eleccion=0,contador_productos=0;
  18.    Num_productos=Pedir_cantidad();
  19.    Producto productos[Num_productos];
  20.    system("cls");
  21.  
  22.    while(eleccion!=4){
  23.    printf("Que deseas realizar");
  24.    printf("1)Agregar producto");
  25.    printf("2)Buscar producto");
  26.    printf("3)Mostrar productos");
  27.    printf("4)Salir");
  28.    scanf("%d",&eleccion);
  29.  
  30.    switch(eleccion){
  31.       case 1:{
  32.  
  33.       if(contador_productos==Num_productos){
  34.           printf("No es posible agregar mas productos");
  35.        }else{
  36.            productos[contador_productos]=Agregar_producto();
  37.            contador_productos++;
  38.        }
  39.       break;
  40. }
  41.       case 2:{
  42.           int buscado,Codigo;
  43.           printf("Dame el numero de barras para encontrar el producto");
  44.           scanf("%d",&Codigo);
  45.           buscado=Busqueda(productos,Codigo,contador_productos);
  46.           if(buscado==-1){
  47.               printf("Producto no encontrado");
  48.           }else{
  49.               Mostrar_producto(productos,buscado);
  50.           }
  51.           break;
  52.  
  53.       }
  54.       case 3:{
  55.           Mostrar_productos(productos,contador_productos);
  56.           break;
  57.       }
  58.       case 4:{
  59.          printf("Adios");
  60.       }
  61.    return 0;
  62.    }
  63.    int Pedir_cantidad(){
  64.        int cantidad;
  65.        printf("Dame la cantidad de productos que deseas agregar a tu tienda");
  66.        scanf("%d",&cantidad);
  67.        return cantidad;
  68.    }
  69. }
  70.    Producto Agregar_producto(){
  71.        Producto articulo;
  72.        printf("Dame el nombre del producto:");
  73.        scanf("%s",&articulo.Nombre_producto);
  74.        printf("Dame el precio del producto:");
  75.        scanf("%f",&articulo.precio);
  76.        printf("Dame la cantidad disponible del producto:");
  77.        scanf("%d",&articulo.cantidad);
  78.        printf("Dame el codigo de barras:");
  79.        scanf("%d",&articulo.codigo_barras);
  80.        return articulo;
  81.    }
  82. void Mostrar_productos(Producto *productos,int Num_productos){
  83.    for(int i=0;i<Num_productos;i++){
  84.        printf("Producto: %disponible",productos[i].Nombre_producto);
  85.        printf("Precio: %.2f",productos[i].precio);
  86.        printf("Cantidad disponible: %d",productos[i].cantidad);
  87.        printf("Codigo de barras: %d",productos[i].codigo_barras);
  88.        printf("\n");
  89.    }
  90. }
  91. void Mostrar_producto(Producto *productos,int posicion){
  92.        printf("Producto:%d",productos[posicion].Nombre_producto);
  93.        printf("Precio:%.2f",productos[posicion].precio);
  94.        printf("Cantidad disponible:%d",productos[posicion].cantidad);
  95.        printf("Codigo de barras:%d",productos[posicion].codigo_barras);
  96.        printf("\n");
  97. }
  98. int Busqueda(Producto *productos,int Codigo,int contador){
  99.    int i=0;
  100.    for(i;i<contador;i++){
  101.        if(productos[i].codigo_barras==Codigo){
  102.            return i;
  103.        }
  104. }
  105. return -1;
  106. }

MOD: El código debe ir entre etiquetas de Código GeSHi


« Última modificación: 22 Diciembre 2022, 19:17 pm por K-YreX » En línea

whitevision

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Hola soy nuevo en código en C, tengo este código pero no se en que tengo error, me podrían ayudar por favor
« Respuesta #1 en: 19 Diciembre 2022, 02:15 am »

Hola, en que linea te sale el error. Que dice el error, no soy adivino.
Salu2.


En línea

Fernando13

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Hola soy nuevo en código en C, tengo este código pero no se en que tengo error, me podrían ayudar por favor
« Respuesta #2 en: 19 Diciembre 2022, 02:39 am »

En la penúltima linea, el return -1.

main.c: In function ‘main’:
main.c:105:1: error: expected declaration or statement at end of input
  105 | return -1;}
      | ^~~~~~

este es el error.
En línea

BloodSharp


Desconectado Desconectado

Mensajes: 804


El Messi-Vegeta :D


Ver Perfil
Re: Hola soy nuevo en código en C, tengo este código pero no se en que tengo error, me podrían ayudar por favor
« Respuesta #3 en: 19 Diciembre 2022, 05:05 am »

Un par de detalles y recomendaciones:

No cerraste la función main de manera apropiada, seguramente si identás el código de una manera mejor te ayudaría mucho a evitar este tipo de errores...

Por otra parte:
Código
  1. int Num_productos, eleccion = 0, contador_productos = 0;
  2. Num_productos = Pedir_cantidad();
  3. Producto productos[Num_productos];

Evitá a toda costa generar un vector dinámicamente de esa manera:
Si estás forzado a utilizar C puro tenés funciones como malloc o calloc para almacenar memoria dinámicamente y liberandola con la función free.

Si podés utilizar C++ te recomiendo utilizar std::vector.

Otra recomendación sería nunca retornar objetos de estructuras de variables locales, dado a que se puede pisar los datos con llamadas a otras funciones posteriores:
Código
  1. Producto Agregar_producto(){
  2.        Producto articulo;
  3.        printf("Dame el nombre del producto:");
  4.        scanf("%s",&articulo.Nombre_producto);
  5.        printf("Dame el precio del producto:");
  6.        scanf("%f",&articulo.precio);
  7.        printf("Dame la cantidad disponible del producto:");
  8.        scanf("%d",&articulo.cantidad);
  9.        printf("Dame el codigo de barras:");
  10.        scanf("%d",&articulo.codigo_barras);
  11.        return articulo;
  12.    }


Y finalmente:
Código
  1. int Pedir_cantidad();
  2. Producto Agregar_producto();
  3. void Mostrar_productos(Producto *productos,int Num_productos);
  4. void Mostrar_producto(Producto *productos,int posicion);

Snake case con mayúsculas no es utilizado en nombres de funciones de C...


B#
« Última modificación: 19 Diciembre 2022, 05:09 am por BloodSharp » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines