domingo, 19 de mayo de 2013

Pirámide invertida en lenguaje C (reprogramado)

Tal  como indicaba en el post anterior (http://pai-torneiros.blogspot.com.es/2013/05/piramide-de-asteriscos-invertida-en.html) también es posible enfrentarse a la problemática de la pirámide invertida, intentando resolver el problema de la pirámide invertida, en lugar de apañar el de la pirámide normal.


Para resolver este problema, es preciso analizar como varían el número de espacios y asteriscos a imprimir con respecto al número de línea que se está imprimiendo.

Analizando la situación para un caso sencillo, se puede obtener la relación entre el número de espacios y asteriscos a imprimir y la línea que se está imprimiendo.



En este caso la relación del número de espacios parece evidente, es igual al número de línea menos uno.

En cuanto al número de asteriscos se puede calcular mediante la siguiente fórmula:
(Total de lineas X 2) - (número de espacios X 2) - 1

Para el caso del ejemplo resultará:
línea 1 - (3 X 2) - (0 X 2) - 1 = 6 - 0 - 1 = 5
línea 2 - (3 X 2) - (1 X 2) - 1 = 6 - 2 - 1 = 3
línea 3 - (3 X 2) - (2 X 2) - 1 = 6 - 4 - 1 = 1

Aplicando estos conocimientos se obtiene el código que se puede ver a continuación.

Enlace a compilador web Codepad
http://codepad.org/fYOsqpfe


#include <stdio.h>
#include <stdlib.h>

int main()
{
    int total_lineas = 10, nlinea = 1, nast = 0, nesp = 0;

    printf ("Piramide de asteriscos:\n");
    printf ("Indique cuantos pisos desea que tenga la piramide (Maximo 40 pisos): ");
    scanf("%d", &total_lineas);

    while (nlinea <= total_lineas)
    {
            while (nesp < (nlinea - 1))
            {
                printf(" ");
                nesp++;
            }

            while (nast < ((total_lineas * 2) - (nesp * 2) - 1))
            {
                printf("*");
                nast++;
            }

    nesp = 0;
    nast = 0;
    nlinea++;
    printf("\n");
    }
    return 0;
}

Pirámide de asteriscos invertida en lenguaje C.

Partiendo del código de la pirámide de asteriscos (http://pai-torneiros.blogspot.com.es/2011/08/piramide-de-asteriscos.html), a petición de un lector del blog lo modificaré para que la pirámide aparezca invertida.


Las modificaciones necesarias son mínimas, se trata simplemente de comenzar con el número de línea igual al del total de líneas, mientras que en el final del bucle while en lugar de sumar una línea se le resta (en el código se pueden localizar por ser las líneas que están a continuación de las de los comentarios).

De esta forma con dos cambios mínimos se puede reutilizar el código anterior, sin embargo también se podría reescribir el código para que quedase más claro. Eso lo veremos en otro post.

Enlace a compilador web CodePad
http://codepad.org/NMvMY8EP


#include <stdio.h>
#include <stdlib.h>

int main()
{

    int total_lineas = 10, nlinea = 0, nast = 0, nesp = 0;

    printf ("Piramide de asteriscos:\n");
    printf ("Indique cuantos pisos desea que tenga la piramide (Maximo 40 pisos): ");
    scanf("%d", &total_lineas);

    // inicializo nlinea al numero total de lineas
    nlinea = total_lineas;

    while (nlinea > 0)
    {
            while (nesp < total_lineas - nlinea)
            {
                printf(" ");
                nesp++;
            }
            while (nast < ((nlinea * 2) - 1))
            {
                printf("*");
                nast++;
            }
    nesp = 0;
    nast = 0;
    //resto una linea cada vez
    nlinea--;
    printf("\n");
    }
    return 0;
}

sábado, 24 de diciembre de 2011

Mensaje navideño de fin de curso


Mensaje navideño de fin de curso





Este post es solo para desearos Feliz Navidad a todos.

Solo recordaros que aquellos que que estéis interesado en que se haga referencia a que vuestro trabajo en este blog, os pongáis en contacto conmigo.

También podéis elegir si lo que queréis es un texto con capturas de imagen, vídeos, o incluso incluir un enlace de descarga al ejecutable.

Sin más os deseo lo mejor en estas fiestas y que el futuro os sonría.

Vicente Arosa

Fuente Imagen: Foto realizada por Vicente Arosa

martes, 13 de diciembre de 2011

lunes, 12 de diciembre de 2011

Grabación de soportes opticos


Métodos de Grabación o Quemado de soportes gráficos

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Presentación

https://docs.google.com/presentation/d/1rCP5WuXTDQ250DT_kbPengDNRnrtTLWLSiLhK5vU1PY/edit

Related Posts Plugin for WordPress, Blogger...