Ir ao conteúdo

Posts recomendados

Postado
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define  u GetStdHandle(STD_OUTPUT_HANDLE)
#define gotoxy_2(x,y) {COORD c={x,y};SetConsoleCursorPosition(u,c);}
#define textcolor_2(l,f) SetConsoleTextAttribute(u,l+(f<<4));
int sorteio() {
	textcolor_2(15,0);//cor da letra / cor do fundo //12,0vermelho //
	printf("\n\t1 - Ozeias \t2 - Ana \t 3 - Miria \t 4 - Carlos");
  int aleatorio[10]; /* variáveis colocadas aqui antes da main são inicializadas com valor zero */
  char w[5];char x[5];char y[5];char z[5];
  srand(time(NULL)); /* usada apenas uma vez no programa todo                */
  int cont, j, achou, num;
  for (cont = 0; cont < 4; cont++) {
    do {
      achou = 0; /* igual a falso                                        */
      num = rand() % 4 + 1;

      for (j = 0; j < 4; j++)
        if (num == aleatorio[j])
          achou = 1; /* numero repetiu , igual a verdadeiro                  */

    } while (achou); /* repete enquanto verdadeiro                           */
    aleatorio[cont] = num;

    sprintf(w, "%d", aleatorio[3]);
    sprintf(x, "%d", aleatorio[2]);
    sprintf(y, "%d", aleatorio[1]);
    sprintf(z, "%d", aleatorio[0]);
  }
  for (j = 0; j < 4; j++)
	printf("\n");//	printf("%d",aleatorio[j]);
  printf("\tConcorrente numero %s  Sorteou concorrente de numero %d\n\n", w, aleatorio[0]);
  printf("\tConcorrente numero %s  Sorteou concorrente de numero %d\n\n", x, aleatorio[1]);
  printf("\tConcorrente numero %s  Sorteou concorrente de numero %d\n\n", z, aleatorio[2]);
  printf("\tConcorrente numero %s  Sorteou concorrente de numero %d\n\n", y, aleatorio[3]);
}

int main() {
  printf("\n\t1 - Realizar Sorteio / 2 - Sair");
  char h;
  h = getch();
  switch (h) {
  case '1':
    system("cls");
    Sleep(2000);
    sorteio();
    return main();
    break;
  case '2':
    break;
  }
}

 

Postado

@João Victor Souza Carli assim... eu gosto muito de strings amo. eu declarei 4 delas que são 

char w[5];char x[5];char y[5];char z[5]; ou seja são espaços reservados na memoria que recebem letras ou numeros de até 5 digitos, mas quando as declarei não armazenei nada dentro delas. mas porque eu as declarei vazia?

sprintf é uma função que eu uso para concatenar informações. quando eu digo sprintf(z, "%d", aleatorio[0]); eu estou dizendo que estou concatenando o valor aleatorio[0] no minha string z.

adicionado 0 minutos depois

@João Victor Souza Carli eu só melhorei  o visu para ficar mais apresentável e tirei o bug se você sortear 1 o 1 te sorteia. ou seja ficou mais aleatorio

Postado

@João Victor Souza Carli é só um espelho das informações geradas aleatórias. mas enquanto em %d eu vejo o lado da frente pelo espelho %s mostra a parte de traz é mais ou menos assim. e isso evita repetição

adicionado 3 minutos depois

para voce entender a parte logica vou deixar esse codigo aqui pra você

#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>

int main() {
  int aleatorio[10]; /* variáveis colocadas aqui antes da main são inicializadas com valor zero */
  srand(time(NULL)); /* usada apenas uma vez no programa todo                */
  int cont, j, achou, num;
  for (cont = 0; cont < 4; cont++) {
    do {
      achou = 0; /* igual a falso                                        */
      num = rand() % 4 + 1;

      for (j = 0; j < 4; j++)
        if (num == aleatorio[j])
          achou = 1; /* numero repetiu , igual a verdadeiro                  */

    } while (achou); /* repete enquanto verdadeiro                           */
    aleatorio[cont] = num;

  }
  for (j = 0; j < 4; j++)
		printf("%d",aleatorio[j]);
}

 

adicionado 8 minutos depois

bem o que esse codigo faz? ele gera numeros aleatorios e imprime. se você alterar o numeros 4 do rand ele vai gerar aleatorio dentre o novo numero que você colocar e se você mudar os 4 dentro do for por outro numero ele vai imprimir o tanto de vez que você colocar. o que e mais interessante disso tudo? que ele só passa o numero para a impressao se a condição for verdadeira ou seja tem um peneramento do resultado final. o numero nunca repete.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!