Jump to content
LagMaster

Dúvida Calculadora

Recommended Posts

LagMaster

Boas

Estava a tentar fazer este exercicio:

Propostas de Exercícios

1. Crie a sua própria calculadora. Contudo, o utilizador terá de escolher a operação a realizar e, no caso de esta ser a divisão, o programa terá de impedir o utilizador de introduzir denominador 0 (zero), obrigando-o a introduzir outro valor para tornar a divisão possível. Mostre uma mensagem de erro neste caso.

As variáveis para os valores das operações a realizar terão de ser reais, e a que selecciona a operação deverá ser uma string.

Mostre ao utilizador o maior número de informações possíveis sobre a calculadora. Mas não sobre o que o programa está a processar no momento, como “A realizar a soma”.

Normas:

Limite máximo de linhas de código (exclusive comentários e linhas em branco): 40 linhas.

E tive esta ideia:

program ExercicioCalculadora;
var
num1,num2: real;
A,S,D,M,opcao: string;

begin
  WriteLn('Introduza o primeiro numero');
  Readln(num1);
  writeln('Introduza o segundo numero');
  readln(num2);
  writeln ('Escreva A se quiser fazer uma adição);
  readln(opcao);
  writeln('Escreva S se quiser fazer uma subtração');
  readln (opcao);
  writeln('Escreva M se quiser fazer uma multiplicação');
  readln (opcao);
  writeln('Escreva D se quiser fazer uma divisão');
  readln (opcao);
  
  if (opcao=A) then begin
  writeln (num1:0:2'+'num2:0:2,'=',num1+num2:0:2);
  readln;
  end
  else begin
     if (opcao=S) then begin
  writeln (num1:0:2'-'num2:0:2,'=',num1-num2:0:2);
  readln;
  end
  else begin
     if (opcao=M) then begin
  writeln (num1:0:2'*'num2:0:2,'=',num1*num2:0:2);
  readln;
  end
  else begin
    if (opcao=D) then begin
  writeln (num1:0:2'/'num2:0:2,'=',num1/num2:0:2);
  readln;
  end
  else begin
  

end.

Não sei se vai ser possivel em baixo nem nada lol Mas primeiro o problema encontrasse aqui:

writeln ('Escreva A se quiser fazer uma adição);
  readln(opcao);

String Exceeds the line

BTW acabei mesmo agora de ter uma ideia ( eu a esta hora da noite nao consigo ver se são muito tontas ou não mas aqui vai )

begin
  WriteLn('Introduza o primeiro numero');
  Readln(num1);
  writeln('Introduza o segundo numero');
  readln(num2);
  writeln ('Escreva A para +,S para -, M para * ou D para /);
   readln(opcao);

Dá o mesmo erro .. mas se desse , tiraria umas quantas linhas ao programa..

Alguém me pode ajudar ?? 😳

Cumprimentos e Boa Noite  😎


YOU SHALL NOT PASS !!!

Share this post


Link to post
Share on other sites
mjamado

Até o GeSHi topa onde está o erro...  :confused:

Já reparaste que o código está "mal pintado" no teu post? Ora vê lá a partir de onde é que começa a ficar mal pintado (e porquê).


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
nunopicado

Independentemente do erro, que o amigo GeShi detectou :D (vê a linha onde o erro foi detectado, e procura uma coisa em falta relacionada com strings), devo falar sobre a estrutura em si.

A tua segunda opção, apenas com um readln, não é só a melhor opção. É a única aceitável.

Isto é válido não só para ti, mas para qualquer programador.

Sempre que estás a fazer uma parte do teu programa que terá interactividade com o utilizador, chama-se a isso Interface.

Ora, se estamos a fazer algo que vai mexer com o utilizador, temos de nos meter no lugar dele. Não é o utilizador que se deve adaptar ao programador, mas sim o contrário.

Neste caso concreto:

1. Aparece uma pergunta a pedir o numero 1

2. Aparece uma pergunta a pedir o numero 2

3. Pergunta se quer fazer a soma

4. Pergunta se quer fazer a subtracção

5. Pergunta se quer fazer a multiplicação

6. Pergunta se quer fazer a divisão

7. Mostra o resultado da última operação a que se disse que sim

Se eu fosse utilizador chamava um nome ao gajo que fez o programa...  :confused::D

Das duas uma, ou pergunta só uma vez qual a operação, e mediante a resposta, mostra o cálculo; ou então pergunta as vezes todas (mesmo que funcionasse bem eu continuaria a chamar um nome a quem me faz responder tanta pergunta :D ) e mostra o resultado de todas a que se disse sim.

Outra coisa. Perguntas primeiro os números, e depois a operação. Mas muitas vezes, os valores a pedir estão dependentes do tipo de operação. Um exemplo, está pedido no proprio exercicio:

Contudo, o utilizador terá de escolher a operação a realizar e, no caso de esta ser a divisão, o programa terá de impedir o utilizador de introduzir denominador 0 (zero), obrigando-o a introduzir outro valor para tornar a divisão possível. Mostre uma mensagem de erro neste caso.

Ou seja, o segundo número está dependente da operação. Se for divisão, tem de pedir o segundo numero até que este seja diferente de 0.

Por esta ordem de ideias, para poderes fazer isto correctamente, tens de saber primeiro a operação, e só no fim perguntas o 2º numero.

Das duas uma, ou perguntas a operação antes de tudo o resto, ou pelo menos, perguntas a operação antes do 2º numero.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
LagMaster

Meu Deus  😲

Eu devia estar cheio de sono :wallbash:

program ExercicioCalculadora;
var
num1,num2: real;
A,S,D,M,opcao: string;

begin

  writeln('Escreva A para +,S para -, M para * ou D para 7 ');
  readln(opcao);
  WriteLn('Introduza o primeiro numero');
  Readln(num1);
  writeln('Introduza o segundo numero');
  readln(num2);
  if (opcao=A) then begin
  writeln(num1:0:2,'+',num2:0:2,'=',num1+num2:0:2);
  readln;
  end
  else begin
     if (opcao=S) then begin
  writeln (num1:0:2,'-',num2:0:2,'=',num1-num2:0:2);
  readln;
  end
  else begin
     if (opcao=M) then begin
  writeln (num1:0:2,'*',num2:0:2,'=',num1*num2:0:2);
  readln;
  end
  else begin
    if (opcao=D) then begin
      if (num2=0) then begin
      writeln ('Nº Infinito');
      readln;
      end
      else begin
      writeln(num1:0:2,'/',num2:0:2,'=',num1/num2:0:2);
      readln;
  end
else begin
writeln ('Então é assim ?? Não usa o programa ?!! Chuck Norris do not aprove..');
readln;
end;

end.

Melhorado....

  end
else begin
writeln ('Então é assim ?? Não usa o programa ?!! Chuck Norris do not aprove..');
readln;
end;

Erro no else begin devia estar um ; no lugar do else

Any Ideas ??

Cumprimentos e Obrigado ;D


YOU SHALL NOT PASS !!!

Share this post


Link to post
Share on other sites
bsccara

Um concelho: sempre que tiveres um bloco condicional no teu código, indenta-o (move-o para a direita). Pensa lá o que é mais legível:

  if teste1 = 1 then
  begin
  if teste2 = 2 then
  break
  else
if teste3 = 3 then
inc(teste1);
end;

ou :

if teste1 = 1 then
begin
  if teste2 = 2 then
    break
  else
    if teste3 = 3 then
      inc(teste1);
end;

ou melhor ainda (na minha opinião) :

if teste1 = 1 then begin
  if teste2 = 2 then break
  else if teste3 = 3 then inc(teste1);
end;

A indentação permite uma muito melhor compreensão da estrutura do código e ajuda a evitar problemas como o teu.

Se bem que esse problema seja o menor:

1. Estás a carregar para a variável 'opcao' a escolha da operação. Mas depois comparas essa variável com variáveis não inicializadas nos condicionais.

2. Queres ter uma condição que se verifique se nenhuma das anteriores se verificarem. Mas estás a encadear as anteriores, o que impossibilita isso.

3. Tens uma instrução (readln) que é executada em todos os ramos da condicional. Deve ser retirada para fora da condicional.

Deves fazer assim :

if opcao = 'A' then                  
  writeln(num1:0:2,'+',num2:0:2,'=',num1+num2:0:2)
else if opcao = 'S' then
  writeln (num1:0:2,'-',num2:0:2,'=',num1-num2:0:2)
else if opcao = 'M' then 
  writeln (num1:0:2,'*',num2:0:2,'=',num1*num2:0:2)
else if opcao = 'D' then begin
  if (num2=0) then
    writeln ('Nº Infinito')
  else
    writeln(num1:0:2,'/',num2:0:2,'=',num1/num2:0:2);
end else
  writeln ('Então é assim ?? Não usa o programa ?!! Chuck Norris do not aprove..');
readln;

Melhor ainda seria usar uma estrutura 'switch..case' 'case...of' mas se estás com estes problemas é melhor ires devagar.

Share this post


Link to post
Share on other sites
nunopicado

Não me vais levar a mal dizer-te isto, mas se prestasses mais atenção ao que te tenho dito, não terias esse erro. 👎

Duas coisas:

- Continuas a insistir nos readln's desenfreados, dentro do then e do else, com trabalho duplicado, que te obriga a meter begin's e end's onde muitas vezes não fariam falta. Mais uma vez, põe-te do lado do utilizador. Nenhum utilizador quer dar enter à toa, especialmente neste caso onde não há sequer informação para lhe dizer o que fazer.

O readln; só se usa quando a seguir não há nada que pause o programa para permitir ao utilizador ver o que fez. Ou seja, antes do fim do programa, ou antes por exemplo, de limpares o ecrã (clrscr;).

- A tua indentação continua a precisar de melhorar imenso. Um end deve sempre alinhar com o begin que lhe deu origem. Assim saberás sempre a quem ele pertence, mesmo quando tens vários seguidos.

Se tivesses tido isto em conta quando fizeste o programa, primeiro não terias que criar os begin's e end's dentro do if, pois só lá terias uma instrução em cada.

E segundo, mesmo que metesses begin e end, mas estivesse bem indentado, verias que te perdeste no meio de tanto IF:

Vê o teu programa, devidamente indentado:

program ExercicioCalculadora;
var
   num1,num2: real;
   A,S,D,M,opcao: string;

begin  // 1º Begin
     writeln('Escreva A para +,S para -, M para * ou D para 7 ');
     readln(opcao);
     WriteLn('Introduza o primeiro numero');
     Readln(num1);
     writeln('Introduza o segundo numero');
     readln(num2);
     if (opcao=A)
        then begin  // 2º begin
                  writeln(num1:0:2,'+',num2:0:2,'=',num1+num2:0:2);
                  readln;
             end  // End do 2º begin
        else begin  // 3º begin
                  if (opcao=S)
                     then begin  // 4º begin
                               writeln (num1:0:2,'-',num2:0:2,'=',num1-num2:0:2);
                               readln;
                          end  // End do 4º begin
                     else begin  // 5º begin
                               if (opcao=M)
                                  then begin  // 6º begin
                                            writeln (num1:0:2,'*',num2:0:2,'=',num1*num2:0:2);
                                            readln;
                                       end  // End do 6º begin
                                  else begin  // 7º begin
                                            if (opcao=D)
                                               then begin  // 8º begin
                                                         if (num2=0)
                                                            then begin  // 9º begin
                                                                      writeln ('Nº Infinito');
                                                                      readln;
                                                                 end  // End do 9º begin
                                                            else begin  // 10º begin
                                                                      writeln(num1:0:2,'/',num2:0:2,'=',num1/num2:0:2);
                                                                      readln;
                                                                 end  // End do 10º begin
                                               else begin  // 11º begin
                                                         writeln ('Então é assim ?? Não usa o programa ?!! Chuck Norris do not aprove..');
                                                         readln;
                                                    end;  // End do 11º begin
end.  // End do 1º begin

Tens End's para o 1º, 2º, 4º, 6º, 9º, 10º e 11º begins...

Faltam-te end's para os 3º, 5º, 7º e 8º begins...

Por fim, nada disso vai trabalhar. As variáveis A, S, D e M não as estás a ler de lado nenhum, e nem seria suposto.

Estás a ler a variável opção, tens de verificar se a opção é a letra 'A', 'S', etc.  e não se é igual a uma variável qualquer.

Recomendações importantes para fazeres correctamente este (e qualquer outro) programa:

1. Indenta correctamente. Não é só uma questão de estética, é extremamente importante indentar correctamente o código

2. Readln; (sem variável) são proibidos. Só "quero" ver um readln; no fim, e é por enquanto, mais tarde nem esse.

3. Antes de continuares com o programa, estuda a estrutura Case ... OF e vê lá se não é melhor que todos estes IF's encadeados...


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
LagMaster

Após um mês sem cá vir.. voltei :)

Entretanto ja nao sei o que andava a estudar em Pascal :/.. agora vou continuar com o pascal e talvez começar a aprender c++

Agradeço muito a ajuda dada  😳

Vou ver se recomeço este projecto e volto a estudar um pouco dessa estrutura Case of

Cumps

LagMaster

Ps- E quanto à indentação já melhorei nesse aspecto xd


YOU SHALL NOT PASS !!!

Share this post


Link to post
Share on other sites
LagMaster

Quanto ao bastante que pensava ter melhorado na identaçao nao sei  😳

program Noname6;
var
num1,num2: real;
A,S,D,M,op: string;
begin
  WriteLn('Olá.. por favor insira o primeiro numero para a sua operaçao..'); // pede o primeiro numero
  Readln (num1) ;               // lê o primeiro numero
  writeln ('Por favor insira o segundo numero .');     //pede o segundo numero
  readln (num2);                                                              //lê o segundo numero
  writeln ('Os seus numeros são: ',num1:0:1,' e ',num2:0:1); //diz quais sao os numeros novamente
  writeln ('Escolha a sua operaçao: A para +,S para -,D para / e M para *');  //dá a escolher as operaçoes disponiveis
  readln(op); // lê a operaçao escolhida
  case op of   //inicio operaçao case of
    A :begin// inicio 1º begin
            writeln ('O resultado da sua adição (com 2 casas decimais) é: ', num1+num2:0:2);
        end;   //fim 1º begin
    S :begin    //começo 2º begin
            writeln ('O resultado da sua subtração (com 2 casas decimais) é: ', num1-num2:0:2);
        end;    //fim 2º begin
    M :begin      //começo 3º begin
            writeln ('O resultado da sua multiplicação (com 2 casas decimais) é: ', num1*num2:0:2);
        end;        //fim 3º begin
    D  :begin        //começo 4º begin
            writeln ('O resultado da sua divisão (com 2 casas decimais) é: ', num1/num2:0:2);
        end;         //fim 4º begin
  end; // termina a operaçao case of

            readln;// Para deixar o utilizador ler o resultado da operaçao
end.

Mas pelo menos penso estar mais legivel.. coloquei uns coments..

Mas ocorre-me um erro no inicio do Case of.. alguem tem uma ideia do porque ?? Errei na forma de usar o case of ??


YOU SHALL NOT PASS !!!

Share this post


Link to post
Share on other sites
thoga31

No Case Of, estás a cometer dois erros.

1) Não podes fazer Case Of de uma String, e "op" é uma String - tem de ser uma Char, ou então fazes o Case Of de "Op[1]", mas não o recomendo, é uma má prática.

2) Nas opções do Case Of não estás a meter os caracteres entre plicas: "A", "S", "M" e "D", sem as plicas, são consideradas variáveis.

E para que é que estás a declarar as variáveis A, S, M e D??

Não estás a perceber estas bases do Pascal. O que é uma variável, o que é um Case Of, etc etc... Vê lá se encaixas estes conceitos de uma vez, já tos explicaram em longos e bons posts neste tópico.


Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

É isso LagMaster... :)

A variavel op deve ser do tipo char (apenas um caracter).

No case ... of tens de comparar com os caracteres 'A', 'S', 'D' e 'M'; e não com as variaveis A, S, D e M. As pelicas fazem a diferença.

Pensa assim, se é um valor alfanumérico que queres comparar, usas pelicas.

E claro, as variáveis A, S, D e M, que só declaraste porque te estava a dar erro de "Unknown identifier", já podes tirar, que não fazem lá nada.

Quanto à tua indentação, sim, está muito melhor. Podes continuar.

Só lhe noto três pormenores:

1. Nas variáveis, tens de as indentar também. Esqueceste-te dos espaços antes de num1 e do A, pelo que essas linhas ficaram imediatamente abaixo do v (de var). 2 espaços em cada uma dessas linhas deixava-te essa parte perfeita.

2. No case, deste 2 espaços entre o D e os : - Bastava 1 espaço, para ficar igual às linhas de cima.

3. Aquele ultimo readln fugiu lá prá frente... :thumbsup: Ali bastam 2 espaços, para alinhar com o resto das instruções do mesmo nivel

Com estas correcções, tens a indentação perfeita


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

Eu vou dar o exemplo (esqueleto):

var op : char;
// ...
case UpCase(op) of
     'A' : {código}; // caso op seja "A"
     'S' : {código}; // caso op seja "S"
     'M' : {código}; // caso op seja "M"
     'D' : {código}; // caso op seja "D"
end;


Knowledge is free!

Share this post


Link to post
Share on other sites
LagMaster

program Noname6;
var
    num1,num2: real;
    A,S,D,M: string;
    op: char;
begin
  WriteLn('Olá.. por favor insira o primeiro numero para a sua operaçao..'); // pede o primeiro numero
  Readln (num1) ;               // lê o primeiro numero
  writeln ('Por favor insira o segundo numero .');     //pede o segundo numero
  readln (num2);                                                              //lê o segundo numero
  writeln ('Os seus numeros são: ',num1:0:1,' e ',num2:0:1); //diz quais sao os numeros novamente
  writeln ('Escolha a sua operaçao: A para +,S para -,D para / e M para *');  //dá a escolher as operaçoes disponiveis
  readln(op); // lê a operaçao escolhida
  case op of   //inicio operaçao case of
    'A' :begin// inicio 1º begin
            writeln ('O resultado da sua adição (com 2 casas decimais) é: ', num1+num2:0:2);
        end;   //fim 1º begin
    'S' :begin    //começo 2º begin
            writeln ('O resultado da sua subtração (com 2 casas decimais) é: ', num1-num2:0:2);
        end;    //fim 2º begin
    'M' :begin      //começo 3º begin
            writeln ('O resultado da sua multiplicação (com 2 casas decimais) é: ', num1*num2:0:2);
        end;        //fim 3º begin
    'D' :begin        //começo 4º begin
            writeln ('O resultado da sua divisão (com 2 casas decimais) é: ', num1/num2:0:2);
        end;         //fim 4º begin
  end; // termina a operaçao case of

        readln;// Para deixar o utilizador ler o resultado da operaçao
end.

Entao pelo que eu percebi tem de ficar assim ?

Ja funcionou portanto :)

Agradeço aos dois pela ajuda, agora é so fazer o repeat until e ajustar o A,M,D,S para minusculas tb e fica acabado penso eu  :cheesygrin:


YOU SHALL NOT PASS !!!

Share this post


Link to post
Share on other sites
nunopicado

Verifica o ultimo Post do Thoga.

Se no case, em vez de case op of usares case Upcase(op) of, ele automaticamente irá ter atenção às maiusculas e minusculas.

Também podes apagar a linha A,S,D,M: string; - não faz lá nada!


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
LagMaster

Nao tinha reparado no ultimo post , e sinceramente nao tinha percebido isso da String.. mas e obvio..

Supostamente agora cada vez que o utilizador colocar o character em questao ira reproduzir a lista de comandos indicado..

program Noname6;
var
    num1,num2: real;
    opcao: string;
    op: char;
begin
  repeat // Inicia o ciclo repeat
  WriteLn('Por favor insira o primeiro numero para a sua operaçao..'); // pede o primeiro numero
  Readln (num1) ;               // lê o primeiro numero
  writeln ('Por favor insira o segundo numero .');     //pede o segundo numero
  readln (num2);                                                              //lê o segundo numero
  writeln ('Os seus numeros são: ',num1:0:1,' e ',num2:0:1); //diz quais sao os numeros novamente
  writeln ('Escolha a sua operaçao: A para +,S para -,D para / e M para *');  //dá a escolher as operaçoes disponiveis
  readln(op); // lê a operaçao escolhida
  case Upcase(op) of   //inicio operaçao case of
    'A' :begin// inicio 1º begin
            writeln ('O resultado da sua adição (com 2 casas decimais) é: ', num1+num2:0:2);
        end;   //fim 1º begin
    'S' :begin    //começo 2º begin
            writeln ('O resultado da sua subtração (com 2 casas decimais) é: ', num1-num2:0:2);
        end;    //fim 2º begin
    'M' :begin      //começo 3º begin
            writeln ('O resultado da sua multiplicação (com 2 casas decimais) é: ', num1*num2:0:2);
        end;        //fim 3º begin
    'D' :begin        //começo 4º begin
            writeln ('O resultado da sua divisão (com 2 casas decimais) é: ', num1/num2:0:2);
        end;         //fim 4º begin
  end; // termina a operaçao case of

        readln;// Para deixar o utilizador ler o resultado da operaçao

    write('Deseja prosseguir? (S / N) ');
    readln(opcao);
  until (UpCase(opcao) = 'N');

  Writeln('Obrigado por usar este programa ;D');
  readln;

end.

Espero nao me ter enganado na identaçao do repeat.. coloquei o repeat e o un til ao mesmo nivel.. enquanto o writeln e o readln foram um pouco mais para dentro.

Agradeço muito a ajuda dada.

So queria saber agora, o que fazer .. sabe/m algum exercicio nao muito complicado em Pascal ? Se nao começava ja a visitar um pouco da wikipedia de C++ .. ou até tentava fazer alguma coisa em BRainF**k  :)


YOU SHALL NOT PASS !!!

Share this post


Link to post
Share on other sites
nunopicado

Na indentação, falta-te meter para dentro o resto. Todos os comendos dentro do repeat têm de chegar-se à frente (o case e os outros antes do case também).

Queres um exercicio?

Faz uma agenda. Nome, Morada, telemove, email, data nascimento e sexo são os campos (podes por mais se quiseres).

O programa deverá poder guardar pelo menos 50 nomes.

Se fizeres esse, já aprenderás alguns conceitos importantes, para mais tarde poderes começar a trabalhar com ficheiros, que é onde "a diversão" começa a sério! :)


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
LagMaster

Na indentação, falta-te meter para dentro o resto. Todos os comendos dentro do repeat têm de chegar-se à frente (o case e os outros antes do case também).

Queres um exercicio?

Faz uma agenda. Nome, Morada, telemove, email, data nascimento e sexo são os campos (podes por mais se quiseres).

O programa deverá poder guardar pelo menos 50 nomes.

Se fizeres esse, já aprenderás alguns conceitos importantes, para mais tarde poderes começar a trabalhar com ficheiros, que é onde "a diversão" começa a sério! ;)

Nao estou a ver como fazer isso da agenda  🤔

Hoje de manha irei ler mais um pouco da wiki para ver se arranjo alguma ideia.

Pois para isso penso que teria de usar um base de dados e nao sei como isso é ..

Daqui a umas horas verei, por que agora vou mas é dormir  :P


YOU SHALL NOT PASS !!!

Share this post


Link to post
Share on other sites
nunopicado

Uma dica:

Estuda a estrutura Record e a estrutura Array!

São as bases para fazer isto... ;)


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

Como disse o @nunopicado, basta os Records e os Arrays - a informação está no tutorial da Wiki.

Uma BD para este caso não se justifica, e é só complicar deveras o exercício que até é relativamente simples. ;)


Knowledge is free!

Share this post


Link to post
Share on other sites
LagMaster

Bem vou criar outro topico para esta duvida ;)


YOU SHALL NOT PASS !!!

Share this post


Link to post
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

×
×
  • 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.