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

aMeScAS

[C++/CLI] Mensagem de erro

5 mensagens neste tópico

Perante este codigo:

Console::WriteLine("Introduza o Nome: ");
			Nome=Console::ReadLine();
		Console::WriteLine("Introduza o Ano: ");
			Ano=Byte::Parse(Console::ReadLine());
		Console::WriteLine("Introduza a Turma: ");
			Turma=Char::Parse(Console::ReadLine());
		Console::WriteLine("Introduza 6 notas: ");
		for (Byte i=0; i<6;i++)
	    	Notas[i]=Byte::Parse(Console::ReadLine());
		Console::Clear();
		Menu();

Gostava de saber como mostrar ao utilizador mensagem de erro, quando este introduz uma letra no ciclo For (que esta definido como Byte), e que mostre erro quando ao introduzir uma letra no "Ano", pois deverá aparecer numeros e nao letras..

Nao sei se me estou a fazer entender...  :dontgetit:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sinceramente não estou a verificar nenhuma função dedicada para isso.

Mas sempre podes criar uma, recebes tudo como um array de char e depois fazes isto:

bool ischar(char c)
{
if( '0'<=c && c<='9') return true;
if( 'a'<=c && c<='z') return true;
if( 'A'<=c && c<='Z') return true;
return false;
}

Depois fazes semelhante para os números e os bytes.

Cumpr. bk@ero  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Utiliza excepções.

http://msdn2.microsoft.com/en-us/library/k0s9b1y3.aspx

bool valido=false;
while (!valido) {
try {
	Ano=Byte::Parse(Console::ReadLine());
	valido=true;
}
catch (FormatException exc) {
	Console::WriteLine("Número inválido");
}
}

Algo assim... não testei.

EDIT: Testado e funcional. Assim fica mais... bonito:

	bool valido=false;
while (!valido) {
	Console::WriteLine("Introduza o Ano: ");
	try {
		Ano=Byte::Parse(Console::ReadLine());
		valido=true;
	}
	catch (FormatException ^exc) {
		Console::Write("Ano inválido: ");
		Console::WriteLine(exc->Message);
	}
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hmm... brigadao!! ... mas e para o array? komo meto?...

			Console::WriteLine("Introduza 6 notas: ");
		for (Byte i=0; i<6;i++)
	    	Notas[i]=Byte::Parse(Console::ReadLine());

Ja exprimentei uma quantas maneiras, mas nao estou a conseguir...  :down:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mais uma vez, sem testar (mas deve funcionar) :

			Console::WriteLine("Introduza 6 notas: ");
		for (Byte i=0; i<6;i++) {
			valido=false;
			while (!valido) {
				try {
					Notas[i]=Byte::Parse(Console::ReadLine());
					valido=true;
				}
				catch (FormatException ^exc) {
					Console::Write("Nota inválida: ");
					Console::WriteLine(exc->Message);
				}
			}
		}

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