Mais pascal... HELP PLEASE!

Paulo Truta

Portugal@Home Member
A minha professora mandou-nos criar um programa em pascal que lesse o nome de uma pessoa, a sua nacionalidade e a sua idade, ao que eu criei sem problemas (Bastante fácil :))

Código:
Program eleitores ;
var idade: integer;
nome, nacionalidade: string;
 Begin
  writeln('Introduza o seu nome');
  readln(nome);
  writeln('Introduza a sua nacionalidade');
  readln(nacionalidade);
  writeln('Introduza a sua idade');
  readln(idade);
   if idade>18 then
    begin
     writeln(nome,', você é eleitor em ',nacionalidade);
    end
   else
    writeln(nome,', você não é eleitor em ',nacionalidade);
 End.

Fui o primeiro a acabar o programa, mesmo de pois de a prof me ter literalmente ''obrigado'' a escrevê-lo no caderno em pseudo-código.

Para trabalho de casa, a prof. mandou-nos melhorar este programa da seguinte maneira:
O programa tem de colocar a primeira letra do nome e nacionalidade da pessoa em maiúsculas.
A única coisa que consigo fazer é colocar todas as letras em maiúsculas, como podem ver na seguinte linha:

Código:
 writeln( upcase(nome),', você não é eleitor em ', upcase(nacionalidade);

Qual é a maneira de colocar apenas a primeira letra maiúscula?
Cumprimentos ;)
 
o código a funcar está em cima no meu primeiro post. se tentar writeln(upcase(nome)) ele dá-me td em maiúsculas.
agora se eu puser

writeln(upcase nome[1])
ele só me mostra a primeira letra em maiuscula, mas n mostra as outras...

vou tentar

se puser como estás a dizer, ele dá-me este erro ao executar:
o índice de nº '1' deve ser do tipo inteiro!... [Erro sintático linha 5]. Podes ver no código original...
 
Última edição pelo moderador:
Program eleitores ;
var idade: integer;
nome, nacionalidade: string;
Begin
writeln('Introduza o seu nome');
readln(nome);
writeln('Introduza a sua nacionalidade');
readln(nacionalidade);
writeln('Introduza a sua idade');
readln(idade);
if idade>18 then
begin
writeln (upcase(nome[1]),', você é eleitor em ',upcase(nacionalidade[1]);
end
else
writeln(nome,', você não é eleitor em ',nacionalidade);
End.
 
tenta assim:


Program eleitores ;
var idade: integer;
nome, nacionalidade: string;
Begin
writeln('Introduza o seu nome');
readln(nome);
writeln('Introduza a sua nacionalidade');
readln(nacionalidade);
writeln('Introduza a sua idade');
readln(idade);
if idade>18 then
begin
nome[1]: = upcase(nome[1]);
nacionalidade[1]: = upcase(nacionalidade[1]);
writeln (upcase(nome),', você é eleitor em ',upcase(nacionalidade);
end
else
writeln(nome,', você não é eleitor em ',nacionalidade);
End.
 
alguma coisa está mal no que tu me dest... Ainda estou a tentar ver... mas alguma coisa ta a dar conflito...

Código:
 Program eleitores ;
var idade: integer;
nome, nacionalidade: string;
Begin
writeln('Introduza o seu nome');
readln(nome);
writeln('Introduza a sua nacionalidade');
readln(nacionalidade);
writeln('Introduza a sua idade');
readln(idade);
if idade>18 then
nome[1]:= upcase(nome[1]);
nacionalidade[1]:= upcase(nacionalidade[1]);
[U] writeln (upcase(nome),', você é eleitor em ',upcase(nacionalidade)[/U]
else
writeln(nome,', você não é eleitor em ',nacionalidade);
End.

Se puser assim ele diz que me falta o ';' mas se puser o ';' dá erro (Natural, pois nunca se se mete ; antes do ELSE..
 
Eu tambem nao me lembro bem, ja nao dou pascal à muitos anos lol

Tenta sem as ; aqui:
nome[1]:= upcase(nome[1])
nacionalidade[1]:= upcase(nacionalidade[1])


não sei....lol
 
Código:
Program eleitores ;
var idade: integer;
nome, nacionalidade: string;
Begin
writeln('Introduza o seu nome');
readln(nome);
writeln('Introduza a sua nacionalidade');
readln(nacionalidade);
writeln('Introduza a sua idade');
readln(idade);
if idade>18 then
[U][I][B]begin[/B][/I][/U]
nome[1]:= upcase(nome[1]);
nacionalidade[1]:= upcase(nacionalidade[1]);
writeln (upcase(nome),', você é eleitor em ',upcase(nacionalidade);[U]
[I][B]end[/B][/I][/U] 
else
writeln(nome,', você não é eleitor em ',nacionalidade);
End.

Eu não tenho a certeza se assim já funciona porque não compilei o código, mas experimentem.
Adicionei o begin e o end, pois tens 3 linhas de código dentro do "then" =)
Verifica e diz alguma coisa ;)
 
alguma coisa está mal no que tu me dest... Ainda estou a tentar ver... mas alguma coisa ta a dar conflito...

Código:
 Program eleitores ;
var idade: integer;
nome, nacionalidade: string;
Begin
writeln('Introduza o seu nome');
readln(nome);
writeln('Introduza a sua nacionalidade');
readln(nacionalidade);
writeln('Introduza a sua idade');
readln(idade);
if idade>18 then
nome[1]:= upcase(nome[1]);
nacionalidade[1]:= upcase(nacionalidade[1]);
[U]writeln (upcase(nome),', você é eleitor em ',upcase(nacionalidade)[/U]
else
writeln(nome,', você não é eleitor em ',nacionalidade);
End.

Se puser assim ele diz que me falta o ';' mas se puser o ';' dá erro (Natural, pois nunca se se mete ; antes do ELSE..

Oi!

No que vi falta um parêntesis!

writeln (upcase(nome),', você é eleitor em ',upcase(nacionalidade))

Tenta assim!

Abraço!
 
Eu pouco ou nada percebo de pascal, mas a solução que eu implementaria seria o seguinte:

Ao primeiro carácter da string adicionas um numero tal que a letra fique maiúscula, para tal tens que consultar a tabela ASCII. Tens de ver a função para retirar 1 char de dentro da string e depois ou separas a string em 2 (ficas com 1 sub-string sem o primeiro caracter) ou substituis o antigo primeiro caracter pelo novo.

BTW gosto do teu nome, andareis a aprender Pascal é que era escusado, infelizmente não se pode obrigar os profs a aprender
 
Última edição pelo moderador:
Back
Topo