Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Programa en C++

Estas en el tema de Programa en C++ en el foro de C/C++ en Foros del Web. Buenas necesito ayuda con este programaa porfavor agradeceria si me ayudan 1. Desarrollar un programa que permita crear una pila que contenga el registro de ...
  #1 (permalink)  
Antiguo 26/06/2011, 12:48
 
Fecha de Ingreso: junio-2011
Mensajes: 3
Antigüedad: 12 años, 9 meses
Puntos: 0
Programa en C++

Buenas necesito ayuda con este programaa porfavor agradeceria si me ayudan

1. Desarrollar un programa que permita crear una pila que contenga el registro de cierta cantidad de CD musicales con los siguientes datos: código, nombre y número de discos vendidos. Los datos código y numero de discos vendidos deben ser valores enteros. El ingreso de datos finalizara cuando el valor del código sea igual a cero. Este registro cuyo valor de código es cero, no debe ser parte de la pila.
2. Muestre los detalles de los CD con más de 1000 discos vendidos.
3. Muestre los detalles de los CD con menos copias vendidos.
4. Elimine todos los CD con menos copias vendidas, dejando los demás elementos de la pila en el mismo orden en que estaban antes de la eliminación.
5. El programa debe mostrar por pantalla los elementos o valores que se encuentran en la pila antes y después de la eliminación. Para esto harán uso de una función llamada visualPila() la cual será desarrollada por los estudiantes en la librería.


y aqui esta lo q he programado pero me da error agradeceria cualquier tipo de ayuda


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct pila{
int tope;
int pila[50000];
}tipo_pila;

void nuevaPila(tipo_pila *ptr_pila){
ptr_pila->tope=0;
}
void push(tipo_pila *ptr_pila,int tipoElemento){
if(ptr_pila == NULL)

return;
else{
ptr_pila -> pila[ptr_pila -> tope++]=tipoElemento;
return;
}
}
int sacar(tipo_pila *ptr_pila){
return ptr_pila->pila[--ptr_pila->tope];
}
int obtener(tipo_pila *ptr_pila){
return ptr_pila->pila[ptr_pila->tope-1];
}


int vacia(tipo_pila *ptr_pila){
if (ptr_pila->tope==0)
return 1;
else
return 0;
}
int llena(tipo_pila *ptr_pila){
if (ptr_pila-> tope==50000)
return 1;
else
return 0;
}



int main()
{
tipoelemento, *tipo_pila, *aux, menor = 50000;
int cantidad, codigo, cd;
ptr_pila =(tipo_pila*)malloc(sizeof (tipo_pila));
nuevaPila(ptr_pila);
printf("introduzca el codigo:");
scanf("%d", &cd.codigo);
if(cd.codigo==0)
return 1;
else
{
while (cd.codigo != 0)
{
printf("introduzcael nombre:");
scanf("%s", &cd.nombre);
printf(" introduzca la cantidad");
scanf("%d", &cantidad);
push(ptr_pila,cd);
printf("introduzca el codigo:");
scanf("%d",& codigo);
}

printf("pila original:\n");
visualpila(ptr_pila);
printf("los discos con mas de 1000 copias vendidas:\n");
while (!vacia(ptr_pila))
{
cd = pop(ptr_pila);
if(cd.cantidad>1000)
printf("%d %s %d \n", cd.codigo, cd.nombre,cd.cantidad);
if(cd.cantidad < menor)
menor = cd.cantidad;
push(aux,cd);
}
printf("discos con menores copias \n");
while (!vacia(aux))
{
cd=pop(aux);
if(cd.cantidad==menor)
printf("%d %s %d \n", cd.codigo, cd.nombre, cd.cantidad);
else
push(ptr_pila.cd);
}
}
  #2 (permalink)  
Antiguo 26/06/2011, 14:46
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años
Puntos: 71
Respuesta: Programa en C++

Es preferible que uses el resaltado de código para mostrar tu implementación.

Código C++:
Ver original
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<stdlib.h>
  4. typedef struct pila {
  5.     int tope;
  6.     int pila[50000];
  7. } tipo_pila;
  8.  
  9. void nuevaPila(tipo_pila *ptr_pila) {
  10.     ptr_pila->tope = 0;
  11. }
  12. void push(tipo_pila *ptr_pila, int tipoElemento) {
  13.     if (ptr_pila == NULL)
  14.  
  15.         return;
  16.     else {
  17.         ptr_pila -> pila[ptr_pila -> tope++] = tipoElemento;
  18.         return;
  19.     }
  20. }
  21. int sacar(tipo_pila *ptr_pila) {
  22.     return ptr_pila->pila[--ptr_pila->tope];
  23. }
  24. int obtener(tipo_pila *ptr_pila) {
  25.     return ptr_pila->pila[ptr_pila->tope - 1];
  26. }
  27.  
  28. int vacia(tipo_pila *ptr_pila) {
  29.     if (ptr_pila->tope == 0)
  30.         return 1;
  31.     else
  32.         return 0;
  33. }
  34. int llena(tipo_pila *ptr_pila) {
  35.     if (ptr_pila-> tope == 50000)
  36.         return 1;
  37.     else
  38.         return 0;
  39. }
  40.  
  41. int main() {
  42.     tipoelemento, *tipo_pila, *aux, menor = 50000;
  43.     int cantidad, codigo, cd;
  44.     ptr_pila = (tipo_pila*) malloc(sizeof(tipo_pila));
  45.     nuevaPila( ptr_pila);
  46.     printf("introduzca el codigo:");
  47.     scanf("%d", &cd.codigo);
  48.     if (cd.codigo == 0)
  49.         return 1;
  50.     else {
  51.         while (cd.codigo != 0) {
  52.             printf("introduzcael nombre:");
  53.             scanf("%s", &cd.nombre);
  54.             printf(" introduzca la cantidad");
  55.             scanf("%d", &cantidad);
  56.             push(ptr_pila, cd);
  57.             printf("introduzca el codigo:");
  58.             scanf("%d", &codigo);
  59.         }
  60.  
  61.         printf("pila original:\n");
  62.         visualpila(ptr_pila);
  63.         printf("los discos con mas de 1000 copias vendidas:\n");
  64.         while (!vacia(ptr_pila)) {
  65.             cd = pop(ptr_pila);
  66.             if (cd.cantidad > 1000)
  67.                 printf("%d %s %d \n", cd.codigo, cd.nombre, cd.cantidad);
  68.             if (cd.cantidad < menor)
  69.                 menor = cd.cantidad;
  70.             push(aux, cd);
  71.         }
  72.         printf("discos con menores copias \n");
  73.         while (!vacia(aux)) {
  74.             cd = pop(aux);
  75.             if (cd.cantidad == menor)
  76.                 printf("%d %s %d \n", cd.codigo, cd.nombre, cd.cantidad);
  77.             else
  78.                 push(ptr_pila.cd);
  79.         }
  80.     }

Bueno, veo un horrores, no errores en tu código:

En la línea 42 no se sabe que tipo es tipoelemento,
en la linea 44 no se sabe de que tipo es ptr_pila,
en la linea 47 tratas a cd como una estructura cuando este es declarado como un entero.
.
.
.
y en fin me canso escribir todo lo que veo

Un consejo, cuando programas aplicaciones largas ve siempre probando las funciones que tienes completas en cada paso y no después de haber escrito todo verificar si esta funciona bien, ya que si salta un error, la depuración es de todo y no de una parte específica, eso es una muy mala práctica en programación.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #3 (permalink)  
Antiguo 26/06/2011, 15:31
 
Fecha de Ingreso: junio-2011
Mensajes: 3
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Programa en C++

Si me podrias ayudar entonces como seria osea ya le he modificado los errores q me recalcastes pero noc por dond seguir! si me pudieces ayudar te lo agradeceria!
  #4 (permalink)  
Antiguo 26/06/2011, 19:32
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años
Puntos: 71
Respuesta: Programa en C++

Cita:
Iniciado por bloods_drk Ver Mensaje
Si me podrias ayudar entonces como seria osea ya le he modificado los errores q me recalcastes pero noc por dond seguir! si me pudieces ayudar te lo agradeceria!
Como te mencione prueba cada una de tus funciones 1 a 1, podrías iniciar por

Código C++:
Ver original
  1. void nuevaPila(tipo_pila *ptr_pila) {
  2.     ptr_pila->tope = 0;
  3. }

luego
Código C++:
Ver original
  1. void push(tipo_pila *ptr_pila, int tipoElemento) {
  2.     if (ptr_pila == NULL)
  3.  
  4.         return;
  5.     else {
  6.         ptr_pila -> pila[ptr_pila -> tope++] = tipoElemento;
  7.         return;
  8.     }
  9. }

así hasta el final comentando las funciones que no necesitas. Si ahí tienes errores posteas el código con el error que te sale y lo resolvemos.
Nadie en ningún lado te va a dar el código hecho para que ejecutes, este es sólo un medio para resolver dudas o faltas en tu implementación.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #5 (permalink)  
Antiguo 26/06/2011, 20:36
 
Fecha de Ingreso: junio-2011
Mensajes: 3
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Programa en C++

Bueno amigo aqui ya modifique algunas cosas hasta aqui lo llevo y me corre y pide el codigo hasta q inserte 0 de hay termina la ejecucion
Código C++:
Ver original
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<stdlib.h>
  4. typedef struct pilas{
  5.       int tope;
  6.       int codigoCd[500];
  7.       char nombre[500];
  8.       int numCD[500];
  9. } tipo_pila;
  10. void nuevaPila(tipo_pila*ptr_pila){
  11.                                ptr_pila->tope=0;
  12.                                }
  13. void push(tipo_pila*ptr_pila,int codigo){
  14.        if(ptr_pila == NULL)
  15.      
  16.        return;
  17.        else{
  18.                   ptr_pila -> codigoCd[ptr_pila -> tope++]=codigo;
  19.                   return;
  20.                   }
  21. }
  22.    int sacar(tipo_pila*ptr_pila){
  23.         return ptr_pila->codigoCd[--ptr_pila->tope];
  24. }
  25. int obtener(tipo_pila*ptr_pila){
  26.             return ptr_pila->codigoCd[ptr_pila->tope-1];
  27.             }
  28.                                                                                    
  29.      
  30. int vacia(tipo_pila*ptr_pila){
  31.                                    if (ptr_pila->tope==0)
  32.        return 1;
  33.        else
  34.        return 0;
  35. }
  36. int llena(tipo_pila*ptr_pila){
  37.                               if (ptr_pila-> tope==500)
  38.      return 1;
  39.      else
  40.      return 0;
  41. }
  42. main(){
  43.             tipo_pila*ptr_pila;
  44.             int codgCd, cantidad;
  45.             char nombre;
  46.             ptr_pila=(tipo_pila*)malloc(sizeof (tipo_pila));  
  47.             nuevaPila(ptr_pila);
  48.            
  49.             printf("Introduzca el codigo del CD Finalize con cero (0)\n\n");
  50.             scanf("%d",& codgCd);
  51.             if(codgCd== 0)
  52.             return 1;
  53.             else{
  54.                      while ((codgCd!= 0)&&(!llena(ptr_pila))){
  55.                            push(ptr_pila,codgCd);
  56.                      scanf("%d",&codgCd);
  57.                      }}
  58.                      
  59.                      printf("\n\nCodigo\n");
  60.                      while(!vacia(ptr_pila)){
  61.        printf("%d\n",sacar(ptr_pila));
  62.        }  
  63.                      getch();  
  64.                      }
  #6 (permalink)  
Antiguo 26/06/2011, 22:49
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años
Puntos: 71
Respuesta: Programa en C++

No he probado tu código, pero si dices que funciona quien más que tu para afirmarlo, sigue así y si encuentras dificultad estamos aquí para resolverlas.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:34.