Jump to content
Pinhalnovo

Euromilhões e Totoloto

Recommended Posts

Pinhalnovo

Bem como referenciei na minha apresentação estou a tirar um curso de aplicações informáticas e estou com algumas dúvidas..

Basicamente tenho um novo projecto em que tenho que fazer uma aplicação com o pascal zim que ajude no preenchimento dos boletins dos jogos socias Totoloto e Euromilhões. A aplicação deverá começar por questionar o utilizador se pretende apostar no Totoloto ou no Euromilhões e de seguida questionar quantas apostas o utilizador pretende efectuar considerando que: Euromilhões: - Minímo 1 aposta; - Máximo 5 apostas; - Cada aposta terá 5 números de 1 a 50 e duas estrelas de 1 a 11. Totoloto: - Mínimo 2 apostas; - Máximo 10 apostas; - O número de apostas terá de ser par; - Cada aposta é composta por 6 números de 1 a 49. Quando forem gerados os números para a(s) aposta(s) deverá ter em atenção que numa mesma aposta o mesmo número não poderá aparecer mais do que uma vez. Depois de geradas, as apostas devem ser apresentadas ao utilizador de forma ordenada, isto é os números terão de surgir no ecrã ordenados de forma crescente.

Já tentei várias coisas mas o pascalzim está sempre a dar erros e ainda não consegui correr nenhuma vez o programa.

Para além disso não estou a ver como é que vou fazer para ordenar os números das apostas.

Alguem dá uma ajudinha?

Obrigadão! :)

Share this post


Link to post
Share on other sites
thoga31

Damos uma ajudinha, com certeza. ;)

Onde está o código? Não podemos adivinhar quais são os erros que tens e que te estão a surgir.


Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

Já tentei várias coisas mas o pascalzim está sempre a dar erros e ainda não consegui correr nenhuma vez o programa.

Para além disso não estou a ver como é que vou fazer para ordenar os números das apostas.

O Pascal Zim não dá erros... É um erro!

Dito isto, tens de dizer quais são para tentarmos ajudar!


"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
Pinhalnovo

O Pascal Zim não dá erros... É um erro!

Dito isto, tens de dizer quais são para tentarmos ajudar!

Está certo é verdade.

O meu colega é que tem a parte inicial do trabalho (pois ainda não o acabamos). A ver se amanhã tenho tempo e coloco aqui. :)

Share this post


Link to post
Share on other sites
passarito

Não despejes simplesmente o código, indica o/os locais onde tens problemas.

Quanto ah ordenacao, tens varios metodos. Um simples mas nao tao eficaz eh posicao a psicao verificar se o elemento menor posterior a si eh inferior ou nao. Caso seja trocam-se. Isto faz-se com 2 for's encadeados, Maas eh mais fácil na pratica do que a explicação.

Share this post


Link to post
Share on other sites
Pinhalnovo

Bem fiquei aqui:

Program Euromilhoes_Totoloto;
Var Resp:Char;
   Apost,I,A,E:Integer;
   Num:array[1..5]of Integer;
   Est:array[1..2]of Integer;
Begin
 WriteLn('Pretende efectuar apostas no Euromilhões ou no Totoloto?');
 WriteLn('E-Euromilhões');
 WriteLn('T-Totoloto');
 ReadLn(Resp);
 Case Resp Of
   'E':Begin
         Repeat
           WriteLn('Qual é o numero de apostas?');
           ReadLn(Apost);
         Until ((Apost = 1) or (Apost = 2) or (Apost = 3) or (Apost = 4) or (Apost = 5));
         For A:=1 to Apost do
           Begin
             For I:=1 to 5 do
                 Begin
                   Num[i]:=random(49)+1;
                 End;
             Writeln('Numeros da Aposta ', A, ':', ' ', Num[1],' ', Num[2],' ', Num[3],' ', Num[4],' ', Num[5]);
             For E:=1 to 2 do
                 Begin
                   Repeat
                   Est[E]:=random(8)+1;
                   Until (Est[1]<>Est[2]);                   
                 End;
                 WriteLn('Estrelas da Aposta ', A, ':', ' ', Est[1],' ', Est[2]);
           End;  
       End;
    'T':Begin
         Repeat
           WriteLn('Qual é o numero de apostas?');
           ReadLn(Apost);
         Until ((Apost = 2) or (Apost = 4) or (Apost = 6) or (Apost = 8) or (Apost = 10));
         For A:=2 to Apost do
           Begin
             For I:=2 to 6 do
                 Begin
                   Num[i]:=random(48)+1;
                 End;
             Writeln('Numeros da Aposta ', A, ':', ' ', Num[1],' ', Num[2],' ', Num[3],' ', Num[4],' ', Num[5]);
           End;  
       End;
 End;

End.

Dá-me erro na linha 40..

Depois falta colocar os números e estrelas das apostas por ordem crescente.. Alguém me consegue ajudar?

Edited by thoga31
GeSHi + linha 40 indicada

Share this post


Link to post
Share on other sites
thoga31

A array está definida de 1 até 5, fazes o output dos índices do 1 ao 5... por que carga de água é que o ciclo for vai de 2 até 6?

Mais, porque é que fazes apostas de 2 até Apost? Se o utilizador disser que quer fazer 2 apostas, apenas vai ser feita 1.

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
Pinhalnovo

A array está definida de 1 até 5, fazes o output dos índices do 1 ao 5... por que carga de água é que o ciclo for vai de 2 até 6?

Mais, porque é que fazes apostas de 2 até Apost? Se o utilizador disser que quer fazer 2 apostas, apenas vai ser feita 1.

Entao o primeiro ciclo FOR vai de 1 a 6 com a arrey definida de 1 a 6?

Sim realmente aqui foi distracao..

Share this post


Link to post
Share on other sites
thoga31

Eu não sei qual é o "primeiro ciclo FOR", mas toma atenção a isso. Testa e diz se resolveu o teu problema. Confesso que não vi o código por completo, pelo que não garanto que seja a única falha.


Knowledge is free!

Share this post


Link to post
Share on other sites
passarito

No Euromilhoes não te falta só ordenar os números, falta-te verificar se o número já existe.

Eu resolveria a coisa assim:

For I:=1 to 5 do Num[i]:=100;
For I:=1 to 5 do begin
 Repeat
Bola:=random(49)+1;
For j:=1 to 5 do
  If Num[j]=Bola then Bola=0;
 until Bola<>0
 For j:=1 to 5 do
if Num[j]>Bola then begin
  Aux:=Num[j];
  Num[j]:=Bola;
  Bola:=Num[j];
end;
end;
Writeln('Numeros da Aposta ', A, ':', ' ', Num[1],' ', Num[2],' ', Num[3],' ', Num[4],' ', Num[5]);

Para o totoloto o procedimento é o mesmo.

Já agora, qual é o erros que te dá nessa tal linha 40?

Edited by passarito

Share this post


Link to post
Share on other sites
Pinhalnovo

O problema da linha 40 está resolvido.

Program Euromilhoes_Totoloto;
Var Resp:Char;
   Apost,I,A,E:Integer;
   Num:array[1..6]of Integer;
   Est:array[1..2]of Integer;
Begin
 WriteLn('Pretende efectuar apostas no Euromilhões ou no Totoloto?');
 WriteLn('E-Euromilhões');
 WriteLn('T-Totoloto');
 ReadLn(Resp);
 Case Resp Of
   'E':Begin
         Repeat
           WriteLn('Qual é o numero de apostas?');
           ReadLn(Apost);
         Until ((Apost = 1) or (Apost = 2) or (Apost = 3) or (Apost = 4) or (Apost = 5));
         For A:=1 to Apost do
           Begin
             For I:=1 to 5 do
                 Begin
                   Num[i]:=random(49)+1;
                 End;
             Writeln('Numeros da Aposta ', A, ':', ' ', Num[1],' ', Num[2],' ', Num[3],' ', Num[4],' ', Num[5]);
             For E:=1 to 2 do
                 Begin
                   Repeat
                   Est[E]:=random(8)+1;
                   Until (Est[1]<>Est[2]);                  
                 End;
                 WriteLn('Estrelas da Aposta ', A, ':', ' ', Est[1],' ', Est[2]);
           End; 
       End;
    'T':Begin
         Repeat
           WriteLn('Qual é o numero de apostas?');
           Writeln ('Tenha atenção que o número de apostas deve ser par, ou seja, 2,4,6,8 ou 10!');
           ReadLn(Apost);
         Until ((Apost = 2) or (Apost = 4) or (Apost = 6) or (Apost = 8) or (Apost = 10));
         For A:=1 to Apost do
           Begin
             For I:=1 to 6 do
                 Begin
                   Num[i]:=random(48)+1;
                 End;
             Writeln('Numeros da Aposta ', A, ':', ' ', Num[1],' ', Num[2],' ', Num[3],' ', Num[4],' ', Num[5],' ', Num[6]);
           End; 
       End;
 End;
End.

Vou personalizar um pouco o programa e depois se tiver dúvidas pergunto.

Edited by thoga31
GeSHi

Share this post


Link to post
Share on other sites
passarito

Continuas com os mesmos problemas no totoloto e no euromilhoes:

- Não verificas se os numeros

- Não ordenas os números

Mais, coloca o code=pascal para se perceber melhor o teu código

Share this post


Link to post
Share on other sites
Someone

No Euromilhoes não te falta só ordenar os números, falta-te verificar se o número já existe.

Eu resolveria a coisa assim:

For I:=1 to 5 do Num[i]:=100;
For I:=1 to 5 do begin
 Repeat
Bola:=random(49)+1;
For j:=1 to 5 do
  If Num[j]=Bola then Bola=0;
 until Bola<>0
 For j:=1 to 5 do
if Num[j]>Bola then begin
  Aux:=Num[j];
  Num[j]:=Bola;
  Bola:=Num[j];
end;
end;
Writeln('Numeros da Aposta ', A, ':', ' ', Num[1],' ', Num[2],' ', Num[3],' ', Num[4],' ', Num[5]);

Para o totoloto o procedimento é o mesmo.

Já agora, qual é o erros que te dá nessa tal linha 40?

Boa noite, eu estou a fazer exatemente fazer o mesmo trabalho e tenho uma dúvida. Não percebo esta linha " For I:=1 to 5 do Num:=100;"

Porquê "100"?

E já agora alguém me sabe ajudar para colocar os números por ordem crescente, por favor?

E já agora, onde devo colocar essa parte de verificar se esse número já existe?

Obrigada, é que sou mesmo má nisto da informática :/

Share this post


Link to post
Share on other sites
thoga31

Boa noite, eu estou a fazer exatemente fazer o mesmo trabalho e tenho uma dúvida. Não percebo esta linha " For I:=1 to 5 do Num:=100;"

Porquê "100"?

Estamos a inicializar o array para evitar falsos positivos. 100 não é, de certeza, um número válido para apostas. Quem diz 100 diz também 130 ou mesmo 69. Tanto faz, tem é de ser um número inválido para apostas.

E já agora alguém me sabe ajudar para colocar os números por ordem crescente, por favor?

Que algoritmo pretendes usar? O que já tentaste fazer? Mostra-nos o que já tens feito.

E já agora, onde devo colocar essa parte de verificar se esse número já existe?

Depende do código que tiveres. Ninguém melhor do que quem escreve o programa para saber onde inserir cada trecho de código.

Obrigada, é que sou mesmo má nisto da informática :/

Questão: se és assim tão má como dizes, como te vieste meter nisto? É que cada vez mais alunos dizem "eu sou um nabo" ou "eu não percebo nada", mas ainda assim entraram na área da informática. O que te levou a entrar neste mundo?


Knowledge is free!

Share this post


Link to post
Share on other sites
passarito

Boa noite, eu estou a fazer exatemente fazer o mesmo trabalho e tenho uma dúvida. Não percebo esta linha " For I:=1 to 5 do Num:=100;"

Porquê "100"?

E já agora alguém me sabe ajudar para colocar os números por ordem crescente, por favor?

O array tem de ser inicializado com um valor maior que o maior que o permitido para posteriormente efetuar a ordenação automaticamente.

O trecho de código que vem a seguir faz todo o processo. Descobrir a bola, verificar se já existe e ordená-la.

Tenta entender o código e poe aí as tuas duvidas.

Obrigada, é que sou mesmo má nisto da informática :/

Qual o teu nivel de conhecimentos?

Share this post


Link to post
Share on other sites
Someone

Eu estou no 12º ano e uma das minhas disciplinas é Aplicações informáticas. Eu praticamente tive de escolher esta disciplina, porque escolher duas específicas iria ser muito trabalhoso e desceria a média, que infelizmente já é má o suficiente. E, portanto, iniciei este ano esta disciplina e tenho um trabalho para fazer que é o seguinte : Pretende-se uma aplicação que ajude no preenchimento dos boletins dos jogos socias Totoloto e Euromilhões. A aplicação deverá começar por questionar o utilizador se pretende apostar no Totoloto ou no Euromilhões e de seguida questionar quantas apostas o utilizador pretende efetuar considerando que: Euromilhões: - Minímo 1 aposta; - Máximo 5 apostas; - Cada aposta terá 5 números de 1 a 50 e duas estrelas de 1 a 11. Totoloto: - Mínimo 2 apostas; - Máximo 10 apostas; - O número de apostas terá de ser par; - Cada aposta é composta por 6 números de 1 a 49. Quando forem gerados os números para a(s) aposta(s) deverá ter em atenção que numa mesma aposta o mesmo número não poderá aparecer mais do que uma vez. Depois de geradas, as apostas devem ser apresentadas ao utilizador de forma ordenada, isto é os números terão de surgir no ecrã ordenados de forma crescente. Todas as introduções de dados por parte do utilizador devem ser validadas por forma a evitar o erro. No final da apresentação das apostas solicitadas pelo utilizador terá de lhe ser questionado se pretende continuar a utilizar a aplicação.

Para ser franca, eu não sabia nem começar, pelo que pesquisei na internet e acabei por encontrar este site de onde copiei tudo o que tenho. É

É* que nem entendo bem o que copiei. Principalmente a dúvida colocada anteriormente, que continuo sem a entender!

Tudo o que tenho é isto:

Program Euromilhoes_Totoloto ;
Var Resp:Char;
   Apost,I,A,E,T:Integer;
   Num:array[1..6]of Integer;
   Est:array[1..2]of Integer;
Begin
 WriteLn('Pretende efectuar apostas no Euromilhões ou no Totoloto?');
 WriteLn('E-Euromilhões');
 WriteLn('T-Totoloto');
 ReadLn(Resp);
 Case Resp Of
   'E':Begin
         Repeat
           WriteLn('Qual é o numero de apostas?');
           ReadLn(Apost);
         Until ((Apost = 1) or (Apost = 2) or (Apost = 3) or (Apost = 4) or (Apost = 5));
         For A:=1 to Apost do
           Begin
             For I:=1 to 5 do
                 Begin
                   Num[i]:=random(49)+1;
                 End;
           For I:=1 to 5 do Num[i]:=100;
           For I:=1 to 5 do begin
           Repeat
           Bola:=random(49)+1;
           For j:=1 to 5 do
             If Num[j] = Bola then Bola=0;
               until Bola<>0
           For j:=1 to 5 do
           if Num[j]>Bola then begin
           Aux:=Num[j];
           Num[j]:=Bola;
           Bola:=Num[j];
                 end;
           end;
             Writeln('Numeros da Aposta ', A, ':', ' ', Num[1],' ', Num[2],' ', Num[3],' ', Num[4],' ', Num[5]);
             For E:=1 to 2 do
                 Begin
                   Repeat
                   Est[E]:=random(8)+1;
                   Until (Est[1]<>Est[2]);                  
                 End;
                 WriteLn('Estrelas da Aposta ', A, ':', ' ', Est[1],' ', Est[2]);
           End;
       End;
    'T':Begin
         Repeat
           WriteLn('Qual é o numero de apostas?');
           Writeln ('Tenha atenção que o número de apostas deve ser par, ou seja, 2,4,6,8 ou 10!');
           ReadLn(Apost);
         Until ((Apost = 2) or (Apost = 4) or (Apost = 6) or (Apost = 8) or (Apost = 10));
         For A:=1 to Apost do
           Begin
             For I:=1 to 6 do
                 Begin
                   Num[i]:=random(48)+1;
                 End;
             Writeln('Numeros da Aposta ', A, ':', ' ', Num[1],' ', Num[2],' ', Num[3],' ', Num[4],' ', Num[5],' ', Num[6]);
           End;
       End;
 End;
End.

End.

Falta-me colocar os números por ordem crescente e não sei onde colocar a parte em que verifica se esse número já foi gerado, pelo que o coloquei algures.

Obrigada pela ajuda, é mesmo importante ter boa nota...

Já agora...falta-me variáveis, não falta? Estou toda baralhada!!

Edited by thoga31
Tags code + GeSHi

Share this post


Link to post
Share on other sites
thoga31

Antes de mais, vê aqui como colocar correctamente o código no fóurm.

De seguida, isto é o que dá copiar: não se aprende nada!

Tu tens aí um código todo jeitoso e tal, mas não o fizeste, não o pensaste e não o entendes. Faz um bem a ti mesma: não voltes a copiar!

Mais, se o professor descobre que copiaste, já foste. E ao copiares, não aprendes nada, pelo que no teste também já foste.

Vamos por partes:

1) Indenta bem o código.

2) Se eu escrever uma outra letra qualquer, o programa termina abruptamente.

3) Se eu escrever "e" em vez de "E", acontece o mesmo que em 2).

4) Afinal o que é que sabes de Pascal?

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
Someone

Eu percebo, não sei é fazer!

Se me derem um código, eu sei explicar o que faz, mas construí-lo é o que me custa, porque não sei o que utilizar.

Eu até percebo minimamente de Pascal, tive um teste relativamente bom, 16,5 valores.

A parte das letras foi um lapso, esqueci-me de colocar mais uma condição com o "or=e"

O facto do programa terminar abruptamente, deve-se a nunca ter aprendido outra maneira de o fazer.

Share this post


Link to post
Share on other sites
thoga31

Para nós, aqui no P@P, as classificações obtidas nos testes não valem nada, literalmente. Não é ser duro, é ser realista. Interpretar código feito não é complicado, se bem feito, mas fazer o código do zero exige mais: exige pegar no problema e desmontá-lo em pedaços. Se não consegues desmontar um problema em pedaços e resolver cada pedacinho e juntar tudo para obter uma solução final, então o meu conselho é treinares seriamente isso.

Posto isto, não é preciso ensinarem-te algo para evitares o encerramento abrupto do programa. Tens as ferramentas todas nas tuas mãos, tens é de pegar no problema e resolvê-lo com essas ferramentas. Por outras palavras, tens o prego e o martelo - não podes estar à espera que alguém te diga que o martelo é para pregar o prego, também convém analisares o que tens e o que podes fazer com isso.

Portanto, para evitar o encerramento abrupto do programa, precisas de controlar o input do utilizador. Para isto tens as estruturas de repetição (ou ciclos). Dos três que tens à disposição, escolhe o que melhor se adapta à situação - e é aqui que começas a pensar, não pode ser o professor a dizer-te tudo, nem nós. Nós orientamos. ;)

De seguida, vais fazer um código teu e não copiado do teu colega. Isso é, em termos leves, feio. Eu saberei se te "baseaste" nele ou não (aka copiar alterando nomes de variáveis e etc), já tenho uns aninhos disto e sei detectar à distância. Enquanto não começares a fazer um código teu, explicado por ti e pensado por ti, não te ajudarei. Se te dedicares a fazer um código teu, eu estarei aqui para ajudar, assim como os outros membros.

E não há "urgências em ter o exercício feito" que justifiquem qualquer contorno destas condições que aqui coloquei. Eu estou aqui, enquanto membro do P@P, para ajudar e orientar e até ensinar, e não para me conformar com plágios.

Posso parecer, mais uma vez, mais brusco. Estou apenas a ser frontal e sincero.

Cumprimentos.

  • Vote 1

Knowledge is free!

Share this post


Link to post
Share on other sites
Someone

Compreendo tudo o que disse, mas a verdade é que também fui sincera.

Não disse que tinha sido resultado do meu esforço para "ficar bem na fotografia", e admiti que o tinha copiado, porque apesar de perceber, não sei construir.

E como deve calcular, a exigência dos exercícios feitos em aula e deste exercício em questão, nem se comparam!

Se tive um teste relativamente bom, é porque até sei fazer os códigos, mas este em específico, envolve muitas coisas.

Eu tenho realmente alguma "pressa" em terminar este trabalho, porque o prazo termina no dia 30 e como deve calcular, tenho disciplinas mais difíceis e que vão realmente fazer-me falta no futuro.

Eu não pretendo seguir nada que se pareça com informática, e portanto a minha intenção nesta disciplina não é aprender nem treinar, mas sim tirar uma boa nota e aumentar a minha média.

Compreendo perfeitamente que não concorde com o que digo e até fique algo desiludido com os alunos de hoje em dia, mas estou a ser sincera e as condições de acesso ao ensino superior, etc, obrigam-nos a ser um pouco assim.

Obrigada por ter disponibilizado o seu tempo a escrever-me e não insistirei mais pela sua ajuda.

Por muito pouco correto que seja, terei de recorrer a alguém que me ensine especificamente o que fazer.

Peço desculpa pela arrogância, mas é com toda a franqueza que lhe digo tudo isto.

Mais uma vez obrigada,

Cumprimentos.

  • Vote 1

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.