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

[Ajuda] Exercicio com laços


Hzsiul

Pergunta

2.28

Escreva um programa que le o tamanho do lado de um quadrado e então imprime um quadrado

daquele tamanho com asteriscos e espaços em branco. Seu programa deve funcionar para quadrados

com lados de todos os tamanhos entre 1 e 20. Por exemplo, se seu programa le um de 5 deve imprimir:

*****

* *

* *

* *

*****

(Tem espaços dentro da figura)

Eu não consegui completar o exercicio, do jeito que eu fiz fica faltando imprimir um lado do quadrado,

se alguém puder me ajudar eu agradeço, tenho dificuldades para trabalhar com o for, sou iniciante.

#include <iostream>
using namespace std;

int main(){
int entrada;
inicio:
cout<<"Digite o tamanho do quadrado (2 ate 20): ";
cin>>entrada;
cin.ignore();

if (entrada <= 20 && entrada >= 2){

    for (int x=0; x<entrada; ++x)
        cout<<"* ";

        cout<<"\n";

          for (int x=0; x<(entrada-1); ++x)
              cout<<"*"<<endl;

                    for (int x=0; x<(entrada);++x)
                        cout<<"* ";
}
else{
cout<<"\nTamanho do quadrado invalido! pressione qualquer tecla para tentar novamente...";
getchar();
system("cls");
goto inicio;
}
getchar();
return(0);
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Oi de novo! :)

Você usou o for corretamente.

O problema é que você imprime apenas um * e já quebra a linha.

Você deveria colocar o *, os espaços internos do quadrado e então o outro *.

Se eu fosse desenvolver esse programa teria feito uma função que imprimisse cada linha do quadrado, com um parâmetro informando se é borda (imprime somente *) ou não (imprime com espaços).

Dessa forma seu programa ficaria assim:

#include <iostream>
using namespace std;

void imprime_linha (int tamanho, int borda)
{
    char ch = borda ? '*' : ' ';
    cout << "*";
    while(tamanho-- > 2) {
        cout << ch;
    }
    cout << "*" << endl;
}

int main()
{
    int entrada, i;
    do {
        cout<<"Digite o tamanho do quadrado (2 ate 20), zero para terminar: ";
        cin>>entrada;
        cin.ignore();
        if(entrada >=2 && entrada <=20) {
            imprime_linha(entrada, 1);
            for(i=0; i<entrada-2; i++)
                imprime_linha(entrada, 0);
            imprime_linha(entrada, 1);
        } else if(tamanho) {
            cout << "\nTamanho do quadrado invalido! pressione qualquer tecla para tentar novamente...";
        }
    } while(entrada);
    getchar();
    return 0;
}

Não testei esse código mas acho que não tem nada errado. Qualquer coisa avise! :)

Editado por Marcelo Utikawa da Fonseca
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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...