En Rojo, creo yo, en donde esta el error... ya que al ingresar (Ejemplo) un pedido, y quererlo mostrar por pantalla, sale esto:
No se como lograr que solo muestre la cantidad puesta anteriormente asignada al entero "cantidad"
Por otra parte, necesito ayuda para anular un registro y asi crear la función "Anular pedido", digamos que estoy perdido y no se por donde empezar para crear dicha función, si me ayudan con un planteo se los agradecería muchísimo!
« Última modificación: 7 Marzo 2017, 21:20 pm por engel lex »
¿Has visto listas enlazadas? Lo que planteas es un problema que se resuelve con ellas.
Si no las has visto y solo puedes usar arrays tendrás podrías resolver el problema poniendo un campo más en tu estructura diciendo si el registro es útil. Cada vez que incluyas un registro buscas el primero que no sea útil (esté vacío) y lo incluyes allí. Para visualizar repasas toda la lista y solo muestras los marcados como útiles. Para borrar solo debes marcar el registro de interés como inútil. También podrías hacer lo mismo sin ese campo pero creando un array paralelo, que tendrán que ser recorridos al mismo tiempo, en el que solo guardaría la información de si el registro es válido.
¿Has visto listas enlazadas? Lo que planteas es un problema que se resuelve con ellas.
Si no las has visto y solo puedes usar arrays tendrás podrías resolver el problema poniendo un campo más en tu estructura diciendo si el registro es útil. Cada vez que incluyas un registro buscas el primero que no sea útil (esté vacío) y lo incluyes allí. Para visualizar repasas toda la lista y solo muestras los marcados como útiles. Para borrar solo debes marcar el registro de interés como inútil. También podrías hacer lo mismo sin ese campo pero creando un array paralelo, que tendrán que ser recorridos al mismo tiempo, en el que solo guardaría la información de si el registro es válido.
No he visto tal cosa pero me podrias explicar mas a fondo la nueva estructura que planteas? Gracias por tu respuesta!!
void mostrarvectorpedidos(tpedido V[]){ int j; system("pause"); system("cls"); printf("\n Listado de encomiendas:\n"); for(j=0; j<5; j++){ mostrarpedido(V[j]); } system("pause"); system("cls"); }
en la que tu ciclo for(); j<5 se repte 5 veces independiente del numero de pedidos que has ingrsado por ejemplo tu ingresaste 1 y te lo imprime pero tambien imprime otros 4 con contenido basura o no definido
lo que puedes hacer es mantener un contador que almacene el numero de pedidos ingresados que sera el mismo que le pases al ciclo for() como j<contador; para que solo te imprima la cantidad de pedidos ingresados
void mostrarvectorpedidos(tpedido V[]){ int j; system("pause"); system("cls"); printf("\n Listado de encomiendas:\n"); for(j=0; j<5; j++){ mostrarpedido(V[j]); } system("pause"); system("cls"); }
en la que tu ciclo for(); j<5 se repte 5 veces independiente del numero de pedidos que has ingrsado por ejemplo tu ingresaste 1 y te lo imprime pero tambien imprime otros 4 con contenido basura o no definido
lo que puedes hacer es mantener un contador que almacene el numero de pedidos ingresados que sera el mismo que le pases al ciclo for() como j<contador; para que solo te imprima la cantidad de pedidos ingresados
la variable 'cantidad' que tienes en la función void cargarvectorpedidos(tpedido V[]) declarala en la funcion main() y despues solo pasar la direccion de la variable cargarvectorpedidos(x, &cantidaad); y la revises como puntero en la funcion void cargarvectorpedidos(tpedido V[], int* cantidad); y despues solo lo pasas como reerencia en la uncion mostrarvectorpedidos(X, cantidad); y la usas en el ciclo for(); j<cantidad si tienes mas dudad puedes ver este vídeo · No hacer doble post, usa el botón "modificar" >aquí las reglas del foro -Engel Lex
« Última modificación: 8 Marzo 2017, 23:44 pm por engel lex »
la variable 'cantidad' que tienes en la función void cargarvectorpedidos(tpedido V[]) declarala en la funcion main() y despues solo pasar la direccion de la variable cargarvectorpedidos(x, &cantidaad); y la revises como puntero en la funcion void cargarvectorpedidos(tpedido V[], int* cantidad); y despues solo lo pasas como reerencia en la uncion mostrarvectorpedidos(X, cantidad); y la usas en el ciclo for(); j<cantidad si tienes mas dudad puedes ver este vídeo · No hacer doble post, usa el botón "modificar" >aquí las reglas del foro -Engel Lex
No entiendo a que te refiieres con " la revises como puntero"