Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida de iniciante...


Mauricio Caetano

Pergunta

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 por Durub
Adicionar tags code [Durub]
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

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!

Link para o comentário
Compartilhar em outros sites

  • 0

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();
}

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...