Mauricio Caetano Postado Outubro 5, 2010 Denunciar Share Postado Outubro 5, 2010 (editado) Seguinte:Vejam este programa:#include<stdio.h> #include<string.h> #include<dos.h> #include<stdlib.h> // gera 20 numeros randomicos entre 1 e 10 main() { int i; randomize(); clrscr(); for (i=1;i<=15;i++) { printf("%3i",(rand() % 100)+1); } getch(); }Este programa imprime na tela 15 números aleatórios entre 1 e 100. Não testei ainda, mas não é essa minha dúvida...Primeira dúvida:Eu preciso fazer com que este programa não imprima números repetidos;Segunda dúvida:Preciso imprimir na tela o maior e o menor número que foi impresso, assim:"O maior número é: X""O menor número é: Y"Acredito que eu deva colocar mais duas variáveis, mas não faço idéia de como fazer para o programa reconhecer o maior e o menor número...Sabem me ajudar?Obrigado... Editado Outubro 5, 2010 por Durub Adicionar tags code [Durub] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Outubro 5, 2010 Denunciar Share Postado Outubro 5, 2010 O mais fácil seria utilizar um array de inteiros com 15 posições.int numeros[15]; // 0-14 Você pode criar três funções: int existe(int *numeros, int numero); int maior(int *numeros); int menor(int *numeros); A função existe retorna 0 se o número não existir na lista e 1 se existir. A função maior e menor simplesmente retornam os valores maiores e menores, respectivamente. Então fica assim: Gere um número aleatório e guarde numa variável temporária (j). <- início Se ele ainda não existir (existe retornar 0), insira-o na lista. Se ele já existir, volte ao início. Até gerar os 15 números, volte ao início. Código esqueleto: #include <stdio.h> #include <time.h> int existe(int *numeros, int numero); int maior(int *numeros); int menor(int *numeros); int main(void) { int numeros[15]; int i = 0; /* indice da lista (0-14) */ int j = 0; /* numero temporario */ srand(time(NULL)); /* semeia o rand com o tempo atual em segundos desde ~1970 */ /* gera os 15 números, únicos */ for(i = 0; i < 15; i++) { do { j = (rand() % 100) + 1; if(existe(numeros, j) == 0) { numeros[i] = j; break; } } while(1); } /* imprime cada número */ for(i = 0; i < 15; i++) { printf("%d\n", numeros[i]); } printf("Maior numero: %d\n Menor numero: %d\n", maior(numeros), menor(numeros)); return 0; } /* Implemente aqui */ int existe(int *numeros, int numero) { } int maior(int *numeros) { } int menor(int *numeros) { }A implementação das funções fica com você. Também não testei o código, então pode ter algum erro.Como diria Donald Knuth: "Beware of bugs in the above code; I have only proved it correct, not tried it."Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 steel_sp Postado Outubro 5, 2010 Denunciar Share Postado Outubro 5, 2010 Só seguir os comentários:#include<stdio.h> #include<stdlib.h> main() { int vet[15],i,j,aux; srand(time(NULL)); // gera valores aleatórios a cada execução for (i=0;i<15;i++) // laço para gerar 15 valores { vet[i]=rand()%100; // atribui os valores gerados a 15 posições de um vetor } /* faz a ordenação, passando posição por posição. Se o valor que estiver a frente foi menor do que está atrás, então o troca-se de posição. Esse método é chamado de bolha. */ for (i=0;i<15;i++) { for (j=i+1;j<15;j++) { if (vet[i]>vet[j]) { aux=vet[i]; vet[i]=vet[j]; vet[j]=aux; } } printf("%d ", vet[i]); // imprimi o vetor com os valores já ordenados } printf("\n\nMaior valor: %d \nMenor valor: %d", vet[14], vet[0]); // a posição 0 contém o menor valor e posição 14 o maior valor getch(); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Mauricio Caetano
Seguinte:
Vejam este programa:
Este programa imprime na tela 15 números aleatórios entre 1 e 100. Não testei ainda, mas não é essa minha dúvida...
Primeira dúvida:
Eu preciso fazer com que este programa não imprima números repetidos;
Segunda dúvida:
Preciso imprimir na tela o maior e o menor número que foi impresso, assim:
"O maior número é: X"
"O menor número é: Y"
Acredito que eu deva colocar mais duas variáveis, mas não faço idéia de como fazer para o programa reconhecer o maior e o menor número...
Sabem me ajudar?
Obrigado...
Editado por DurubAdicionar tags code [Durub]
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.