Jump to content

Duvida no ciculo for em c++


acr
 Share

Recommended Posts

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

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.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.