Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, criei cadastro de uma palestra,está pronto, porém gostaria de colocar um sorteio para algumas pessoas que são cadastradas...

Gostaria de ajuda nessa parte, O sorteio deve ser assim: sortear com o numero das fileiras e das cadeiras das pessoas que cadastraram mas só pegar quem cadastrou,porque pode ser que umas 50 pessoas cadastraram e as outras 50 vagas não, por isso não quero pegar o lugar vazio e sim quem está ali cadastrado.

Tentei fazer mas ainda não consegui chegar numa solução pra isso e preciso de ajuda.

 

include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <windows.h>

//inicializacao de todas as variaveis.
    SYSTEMTIME tempo;
    char nome[100][50], email[100][50], cpf[100][50];
	int cadeiras[10][10];
	int i=10, j=10, k[100], n=0, fileira[100], assento[100], cont=1;
	int op, op2, categoria;
    void cadastro();
    void inicializa(int cadeiras[10][10]);
    void legenda();
    void mostrarPainel(int cadeiras[10][10]);
    void ticket();
    void lista();
    void sorteio();
    
void sorteio(){
}
//inicia os valores da matriz responsavel pelos assentos.
void inicializa(int cadeiras[10][10]){
    for(i=0; i<11; i++){
	 for(j=0; j<11; j++){
		 cadeiras[i][j]='-';
	    }
	}
}
//apresenta o cadastro para o usuario colocar as informações na tela.
void cadastro(){
		printf("\nNome: ");
		fflush(stdin);
		scanf("%[^\n]s",nome[n]);
		printf("\nEmail: ");
		fflush(stdin);
		scanf("%[^\n]s",email[n]);
		printf("\nCPF: ");
		fflush(stdin);
		scanf("%[^\n]s",cpf[n]);
		k[n]=1;
}
//apresenta a legenda da matriz.
void legenda(){
    printf("\n\n\n        - -Livre  E-Ocupado  R-Reservado\n\n");
	}
//apresenta as informações que o usuario deu e queira.
void ticket(){
	system("cls");
	printf("\nSuas informações do cadastro:\n");
	printf("\n\nNome: %s\n\nEmail: %s\n\nCPF: %s\n\nFileira: %d  Assento: %d", nome[n], email[n], cpf[n], fileira[n], assento[n]);
	GetLocalTime(&tempo);
	printf("\n\nData Atual %d/%d/%d", tempo.wDay, tempo.wMonth, tempo.wYear);//imprime dia,mes,ano
	printf("\n\nHora: %d   Minutos: %d", tempo.wHour, tempo.wMinute);//imprime hora e minutos
	n++;
}
//apresenta a lista de todas as pessoas que cadastraram.
void lista(){
	system("cls");
	printf("\nLista de participantes cadastrados:\n");
	for(n=0; n<100; n++){
		if(k[n]>0){
			printf("\n\nNome: %s\n\nEmail: %s\n\nCPF: %s\n\nFileira: %d  Assento: %d\t\n", nome[n], email[n], cpf[n], fileira[n], assento[n]);
		}else{
			break;
		}
	}
}
//apresenta a matriz para a pessoa escolher seu assento.
void mostrarPainel(int cadeiras[10][10]){
  
    int i,j;
    printf("\n\n         %c   PAINEL DE OCUPACOES   %c\n\n",16,17);
    printf("          ");
  
    for(i=1;i<=10;i++)
    printf("%d     ",i);
  
    for(i=1;i<=10;i++){
     printf("\n\n     %d",i);
     for(j=1;j<=10;j++)
      printf("   (%c)",cadeiras[i][j]);     
}
//apresenta o menu na tela
legenda();
}  
//ler a linha oferecida pelo usuario
int linhaX(){
   int i;
   printf("          Fileira: "); scanf("%d",&i);
     if(i>10)
     {
       printf("\t\n Esta cadeira nao existe!!! ");
       }
   return i;
}
//ler a coluna oferecida pelo usuario
int colunaY(){
   int j;
   printf("          Assento: "); scanf("%d",&j);
   if(j>10)
     {
       printf("\t\n Esta cadeira nao existe!!! ");
       }
   return j;                         
}
//tudo que apresenta na tela ate o fim do main.
int main(void) {
	
	inicializa(cadeiras);
	do{
	system("cls");//limpa a ultima coisa na tela
	printf("\n\n         %c   TEATRO UNIP   %c\n\n",16,17);
    printf("\nPalestra: Direitos Humanos");
    printf("\nData: 15/12/2018");
    printf("\nInicio: 9:00 \nTermino: 12:00");
    printf("\n\n\n        1 - Cadastro\n        2 - Lista\n        3 - Sorteio\n");//um pequeno menu de opções
    scanf("%d", &op2);
    
    switch(op2){
    case 1:
    system("cls");
	cadastro();
	
	//pergunta ao usuario o tipo de pessoa e seu assento especifico.
	system("cls");
	printf("\nQual sua categoria?\n");
	printf("\nDigite 1 para aluno \nDigite 2 para professor \nDigite 3 para convidado \nDigite 4 para pessoa com necessidade especial");
	printf("\nCategoria: ");
	scanf("%d", &categoria);
	//caso o usuario digite um desses numeros ira fazer uma dessas funçoes.
	switch(categoria){
		case 1:
		system("cls");
		//este cont ira contar as pessoas do tipo aluno.
		cont;	
		mostrarPainel(cadeiras);
        i = linhaX();
        j = colunaY();
        if(cont>75){
         printf("\nNao ha mais vagas para pessoas do tipo aluno!\n");
		}else{
        if(i<3){
            printf("\n      As duas primeiras fileiras ja estão reservadas a professores e convidados!");
            printf("\n      Por favor escolha outras disponiveis!\n");
            i = 0;
            j = 0;
	        i = linhaX();
            j = colunaY();
        }
    if(cadeiras[i][j]=='-'){
     cadeiras[i][j]  = 'R';
     printf("\n\n      RESERVA EFETIVADA COM SUCESSO !!");
   }   
    else if (cadeiras[i][j]=='E')
         printf("\n\n      CADEIRA JA OCUPADA!! ESCOLHA OUTRA !!\n\n");
        else if(cadeiras[i][j]=='R')
             printf("\n\n      CADEIRA JA RESERVADA !! ESCOLHA OUTRA !!\n\n");
        }
             cont++;
             fileira[n] = i;
             assento[n] = j;

    getch();
		break;
		case 2: case 3:
		system("cls");
		//este cont ira contar as pessoas do tipo professor/convidado
		cont;
		mostrarPainel(cadeiras);
        i = linhaX();
        j = colunaY();
        if(cont>20){
         printf("\nNao ha mais vagas para pessoas do tipo professor/convidado!\n");
		}else{
        if(i>2){
       	printf("\n      Sua categoria esta determinada as duas primeiras fileiras!");
       	printf("\n      Por favor escolha entre elas novamente!\n");
       	i = 0;
       	j = 0;
	    i = linhaX();
        j = colunaY();
    }
       if(cadeiras[i][j]=='-'){
         cadeiras[i][j]  = 'R';
         printf("\n\n      RESERVA EFETIVADA COM SUCESSO !!");
        }   
         else if (cadeiras[i][j]=='E')
         printf("\n\n      CADEIRA JA OCUPADA!! ESCOLHA OUTRA !!\n\n");
        else if(cadeiras[i][j]=='R')
            printf("\n\n      CADEIRA JA RESERVADA !! ESCOLHA OUTRA !!\n\n");
        }
        cont++;
        fileira[n] = i;
        assento[n] = j;
        getch();       
        break;
        case 4:
        system("cls");
	    cont; //vai contar o numero de pessoas especiais.
		mostrarPainel(cadeiras);
        i = linhaX();
        j = colunaY();
        //5 das 100 cadeiras sao resevadas a essas pessoas pois sao 5% especialmente a elas.
        if(cont>5){
         printf("\nNao ha mais vagas para pessoas do tipo especial!\n");
		}else{
         if(i<3){
    	 printf("\n      As duas primeiras fileiras ja estão reservadas a professores e convidados!");
    	 printf("\n      Por favor escolha outras disponiveis!\n");
         i = 0;
         j = 0;
	     i = linhaX();
         j = colunaY();
        }
    if(cadeiras[i][j]=='-'){
         cadeiras[i][j]  = 'E';
         printf("\n\n      RESERVA EFETIVADA COM SUCESSO !!");
        }   
        else if (cadeiras[i][j]=='E')
             printf("\n\n      CADEIRA JA OCUPADA!! ESCOLHA OUTRA !!\n\n");
        else if(cadeiras[i][j]=='R')
             printf("\n\n      CADEIRA JA RESERVADA !! ESCOLHA OUTRA !!\n\n");
}
    cont++;
    fileira[n] = i;
    assento[n] = j;
    getch();
	break;
}
	ticket();
	break;
	case 2:
	lista();
	break;
}
	printf("\n\nDIGITE 0 PARA SAIR DO PROGRAMA OU OUTRO VALOR PARA VOLTAR AO MENU:  ");
	scanf("%d", &op);
	//condicao para continuar o programa.
	}while(op!=0);
	
	return 0;
	}

 

 

  • 3 semanas depois...
Postado

Se você colocar um while na função de sorteio?

Cria uma variável 

char situacao;

Aí coloca um 

do  { 
	//codigo do sorteio aqui
} while situacao != 'R';

Se a cadeira sorteada não estiver ocupada, ele repete o sorteio até achar uma cadeira ocupada (R).

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!