Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - ElfoArdiente

#1
Programación C/C++ / Importante-Curioso
27 Agosto 2019, 04:23 AM
Buenas estoy haciendo un ejercicio de la Facultad :silbar: y tengo una curiosidad


#include<stdio.h>
#include<stdbool.h>

#define max 10

typedef float tPila[max];
tPila pila;

int i, tope, acum = 0;

int menu(int eleccion);
bool CrearPilaVacia();
bool PilaVacia();
bool PilaLlena();
void Apilar(int);
void Desapilar();
int cima();
void VisualizarElementos();
void sumaPila();

int main()
{
int eleccion;

menu(eleccion);
}
int menu(int eleccion)
{
   int pElementos;
   
while(eleccion != -1)
{
    printf("\n--BIENVENIDO--\n");
    printf("1.- CrearPilaVacia\n");
    printf("2.- Pila vacia? \n");
    printf("3.- Pila Llena? \n");
    printf("4.- Apilar \n");
    printf("5.- Desapilar \n");
    printf("6.- Visualizar Elementos \n");
    printf("7.- Suma Elementos \n");
    printf("-1.- Salir\n\n");
    printf(".- Elige una opcion..\n");
    scanf("%d",&eleccion);
switch(eleccion)
{
case 1:
    CrearPilaVacia();
    printf("Has Creado una pila vacia? %s\n",CrearPilaVacia() ? "si" : "no");
    break;
   
    case 2:
    PilaVacia();
    printf("Pila vacia? %s\n",PilaVacia() ? "si" : "no");
    break;

case 3:
PilaLlena();
printf("Pila Llena? %s\n",PilaLlena() ? "si" : "no");
break;

case 4:
Apilar(pElementos);
break;

case 5:
Desapilar();
    break;
   
    case 6:
    VisualizarElementos();
    break;
   
    case 7:
    sumaPila();
    break;
}
}
}
bool CrearPilaVacia()
{
tope = -1;
}
bool PilaVacia()
{
if(tope == -1)
{
return true; /* Tiene elementos.*/
}
else
{
return false; /* No tiene elementos.*/
}
}
bool PilaLlena()
{
if(tope == (max-1))
{
return true;
}
else
{
return false;
}
}
void Apilar(int pElementos)
{
if(PilaLlena() != true)
{
tope = tope + 1;
pila[tope] = pElementos;
printf("Ingrese un elemento! \n");
scanf("%f",&pila[tope]);
printf("Elemento insertado! %.2f\n",pila[tope]);
}
else
{
printf("Pila Llena!\n");
}
}
void Desapilar()
{
if(PilaVacia() == true)
{
printf("Pila Vacia!!\n");
}
else
{
pila[tope] = 0;
tope = tope - 1;
printf("Elemento eleminado!!\n");
}
}
int cima()
{
return pila[tope];
}
void VisualizarElementos()
{
int i;
printf("Elemento en pila: \n");
for(i=0; i<=tope; i++)
{
printf("\t%.2f",pila[i]);
}
printf("\n\n");
}
void sumaPila()
{
int i;
float suma=0;

printf("Suma de elementos en la pila: \n");

// Suma los elementos de una pila.
for(i=0; i<=tope; i++)
{
suma = suma + pila[i];
acum = suma + 0;
    }
    printf("\t%.2f",acum);
printf("\n\n");
}



Al compilar me da un resultado muy raro, pues nose por que se genera
Al mostrar los elementos de la pila, me da el siguiente resultado.

0.00 4,50 4,30 4.90 5.90

Pues el 0.00 nose por que esta hay y nose como quitarlo
Si me pueden ayudar porfavor a resolver este curioso problema, les agradeceria muchisimo
#2
AYUDA POR FAVOR!!!
estoy haciendo un programa en C para una materia en algoritmo y necesito ayuda para regularizar la materia, por favor

mi problema es el bucle while mi condición no me cumple ayudaaa..

MI CODIGO:


// Trabajo Evaluativo

#include<stdio.h>

int main(){

// Declaracion de variables.

int n_cliente, opcion, recauda_combo, pre_combo1, pre_combo2, pre_combo3, pago, total, precioFinal, cant_cliente;

// Declaracion de variables auxiliares.

pre_combo1 = 250;  //precio del combo 1
pre_combo2 = 255; // precio del combo 2
pre_combo3 = 350; // precio del combo 3

/*

Opcion 1 = combo1
Opcion 2 = combo2
Opcion 3 = combo3

*/

// Ingreso de datos.

printf("Ingrese el numero del cliente: \n");
scanf("%d",&n_cliente);

printf("Ingrese el precio del combo elegido: (1-combo 1: $250, 2-combo 2: $255, 3-combo 3: $350):\n");
scanf("%d",&opcion);

printf("Ingrese la forma de pago: (1- efectivo, 2- tarjeta de debito, 3- tarjeta de credito): \n");
scanf("%d",&pago);

// Inicio de la estructura iterativa mientras.

while(n_cliente != 9999){  // al escribir 9999 no me sale del bulce
   
   // Inicio de la estructura selectiva segun sea.
   
   switch (opcion){
      
      case 1:
            printf("Selecciono la opcion combo 1: \n\n");
           
            // Inicio de la estructura anidada para el combo1.
           
            if((opcion == 1)&&(pago == 1)){
               
               cant_cliente = n_cliente * pre_combo1;   /* Cant_cliente es el total de clientes por el combo elegido.*/
               total = cant_cliente * 0.10;           //  calculando el porcentaje y guardando en la variable total.
               precioFinal = cant_cliente - total;    //  calculando el descuento para obtener el precio total.
                   // recaudacion
               
               printf("El precio que debe pagar por el combo elegido es: %d \n\n",precioFinal);
               
           }else{
              
              if((opcion == 1)&&(pago == 2)){
                 cant_cliente = n_cliente * pre_combo1;
                 total = cant_cliente;
              
                 
                 printf("El precio que debe pagar por el combo elegido es: %d \n\n",total);
                 
              }else{
                 
                 if((opcion == 1)&&(pago == 3)){
                    
                    cant_cliente = n_cliente * pre_combo1;
                    total = cant_cliente * 0.25;
                    precioFinal = cant_cliente - total;
                    
         
                    printf("El precio que debe pagar por el combo elegido es: %d \n\n",precioFinal);
                 }
              }
           }
           break;
           
           case 2:
              
              printf("Seleciono la opcion combo 2: \n\n");
              
              // Inicio de la estructura anidada para el combo2.
              
              if((opcion == 2)&&(pago == 1)){
               
               cant_cliente = n_cliente * pre_combo2;
               total = cant_cliente * 0.10;
               precioFinal = cant_cliente - total;
               recauda_combo = precioFinal;
               
               printf("El precio que debe pagar por el combo elegido es: %d \n\n",precioFinal);
               
           }else{
              
              if((opcion == 2)&&(pago == 2)){
                 
                 cant_cliente = n_cliente * pre_combo2;
                 total = cant_cliente;
                 recauda_combo = total;
                 
                 printf("El precio que debe pagar por el combo elegido es: %d \n\n",total);
                 
              }else{
                 
                 if((opcion == 2)&&(pago == 3)){
                    
                    cant_cliente = n_cliente * pre_combo2;
                    total = cant_cliente * 0.25;
                    precioFinal = cant_cliente - total;
                    recauda_combo = precioFinal;
                    
                    printf("El precio que debe pagar por el combo elegido es: %d \n\n",precioFinal);
                    
                 }
              }
           }
           break;
          
           case 3:
          
           printf("Selecciono la opcion combo 3: \n\n");
          
           // Inicio de la estrutura anidada para el combo3.
          
           if((opcion == 3)&&(pago == 1)){
               
               cant_cliente = n_cliente * pre_combo3;
               total = cant_cliente* 0.10;
               precioFinal = cant_cliente - total;
               
               
               printf("El precio que debe pagar por el combo elegido es: %d \n\n",precioFinal);
               
           }else{
              
              if((opcion == 3)&&(pago == 2)){
                 
                 cant_cliente = n_cliente * pre_combo3;
                 total = cant_cliente;
                 
                 printf("El precio que debe pagar por el combo elegido es: %d \n\n",total);
                 
              }else{
                 
                 if((opcion == 3)&&(pago == 3)){
                    
                    cant_cliente = n_cliente * pre_combo3;
                    total = cant_cliente * 0.25;
                    precioFinal = cant_cliente - total;
                    
                    printf("El precio que debe pagar por el combo elegido es: %d \n\n",precioFinal);
                 }
              }
           }
           break;
          
           default: printf("Opcion invalida vuelva a intentarlo: \n\n");    
          
   }               
                    // Mostrar el importe total del combo.
               
               printf("El improte total del combo es: %d\n\n",cant_cliente);
   
   
                  // Mostrar la cantidad de clientes que eligieron el combo 2.
                     
                    if(opcion == 2){
                       
                       printf("La cantidad de clientes que eligieron el combo 2 es: %d\n\n",n_cliente);
                       
               }
               
               // Mostrar el porcentaje respecto del combo a pagar.
               
                 if((opcion == 1)&&(pago != 2)){
         
                      printf("El importe de descuento del combo es: %d\n\n",total);
               
                   }else{
              
                   if((opcion == 2)&&(pago != 2)){
                 
                     printf("El importe de descuento del combo es: %d\n\n",total);
                 
                 }else{
                 
                  if((opcion == 3)&&(pago != 2)){
                    
                    printf("El importe de descuento del combo es: %d\n\n",total);
            
                  }
                }
               }
               
               // Mostrar  el importe de  recaudacion de un combo.
               
               printf("El importe recaudado del combo es $%d:\n\n",recauda_combo);
               
               // Ingreso de datos.
   
                   printf("Ingrese el numero del cliente: \n\n");
                    scanf("%d",&n_cliente);

                    printf("Ingrese el precio del combo elegido: (1-combo 1: $250, 2-combo 2: $255, 3-combo 3: $350): \n");
                    scanf("%d",&opcion);

                    printf("Ingrese la forma de pago: (1- efectivo, 2- tarjeta de debito, 3- tarjeta de credito): \n");
                    scanf("%d",&pago);
               
   
}

return 0;

}