Resolucao trabalho euromilhoes

9
13/11/2014 Euromilhões em C Programação I Ana Isabel Rodrigues LICENCIATURA INFORMATICA – 1º ANO - Nº 558

Transcript of Resolucao trabalho euromilhoes

Page 1: Resolucao trabalho euromilhoes

13/11/2014

Euromilhões em C Programação I

Ana Isabel Rodrigues LICENCIATURA INFORMATICA – 1º ANO - Nº 558

Page 2: Resolucao trabalho euromilhoes

Sumário ....................................................................................................................................................... 0

Algoritmo: Criar o Euromilhões, leitura de 5 números e 2 estrelas de forma ordenada e sem repetição ....................................................................................................................................... 2

Fluxograma: Criar o Euromilhões, leitura de 5 números e 2 estrelas de forma ordenada e sem repetição ....................................................................................................................................... 4

Em C .............................................................................................................................................. 6

1) ............................................................................................................................................... 6

2) ............................................................................................................................................... 6

3) ............................................................................................................................................... 7

Descrição: ...................................................................................................................................... 8

#include <time.h>, .................................................................................................................... 8

int minimo, int numeros, int estrelas, ..................................................................................... 8

No int main(), ............................................................................................................................ 8

Material Apoio: ............................................................................................................................. 8

1 13 de novembro de 2014

Page 3: Resolucao trabalho euromilhoes

Algoritmo: Criar o Euromilhões, leitura de 5 números e 2 estrelas de forma ordenada e sem repetição

[Inicialização de Variáveis]

char xop

int numeros[5] <- {-1}

int estrelas[2] <- {-1}

int n <- 0

int e <- 0

int i <- 0

int j <- 0

int xtemp <- 0

int minimo <- 1

int mnumeros <- 50

int mestrelas <- 11

[Leitura de Variáveis]

xop <- Ler (“Opção Menu”)

[Calculo do Valor]

Caso 1

Escrever(“ Chave Ordenada do Euromilhões + 2 Estrelas”)

srand((unsigned) time(NULL))

Para (n=0;n<5;n++) {

Fazer {

numeros[n]<- rand()%(mnumeros-minimo+1)+mínimo

}

Enquanto (numeros[n]<> 0)

Para (i=0;i<5;i++) {

Para (j=0:j<4;j++){

Se (numeros[j]<>numeros[j+1]){

2 13 de novembro de 2014

Page 4: Resolucao trabalho euromilhoes

numeros[j]<- rand()%51

Se (números[j]> números[j+1]){

Xtemp<-numeros[j]

Números[j]<- números[j+1]

Números[j+1]<-xtemp

}

}

}

Para (i=0;i<2;i++) {

Para (j=0;j<2;j++) {

Se (estrelas[j]<>estrelas[j+1])

estrelas[j] <- rand()%12

Se(estrelas[j]>estrelas[j+1]) {

xtemp<-estrelas[j]

estrelas[j]<-estrelas[j+1]

estrelas[j+1]<-xtemp

}

}

}

Caso 2

Sair

Caso <> 1 e 2

Escrever (“Escolha uma opção válida”)

[Resultado]

Escrever (“ Os números são: “ numeros[i])

Escrever (“ As estrelas são: “ estrelas[i])

3 13 de novembro de 2014

Page 5: Resolucao trabalho euromilhoes

Fluxograma: Criar o Euromilhões, leitura de 5 números e 2 estrelas de forma ordenada e sem repetição

Inicio

char xop

int numeros[5] = {-1}

int estrelas[2] = {-1}

int n = 0

int e = 0

int i = 0

int j = 0

int xtemp = 0

int minimo = 1

int mnumeros = 50

int mestrelas = 11

Opcao

Escolha a opção:

1 – Gerar Chave

2 - Sair

4 13 de novembro de 2014

Page 6: Resolucao trabalho euromilhoes

Para (n=0;n<5;n++) { Fazer { numeros[n]<- rand()%(mnumeros-minimo+1)+mínimo }

Enquanto (numeros[n]<> 0)

Se(numeros[n]==1) { int reset = 0; int index = n;

Para (n=0; n<5; n++){ index++; if (reset==0 && index>5) {

index = 0; reset = 1;

} Se (numeros[index]==0) {

numeros[n]=n; n=index; break; } } }

Para (i=0;i<5;i++) { Para (j=0:j<4;j++){ Se (numeros[j]<>numeros[j+1]){ numeros[j]<- rand()%51 Se (números[j]> números[j+1]){

Xtemp<-numeros[j] Números[j]<- números[j+1] Números[j+1]<-xtemp }

} } Para (i=0;i<2;i++) {

Para (j=0;j<2;j++) { Se (estrelas[j]<>estrelas[j+1])

Fim

Opcao Gerar Chave (1)

F V

Opcao Gerar Chave (2)

F V

Escrever (“Os números são: “ + numeros[i]) Escrever (“As estrelas são: “ + estrelas[i])

Escrever (“Digite uma opção válida”)

5 13 de novembro de 2014

Page 7: Resolucao trabalho euromilhoes

Em C

1) Criei um menu para que o utilizador possa escolher o que pretende fazer, gerar chave ou sair, caso opte por outra opção ira ser visualizada uma mensagem para que escolha uma opção valida, que coloquei no int main().

2) Função para gerar os numeros e as estrelas aleatoriamente, com verificação de repetição e ordenação no final.

6 13 de novembro de 2014

Page 8: Resolucao trabalho euromilhoes

3) int main():

7 13 de novembro de 2014

Page 9: Resolucao trabalho euromilhoes

Descrição:

#include <time.h>, isto porque para a função rand funcionar ela precisa de um valor inicial chamado de “semente”.

Se nenhum valor é passado, rand assume um valor constante. Como este valor é assumido sempre no programa, a sequência gerada será a mesma para cada execução.

Para gerar valores diferentes a cada execução é necessário utilizar a função srand que inicializa a função rand com um valor “semente”, de tal forma que esta semente seja um valor diferente a cada execução do programa, isto por sua vez produz valores diferentes na sequência.

A função srand, ira fazer com que os valores gerados não se repitam a cada execução e recebe um argumento do tipo inteiro sem sinal, ou seja unsigned int.

int minimo, int numeros, int estrelas, na função ger_num_est, são variaveis criadas para poder seleccionar a serie de numeros que se pretende, o euromilhões em numeros é de 1 a 50 e as estrelas de 1 a 11, se não utilizar pode surgir o 0.

No int main(), utilizei o Switch, Case, na opção 1 são gerados os numeros e estrelas aleatoriamente, na opção 2 conforme indica sai e caso nenhuma destas opções seja escolhida, utilizei o Default, deriva do inglês padrão, é o case que é activado caso não tenha achado nenhum case definido, ou seja, é o que acontece em último caso, que neste manda escolher uma opção válida.

Material Apoio: Programação em C++ - Conceitos básicos e Algoritmos (FCA)

http://www.random.org/randomness/

8 13 de novembro de 2014