Ir ao conteúdo
  • Cadastre-se

C amigo secreto programação c


Posts recomendados

@Herbertbahia pode me explicar a lógica em cada passo ?

adicionado 20 minutos depois
19 minutos atrás, João Victor Souza Carli disse:

@Herbertbahia pode me explicar a lógica em cada passo ?

no caso a parte do sprintf , qual a diferença entre isso e printf ? e a part do rand ( NULL )

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

#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;
  }
}

 

Link para o comentário
Compartilhar em outros sites

@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

Link para o comentário
Compartilhar em outros sites

@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.

Link para o comentário
Compartilhar em outros sites

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!