Hzsiul Postado Agosto 30, 2012 Denunciar Share Postado Agosto 30, 2012 2.28Escreva um programa que le o tamanho do lado de um quadrado e então imprime um quadradodaquele tamanho com asteriscos e espaços em branco. Seu programa deve funcionar para quadradoscom 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); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marcelo Utikawa da Fonseca Postado Agosto 30, 2012 Denunciar Share Postado Agosto 30, 2012 (editado) 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 Agosto 30, 2012 por Marcelo Utikawa da Fonseca Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Hzsiul
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.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.