Ir para conteúdo
Adriano Carvalho dos Anjos

Dificuldade em linguagem C - exercício

Recommended Posts

Olá pessoal, sou novo na área e estou com uma dificuldade para resolver um exercício da faculdade.Estou desenvolvendo um código em C para o controle de entrada de participantes de uma palestra. Como requisitos, tenho que conter: permitir o cadastro de cada participante e emitir (mostrar na tela) um ticket com a data, a hora e o número do assento. Nenhum participante poderá ter um assento com o mesmo número do assento de outro participante. Quando não existir mais assentos disponíveis o sistema deverá emitir uma mensagem em tela e não poderá mais aceitar novos participantes. O sistema deverá reservar 5% dos assentos aos portadores de deficiência e deverá também reservar as duas primeiras filas de assentos do teatro para professores e convidados do palestrante. Ao final da palestra alguns brindes serão sorteados entre os participantes. O sistema deverá fazer o sorteio de tal modo que os convidados do palestrante não participem.

Consegui desenvolver o código abaixo, mas quando compilo no DEV, ele apresenta um erro na tela 02 e não sei o que significa. Alguém poderia me ajudar?

 

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

struct participantes{
    char data[11],hora[9];
    int  cpf,acento;
    char nome[30];
    int  tipo; //Professor=0, Convidado=1, Aluno=2
    int  portador; //Não=0, Sim=1
}/*MP[200]*/; //Matriz participantes
struct participantes MP[200];

void tela_01();
int  tela_02();
void tela_03();
int MA[10],cont;
int carac[8]={179,47,196,92,179,47,196,92};

void gotoxy(int x, int y) {
    COORD c;
    c.X = x;
    c.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
int localizapart(int x){
    return 0;
}
void inicia_participa(){
    MP[0].cpf = 12345;
    strcpy(MP[0].nome, "João Santos");
    MP[0].tipo= 2;
    MP[0].portador= 0;

    MP[1].cpf = 13245;
    strcpy(MP[1].nome, "Fernanda Tavares");
    MP[1].tipo= 2;
    MP[1].portador= 0;

    MP[2].cpf = 14245;
    strcpy(MP[2].nome, "Fernando Silva");
    MP[2].tipo= 2;
    MP[2].portador= 0;

    MP[3].cpf = 14255;
    strcpy(MP[3].nome, "Juliano Sousa");
    MP[3].tipo= 2;
    MP[3].portador= 1;

    MP[4].cpf = 12255;
    strcpy(MP[4].nome, "Silvio Santos");
    MP[4].tipo= 2;
    MP[4].portador= 0;

    MP[5].cpf = 12555;
    strcpy(MP[5].nome, "Augusto Silva");
    MP[5].tipo= 2;
    MP[5].portador= 0;

    MP[6].cpf = 32555;
    strcpy(MP[6].nome, "Joaquina Soares");
    MP[6].tipo= 2;
    MP[6].portador= 1;
}
void inicia_particp(){
    int MA[10][10];
}
void inicia_auditorio(){
    int i,j,MA[10];
    for(i = 0; i < 10; i++){
        for(j = 0; j < 10; j++)
            MA[j] = 0;

    }
}
void listar(){
    int i,j;
    printf("Listando todos participantes :\n"    );
    for(j=0;j<cont;j++){
        printf("Nome -----: %s\n"  ,MP[j].nome    );
        printf("cpf ---------: %d\n"  ,MP[j].cpf     );
        printf("Tipo -------: %d\n"  ,MP[j].tipo    );
        printf("Portador -: %d\n"  ,MP[j].portador);
        printf("Acento ---: %d\n"  ,MP[j].acento  );
        printf("Data ------: %s\n"  ,MP[j].data    );
        printf("Hora ------: %s\n\n",MP[j].hora    );
    }
}
void espera(int r){
    int j,w,x,y;                              /* variáveis simples                       */
    HANDLE hOut;                              /* controle dos dispositivos do pc         */
    hOut= GetStdHandle(STD_OUTPUT_HANDLE);    /* pega a saída padrão                     */
    CONSOLE_SCREEN_BUFFER_INFO SBInfo;        /* informações sobre a buffer da tela      */
    GetConsoleScreenBufferInfo(hOut, &SBInfo);/* pega a posição do cursor do console     */
    x = SBInfo.dwCursorPosition.X;            /* X será a posição x do cursor no console */
    y = SBInfo.dwCursorPosition.Y;            /* Y será a posição y do cursor no console */
    gotoxy(x+2,y);
    for(j=0;j<10;j++){
        printf("  %d",9-j);
        for(w=0;w<8;w++){
            if(kbhit()){
                j=10;
                break;
            }
            gotoxy(x+1,y);
            printf("%c",carac[w]);/* gira o caractere na tela */
            Sleep(r/25);          /* dorme um tempinho        */
        }
    }
    gotoxy(x,y);

    printf("      \n\n");
}
void tela(){
    int opcao;
    do{
        printf("1 - Cadastro\n");
        printf("2 - Reserva\n");
        printf("3 - Sorteio\n");
        printf("4 - Listar\n");
        printf("5 - Sair\n");
        scanf("%d", &opcao);
        switch (opcao){
        case 1 :
            tela_01();/* cadastro */
            break;
        case 2 :
            tela_02();/* reserva */
            break;
        case 3 :
            tela_03();/* sorteio */
            break;
        case 4 :
            listar();
            break;
        case 5 :
            printf("Saindo do programa !");
            espera(1200);
            break;
        default :
            printf("Opcao invalida !\n\n");
        }
    } while (opcao != 5);
}

/*====================   inicio do programa   =============================================*/

int main(){
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO SBInfo;
    GetConsoleScreenBufferInfo(hOut, &SBInfo);/* SBInfo é do tipo intpega a posição do cursor */
    tela();
    return 0;
}

/*================================   fim do proframa =============================================*/

/* funções abaixo da main precisam ser declaradas lá no início antes do início */
/* acima da main não precisam ser declaradas  */

void tela_01(){/* cadastrar */
    char aux;
    printf("Aqui cadastrar participantes");
    espera(1200);
    printf("\nInforme os dados do participante\n");
    printf("o cpf : ");
    fflush(stdin);
    scanf("%d",&MP[cont].cpf);
    printf("o nome : ");
    fflush(stdin);
    scanf("%s",&MP[cont].nome);
    printf("o tipo : ");
    fflush(stdin);
    scanf("%d",&MP[cont].tipo);
    printf("portador 1 ou 0 : ");
    fflush(stdin);
    scanf("%d",&MP[cont].portador);
    printf("numero do acento : ");
    fflush(stdin);
    scanf("%d",&MP[cont].acento);

    _strdate(MP[cont].data);/* pega a data em inglês */
    _strtime(MP[cont].hora);/* pega a hora atual */
    aux     =MP[cont].data[3];
    MP[cont].data[3]=MP[cont].data[0];
    MP[cont].data[0]=aux;
    aux     =MP[cont].data[4];
    MP[cont].data[4]=MP[cont].data[1];
    MP[cont].data[1]=aux;
    aux     =MP[cont].data[7];
    MP[cont].data[9]=MP[cont].data[7];
    MP[cont].data[8]=MP[cont].data[6];
    MP[cont].data[6]='2';
    MP[cont].data[7]='O';/* data formato português */
    MP[cont].data[10]='\0';/* sinaliza o final da string */
    cont++;
}
int tela_02(int cpf){/* reserva */
    int part,i,inicio,fim,posicao=-1;
    /*part = localizapart(cpf);*/
    if(MP[part].portador == 1){
        inicio = 99;
        if(MP[part].tipo <= 1)
            fim = 0;
        else
            fim = 20;
    }
    else{
        if (MP[part].tipo <= 1)
            inicio = 0;
        else
            inicio = 20;
        fim = 94;
    }
    if (inicio > fim){
        i = inicio;
        do{
            if (MA != 0) //i é bidimensional
                posicao = i;
            else
                i--;
        }while(posicao != -1 && i >= fim);
    }
    else{
        i = inicio;
        do{
            if(MA != 0)
                posicao = i;
            else
                i++;
        }while(posicao != -1 && (i <= fim));
    }
    if(posicao != -1)
        MA[posicao] = MP[part].cpf;
    else
        printf("Auditorio sem lugar disponivel");

        localizapart(cpf);
        /*int posicao = -1;*/
        /*int i = 0;*/
    while(posicao == -1 && i < 200){
        if(MP[1].cpf == cpf)
            posicao = i;
            i++;
    }
    return posicao;
}
void tela_03(){
    char aux[2];
    printf("Aqui sortear participantes");
    espera(1200);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.