CS50 PASET-1 ITSA Mario: haga una media pirámide utilizando parámetros de la entrada del usuario -- beginner campo con c campo con programming-challenge campo con ascii-art camp codereview Relacionados El problema

CS50 pset-1 itsa Mario - make a half-pyramid using parameters from user input


7
vote

problema

Español

Estoy tomando la introducción de Harvard al curso en línea de Ciencias de la Computación (CS50), y he escrito un programa que cumpla con un desafío de codificación, pero no entiendo lo que hice o cómo puedo mejorarlo. Soy un programador muy verde.

El desafío es obtener un INT del usuario entre 0 y 23 y usarlo para configurar la altura de la línea de una media pirámide dibujada en el terminal usando los hashes, ala la rampa en los extremos de los niveles en Super Mario Bros :

     ##   ###  #### #####   

Después de aproximadamente 6 horas de golpear mi cabeza contra la pared, se me ocurrió lo siguiente:

  #include <cs50.h> #include <stdio.h>  int main() {     int height;      printf("How high do you want your half-pyramid? ");     height = GetInt();       //verify that height is an int between 0 and 23      while (height > 23 || height < 0)           {             printf("Invalid entry: Choose a number between 0 and 23 ");             height = GetInt();         }      // draw the pyramid      for (int line = 0; line < height; line++)       {          // draw spaces         for (int space = line + 2; space < height + 1; space++)          {          printf(" ");          }           // draw hashes         for (int hash = line + height + 1; height < hash + 1; hash--)         {          printf("#");         }          printf(" ");       }      return 0; }   

Entiendo la parte que he comentado como "Verifique que la altura es un 99887766555443310 entre 0 y 23", pero todo en la sección "Dibujar la Pirámide" fue llegada por la fuerza bruta. Solo haciendo una cosa que parecía que funcionara y luego lo modificaba una y otra vez hasta que hiciera lo que necesitaba. Tal vez así es como todos códan, pero espero que no.

¿Puede alguien darme una idea de un lenguaje bastante simple sobre lo que está haciendo el código aquí, algunas ideas sobre cómo podría mejorarse, o simplemente algunas formas de hacerlo?

Original en ingles

I'm taking Harvard's introduction to computer science (CS50) course online, and I've written a program that satisfies a coding challenge but I don't understand what I did or how I can improve it. I'm a very green programmer.

The challenge is to get an int from the user between 0 and 23 and use that to set the line height of a half-pyramid drawn in the terminal using hashes, ala the ramp at the ends of the levels in Super Mario Bros:

   ##   ###  #### ##### 

After about 6 hours of banging my head against the wall I came up with the following:

#include <cs50.h> #include <stdio.h>  int main() {     int height;      printf("How high do you want your half-pyramid?\n");     height = GetInt();       //verify that height is an int between 0 and 23      while (height > 23 || height < 0)           {             printf("Invalid entry:\nChoose a number between 0 and 23\n");             height = GetInt();         }      // draw the pyramid      for (int line = 0; line < height; line++)       {          // draw spaces         for (int space = line + 2; space < height + 1; space++)          {          printf(" ");          }           // draw hashes         for (int hash = line + height + 1; height < hash + 1; hash--)         {          printf("#");         }          printf("\n");       }      return 0; } 

I understand the part that I've commented as "verify that height is an int between 0 and 23," but everything in the "draw the pyramid" section was arrived at by brute force. Just making one thing that kind of looked like it worked and then tweaking it over and over again until it did what I needed it to do. Maybe this is how everyone codes, but I hope not.

Can anyone give me some insight in fairly plain language about what the code here is doing, some ideas about how it might be improved, or just some other ways to go about it?

           
 
 

Lista de respuestas

1
 
vote

Codificación organizada

Se hace una línea de una pirámide con espacios X y los hashes. El número de espacios se administra mediante la longitud total de la línea menos el número de hashes. El número de hashes aumenta de 2 a 5, la longitud máxima de la línea es 5

  static int LINE_LEN = 5; for (int hashes = 2; hashes <= LINE_LEN; hashes++) {     print_repeated_char(' ', LINE_LEN - hashes);     print_repeated_char('#', hashes);     printf(" ");  }   

TAMBIENTE NOTA El print_repeated_char Evita la repetición.

 

Organized coding

A line of a pyramid is made by x spaces and y hashes. The number of spaces is given by the total line length minus the number of hashes. The number of hashes increases from 2 to 5, the max line length is 5

static int LINE_LEN = 5; for (int hashes = 2; hashes <= LINE_LEN; hashes++) {     print_repeated_char(' ', LINE_LEN - hashes);     print_repeated_char('#', hashes);     printf("\n");  } 

Also note the print_repeated_char function avoids repetition.

 
 
         
         

Relacionados problema

12  Imprimir grandes números, o no grande pero grande  ( Printing large numbers or not large but large ) 
Acabo de empezar a aprender a Java hace aproximadamente un mes. Me pregunto, ¿qué hará un desarrollador experimentado de manera diferente en el código a conti...

6  Haciendo un patrón en forma de rectangular  ( Making a rectangular shaped pattern ) 
Me gustaría que alguien sugiera una mejor manera de crear este patrón en Java, que estoy seguro, es posible: package com.spakai.undoredo; public interface...

7  Imprime un tablero de ajedrez  ( Print a chessboard ) 
Estoy trabajando a través de elocuente javascript y acaba de hacer los ejemplos en el Capítulo 2. Uno es crear Una cuadrícula de tablero de ajedrez de tamañ...

6  Buscar número de más en una matriz 2D  ( Find number of plus in a 2d array ) 
Problema Chargrid El CharGrid La clase encapsula una matriz de 2-D con una pareja de operaciones. INT APULUS () Busque un patrón '+' en la cuadrícu...

43  La forma correcta de colgar a un hombre  ( The right way to hang a man ) 
Problema: He visto algunas preguntas sobre Hangman. Por lo general, esto se hace de una manera muy hackeable, que generalmente no se puede generalizar más. ...

8  Impresión de letras en orden como una pirámide  ( Printing letters in order like a pyramid ) 
Hay este HackerRank Pregunta , donde necesitamos un Rhombus de letras . En cuanto a mi opinión, se puede ver como un poco de fractal, o lógica similar. Bu...

6  Imprimiendo una escalera de texto  ( Printing a staircase of text ) 
Básicamente, se le solicita a un usuario que ingrese una serie de escaleras y una escalera cuando se genera un tipo en él. Sé que esto es descuidado y mis nom...

5  La forma correcta de colgar un hombre: parte final  ( The right way to hang a man final part ) 
El problema: Haciendo un juego de Hangman simple. Esta es una continuación de la siguiente pregunta: la forma correcta de colgar un hombre . Allí acababa d...

1  Simulación de la placa de galton  ( Galton board simulation ) 
Este programa está escrito para Windows 7 en MINGW utilizando GCC. Estoy buscando recomendaciones para mejorar la portabilidad del programa. /* galtonboa...

9  Python impar número diamante  ( Python odd number diamond ) 
Hice un programa de diamantes rápido que toma solo números impares mientras devuelve un error con números, o 0. El código se ve bastante feo para mí, especi...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos