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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Importante-Curioso en: 27 Agosto 2019, 04:23 am
Buenas estoy haciendo un ejercicio de la Facultad :silbar: y tengo una curiosidad
Código
  1.  
  2. #include<stdio.h>
  3. #include<stdbool.h>
  4.  
  5. #define max 10
  6.  
  7. typedef float tPila[max];
  8. tPila pila;
  9.  
  10. int i, tope, acum = 0;
  11.  
  12. int menu(int eleccion);
  13. bool CrearPilaVacia();
  14. bool PilaVacia();
  15. bool PilaLlena();
  16. void Apilar(int);
  17. void Desapilar();
  18. int cima();
  19. void VisualizarElementos();
  20. void sumaPila();
  21.  
  22. int main()
  23. {
  24. int eleccion;
  25.  
  26. menu(eleccion);
  27. }
  28. int menu(int eleccion)
  29. {
  30.   int pElementos;
  31.  
  32. while(eleccion != -1)
  33. {
  34.    printf("\n--BIENVENIDO--\n");
  35.    printf("1.- CrearPilaVacia\n");
  36.    printf("2.- Pila vacia? \n");
  37.    printf("3.- Pila Llena? \n");
  38.    printf("4.- Apilar \n");
  39.    printf("5.- Desapilar \n");
  40.    printf("6.- Visualizar Elementos \n");
  41.    printf("7.- Suma Elementos \n");
  42.    printf("-1.- Salir\n\n");
  43.    printf(".- Elige una opcion..\n");
  44.    scanf("%d",&eleccion);
  45. switch(eleccion)
  46. {
  47. case 1:
  48.    CrearPilaVacia();
  49.    printf("Has Creado una pila vacia? %s\n",CrearPilaVacia() ? "si" : "no");
  50.    break;
  51.  
  52.    case 2:
  53.    PilaVacia();
  54.    printf("Pila vacia? %s\n",PilaVacia() ? "si" : "no");
  55.    break;
  56.  
  57. case 3:
  58. PilaLlena();
  59. printf("Pila Llena? %s\n",PilaLlena() ? "si" : "no");
  60. break;
  61.  
  62. case 4:
  63. Apilar(pElementos);
  64. break;
  65.  
  66. case 5:
  67. Desapilar();
  68.    break;
  69.  
  70.    case 6:
  71.    VisualizarElementos();
  72.    break;
  73.  
  74.    case 7:
  75.    sumaPila();
  76.    break;
  77. }
  78. }
  79. }
  80. bool CrearPilaVacia()
  81. {
  82. tope = -1;
  83. }
  84. bool PilaVacia()
  85. {
  86. if(tope == -1)
  87. {
  88. return true; /* Tiene elementos.*/
  89. }
  90. else
  91. {
  92. return false; /* No tiene elementos.*/
  93. }
  94. }
  95. bool PilaLlena()
  96. {
  97. if(tope == (max-1))
  98. {
  99. return true;
  100. }
  101. else
  102. {
  103. return false;
  104. }
  105. }
  106. void Apilar(int pElementos)
  107. {
  108. if(PilaLlena() != true)
  109. {
  110. tope = tope + 1;
  111. pila[tope] = pElementos;
  112. printf("Ingrese un elemento! \n");
  113. scanf("%f",&pila[tope]);
  114. printf("Elemento insertado! %.2f\n",pila[tope]);
  115. }
  116. else
  117. {
  118. printf("Pila Llena!\n");
  119. }
  120. }
  121. void Desapilar()
  122. {
  123. if(PilaVacia() == true)
  124. {
  125. printf("Pila Vacia!!\n");
  126. }
  127. else
  128. {
  129. pila[tope] = 0;
  130. tope = tope - 1;
  131. printf("Elemento eleminado!!\n");
  132. }
  133. }
  134. int cima()
  135. {
  136. return pila[tope];
  137. }
  138. void VisualizarElementos()
  139. {
  140. int i;
  141. printf("Elemento en pila: \n");
  142. for(i=0; i<=tope; i++)
  143. {
  144. printf("\t%.2f",pila[i]);
  145. }
  146. printf("\n\n");
  147. }
  148. void sumaPila()
  149. {
  150. int i;
  151. float suma=0;
  152.  
  153. printf("Suma de elementos en la pila: \n");
  154.  
  155. // Suma los elementos de una pila.
  156. for(i=0; i<=tope; i++)
  157. {
  158. suma = suma + pila[i];
  159. acum = suma + 0;
  160.    }
  161.    printf("\t%.2f",acum);
  162. printf("\n\n");
  163. }
  164.  
  165.  

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  Programación / Programación C/C++ / Importante bucle mientras en: 16 Mayo 2019, 02:49 am
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;

}
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines