Jump to content
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);
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.