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

Não encontro o Erro - Pascal vs Insanity

Discussão em 'Programação' iniciada por Gaminger, 19 de Dezembro de 2005. (Respostas: 15; Visualizações: 1104)

  1. Gaminger

    Gaminger Power Member

    Eu ando a programar uma calculadora em pascal para ver até aonde chego mas não arranca, diz que tem erro na 14 (a que tá a negrito) mas na encontro erro nenhum.

     
  2. Mitnick

    Mitnick Power Member

    ja nao programo em pascal a muito tempo, mas tenta assim:

    Código:
    if c='+' then
     
    Última edição: 19 de Dezembro de 2005
  3. Tenta :

    if c='+' then

    em vez de

    if c=+ then


    :)
     
  4. Mitnick

    Mitnick Power Member

    ups... esquecime do then...
     
  5. Tuaregue

    Tuaregue Power Member

    não, não, tú esqueces-te mas foi das aspas.
     
  6. Ophelia

    Ophelia Power Member

    Convém explicar o pq em vez de dar só a solução...

    Então meninos... há que ajudar a formar bons programadores

    A razão pela qual tens de comparar com '+' e não com + é que estás a comparar strings, já que + sem plicas (ou aspas - ja nao me lembro de pascal, já lá vão mm mts anos) é um operador da linguagem - basicamente o programa estava à espera que tu fosses fazer um cálculo (ou uma concatenação de strings) e estava à espera do segundo parâmetro.
     
  7. Gaminger

    Gaminger Power Member

    que erro tão estupido que eu fiz XD e eu sei que precisa daquilo...emfim vou ja emendar

    EDIT::: agr o erro é na linha 16 (duas linhas abaixo do negrito, aonde está a virgula antes do ":" aquela virgula é um "é", parece que alguns simbolos ao passar do prog ficam codificados)
     
    Última edição: 19 de Dezembro de 2005
  8. kingdom

    kingdom 1st Folding then Sex

    Os símbolos com sinais de acentuação, não pertencem á tabela ASCII e são mostrados de forma 'estranha'. Em programas DOS-style não costumo por acentuação nas palavras...

    Cumps
     
  9. Mitnick

    Mitnick Power Member

    por a caso ate tinha posto as pelicas... o then e que so pus quando editei, mas ok...
     
  10. Gaminger

    Gaminger Power Member

    e o erro ninguem encontra? XD
     
  11. HecKel

    HecKel The WORM

    Boas! Tal como a Ophelia referiu, o "simbolo" =+, =- etc e tal são MESMO operadores, se queres saber se um caracter é "x" ou "y" tens de o meter entre pelicas.

    Além do erro que assinalaste tens em todos os if's a mesma gafe!

    Código:
    if c=+ then
    (...)
    if c=- then
    (...)
    if c=/ then
    (...)
    if c=* then
    que deveria ser:
    Código:
    if c='+' then
    (...)
    if c='-' then
    (...)
    if c='/' then
    (...)
    if c='*' then
    muito provavelmente os outros if's afectam-te o bloco todo!

    abraços, HecKel
     
  12. Warrior

    Warrior Power Member

    Em pascal não existe o operador =+..
    Ele dá erro simplesmente por tar a comparar uma string com o operador + (daí ter que levar plicas) não tem nada a ver com o operador =+ usado em C etc.
     
  13. Fuadass

    Fuadass I'm cool cuz I Fold

    writeln ('Deseja fazer outro c*lculo? Inserir s se sim ou n se nÆo.');
    readln (sn);
    until sn='n';
    readkey;
    end.

    achei piada nao teres posto um tecla para o sim :P e qualquer uma menos n :) 10 ano ne ? ;)


    ja agora ainda nao deste case ... of ? conseguias fazer essa cena toda das operacoes em 4 linhas :) era mto mais facil de fazer e mais facil de nao ter erros ;)

    se quiseres mando te um pm com a calculadora feita com case( tenho no meu caderno de tlp de ha 3 anos e tal atras ;) )

    cumps
     
    Última edição: 20 de Dezembro de 2005
  14. Delta

    Delta Suspenso

    Os erros que vi : tens ENDs a mais, cada END deve ter um par BEGIN correspondente, ou uma instrução de bloco, por exemplo o CASE. Isto é :

    BEGIN-END, CASE-END, etc...

    isto vai provocar-te erros quase de linha a linha porque o compilcador não encontra o início do Bloco de cada END a mais que colocaste.

    a sintaxe do if é esta :

    http://www.freepascal.org/docs-html/ref/refsu36.html#x97-1040009.2.3

    IF-THEN-ELSE

    não é tipo

    IF-THEN-ELSE-END

    quando muito seria assim :

    IF condição THEN
    BEGIN
    instrução 1
    instrução 2
    END;
    ELSE
    BEGIN
    instrução 2;
    instrução 3;
    END;

    usas o BEGIN e o END para delimitar blocos de instruções.

    eu usava o BORLAND PASCAL e tinha uns helps muito bons


    tenta mudar o Writeln e/ou o readln para Write e/ou Read para que não mude de linha ao inserir as variáveis

    já não me lembro bem, mas acho que é assim, isto já é muita confusão de linguagens na cabeça :D

    Write('a :');
    readln(a);



    program calculadora_em_pascal;
    uses Crt;
    var r, v1, v2: Real;
    var c, sn: Char;
    begin
    writeln ('***Calculadora by Gaminger VersÆo 0.1 19/12/2005***');
    writeln ('Instru‡äes: +=soma, -=subtrac‡Æo, /=divisÆo, *=multiplica‡Æo');
    repeat
    writeln ('Qual o c*lculo que pretende fazer? Insira o sinal correspondente.');
    readln (c);
    writeln ('Agora insira dois valores, clique enter quando inserir o primeiro e outraves enter quando inserir o segundo.');
    readln (v1, v2);

    Case C of
    '+' : begin r := v1+v2; writeln('foram somados 2 numeros');end;
    '-' : r := v1-v2;
    '/' : r := v1/v2;
    '*' : r := v1/v2;
    else
    writeln ('Instru‡äes erradas, comando desconhecido : ',C);
    end;
    writeln ('Deseja fazer outro c*lculo? Inserir s se sim ou n se nÆo.');
    readln (sn);
    until sn='n';
    readkey;
    end.
     
    Última edição: 20 de Dezembro de 2005
  15. HecKel

    HecKel The WORM

    @Warrior ya, sorry..., faz tempo que não mexo em pascal..., ultimamente tem sido só java e C...

    @Delta bem visto ;) Em C, java e afins se o bloco trata-se apenas de uma linha os limitadores podem ser "ignorados", pascal já não é bem assim..., acho que me andam a escapar pormenores demais :S tenho de rever os meus conhecimentos...

    abraços, HecKel
     
  16. Gaminger

    Gaminger Power Member

    Muito obrigado pela ajuda pessoal...btw eu tou no 10 sei o Case mas na me lembrei dele (lol)
     

Partilhar esta Página