Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
F1rmeza

C !C Controle de Ingressos

Recommended Posts

Fala rapeize, beleza? Estava fazendo um trabalho para a faculdade e gostaria de saber o que vocês acharam do meu código. Quero saber o que devo e não devo usar, se o código está bom, se estou fazendo algo de errado, etc.

Nesse trabalho eu tinha que fazer com que o dono do programa registre um estadio, contendo nome, valor do ingresso e os respectivos descontos de acordo com o sexo da pessoa. Também é necessário informar a quantidade de cadeiras da fileira tribuna, onde o usuário vai poder reservar sua cadeira. Foi necessário criar um MENU com 4 opções, dentre elas: Verificação de Cadeiras, Efetuar Reserva, Cancelar Reserva, Confirmar Reserva e Resumo.

 

Código:

 

//Funções e Procedimento
void validaPorcentagemDesconto(float *valorIng, float *descontoM, float *descontoF);
void validaSexo(char *sexo);
float calculaIngresso(char sexo, float valorIng, float descontoM, float descontoF);


//Bibliotecas
#include<locale.h>
#include<stdio.h>
#include<conio2.h>


//Código Principal
main() {
    setlocale(LC_ALL, "portuguese");

    //Declarações
    int qtdeCad, numReserva;
    int indice;
    float valorIng, descontoM, descontoF;
    char estadio[10], cadeiras[10], id[10];
    char opcao, sexo, continuar;
    //Instruções
    indice=0;
    do {
        printf("#===================================================#\n");
        printf("\t\tREGISTRO DE ");
        textcolor(DARKGRAY);printf("ESTÁDIO\n");textcolor(WHITE);
        printf("#===================================================#");
        printf("\n\nPor favor, informe o nome do estádio: ");
        gets(estadio);
        system("cls");
        }
    while(strcmp(estadio, "")==0);
    do {
        printf("#===================================================#\n");
        printf("\t\tREGISTRO DE ");
        textcolor(DARKGRAY);printf("ESTÁDIO\n");textcolor(WHITE);
        printf("#===================================================#");
        printf("\n\nQuantidade de cadeiras da tribuna: ");
        scanf("%i", &qtdeCad);
        system("cls");
        }
    while(qtdeCad<5 || qtdeCad>=10);
    validaPorcentagemDesconto(&valorIng, &descontoM, &descontoF);
    do{
        cadeiras[indice]='D';
        indice=indice+1;
    }while(indice<qtdeCad);
    menu:
    gotoxy(31,1);printf("#========================================================#");
    gotoxy(31,2);printf("#                                                        #");
    gotoxy(31,3);printf("#                     MENU DE OPÇÕES                     #");
    gotoxy(31,4);printf("#                                                        #");
    gotoxy(31,5);printf("#========================================================#");
    gotoxy(35,7);printf("(1) Verificar Ocupações");gotoxy(65,7);printf("(2) Efetuar Reserva");
    gotoxy(35,9);printf("(3) Cancelar Reserva");gotoxy(65,9);printf("(4) Confirmar Reserva");
    gotoxy(35,11);printf("(5) Resumo Geral");
    opcao=getch();
    system("cls");
    switch(opcao){
        case '1':
            caso1:
            gotoxy(31,1);printf("#========================================================#");
            gotoxy(31,2);printf("#                                                        #");
            gotoxy(31,3);printf("#                        OCUPAÇÕES                       #");
            gotoxy(31,4);printf("#                                                        #");
            gotoxy(31,5);printf("#========================================================#");
            gotoxy(31,6);printf("       CADEIRA                               ESTADO       ");
            for(indice=0;indice<qtdeCad;indice++){
                if(cadeiras[indice]=='D'){
                    gotoxy(31,indice+8);printf("          %i                                    ", indice);textcolor(LIGHTGREEN);printf("%c       ", cadeiras[indice]);textcolor(WHITE);    
                }else
                    if(cadeiras[indice]=='R'){
                        gotoxy(31,indice+8);printf("          %i                                    ", indice);textcolor(YELLOW);printf("%c       ", cadeiras[indice]);textcolor(WHITE);
                    }else
                        if(cadeiras[indice]=='C'){
                            gotoxy(31,indice+8);printf("          %i                                    ", indice);textcolor(LIGHTRED);printf("%c       ", cadeiras[indice]);textcolor(WHITE);
                        }
            }
            gotoxy(1,qtdeCad+8);printf("DESEJA RETORNAR AO MENU? (S)/(N)");
            continuar=getch();
            if(continuar=='s'){
                system("cls");
                goto menu;
            }else
                if(continuar=='n'){
                    system("cls");
                    goto caso1;
                }
        break;
        case '2':
            caso2:
            gotoxy(31,1);printf("#========================================================#");
            gotoxy(31,2);printf("#                                                        #");
            gotoxy(31,3);printf("#                     EFETUAR RESERVA                    #");
            gotoxy(31,4);printf("#                                                        #");
            gotoxy(31,5);printf("#========================================================#");
            gotoxy(31,6);printf("       CADEIRA                               ESTADO       ");
            for(indice=0;indice<qtdeCad;indice++){
                if(cadeiras[indice]=='D'){
                    gotoxy(31,indice+8);printf("          %i                                    ", indice);textcolor(LIGHTGREEN);printf("%c       ", cadeiras[indice]);textcolor(WHITE);
                }
            }
            textcolor(YELLOW);printf("\n\nInforme a CADEIRA que deseja reservar: ");textcolor(WHITE);
            scanf("%i", &numReserva);
            validaSexo(&sexo);
            for(indice=0;indice<qtdeCad;indice++){
                if(numReserva==indice && cadeiras[indice]=='D'){
                    cadeiras[indice]='R';
                    do{
                        id[indice]=rand() % 500;
                    }while(id[indice]<100);
                }
            }
            gotoxy(31,1);printf("#========================================================#");
            gotoxy(31,2);printf("#                                                        #");
            gotoxy(31,3);printf("#                    RESERVA EFETUADA                    #");
            gotoxy(31,4);printf("#                                                        #");
            gotoxy(31,5);printf("#========================================================#");
            gotoxy(31,7);textcolor(WHITE);printf("          RESERVA");
            for(indice=0;indice<qtdeCad;indice++){
                if(numReserva==indice){
                    gotoxy(34,8);textcolor(LIGHTGREEN);printf("         %i", id[indice]);textcolor(WHITE);
                }
            }
            sexo=toupper(sexo);
            gotoxy(70,7);printf("CADEIRA ");textcolor(LIGHTGRAY);gotoxy(73,8);printf("%i", numReserva);textcolor(WHITE);
            gotoxy(31,10);printf("#========================================================#");
            gotoxy(32,12);printf("          SEXO");textcolor(WHITE);gotoxy(34,13);printf("         %c", sexo);textcolor(WHITE);
            gotoxy(71,12);printf("VALOR ");textcolor(LIGHTGREEN);gotoxy(71,13);printf("R$%2.f", calculaIngresso(sexo, valorIng, descontoM, descontoF));textcolor(WHITE);
            gotoxy(31,14);printf("#========================================================#");
            gotoxy(31,15);printf("#========================================================#");
            gotoxy(1,16);printf("DESEJA EFETUAR UMA NOVA RESERVA? (S)/(N)");
            continuar=getch();
            if(continuar=='s'){
                system("cls");
                goto caso2;
            }else
                if(continuar=='n'){
                    system("cls");
                    goto menu;
                }
        break;
        case '3':
            caso3:
            gotoxy(31,1);printf("#========================================================#");
            gotoxy(31,2);printf("#                                                        #");
            gotoxy(31,3);printf("#                     CANCELAR RESERVA                   #");
            gotoxy(31,4);printf("#                                                        #");
            gotoxy(31,5);printf("#========================================================#");
            textcolor(YELLOW);printf("\n\nInforme o número da RESERVA que deseja cancelar: ");textcolor(WHITE);
            scanf("%i", &numReserva);
            for(indice=0;indice<qtdeCad;indice++){
                if(numReserva==id[indice] && cadeiras[indice]=='R'){
                    cadeiras[indice]='D';
                    system("cls");
                    gotoxy(31,1);printf("#========================================================#");
                    gotoxy(31,2);printf("#                                                        #");
                    gotoxy(31,3);printf("#            ");textcolor(LIGHTGREEN);printf("[!] RESERVA CANCELADA COM SUCESSO");textcolor(WHITE);printf("           #");
                    gotoxy(31,4);printf("#                                                        #");
                    gotoxy(31,5);printf("#========================================================#");
                    gotoxy(1,8);printf("DESEJA CANCELAR OUTRA RESERVA? (S)/(N)");
                    continuar=getch();
                    if(continuar=='s'){
                        system("cls");
                        goto caso3;
                    }else
                        if(continuar=='n'){
                            system("cls");
                            goto menu;
                        }
                }else
                    if(numReserva!=id[indice] && cadeiras[indice]!='R'){
                        system("cls");
                        goto caso3;
                    }
            }
        break;
        case '4':
            caso4:
            gotoxy(31,1);printf("#========================================================#");
            gotoxy(31,2);printf("#                                                        #");
            gotoxy(31,3);printf("#                 CONFIRMAÇÃO DE RESERVA                 #");
            gotoxy(31,4);printf("#                                                        #");
            gotoxy(31,5);printf("#========================================================#");
            textcolor(YELLOW);printf("\n\nInforme o número da RESERVA que deseja confirmar: ");textcolor(WHITE);
            scanf("%i", &numReserva);
            for(indice=0;indice<qtdeCad;indice++){
                if(numReserva==id[indice]){
                    cadeiras[indice]='C';
                    system("cls");
                    gotoxy(31,1);printf("#========================================================#");
                    gotoxy(31,2);printf("#                                                        #");
                    gotoxy(31,3);printf("#          ");textcolor(LIGHTGREEN);printf("[!] CONFIRMAÇÃO EFETUADA COM SUCESSO");textcolor(WHITE);printf("          #");
                    gotoxy(31,4);printf("#                                                        #");
                    gotoxy(31,5);printf("#========================================================#");
                    gotoxy(1,8);printf("DESEJA CONFIRMAR OUTRA RESERVA? (S)/(N)");
                    continuar=getch();
                    if(continuar=='s'){
                        system("cls");
                        goto caso4;
                    }else
                        if(continuar=='n'){
                            system("cls");
                            goto menu;
                        }
                }
            }
        break;
        case '5':
            //Instruções
        break;
    }
}

void validaPorcentagemDesconto(float *valorIng, float *descontoM, float *descontoF) {
    printf("#===================================================#\n");
    printf("\t\tREGISTRO DE ");
    textcolor(LIGHTGREEN);printf("VALORES\n");textcolor(WHITE);
    printf("#===================================================#");
    printf("\n\nInsira o valor do ingresso: R$");
    scanf("%f", valorIng);
    system("cls");
    printf("#===================================================#\n");
    printf("\t\tREGISTRO DE ");
    textcolor(LIGHTGREEN);printf("VALORES\n");textcolor(WHITE);
    printf("#===================================================#");
    printf("\n\nInsira o valor do desconto MASCULINO: %%");
    scanf("%f", descontoM);
    system("cls");
    printf("#===================================================#\n");
    printf("\t\tREGISTRO DE ");
    textcolor(LIGHTGREEN);printf("VALORES\n");textcolor(WHITE);
    printf("#===================================================#");
    printf("\n\nInsira o valor do desconto FEMININO: %%");
    scanf("%f", descontoF);
    system("cls");
    }

void validaSexo(char *sexo){
    system("cls");
    gotoxy(31,1);printf("#========================================================#");
    gotoxy(31,2);printf("#                                                        #");
    gotoxy(31,3);printf("#                    INFORME SEU SEXO                    #");
    gotoxy(31,4);printf("#                                                        #");
    gotoxy(31,5);printf("#========================================================#");
    gotoxy(31,7);textcolor(YELLOW);printf("     (M) Masculino                        (F) Feminino");textcolor(WHITE);
    *sexo=getch();
    system("cls");
}

float calculaIngresso(char sexo, float valorIng, float descontoM, float descontoF){
    descontoM = descontoM/100;
    descontoF = descontoF/100;
    if(sexo=='m' || sexo=='M'){
        return (valorIng-(valorIng*descontoM));
    }else
        if(sexo=='f' || sexo=='F'){
            return (valorIng-(valorIng*descontoF));
        }
}
Editado por Simon Viegas
Inserir tag CODE
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@F1rmeza      seu código não está rodando , falta a função textcolor e gotoxy .

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 Olá. Segue as funções q estão faltando:

typedef enum{ BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, DARKGRAY,
LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE} COLORS;

static int __BACKGROUND = BLACK;
static int __FOREGROUND = LIGHTGRAY;

void textcolor(int color) {
    __FOREGROUND = color;
    SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ),
    color + (__BACKGROUND << 4));
}

void gotoxy(int x, int y) {
    COORD c = {x, y};
    SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), c);
}

Pelo q percebi quando a gente escolhe para voltar ao menu o programa termina

adicionado 1 minuto depois

É preciso incluir o arquivo d cabeçalho <windows.h> e mudar para <conio.h>. Está como <conio2.h> e aqui não roda!

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, giu_d disse:

Está como <conio2.h> e aqui não roda!

Existe uma biblioteca chamada conio2 por isso o do conio2.h. Tenho inclusive a conio21 >_<

Dentro tem um pdf explicando como usar >_<

adicionado 0 minutos depois

conio21.zip

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

@vangodp Obrigado! Sinceramente não conhecia hehe

Já dei uma olhada e agora não se faz necessário incluir "na mão" as funções acima q passei

Mais uma q aprendo. Maravilha!

Editado por giu_d
  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

@giu_d Como funciona o <windows.h>?

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

A biblioteca (ou arquivo de cabeçalho) <windows.h> contém declarações para todas as funções da API do Windows, todos os macros comuns utilizados pelos programadores do Windows, e todos os tipos de dados utilizados pelas várias funções e subsistemas. Essa API do Windows é mais conhecida como Win32 API

Possibilita você a fazer coisas como:

Criar janelas e botões.

Enumerar arquivos de um diretório.

Consultar informações sobre o sistema(eg processos, serviços, janelas).

Coisas do gênero.

Obs: Para dar uma resposta mais adequada como essa tive q pesquisar a respeito, pois não tinha "certeza" de q era p isso mesmo (devo ser sincero)

Se interessar conhecer um pouco mais a respeito, dá uma olhada nesse link:

https://docs.microsoft.com/pt-br/windows/desktop/apiindex/windows-api-list

Por exemplo: Para executar as funções q postei acima, tal como a função SetConsoleCursorPosition, o tipo de dado COORD, DWORD etc..

Segue um exemplo simples de um código para capturar o nome de usuário do Windows:

#include <stdio.h>
#include <windows.h>
#include <Lmcons.h>

int main() {

    char username[UNLEN + 1];
    DWORD size = UNLEN + 1;
    GetUserName(username, &size);

    printf("Nome de usuario: %s\n\n", username);

    return 0;
}

Essa é justamente a área q estou interessado em conhecer melhor e estudar a respeito, a API do Windows

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 Ela funciona com a biblioteca <conio2.h>

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 minutos atrás, F1rmeza disse:

@devair1010 Ela funciona com a biblioteca <conio2.h>

 

Sim, mas essa biblioteca não é padrão, é uma biblioteca de terceiros, então as pessoas tem que obter a biblioteca conio2.h para conseguir rodar o seu código.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@isrnick Exato. Só usei ela pois o professor falou que era necessário.

  • Curtir 3

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






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×