• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

acr

Duvida no ciculo for em c++

2 mensagens neste tópico

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!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora