acr Posted October 23, 2009 at 01:42 PM Report Share #293007 Posted October 23, 2009 at 01:42 PM Ola pessoal. Vou ter uma frequencia de programação na proxima 4a feira, e como tal tenho andado a estudar. No entanto, ha certos pormenores que nao consigo compreender, como é o caso deste: "Projecte e implemente um programa que solicita ao utilizador um caracter e um inteiro (numero impar compreendido entre 5a 21, inclusive) e em seguida desenha um 'U', tal como e exemplificado para o caracter '*' e numero 5. Desenhe a letra considerando uma grelha quadrada (obviamente nao precisara de desenhar a grelha): Exemplo, quando o utilizador da o valor 5: __________*___*______________ __________*___*______________ __________*___*______________ __________*___*______________ ___________***_______________ (supostamente isto é um U e os "_" representam espaços) Eu tenho o código do c++, mas nao consigo perceber a partir do if Aqui está o codigo: #include <iostream> using namespace std; int n,i,k; char c; int main(){ while ( n < 3 || n > 25 || (n/2)*2==n ) { cout << "Introduza um numero compreendido entre 3 a 25 que seja impar: "; cin >> n; if ( n < 3 || n > 25 || (n/2)*2==n) cout << "Erro! Tem de introduzir um numero compreendido entre 3 a 25 e que seja impar!"; } cout << "Introduza um caracter: "; cin >> c; for (i=0 ; i < n ; i++) { for ( k = 0; k < n ; k++){ if ((k==0) || (k==(n-1))){ if (i==(n-1)) cout << " "; else cout << c; } else{ if(i==(n-1)) cout << c; else cout << " "; } } cout << endl; } return(0); } o codigo esta correcto, no entanto nao consigo perceber muito bem a logica pelo meio. Se alguem me podesse ajudar, agradecia. Ou se quiserem sugerir um outro novo código mais simples, ainda melhor 😉 Gracias! Link to comment Share on other sites More sharing options...
Rui Carlos Posted October 24, 2009 at 02:48 PM Report Share #293174 Posted October 24, 2009 at 02:48 PM Nos ciclos for o i representa a linha e o k a coluna. Repara que em cada linha as colunas 0 e n-1 tem um símbolo diferente de todas as outras. É para isto que serve o primeiro if. O segundo if é para distinguir a última linha (onde apesar do ponto anterior continuar a ser válido, há uma inversão na posição do caracter escolhido e dos espaços em branco). Já agora, esse output não corresponde àquilo que é gerado por essa aplicação. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now