1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Mais pascal... HELP PLEASE!

Discussão em 'Programação' iniciada por Paulo Truta, 22 de Novembro de 2007. (Respostas: 15; Visualizações: 1227)

  1. Paulo Truta

    Paulo Truta [email protected] 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 ;)
     
  2. LuCk

    LuCk Power Member

    tenta nome[1] e nacionalidade[1]
     
  3. Paulo Truta

    Paulo Truta [email protected] Member

    Tentei... mas com essa linha ele apaga todas as letras a excepção da primeira... se te pudesses explicar melhor... cumps...
     
  4. LuCk

    LuCk Power Member

    Mostra-me o codigo todo como tás a por
     
  5. LuCk

    LuCk Power Member

    Esqueçe, tavame a esqueçer dum pormenor, faz assim:

    nome[1] = upcase(nome[1])
     
  6. Paulo Truta

    Paulo Truta [email protected] Member

    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: 23 de Novembro de 2007
  7. LuCk

    LuCk Power Member

    eu quero ver é em que parte é que estas a por o código que te disse. mostra la tudo como tens agora
     
  8. Paulo Truta

    Paulo Truta [email protected] Member

    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.
     
  9. LuCk

    LuCk Power Member

    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.
     
  10. Paulo Truta

    Paulo Truta [email protected] Member

    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..
     
  11. LuCk

    LuCk Power Member

    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
     
  12. Paulo Truta

    Paulo Truta [email protected] Member

    Ok... eu tou a ver se desenrasco... obrigado pela ajuda...
    Cumps ;)
     
  13. 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 ;)
     
  14. |ThunderBird|

    |ThunderBird| Power Member

    Oi!

    No que vi falta um parêntesis!

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

    Tenta assim!

    Abraço!
     
  15. Finkas

    Finkas Power Member

    o upcase é so para variaveis classificadas como char.
     
  16. theforbidden1

    theforbidden1 Banido

    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: 3 de Dezembro de 2007

Partilhar esta Página