Ir ao conteúdo
  • Cadastre-se

Reserva Poltrona no Onibus em C


Matheus Ponce

Posts recomendados

Estou com um exercício da Faculdade para fazer ele é simples mas estou com dificuldade de printar alguem pode me ajuda ....

 

o que eu fiz ( acho que da ruim) 

#include <stdio.h>
#include <stdlib.h>
#define LUGARES 48


void ocupar(int janela[], int poltrona[]);
void consultar(int janela[], int poltrona[]);


int main(){
    int i, opcao, janela[LUGARES], poltrona[LUGARES]; //janela = impares, poltrona = pares

    for(i=0;i<LUGARES;i++){
        if(i%2){
            janela = 0;
            poltrona = -1;
        } else {
            janela = -1;
            poltrona = 0;
        }
    }

    printf("\tGerenciamento de Onibus\nDigite a opcao desejada:\n");
    do {
        printf("(1) Ocupar uma poltrona\n(2) Consultar poltrona\n(4) Sair\n-->");
        scanf("%d", &opcao);
        system("CLS");


        switch(opcao){
            case 1: ocupar(janela, poltrona); break;
            case 2: consultar(janela, poltrona); break;
            case 4: exit(1); break;
        }

    } while (1);

    return(0);
}

void ocupar(int janela[], int poltrona[]){
    int x;
    printf("Digite qual poltrona deseja ocupar: ");
    scanf("%d", &x);
    if(x%2){
        janela[x] = 1;
    } else {
        poltrona[x] = 1;
    }
    printf("Poltrona ocupada com sucesso.\n");
}

void consultar(int janela[], int poltrona[]){
    int x;
    printf("Digite qual poltrona deseja consultar: ");
    scanf("%d", &x);
    if(x%2){
        if(janela[x]){
            printf("Esta poltrona esta ocupada.\n");
        } else {
            printf("Esta poltrona esta livre.\n");
        }
    } else {
        if(poltrona[x]){
            printf("Esta poltrona esta ocupada.\n");
        } else {
            printf("Esta poltrona esta livre.\n");
        }
    }
}

 

 

é o ex4 e tem que printa igual o desenho e n to conseguindo 

LPI - 1ª Lista - 2.2017.pdf

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

@Matheus Ponce     no c ou c++ não tem como fazer esse desenho,  já a parte que faz as reservas está funcionando, mas precisa modificar alguns comandos,  então seu código ficaria assim :

#include <stdio.h>
#include <stdlib.h>
#define LUGARES 48
int janela[LUGARES],poltrona[LUGARES];
void ocupar();
void consultar();

int main(){
    int j, opcao; /*//janela = impares, poltrona = pares*/
    for(j=0;j<LUGARES;j++){
        if(j%2){
            janela[j] = 0;
            poltrona[j] = -1;
        } else {
            janela[j] = -1;
            poltrona[j] = 0;
        }
    }
    printf("\tGerenciamento de Onibus\nDigite a opcao desejada:\n");
    do {
        printf("(1) Ocupar uma poltrona\n(2) Consultar poltrona\n(4) Sair\n--> ");
        scanf("%d", &opcao);
        system("CLS");

        switch(opcao){
            case 1: ocupar(); break;
            case 2: consultar(); break;
            case 4: exit(1);
        }
    } while (1);
    return(0);
}
void ocupar(){
    int x;
    printf("Digite qual poltrona deseja ocupar: ");
    scanf("%d", &x);
    if(x%2){
        janela[x] = 1;
    } else {
        poltrona[x] = 1;
    }
    printf("Poltrona ocupada com sucesso.\n");
}
void consultar(){
    int x;
    printf("Digite qual poltrona deseja consultar: ");
    scanf("%d", &x);
    if(x%2){
        if(janela[x]){
            printf("Esta poltrona esta ocupada.\n");
        } else {
            printf("Esta poltrona esta livre.\n");
        }
    } else {
        if(poltrona[x]){
            printf("Esta poltrona esta ocupada.\n");
        } else {
            printf("Esta poltrona esta livre.\n");
        }
    }
}

 

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

@devair1010 então tem como fazer o desenho mas não deitado de pé mesmo ... aee queria deixa o codigo simples pra ele printa direto o desenho e quando eu digito a poltrona ele subistitui o numero por ** ae ele esta reservado e quando eu digita o numero reservado ele só avisa que esta reservado , tendeu? ( Pode Me Ajudar )

dsds.png

adicionado 8 minutos depois

@devair1010  tem como me da um help nisso ?

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

@Matheus Ponce     esse desenho não está como o que foi pedido, mas tudo bem pode ser assim mesmo, então você precisa verificar no vetor se a posição está ocupada ou não, se estiver ocupada você precisa colocar no vetor um número que pode ser 2 para informar que esta posição está ocupada e ir na posição no desenho que corresponde a do vetor e imprimir os caractere 

asterisco asterisco e na hora de ver se está ocupada se no vetor for número 2 então está ocupada.

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

@Matheus Ponce     experimente esse seu código com algumas modificações :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#define LUGARES 48
int janela[LUGARES],poltrona[LUGARES];
void ocupar();
void consultar();
void gotoxy(int x,int y){
    COORD c;
    c.X = x;
    c.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
int main(){
    int j,l,co,l2,opcao; /*//janela = impares, poltrona = pares*/
    for(j=0;j<LUGARES;j++){
        if(j%2){
            janela[j] = 0;
            poltrona[j] = -1;
        } else {
            janela[j] = -1;
            poltrona[j] = 0;
        }
    }
    system("cls");
    do {
        system("cls");
        l=2;l2=l;co=60;
        for(j=0;j<LUGARES-24;j+=2){
            gotoxy(co,l);
            printf("||");
            if(janela[j]==1){
                printf("**");
            }
            else{
                if(j<6){
                    printf("0%d",j*2+1);
                }else{printf("%d",j*2+1);}
            }
            l++;
            gotoxy(co,l);
            printf("||");
            if(poltrona[j]==1){
                printf("**");
            }
            else{
                if(j<4){
                    printf("0%d",j*2+2);
                }else{printf("%d",j*2+2);}
            }
            l+=4;
            if(j<21){
            gotoxy(co,l);
            printf("||");
            if(poltrona[j+1]==1){
                printf("**");
            }
            else{
                if(j<4){
                    printf("0%d",j*2+4);
                }else{printf("%d",j*2+4);}
            }
            l++;
            gotoxy(co,l);
            printf("||");
            if(janela[j+1]==1){
                printf("**");
            }
            else{
                if(j<4){
                    printf("0%d",j*2+3);
                }else{printf("%d",j*2+3);}
            }
            }
            l=l2;
            co-=4;
        }
        for(j=15;j<68;j++){
            gotoxy(j,1);
            printf("%c",205);
            gotoxy(j,9);
            printf("%c",205);
            if(j<22){
                gotoxy(14,j-13);
                printf("%c",186);
            }
        }
        gotoxy(14,1);printf("%c",201);
        gotoxy(14,9);printf("%c",200);
        gotoxy(0,12);
        printf("Gerenciamento de Onibus\nDigite a opcao desejada:\n\n");
        printf("(1) Ocupar uma poltrona\n(2) Consultar poltrona\n(4) Sair\n --%c ",16);
        do{
            opcao=0;
            opcao=getch()-48;
            Sleep(200);
        }while(opcao<1||opcao>4||opcao==3);
        system("CLS");

        switch(opcao){
            case 1: ocupar(); break;
            case 2: consultar(); break;
            case 4: exit(1);
        }
    } while (1);
    return(0);
}
void ocupar(){
    int x;
    char a;
    do{
        do{
            a='s';
            printf("Digite qual poltrona deseja ocupar: ");
            scanf("%d", &x);
            if(x < 1 || x > 46){printf("So Pode Numeros Positivos e Maior Que Zero e Menor Que 47\n");}
        }while(x < 1 || x > 46);
        if(x%2){
            janela[x/2-0] = 1;
        } else {
            poltrona[x/2-1] = 1;
        }
        printf("Poltrona ocupada com sucesso.\n");
        printf("Quer Ocupar Outra Poltrona   S/N");
        a=getch();printf("\n");
    }while(a!='n');
}
void consultar(){
    int x;
    char a;
    do{
        a='s';
        do{
            printf("Digite qual poltrona deseja consultar: ");
            scanf("%d",&x);
            if(x < 1 || x > 46){printf("So Pode Numeros Positivos e Maior Que Zero e Menor Que 47\n");}
        }while( x < 1 || x > 46 );
        if(x%2){
            if(janela[x/2-0] == 1){
                printf("Esta poltrona esta ocupada.\n");
            } else {
                printf("Esta poltrona esta livre.\n");
            }
        } else {
            if(poltrona[x/2-1] == 1){
                printf("Esta poltrona esta ocupada.\n");
            } else {
                printf("Esta poltrona esta livre.\n");
            }
        }
        printf("\nQuer Consultar Outra poltrona  S/N ");
        fflush(stdin);
        a=getch();
        printf("\n");
    }while(a!='n'&&a!='N');
}

 

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!