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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Buenas Noches, necesito ayuda con estos Warning's
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Buenas Noches, necesito ayuda con estos Warning's  (Leído 2,562 veces)
Xcution

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Buenas Noches, necesito ayuda con estos Warning's
« en: 28 Octubre 2013, 01:27 am »

Hola, me encantarían que me ayudaran a solucionar los Warning's de este programa es de urgencia, por favor y gracias de antemano.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct
   {
      char nombre[50];
      char cantidad[50];
      int codigo;
      struct listado* siguiente;
      
   } listado;

listado* primero = NULL;
listado* ultimo = NULL;

void aumentar(listado* producto)
{
   producto->siguiente = NULL;
   if(primero == NULL)
   {
      
      primero = producto;
      ultimo = producto;
   }else
      {
         ultimo->siguiente = producto;
         ultimo == producto;   
      }
}

void agregarlistado(){
   char avanzar = 's';
   while(avanzar == 's'){
      
      system("cls");
      listado* producto = NULL;   
      char nombre[50];
      char cantidad[50];
      int codigo;
      printf("C%cdigo del Producto : ",162);
      scanf("%i",&codigo);
      printf("Nombre del Producto : ");
      fflush(stdin);
      gets(nombre);
      printf("Cantidad a elegir : ");
      fflush(stdin);
      gets(cantidad);
      producto = malloc(sizeof(listado));
      producto->codigo = codigo;
      strcpy(producto->nombre, nombre);
      strcpy(producto->cantidad, cantidad);
      aumentar(producto);
      printf("\n Si desea agregar otro producto presione S de lo contrario presione N (S%c/No) : ",161);
      fflush(stdin);
      scanf("%c", &avanzar);
   }
   printf("\nPresione la tecla Enter para volver al men%c del listado de compras\n", 163);
   printf("Presione la tecla ESC para salir\n");
}

void eliminar(){
   
   listado *borrar;
   listado *atras = NULL;
   borrar = primero;
   int suprimir;
   printf("\nIntroduzca el c%cdigo del producto que ser%c eliminado\n",162,160);
   scanf("%i", &suprimir);
   
   while(borrar != NULL && borrar->codigo != suprimir){
      atras = borrar;
      borrar = borrar->siguiente;
   }
   if(borrar == NULL){
      printf("El producto que est%c buscando no se encuentra disponible en estos momentos, 160");
   }else if (atras == NULL){
      primero = primero->siguiente;
      free(borrar);
      
   }else{
      atras->siguiente = borrar->siguiente;
      free(borrar);
   }
   
}

void abrir(){
   system("cls");
   char _eliminar = 's';
   listado* i = primero;   
   if(primero != NULL){
      
      while(i != NULL)
      {
         printf("C%cdigo del producto: %i\nNombre del producto: %s\nCantidad a elegir: %s\n",162,i->codigo, i->nombre, i->cantidad);
         i = i-> siguiente;
      }
      
      printf("\n Si desea eliminar alg%cn producto presione S de lo contrario presione N (S%c/No) ",163,161);
      fflush(stdin);
      scanf("%c", &_eliminar);
      if (_eliminar = 's'){
         eliminar();
         abrir();
      }
      
   }else{
      printf("La lista se encuentra est%c vac%ca\n",160, 161);
   }
}
void gestor(){
   system("cls");
   printf("               Bienvenido al Gestor de Listado de Compras\n\n\n" );
   printf("1-.Insertar un producto a la lista. \n");
   printf("2-.Desplegar lista y/o eliminar elemento. \n");
   printf("3-.Presione 3 para salir. \n");
   printf("Elija una opci%cn => \n",162);
   
   }
int main(){
   do{
      gestor();
      int compras;   
      scanf("%i",&compras);
      if(compras==3){
         break;
      }
      switch(compras){
      case 1:
         agregarlistado();
         break;
      case 2:
         abrir();
         printf("\nSi desea volver atr%cs presione ENTER\n", 160);
         printf("Si desea salir presione la tecla ESC\n");
         break;
      }
   }
   while(getch()!= (char)30);
   system("pause");
   return EXIT_SUCCESS;
}   


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Buenas Noches, necesito ayuda con estos Warning's
« Respuesta #1 en: 28 Octubre 2013, 02:43 am »

* Para empezar deberías evitar el uso de fflush(stdin), gets y la biblioteca conio de Borland, las razones se explican en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

* La declaración del alias "listado" esta mal, debería ser:
Código
  1. typedef struct listado /* <== */ {
  2.   char nombre[50];
  3.   char cantidad[50];
  4.   int codigo;
  5.   struct listado *siguiente; /* <== */
  6. } listado;

* En la función "aumentar" en esta sentencia:
Código
  1. ultimo == producto;
Utilizas el operador de comparación "==" cuando debería ser el de asignación "=".

* En la función "eliminar" en la sentencia:
Código
  1. printf("El producto que est%c buscando no se encuentra disponible en estos momentos, 160");
Tienes mal colocada la comilla doble de cierre.

* Falta incluir el encabezado para tener acceso a las funciones de conio como getch, de nuevo lo mejor es evitar su uso.

* Agrega los prototipos de todas las funciones al principio del programa, antes de cualquier definición.

Una vez realices todos esos cambios el programa debe compilar sin generar mensajes de advertencia.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Xcution

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Buenas Noches, necesito ayuda con estos Warning's
« Respuesta #2 en: 28 Octubre 2013, 04:52 am »

* Para empezar deberías evitar el uso de fflush(stdin), gets y la biblioteca conio de Borland, las razones se explican en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

* La declaración del alias "listado" esta mal, debería ser:
Código
  1. typedef struct listado /* <== */ {
  2.   char nombre[50];
  3.   char cantidad[50];
  4.   int codigo;
  5.   struct listado *siguiente; /* <== */
  6. } listado;

* En la función "aumentar" en esta sentencia:
Código
  1. ultimo == producto;
Utilizas el operador de comparación "==" cuando debería ser el de asignación "=".

* En la función "eliminar" en la sentencia:
Código
  1. printf("El producto que est%c buscando no se encuentra disponible en estos momentos, 160");
Tienes mal colocada la comilla doble de cierre.

* Falta incluir el encabezado para tener acceso a las funciones de conio como getch, de nuevo lo mejor es evitar su uso.

* Agrega los prototipos de todas las funciones al principio del programa, antes de cualquier definición.

Una vez realices todos esos cambios el programa debe compilar sin generar mensajes de advertencia.

Un saludo

Muchísimas gracias hermano!!!!!.. pero una cosa he cambiado a getchar y cuando intento darle a la opción 2 no me entra, pero si tengo getch sí me funciona!! me encantaría que me des una ayudita ahí es que soy nuevo en esto de C.

Me refiero a esto, cuando intento entrar a la lista sin tener nada con getch si me entra, pero si cambio getch por getchar en el while no me deja entrar.
« Última modificación: 28 Octubre 2013, 04:58 am por Xcution » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
buenas noches
Juegos y Consolas
dannyFilth 0 1,637 Último mensaje 5 Noviembre 2008, 01:19 am
por dannyFilth
Buenas noches, Necesito ayuda.
Java
ArhennJosey 2 3,052 Último mensaje 21 Mayo 2010, 01:47 am
por ArhennJosey
BUENAS NOCHES ALGUIEN QUE ME AYUDE POR FAVOR...
Dispositivos Móviles (PDA's, Smartphones, Tablets)
jagg0805 0 2,124 Último mensaje 2 Marzo 2012, 03:30 am
por jagg0805
Buenas noches
Dudas Generales
2.0 3 3,235 Último mensaje 12 Febrero 2013, 23:55 pm
por #Borracho.-
buenas necesito ayuda con mi usb wifi
Hacking Wireless
rey186 1 2,624 Último mensaje 10 Noviembre 2013, 06:40 am
por Sh4k4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines