Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: elendur14 en 05 de Junio 2020, 22:16

Título: Ejercicios resueltos en C lenguajeC programar ROMBO asteriscos consola CU00542F#
Publicado por: elendur14 en 05 de Junio 2020, 22:16
Buen dia, presento mi respuesta para el ejercicio CU00542F del tutorial de fundamentos de programación usando lenguaje C de aprenderaprogramar.

Les mando mi código para generar un rombo, mediante un numero dado desde el teclado. Estoy emocionado ya que estoy retomando la programacion, siempre me ha gustado. Por causas del destino la dejé; ya anteriormente tenía conocimientos en  c y c++, ensamblador, clipper5, visual basic y foxpro. Estoy retomando de nuevo todos los conocimientos mediante esta pagina. En mis tiempos de estudiante no existia el CODE BLOCKS, ha sido facil adaptarme.

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

#define CENTRADO 50

int main()
{
    int cantidadAsteriscos = 0;
    int mitad = 0;
    int resto = 0;

    printf("Dame el tamano del ROMBO entre 3 y 150:  ");
    scanf("%d", &cantidadAsteriscos);

    mitad = (cantidadAsteriscos/2) + CENTRADO;

    if(cantidadAsteriscos%2 == 0)
    {
        resto = 1;

    }

    if(cantidadAsteriscos >= 3 && cantidadAsteriscos <= 150)
    {
        for(int y = 0; y <= cantidadAsteriscos; y+=2)
        {
            for(int x = 0; x < mitad; x++)
            {
                printf(" ");
            }

            for(int h = 0; h <= y - resto; h++)
            {
                printf("*");
            }

            mitad --;
            printf("\n");
        }

        for(int y = cantidadAsteriscos-2; y >=0 ; y-=2)
        {
            for(int x = mitad + 1; x>=0 ; x--)
            {
                printf(" ");
            }

            for(int h = 0; h < y; h++)
            {
                printf("*");
            }

            mitad ++;
            printf("\n");

        }

    }
    else
    {
        printf("Solo puedes dar valores entre 3 y 150.... \n");
    }

    return 0;
}


Título: Re:Ejercicios resueltos en C lenguajeC programar ROMBO asteriscos consola CU00542F#
Publicado por: Ogramar en 15 de Octubre 2020, 18:19
Buenas, el código está bien planteado y cumple con lo que pedía el ejercicio.

A mí al ejecutar el código me ha lanzado un error 'for' loop initial declarations are only allowed in C99 mode

debido a expresiones como for(int y = 0; ...

que no todos los compiladores permiten.

En mi caso lo he corregido declarando esas variables al inicio como     int y, x, h; de modo que el código en mi caso lo he ejecutado así:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

#define CENTRADO 50

int main() {
    int cantidadAsteriscos = 0;
    int mitad = 0;
    int resto = 0;
    int y, x, h;

    printf("Dame el tamano del ROMBO entre 3 y 150:  ");
    scanf("%d", &cantidadAsteriscos);

    mitad = (cantidadAsteriscos/2) + CENTRADO;

    if(cantidadAsteriscos%2 == 0) {
        resto = 1;
    }

    if(cantidadAsteriscos >= 3 && cantidadAsteriscos <= 150) {
        for( y = 0; y <= cantidadAsteriscos; y+=2) {
            for( x = 0; x < mitad; x++) {
                printf(" ");
            }

            for(h = 0; h <= y - resto; h++) {
                printf("*");
            }

            mitad --;
            printf("\n");
        }

        for(y = cantidadAsteriscos-2; y >=0 ; y-=2) {
            for(x = mitad + 1; x>=0 ; x--) {
                printf(" ");
            }
            for(h = 0; h < y; h++) {
                printf("*");
            }

            mitad ++;
            printf("\n");

        }

    } else {
        printf("Solo puedes dar valores entre 3 y 150.... \n");
    }
    return 0;
}



Para quien quiera practicar con un corazón, aquí está su dibujo con asteriscos: https://aprenderaprogramar.com/foros/index.php?topic=7472.0
Título: Re:Ejercicios resueltos en C lenguajeC programar ROMBO asteriscos consola CU00542F#
Publicado por: mark255 en 15 de Octubre 2020, 20:09
hola ogramar

debido a expresiones como for(int y = 0; ...

parece que tienes c99 como estandar por defecto, mira en las opciones del compilador y podrás cambiarlo, en gcc por ej es añadiendo -std=c11 mas acutal

suerte
Título: Re:Ejercicios resueltos en C lenguajeC programar ROMBO asteriscos consola CU00542F#
Publicado por: mark255 en 18 de Octubre 2020, 15:20
hola elendur
a mi tampoco me gustaba como estaba planteado el ejercicio y solo he puesto asteriscos impares, queda mas bonito ;-)

mando otra posible solución  :D

Código: [Seleccionar]
#define MIN 3     // longitud mínima del rombo
#define MAX 23    // longitud máxima del rombo

#include <stdio.h>

int main(void)
{
   int longitud;
   
   printf("Introduce un número impar entre %d y %d: ", MIN, MAX);
   scanf("%2d", &longitud);
   
   // número erroneo
   if(longitud < MIN || longitud > MAX || longitud%2 == 0) return 1;   

   for(int i = 1, aporte = 2; 0 < i; i+=aporte)       // dibujo el rombo
   {
      putchar('\t');                                  // separación
      for(int j = longitud-i; j; j-=2) printf(" ");   // espacios
      for(int j = i; j--;)             printf("*");   // asteriscos
      putchar('\n');                                  // nueva línea
      if(i == longitud) aporte = -2;                  // invertir el aporte
   }

   return 0;
}

/* en respuesta a elendur
 * https://aprenderaprogramar.com/foros/index.php?PHPSESSID=u10qb2eusmeambnifoh9a207ii&topic=7651.0
 *
 * de mark255
 */


--> link (https://linkode.org/#OyT2XRxwDMZlR0xVN9USQ2)

chao chao