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

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: 1 2 [3]
21  Programación / Programación C/C++ / Re: Una ayudita para terminar de dibujar esta figura con asteriscos en: 18 Mayo 2014, 23:36 pm
Gracias Blaster!!

Era lo que buscaba!! Me ayudaste a interpretar esa parte de código.

Lo dejo anotado correctamente en el primer post por si le viene bien a otro usuario.

Saludos!!
22  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
23  Programación / Programación C/C++ / Re: ayuda intercambiando switch por if-else en: 15 Mayo 2014, 22:03 pm
Hola gracias por los sabios consejos, he aprendido con sus explicaciones varias formas para solventar este problema.

No caía en ese salto de línea que me producía el que se tragara el último else...

Me gustaría conocer para futuros problemas como o que medios usan para corregir o detectar errores, he visto uso de debugger o imprimir por pantalla lo que deseo ver si se ejecuta adecuadamente... no se si voy bien encaminado....

Me despido agradeciendo de nuevo su ayuda.

Saludos
24  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
25  Programación / Programación C/C++ / Re: problema con sentencia switch en: 6 Mayo 2014, 00:16 am
Hola amchacon gracias por la respuesta, en efecto ese era el problema.

Me gustaría conocer un último matiz que aún no he llegado a aprender y espero conocer adelatándome en materia y es en relación a optimizar el menu de selección cuando se introduce otro carácter distinto a lo estipulado iniciando un bucle infinito.

Dejo el código como lo llevo elaborado:

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

Saludos y gracias por ayudar a personas que se inician en el mundo de la programación.
26  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
27  Programación / Programación C/C++ / Re: duda ejercicio, empezando con C en: 1 Mayo 2014, 14:10 pm
Espléndido!!  ;-) Que pasada conocer estos detalles de estas funciones, supongo que más adelante conoceré el poder de printf y scanf más a fondo, pero me alegro de ver un ejemplo tan práctico para adelantar y afianzar mejor conocimientos.

Gracias vangodp por colocarme ese ejemplo y a leosansan por indagar cuando me corresponda una validación de enteros como comentas más amplia  ;D

Saludos!!
28  Programación / Programación C/C++ / Re: duda ejercicio, empezando con C en: 1 Mayo 2014, 00:23 am
Hola,

muchas gracias por contestar a vangodp, leosansan y a rir3760.

Unas dudas:

- Para el código de leosansan:

                      
Código
  1. if (contador!=1)

No entiendo bien el porque, ¿no sería contador !=0 para que realizara el promedio?

- Para el código de rir3760

          
Código:
if (scanf("%d",&x) != 1 || x == 9999)

No entiendo !=1, si se refiere a comparar el valor del while con la lectura por teclado...

Se me pasaba dejo el código entero con la modificación aplicada de rir3760

Código:
#include <stdio.h>

    int main(void)
    {
      int contador = 0, suma = 0, x;

      while (1){
         printf("Dame un numero, introduce 9999 para salir: ");
         fflush(stdout);
         if (scanf("%d",&x) != 1 || x == 9999)
            break;
         else {
            suma += x;
            contador++;
         }
      }
      if(contador!=0){
        printf("\nEl promedio de la operacion es: %f", (float)suma/contador);
      }
      return 0;
    }

Muchas gracias, he aprendido varios puntos muy interesantes y la facilidad y soltura de programación que mostráis.

Saludos!!
29  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 [3]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines