Jump to content
Fórum Script Brasil
  • 0

[Deitel] Imprimir quadrados


brunoandrad
 Share

Question

Pessoal, estou com dificuldades para fazer um exercício do livro do Deitel, eis o qual eu fiz:

Escreva um programa que leia o lado de um quadrado e então imprima o quadrado com asteriscos. Seu programa deve funcionar com quadrados de todos os tamanhos entre 1 e 20. Por exemplo, se seu programa lesse um tamanho 4, deveria imprimir

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

Esse eu fiz beleza.. fácil.

Mas depois ele pede para imprimir um quadrado vazado, este não sei se fiz da melhor forma.

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

Gostaria de saber se existe alguma forma melhor e mais 'inteligente' de se fazer, ficou muito confuso os 'for':

 

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

int main()
{
    int numero, i,x,y,aux;

    printf("Programa imprime quadrado \n\n\n");

    printf("Digite o tamanho do quadrado: ");
    scanf("%d", &numero);
    aux=numero-2;

    printf("\n\n\n\n");

    for (x=0;x<numero;x++)
        printf("*");

    for (i=0;i<aux;i++){
        printf("\n*");

            for(x=0; x<aux;x++)
                printf(" ");
                    for(x=0; x<1;x++)
                        printf("*");
    }
    printf("\n");
    for (x=0;x<numero;x++)
        printf("*");
        
    return 0;
}

 

Edited by brunoandrad
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Acabei de fazer esse exercício 😄 e deu certo!!!

#include <iostream>
using namespace std;

int main ()
{
    int lado;
    int cont = 0;
    int n = 0;

    cout << "Digite o tamanho do lado do quadrado: ";
    cin >> lado;

    if (lado < 1 || lado > 20)
    {
        cout << "Tamanho invalido." << endl;

        return 0;
    }

    if (lado >= 1 && lado <= 20)
    {
        while (cont < lado)
        {
            cout << "* ";
            cont = cont + 1;
        }

        cout << endl;
        cont = 0;

        while (cont < (lado - 2))
        {
            cout << "*";

            do {
                cout << " ";
                n = n + 1;
            } while ( n < ((2 * lado) - 3));

            n = 0;
            cout << "*" << endl;

            cont = cont + 1;
        }

        cont = 0;

        while (cont < lado && lado != 1)
        {
            cout << "* ";
            cont = cont + 1;
        }
    }

    return 0;
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...