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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Temas
Páginas: 1 [2]
11  Programación / Programación C/C++ / Una ayudita para terminar de dibujar esta figura con asteriscos en: 18 Mayo 2014, 20:47 pm
Hola amigos,

haciendo ejercicios me he topado con dibujar un rombo, me gustaría me dieran alguna pista para poder terminarlo, está casi listo pero no llego a ver la parte del triángulo inferior como terminar de rellenarlo adecuadamente. Es el último bucle for el que no llego a interpretarlo para que me imprima satisfactoriamente.

    *
  ***
*****
***
  **
    *

Este es el código que llevo:

Código
  1. #include <stdio.h>
  2.  
  3. /* imprime un rombo con asteriscos */
  4.  
  5. int main() {
  6.  
  7.    int i,k,j,nivel=3;
  8.  
  9.    for( i=0; i<nivel; i++ ){ /* este for es para la altura del triángulo */
  10.  
  11.        for(j=nivel-i; j>0; j--){ /* saco los espacios */
  12.            printf(" ");
  13.        }
  14.        for(k =(i*2)+1; k>0; k--){ /*imprimo los asteriscos por fila */
  15.            printf("*");
  16.        }
  17.        printf("\n");
  18.   } /* Hasta aquí obtengo el primer triángulo */
  19.  
  20.    for( i=0; i<nivel; i++ ){ /* Ahora procedo a obtener el triángulo inferior */
  21.  
  22.        for( j=i+1; j>0 ; j-- ){ /* saco los espacios */
  23.            printf(" ");
  24.        }
  25.        for( k=(nivel*2-i)-1; k>i; k-- ){ /* imprimo los asteriscos */
  26.            printf("*");
  27.        }
  28.        printf("\n");
  29.    }
  30. }
  31.  

Una pista me vendría genial para conseguir terminarlo por mi cuenta.

Saludos y gracias
12  Programación / Programación C/C++ / ayuda intercambiando switch por if-else en: 14 Mayo 2014, 22:03 pm
Hola amigos que tal,

estoy intentando de intercambiar la sentencia switch por un if-else anidado y mi problema viene acarreado a la hora de que cada vez se ejecuta una sentencia se ejecuta igualmente el último else mostrando:

Código
  1. else{
  2.                printf( "**Introdujo una letra incorrecta**" );
  3.                printf( "\nIntroduzca una nueva calificacion: " );
  4.        }
  5.  

Donde supuestamente es el default de la antigua estructura switch por la que estoy intercambiando por este if-else anidado. Les adjunto el código.

Código
  1. /* Cuenta las calificaciones con letras pero se usa if-else anidados en lugar de condicional switch */
  2. #include <stdio.h>
  3.  
  4. int main()
  5. {
  6.   int calificacion,cuentaA = 0,cuentaB = 0,cuentaC = 0,cuentaD = 0,cuentaF = 0;
  7.  
  8.   printf(  "**Introduzca el caracter EOF para finalizar la entrada de datos**\n"  );
  9.   printf(  "\nIntroduzca la letra de la calificacion: "  );
  10.  
  11.   while ( ( calificacion = getchar() ) != EOF ) {
  12.  
  13.        if( calificacion =='a' || calificacion == 'A' )
  14.                ++cuentaA;
  15.        else if( calificacion =='b' || calificacion == 'B' )
  16.                ++cuentaB;
  17.        else if( calificacion =='c' || calificacion == 'C' )
  18.                ++cuentaC;
  19.        else if( calificacion =='d' || calificacion == 'D' )
  20.                ++cuentaD;
  21.        else if( calificacion =='f' || calificacion == 'F' )
  22.                ++cuentaF;
  23.        else{
  24.                printf( "**Introdujo una letra incorrecta**" );
  25.                printf( "\nIntroduzca una nueva calificacion: " );
  26.        }
  27.   }
  28.   printf( "\nLos totales por calificacion son:\n" );
  29.   printf( "A: %d\n", cuentaA ); printf( "B: %d\n", cuentaB );printf( "C: %d\n", cuentaC );printf( "D: %d\n", cuentaD ); printf( "F: %d\n", cuentaF );
  30.   return 0;
  31. }
  32.  

Y claro me gustaría como tratar este supuesto caso default pero adaptado a if-else.. sin que me arroje en cada petición de introducción de carácter lo que les indico..

Muchas gracias
13  Programación / Programación C/C++ / problema con sentencia switch en: 4 Mayo 2014, 23:35 pm
Hola amigos,

tengo un problema a la hora de ejecutar adecuadamente esta sentencia y es a la hora de cuando se introduce en un caso no sale de él, no entiendo porque break no rompe cuando termina la ejecución de la instrucción.

Deseo que el usuario introduzca una opción, seguidamente introduzca un valor, se realice su cálculo de venta de ese producto y por último que muestre el total de venta de todos los productos existentes en la tienda.

También observo que no obedece cuando se introduce un carácter no válido metiéndose en un bucle infinito no acertando porque....


Código
  1.  
  2. #include <stdio.h>
  3.  
  4. int main(){
  5.  
  6.    int opcion;
  7.    float cantidad,total=0;
  8.  
  9.    printf("En esta tienda se vende 5 productos con los siguientes\n");
  10.    printf("\nPrecios:");
  11.    printf("\nProducto 1: 2,98$");
  12.    printf("\nProducto 2: 4,50$");
  13.    printf("\nProducto 3: 9,98$");
  14.    printf("\nProducto 4: 4,49$");
  15.    printf("\nProducto 5: 6,87$\n");
  16.  
  17.    printf("\nIntroduzca numero de producto. -1 para salir: ");
  18.    scanf("%d",&opcion);
  19.  
  20.    while( opcion != -1){
  21.  
  22.        switch( opcion ){
  23.  
  24.        case 1:
  25.  
  26.            printf("\nIntroduzca cantidad vendida: ");
  27.            scanf("%f",&cantidad);
  28.            printf("El precio de esta venta es: %f",cantidad*2.98);
  29.            total+=cantidad*=2.98;
  30.            break;
  31.  
  32.        case 2:
  33.  
  34.            printf("\nIntroduzca cantidad vendida: ");
  35.            scanf("%f",&cantidad);
  36.            printf("El precio de esta venta es: %f",cantidad*4.50);
  37.            total+=cantidad*=4.50;
  38.            break;
  39.  
  40.        case 3:
  41.  
  42.            printf("\nIntroduzca cantidad vendida: ");
  43.            scanf("%f",&cantidad);
  44.            printf("El precio de esta venta es: %f",cantidad*9.98);
  45.            total+=cantidad*=9.98;
  46.            break;
  47.  
  48.        case 4:
  49.  
  50.            printf("\nIntroduzca cantidad vendida: ");
  51.            scanf("%f",&cantidad);
  52.            printf("El precio de esta venta es: %f",cantidad*4.49);
  53.            total+=cantidad*=4.49;
  54.            break;
  55.  
  56.        case 5:
  57.  
  58.            printf("\nIntroduzca cantidad vendida: ");
  59.            scanf("%f",&cantidad);
  60.            printf("El precio de esta venta es: %f",cantidad*6.87);
  61.            total+=cantidad*=6.87;
  62.            break;
  63.  
  64.        default:
  65.  
  66.            printf("\nIntroduzca numero de producto VALIDO: ");
  67.            break;
  68.  
  69.        }
  70.    }
  71.    printf("\nLas ventas totales fueron: %f\n\n ",total);
  72.    return 0;
  73. }
  74.  

Cualquier aclaración se lo agradecería.

Saludos y muchas gracias

++c
14  Programación / Programación C/C++ / duda ejercicio, empezando con C en: 28 Abril 2014, 21:47 pm
Hola que tal,

acabo de empezar a programar en C y he realizado el siguiente ejercicio:

Programa que calcula e imprima el promedio de varios enteros. Suponga que el último valor que lee la instrucción scanf es el valor 9999.

Código:
 
#include <stdio.h>

int main(){
    int contador=1,suma=0,x;
    float promedio=0.0;

    do{


            printf("\nDame un numero, introduce 9999 para salir: ");
            scanf("%d",&x);
            if(x==9999){
                break;
            }
            else{

                suma=suma+x;
                promedio=(float)suma/contador;
                contador++;

            }

    }
    while(x!=9999);
    printf("\n\nEl promedio total es: %f",promedio);
    return 0;
}

Me gustaría conocer como romper adecuadamente el programa si el primer dígito es 9999 sin mostrar el mensaje " El promedio total es 0.0 "

Cualquier indicación para programar más eficientemente se lo agradecería.

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