Ir ao conteúdo
  • Cadastre-se

C Dificuldade em linguagem C - exercício


Posts recomendados

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 estou com muita dificuldade de fazer o restante.

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

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

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();
{
    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 10; j++)
            MA[j] = 0;
    
    }
}

void tela 00();
{
    int opcao;
    do
    {
        printf("1 - Cadastro\n");
        printf("2 - Reserva\n");
        printf("3 - Sorteio\n");
        printf("4 - Sair\n");
        scanf("%d", &opcao);
        switch (opcao);
        {
        case 1: tela 01(); breack;
        case 2: tela 02(); breack;
        case 3: tela 03(); breack;
        }
    } while (opcao != 4);
}
void tela 01();
void tela 02();
void tela 03();

void reserva(int cpf)
{
    int part; int i; int inicio; int fim; int 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");

    int localizapart(int cpf)
        int posicao = -1;
        int i = 0;
    while (posicao == -1 && i < 200)
        {
            if (MP.cpf == cpf)
                posicao = i;
                i++;
    } return posicao;
}
 

Se alguém puder me ajudar agradeço muito.

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

@Adriano Carvalho dos Anjos    seu código está bom , mas tem alguns erros e está faltando a função principal  " main  " ,  então apenas ajeitei para ele compilar , agora algumas funções ainda precisam ser feitas , e seu código com algumas modificações poderia se assim   :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <windows.h>
#include <ctype.h>
/*             0     1    2     3   4      5      6      7         8  */
typedef enum{BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY,DARKGRAY,   /* nome das cores */
LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE} COLORS;
/*  9         10         11        12        13         14    15 */

static int __BACKGROUND = 1/*BLACK*/;/*pode ser o numero ou o nome da cor*/
static int __FOREGROUND = LIGHTGRAY;

void textcolor (int letras, int fundo){/*para mudar a cor de fundo mude o background*/
    __FOREGROUND = letras;
    __BACKGROUND = fundo;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    letras + (__BACKGROUND << 4));
}

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++){
        textcolor(12,0);
        printf("  %d",9-j);
        textcolor(10,0);
        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);
    textcolor(7,0);
    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;
    textcolor(14,0);
    printf("Aqui cadastrar participantes");
    espera(1200);
    textcolor(7,0);
    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];
    textcolor(14,0);
    printf("Aqui sortear participantes");
    espera(1200);
    textcolor(7,0);
}

 

Link para o comentário
Compartilhar em outros sites

Obrigado pela a sua ajuda Devair.

Realmente ele estava incompleto e sem o "main", pois eu não estava conseguindo desenvolver de onde parei.

Estou me familiarizando com a área de programação, venho da área financeira, e mudei de área a pouco devido essa crise e falta de emprego.

Mas te agradeço muito por essa ajuda.

Abraços!!!

  • Curtir 1
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!