Ir para conteúdo
Fórum Script Brasil
  • 0

[Deitel] Imprimir quadrados


brunoandrad

Pergunta

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;
}

 

Editado por brunoandrad
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...