Ir ao conteúdo
  • Cadastre-se

Elevador


Posts recomendados

Caros amigos, boa noite!

Sou novo na disciplina de programação em C. No entanto, estou a fazer um projeto simples para programar um elevador e ser criativo com o mesmo.

A mina ideia para que seja diferencial é fazer com que o programa calcule o peso das pessoas e limite a quantidade de pessoas e  o que conseguir até agora foi o que segue:

 

#include <stdio.h>
#include <conio.h>

int main()
{
    int quest, contar = 1, i;

    printf("\n\n\t\t\t***Elevador***\n");
    do
    {
        while(contar < 6)
        {
            printf("\n\t Andar %d", contar);
            contar = contar + 1;
        }
        printf("\n\n\tBem Vindo, Escolha o Andar!\n\n\tWelcome, choose the floor!\n");
        printf("\n\nSua escolha: ");
        scanf("%i", &i);
        switch(i)
        {
        case 1:
            printf("\nPrimeiro Andar.\n\n\tAguarde, Abrindo porta!... ....\n");
            printf("\tCuidado, Fechando portas em 10 segundos! ... ...");
            break;
        case 2:
            printf("\n\tSegundo Andar.\n\n\tAguarde, Abrindo porta!... ....\n");
            printf("\tCuidado, Fechando porta em 10 segundos! ... ...");
            break;
        case 3:
            printf("\n\tTerceiro Andar.\n\n\tAguarde, Abrindo porta!... ....\n");
            printf("\tCuidado, Fechando porta em 10 segundos! ... ...");
            break;
        case 4:
            printf("\n\t(Suporte) - Obter relatorios.\n");
            printf("\nAguarde, Imprimindo relatorio de uso diario. ... ....!\n");
            break;
        case 5:
            printf("\n\t(Suporte) - Somente para Autorizados");
            printf("\nAguarde, Imprimindo Relatorio Mensal. ... ....!\n");
            break;
        default:
            printf("Comando nao aceito:Entrar em contar com os Engenheiros!");
        }
        printf("\n\n\t Deseja ir para outro andar?");
        printf("\n[1] - SIM");
        printf("\n[0] - NAO");
        printf("\n\tSua escolha: ");
        scanf("%i", &quest);
    }
    while(quest != 0);
    printf("Espaco Fechado, nao FUME neste recinto!");
    printf("\n\n\tObrigado! \n\tThank You!\n\tFeito por Luciano e Hialyson!!!\n\t");
    return 0;
}

 

 

Aceito novas ideias e vejam meu conhecimento é limitado. Fico no Aguardo.

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

Dei uma pequena melhorada.
 

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

int main() {
    int quest, contar = 1, i, flag = 0;
    char andar[3][9] = { {"Primeiro"}, {"Segundo"}, {"Terceiro"} };
    
    do {
        if (flag == 0){
            printf ( "\n\n\t\t\t***Elevador***\n" );
            flag++;
        }else{        
            system("cls");
        }
        
        while ( contar < 6 ) {
            printf ( "\n\t Andar %d", contar );
            contar = contar + 1;
        }
        
        printf ( "\n\n\tBem Vindo, Escolha o Andar!\n\n\tWelcome, choose the floor!\n" );
        printf ( "\n\nSua escolha: " );
        scanf ( "%d%*c", &i );

        system("cls");
        
        switch ( i ) {
            case 1:
            case 2:
            case 3:
                printf ( "\n%s Andar.\n\n\tAguarde, Abrindo porta!... ....\n", andar[i-1] );
                printf ( "\tCuidado, Fechando portas em 10 segundos! ... ..." );
                break;
                
            case 4:
                printf ( "\n\t(Suporte) - Obter relatorios.\n" );
                printf ( "\nAguarde, Imprimindo relatorio de uso diario. ... ....!\n" );
                break;
                
            case 5:
                printf ( "\n\t(Suporte) - Somente para Autorizados" );
                printf ( "\nAguarde, Imprimindo Relatorio Mensal. ... ....!\n" );
                break;
                
            default:
                printf ( "Comando nao aceito:Entrar em contar com os Engenheiros!" );
        }
        getchar();
        system("cls");
        printf ( "\n\n\t Deseja ir para outro andar?" );
        printf ( "\n[1] - SIM" );
        printf ( "\n[0] - NAO" );
        printf ( "\n\tSua escolha: " );
        scanf ( "%d%*c", &quest );
        
        contar = 0; //Importante voltar a por em zero
        
        
    } while ( quest != 0 );
    
    printf ( "Espaco Fechado, nao FUME neste recinto!" );
    printf ( "\n\n\tObrigado! \n\tThank You!\n\tFeito por Luciano e Hialyson!!!\n\t" );
    return 0;
}

 

adicionado 1 minuto depois

Conforme meu gosto claro.... no seu você pode fazer o que quiser. Somente são idéias.

adicionado 3 minutos depois

Por exemplo os casos 1, 2 e 3 o único que faziam é repetir-se, repetições são um câncer que deve ser extirpado de todo código por isso deu para reduzir o código nessa parte de 6 printfs a somente 2 usando um vetor de strings.

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

Desconhecia o código que, Vossa Senhoria, utilizou. Merece meus parabéns, gostei muito, nosso projeto estar ficando show com o incremento feito. No entanto, eu não sei se é possível utilizar um tempo de 3 segundos para o intervalo das msn Abrindo porta ... fechando porta... Sabe me informar  como  incrementar no projeto?

adicionado 22 minutos depois

@vangodp Feliz em saber que posso contar com vocês amigos.

Link para o comentário
Compartilhar em outros sites

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

int main() {
    int quest, contar = 1, i, flag = 0;
    char andar[3][9] = { {"Primeiro"}, {"Segundo"}, {"Terceiro"} };
    
    do {
        if (flag == 0){
            printf ( "\n\n\t\t\t***Elevador***\n" );
            flag++;
        }else{        
            system("cls");
        }
        
        while ( contar < 6 ) {
            printf ( "\n\t Andar %d", contar );
            contar = contar + 1;
        }
        
        printf ( "\n\n\tBem Vindo, Escolha o Andar!\n\n\tWelcome, choose the floor!\n" );
        printf ( "\n\nSua escolha: " );
        scanf ( "%d%*c", &i );

        system("cls");
        
        switch ( i ) {
            case 1:
            case 2:
            case 3:
                printf ( "\n%s Andar.\n\n\tAguarde, Abrindo porta!... ....\n", andar[i-1] );
                printf ( "\tCuidado, Fechando portas em 3 segundos! ... ..." );
                Sleep(3000);
                break;
                
            case 4:
                printf ( "\n\t(Suporte) - Obter relatorios.\n" );
                printf ( "\nAguarde, Imprimindo relatorio de uso diario. ... ....!\n" );
                break;
                
            case 5:
                printf ( "\n\t(Suporte) - Somente para Autorizados" );
                printf ( "\nAguarde, Imprimindo Relatorio Mensal. ... ....!\n" );
                break;
                
            default:
                printf ( "Comando nao aceito:Entrar em contar com os Engenheiros!" );
        }
        system("cls");
        printf("Pim pam pum! Porta fechada\n\n");
        Sleep(3000);
        system("cls");
        printf ( "\n\n\t Deseja ir para outro andar?" );
        printf ( "\n[1] - SIM" );
        printf ( "\n[0] - NAO" );
        printf ( "\n\tSua escolha: " );
        scanf ( "%d%*c", &quest );
        
        contar = 0; //Importante voltar a por em zero
        
        
    } while ( quest != 0 );
    
    printf ( "Espaco Fechado, nao FUME neste recinto!" );
    printf ( "\n\n\tObrigado! \n\tThank You!\n\tFeito por Luciano e Hialyson!!!\n\t" );
    return 0;
}

Tudo é possível no mundo da programação! :D

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

@vangodp , amigo,

Estava longe desta simplicidade. Fui para essa linha de racioccinio e apeans mostrava as Horas e parava no momento que pedia na logica rsss, veja:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    time_t current;
    struct tm *ctime;

    do
    {
        system ("time /t");
        time(&current);
        ctime = localtime(&current);
    }
    while (ctime->tm_hour != 11 || ctime->tm_min != 49);


    printf("\n\tALARME!\n");

    return 0;
}

 

 

 

Errei feio, Obrigado pela ajuda. 

Aprendendo com vocês!

adicionado 1 minuto depois

Gostei da linguagem que usa, simples e direto, qual apostila usa? Se possível indica aqui.

Fico no Aguardo!

Link para o comentário
Compartilhar em outros sites

38 minutos atrás, luciano gomes disse:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    time_t current;
    struct tm *ctime;

    do
    {
        system ("time /t");
        time(&current);
        ctime = localtime(&current);
    }
    while (ctime->tm_hour != 11 || ctime->tm_min != 49);


    printf("\n\tALARME!\n");

    return 0;
}

Isso é um alarme porém acho que ta errado. A linha:
while (ctime->tm_hour != 11 || ctime->tm_min != 49);

Deveria estar:

 while (ctime->tm_hour != 11 && ctime->tm_min != 49);

pois o operador || quer dizer ou o que traduzindo em palavras a linha while (ctime->tm_hour != 11 || ctime->tm_min != 49) quer dizer "Por enquanto ctime->tm_hour seja diferente(!=) de 11 OU(||) ctime->tm_min seja diferente(!=) de 49" realizará o que está entre { e }(ação). Sendo assim qualquer hora que tenha o minuto 49 OU seja as 11 vai desencadear a ação. porém com while (ctime->tm_hour != 11 && ctime->tm_min != 49); quer dizer: "Por enquanto ctime->tm_hour seja diferente(!=) de 11 E(||) ctime->tm_min seja diferente(!=) de 49" então você vê uma união entre hora e minuto, neste caso a ação só se desencadeia se a hora e minutos são os desejados.

Também é possível fazer cronômetros com esse sistema.

 

48 minutos atrás, luciano gomes disse:

Errei feio, Obrigado pela ajuda. 

Eu não diria que errou.. somente você fez de uma forma muito complicada havendo outras mais fáceis. porém como falei o código que você ta usando serve para outras coisas e o que eu usei não serve, por isso recomendo escrever códigos, porque mesmo você errando você aprendeu do seu erro, coisa que é valido também.

 

 

51 minutos atrás, luciano gomes disse:

Gostei da linguagem que usa, simples e direto, qual apostila usa? Se possível indica aqui.

Fico no Aguardo!

Infelizmente se pode dizer que sou um "picacódigo". Fico andando daqui pra lá de lá pra cá atrás de códigos e qualquer coisa que me ajude. O que quero dizer é que não tenho uma só pagina, uso foruns(varios), paginas em español, inglês e português. O que posso lhe oferecer para lhe ajudar é que você entre ao grupo de programadores que criei com intuito de ajudar e ser ajudado. Se quiser entrar registre-se no discorde e entre aqui: https://discord.gg/CtfUywV

O único que desejo é seja cordial e seja um companheiro mais dos tantos que tem lá e se empenhe tanto em ajudar como ser ajudado. Lá sempre tem conteúdos e gente que pode lhe indicar muita coisa, pois trata-se de um chat grupal entre programadores(estudantes).

Sorte

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

Obrigado, estou ansioso para aprender mais e futuramente ajudar no fórum.

adicionado 15 minutos depois
34 minutos atrás, vangodp disse:

while (ctime->tm_hour != 11 || ctime->tm_min != 49);

Sim, testado e aprovado. Sendo que neste a ideia era para soar o alarme no momento programando e naquele que indicou soa no momento diferente do minuto escolhido, como havia mencionado. No entanto, todos servem para uma programação futura, Obrigado!

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

Boa noite, amigo!

Fiz um acréscimo e agora meu instrutor me fez um desafio de fazer com que o sistema faça o controle de carga para subir e descer algo que tem haver com Engenharia, tem alguma ideia de como devo iniciar e incluir neste sistema?

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

int main()
{
    int quest, contar = 1, i, flag = 0;
    char andar[3][9] = { {"Primeiro"}, {"Segundo"}, {"Terceiro"} };

    do
    {
        if (flag == 0)
        {
            printf ( "\n\n\t\t\t***Elevador***\n" );
            flag++;
        }
        else
        {
            system("cls");
        }

        while ( contar < 6 )
        {
            printf ( "\n\t Andar %d", contar );
            contar = contar + 1;
        }

        printf ( "\n\n\tBem Vindo, Escolha o Andar!\n\n\tWelcome, choose the floor!\n" );
        printf ( "\n\nSua escolha: " );
        scanf ( "%d%*c", &i );

        system("cls");

        switch ( i )
        {
        case 0:
        case 1:
        case 2:
        case 3:
            if(i == 0)
            {
                printf("\n\n\tTerreo/Estacionamento\n\n\tCuidado! Fechando portas em 4 segundos...");
                Sleep(3000);
            }
            else
            {
                printf ( "\n%s Andar.\n\n\tAguarde, Abrindo porta!... ....\n", andar[i - 1] );
                printf ( "\tCuidado, Fechando portas em 04 segundos! ... ..." );
                Sleep(3000);
            }
            break;

        case 4:
            printf ( "\n\t(Suporte) - Obter relatorios.\n" );
            printf ( "\nAguarde, Imprimindo relatorio de uso diario. ... ....!\n" );
            Sleep(3000);
            break;

        case 5:
            printf ( "\n\t(Suporte) - Somente para Autorizados" );
            printf ( "\nAguarde, Imprimindo Relatorio Mensal. ... ....!\n" );
            Sleep(3000);
            break;

        default:
            printf ( "Comando nao aceito:Entrar em contato com os Engenheiros!" );
        }
        system("cls");
        for(contar = 0; i <= 3; i++)
        {
            printf("Pim pam pum! Porta fechada\n\n\tNao FUME neste Ambiente!\n" );
            Sleep(3000);
            system("cls");
        }
        printf ( "\n\n\t Deseja ir para outro andar?" );
        printf ( "\n[1] - SIM" );
        printf ( "\n[0] - NAO" );
        printf ( "\n\tSua escolha: " );
        scanf ( "%d%*c", &quest );

        contar = 0; //Importante voltar a por em zero
    }
    while ( quest != 0 );
    system("cls");
    printf ( "\n\n\tObrigado! \n\tThank You!\n\tFeito por Luciano e Hialyson!!!\n\t" );
    return 0;
}

adicionado 32 minutos depois

Agora o professor mudou o desafio: não quer contagem de pessoas

kkk

tenho que fazer o sistema contar quantos km foi percorrido pelo elevador e assim limitar uma distancia para trocar os cabos.

kkk, irei queimar pestana neuronios para o projeto ser melhor que estar, excelente.

Link para o comentário
Compartilhar em outros sites

Em 2017-6-21 às 14:42, vangodp disse:

é só fazer uma somatória que vai "acumulando" a distancia de uma planta até a outra, é dizer, se cada planta tiver 3 metros de você vai do andar 1 ao 3 é algo como isso:
somatoria = nPlantas*AlturaPlanta;

Boa noite, caro amigo!

 

Acredito que cheguei às expectativas, no entanto, gostaria que fizesse uma analise e se pudesse doar um pouco do teu tempo para acrescentar algo, melhorar, nos comandos. Desde já agradeço:adicionado 1 minuto depois

Diminuir as linhas e observei, que você é trabalha bem nisso,  tem muita criatividade!

 

//Elevador UFPI / CMPP 2017.1
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main(void){
    int somax = 0, quest, contar = 0, i, x = 0, fim = 0, resultado = 0, andar = 1, resposta = 0, contar_inicial = 1;
    
    do{
        if (x == 0)
        {
            printf ( "\n\n\t\t\t***Elevador***\n" );
            x++;
        }
            printf ( "\n\t Andar - 0 ''Estacionamento''");
        do{
            printf ( "\n\t Andar - %d", andar);
            andar++;    
        }while(andar < 6);
        andar = 1;
        printf ( "\n\n\tBem Vindo, Escolha o Andar!\n\n\tWelcome, choose the floor!\n" );
        printf ( "\n\nSua escolha: " );
        scanf ( "%d%*c", &i );
        system("cls");
        switch ( i ){
            case 0:
                somax++;
                printf("\n\n\tPim pam pum! Porta fechada\n\tNao FUME neste Ambiente!\n" );
                if (contar == i){
                    Sleep(3000);
                    printf("\n\tandar 0 \n");
                    printf ("\n\tvoce esta no estacionamento");
                }else if ((contar <= i)){
                    for (contar = contar_inicial; contar <= i; contar++) {
                        Sleep(3000);
                        printf("\n\tandar %d \n", contar);
                        contar_inicial = contar -1;              
                    }
                
                }else if (contar >= i){
                    for (contar = contar_inicial; contar >= i; contar--) {
                            Sleep(3000);
                            printf("\n\tAndar %d \n", contar);     
                            contar_inicial = contar +1;     
                        }    
                }
                printf("\n\nvoce esta no pavimento desejado.");
                printf ( "\n\n\t Deseja ir para outro andar?" );
                printf ( "\n[1] - SIM" );
                printf ( "\n[0] - NAO" );
                printf ( "\n\tSua escolha: " );
                scanf ( "%d%*c", &quest );
                printf ("\n\tFechando portas em 10 segundos...");
                Sleep(3000); 
                if ( quest != 1){
                    printf ("\n\televador voltanto para inicio\n");
                    Sleep(3000);
                    system("cls");
                    contar = 0;
                    x = 0;  
                    andar = 1; 
                    resposta = 0; 
                    contar_inicial = 1;
                }
                system("cls");        
                break;
            case 1:
                somax++;
                printf("\n\n\tPim pam pum! Porta fechada\n\tNao FUME neste Ambiente!\n" );
                if (contar < i){
                    for (contar = contar_inicial; contar <= i; contar++) {
                        Sleep(3000);
                        printf("\n\tandar %d \n", contar);
                        contar_inicial = contar -1;              
                    }
                
                }else if (contar > i){
                    for (contar = contar_inicial; contar >= i; contar--) {
                            Sleep(3000);
                            printf("\n\tAndar %d \n", contar);    
                            contar_inicial = contar +1;      
                        }    
                }
                printf("\n\nvoce esta no pavimento desejado.");
                printf ( "\n\n\t Deseja ir para outro andar?" );
                printf ( "\n[1] - SIM" );
                printf ( "\n[0] - NAO" );
                printf ( "\n\tSua escolha: " );
                scanf ( "%d%*c", &quest );
                printf ("\n\tFechando portas em 10 segundos...");
                Sleep(3000); 
                if ( quest != 1){
                    printf ("\n\televador voltanto para inicio\n");
                    Sleep(3000);
                    system("cls");
                    contar = 0;
                    x = 0; 
                    andar = 1; 
                    resposta = 0; 
                    contar_inicial = 1;
                }
                system("cls");        
                break;
            case 2:
                somax++;
                printf("\n\n\tPim pam pum! Porta fechada\n\tNao FUME neste Ambiente!\n" );
                if ((contar < i)){
                    for (contar = contar_inicial; contar <= i; contar++) {
                        Sleep(3000);
                        printf("\n\tandar %d \n", contar);
                        contar_inicial = contar -1;              
                    }
                
                }else if (contar > i){
                    for (contar = contar_inicial; contar >= i; contar--) {
                            Sleep(3000);
                            printf("\n\tAndar %d \n", contar);
                            contar_inicial = contar +1;          
                        }    
                }
                printf("\n\nvoce esta no pavimento desejado.");
                printf ( "\n\n\t Deseja ir para outro andar?" );
                printf ( "\n[1] - SIM" );
                printf ( "\n[0] - NAO" );
                printf ( "\n\tSua escolha: " );
                scanf ( "%d%*c", &quest );
                printf ("\n\tFechando portas em 10 segundos...");
                Sleep(3000); 
                if ( quest != 1){
                    printf ("\n\televador voltanto para inicio\n");
                    Sleep(3000);
                    system("cls");
                    contar = 0;
                    x = 0;  
                    andar = 1; 
                    resposta = 0; 
                    contar_inicial = 1;
                }
                system("cls");        
                break;
            case 3:
                somax++;
                printf("\n\n\tPim pam pum! Porta fechada\n\tNao FUME neste Ambiente!\n" );
                if ((contar < i)){
                    for (contar = contar_inicial; contar <= i; contar++) {
                        Sleep(3000);
                        printf("\n\tandar %d \n", contar);          
                    }
                    contar_inicial = contar -1;    
                }else if (contar > i){
                    for (contar = contar_inicial; contar >= i; contar--) {
                            Sleep(3000);
                            printf("\n\tAndar %d \n", contar);          
                        }    
                        contar_inicial = contar +1;
                }
                printf("\n\nvoce esta no pavimento desejado.");
                printf ( "\n\n\t Deseja ir para outro andar?" );
                printf ( "\n[1] - SIM" );
                printf ( "\n[0] - NAO" );
                printf ( "\n\tSua escolha: " );
                scanf ( "%d%*c", &quest );
                printf ("\n\tFechando portas em 10 segundos...");
                Sleep(3000); 
                if ( quest != 1){
                    printf ("\n\televador voltanto para inicio\n");
                    Sleep(3000);
                    system("cls");
                    contar = 0;
                    x = 0; 
                    andar = 1; 
                    resposta = 0; 
                    contar_inicial = 1;
                }
                system("cls");        
                break;
            case 4:
                somax++;
                printf("\n\n\tPim pam pum! Porta fechada\n\tNao FUME neste Ambiente!\n" );
                if ((contar < i)){
                    for (contar = contar_inicial; contar <= i; contar++) {
                        Sleep(3000);
                        printf("\n\tandar %d \n", contar);              
                    }
                    contar_inicial = contar-1;
                }else if (contar > i){
                    for (contar = contar_inicial; contar >= i; contar--) {
                            Sleep(3000);
                            printf("\n\tAndar %d \n", contar);          
                    }
                    contar_inicial = contar+1;    
                }
                printf("\n\nvoce esta no pavimento desejado.");
                printf ( "\n\n\t Deseja ir para outro andar?" );
                printf ( "\n[1] - SIM" );
                printf ( "\n[0] - NAO" );
                printf ( "\n\tSua escolha: " );
                scanf ( "%d%*c", &quest );
                printf ("\n\tFechando portas em 10 segundos...");
                Sleep(3000); 
                if ( quest != 1){
                    printf ("\n\televador voltanto para inicio\n");
                    Sleep(3000);
                    system("cls");
                    contar = 0;
                    x = 0; 
                    andar = 1; 
                    resposta = 0; 
                    contar_inicial = 1;
                }
                system("cls");        
                break;
            case 5:
                somax++;
                printf("\n\n\tPim pam pum! Porta fechada\n\tNao FUME neste Ambiente!\n" );
                Sleep(3000);
                printf ("\n\n\t Area restrita, entrada apenas de pessoal autorizado...\n\n");
                if ((contar <= i)){
                    for (contar = contar_inicial; contar <= i; contar++) {
                        Sleep(3000);
                        printf("\n\tandar %d \n", contar);          
                    }
                    contar_inicial = contar -1;    
                }else if (contar >= i){
                    for (contar = contar_inicial; contar >= i; contar--) {
                            Sleep(3000);
                            printf("\n\tAndar %d \n", contar);          
                              }
                    contar_inicial = contar +1;              
                }
                printf("\nvoce esta no pavimento desejado.\n\n");
                system ("\tpause");
                system ("cls");
                printf ("\n\n\t****\tRELATORIO DE FUNCIONAMENTO\t****\n");
                printf ("\n\n\tO elevador fez %d operaçoes.",somax);
                printf ( "\n\n\t Deseja reiniar o sistema do elevador?" );
                printf ( "\n[1] - SIM" );
                printf ( "\n[0] - NAO" );
                printf ( "\n\tSua escolha: " );
                scanf ( "%d%*c", &resposta); 
                if ( resposta == 1){
                    system ("cls");
                    printf ("\n\tReiniciando...\n");
                    Sleep(3000);
                    system ("cls");
                    system("\npause");
                    return 0;
                    fim++;
                }
                system("cls");    
                break;
            default:
                printf ( "informe um valor entre [1,5]\n!" );
        }
        system("cls");
    }while (fim != 1);
    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Conseguir diminuir 120 linhas adaptando como você havia feito, veja ai o que achou.

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main(void)
{
	int somax = 0, quest, contar = 0, i, x = 0, fim = 0, andar = 1, resposta = 0, contar_inicial = 1;

	do
	{
		if (x == 0)
		{
			printf ( "\n\n\t\t\t***Elevador***\n" );
			x++;
		}
		printf ( "\n\t Andar - 0 ''Estacionamento''");
		do
		{
			printf ( "\n\t Andar - %d", andar);
			andar++;
		}
		while(andar < 6);
		andar = 1;
		printf ( "\n\n\tBem Vindo, Escolha o Andar!\n\n\tWelcome, choose the floor!\n" );
		printf ( "\n\nSua escolha: " );
		scanf ( "%d%*c", &i );
		system("cls");
		switch ( i )
		{
		case 0:
			somax++;
			printf("\n\n\tPim pam pum! Porta fechada\n\tNao FUME neste Ambiente!\n" );
			if (contar == i)
			{
				Sleep(3000);
				printf("\n\tandar 0 \n");
				printf ("\n\tVoce esta no estacionamento");
			}
			else if ((contar <= i))
			{
				for (contar = contar_inicial; contar <= i; contar++)
				{
					Sleep(3000);
					printf("\n\tandar %d \n", contar);
					contar_inicial = contar - 1;
				}

			}
			else if (contar >= i)
			{
				for (contar = contar_inicial; contar >= i; contar--)
				{
					Sleep(3000);
					printf("\n\tAndar %d \n", contar);
					contar_inicial = contar + 1;
				}
			}
			printf("\n\nVoce chegou ao destino desejado.");
			printf ( "\n\n\t Deseja ir para outro andar?" );
			printf ( "\n[1] - SIM" );
			printf ( "\n[0] - NAO" );
			printf ( "\n\tSua escolha: " );
			scanf ( "%d%*c", &quest );
			printf ("\n\tFechando portas em 10 segundos...");
			Sleep(3000);
			if ( quest != 1)
			{
				printf ("\n\tElevador voltanto para inicio\n");
				Sleep(3000);
				system("cls");
				contar = 0;
				x = 0;
				andar = 1;
				resposta = 0;
				contar_inicial = 1;
			}
			system("cls");
			break;
		case 1:
		case 2:
		case 3:
		case 4:
			somax++;
			printf("\n\n\tPim pam pum! Porta fechada\n\tNao FUME neste Ambiente!\n" );
			if ((contar < i))
			{
				for (contar = contar_inicial; contar <= i; contar++)
				{
					Sleep(3000);
					printf("\n\tandar %d \n", contar);
				}
				contar_inicial = contar - 1;
			}
			else if (contar > i)
			{
				for (contar = contar_inicial; contar >= i; contar--)
				{
					Sleep(3000);
					printf("\n\tAndar %d \n", contar);
				}
				contar_inicial = contar + 1;
			}
			printf("\n\nvoce chegou ao destino desejado.");
			printf ( "\n\n\t Deseja ir para outro andar?" );
			printf ( "\n[1] - SIM" );
			printf ( "\n[0] - NAO" );
			printf ( "\n\tSua escolha: " );
			scanf ( "%d%*c", &quest );
			printf ("\n\tFechando portas em 10 segundos...");
			Sleep(3000);
			if ( quest != 1)
			{
				printf ("\n\tElevador voltanto para inicio\n");
				Sleep(3000);
				system("cls");
				contar = 0;
				x = 0;
				andar = 1;
				resposta = 0;
				contar_inicial = 1;
			}
			system("cls");
			break;
		case 5:
			somax++;
			printf("\n\n\tPim pam pum! Porta fechada\n\tNao FUME neste Ambiente!\n" );
			Sleep(3000);
			printf ("\n\n\t Area restrita,somente autorizados...\n\n\tAguarde, Escaneando face.\n\n\tIdentifique-se!\n\n");
			if ((contar <= i))
			{
				for (contar = contar_inicial; contar <= i; contar++)
				{
					Sleep(3000);
					printf("\n\tandar %d \n", contar);
				}
				contar_inicial = contar - 1;
			}
			else if (contar >= i)
			{
				for (contar = contar_inicial; contar >= i; contar--)
				{
					Sleep(3000);
					printf("\n\tAndar %d \n", contar);
				}
				contar_inicial = contar + 1;
			}
			printf("\n\n\tIdentificado: Luciano - Engenheiro Mecanico da Corporação Umbrella\n\nSeja Bem vindo!\n");
			printf("\nVoce chegou ao destino desejado.\n\n");
			Sleep(3000);
			system ("\tpause");
			system ("cls");
			printf ("\n\n\t****\tRELATORIO DE FUNCIONAMENTO\t****\n");
			printf ("\n\n\tO elevador fez %d operaçoes.", somax);
			printf ( "\n\n\tDeseja reiniar o sistema do elevador e trocar os cabos de aco?" );
			printf ( "\n[1] - SIM" );
			printf ( "\n[0] - NAO" );
			printf ( "\n\tSua escolha: " );
			scanf ( "%d%*c", &resposta);
			if ( resposta == 1)
			{
				system ("cls");
				printf ("\n\tReiniciando...\n");
				Sleep(3000);
				system ("cls");
				system("\npause");
				return 0;
				fim++;
			}
			system("cls");
			break;
		default:
			printf ( "Informe um valor entre [1,5]\n!" );
			Sleep(3000);
		}
		system("cls");
	}
	while (fim != 1);
	return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Boa tarde, caro amigo!

 

Acredito que você tem ideias fascinantes, mostra-me um exemplo de funções nesta linguagem C, deste projeto elevador.

adicionado 6 minutos depois

Na verdade gostaria de criar um menu de opções no questionário, Retângulo mostrando opções do sim/não

e os menus dos andares.

Link para o comentário
Compartilhar em outros sites

@luciano gomes rapaz... funções é um pouco difícil de explicar, mas vou deixar um link no final para voce da uma olhada, vou tentar explicar aqui a ideia inicial.

Usando funções no programa você pode isolar certas funcionalidades do programa onde se voce alterar nao ira precisar procurar por todo programa caso tivesse usando uma variavel 'x' e a removesse... ou então caso precisasse imprimir uma mensagem na tela nao precisaria criar toda hora 'printfs' para tal... veja o exemplo:

/*Programa basicamente cria uma matriz identidade
 *Para compilar: gcc -Wall matrizes-01.c -o test
 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
  
#define L 3 //LINHA
#define C 10 //COLUNA

int main(void)
{
  srand(time(NULL));
  int m[L][C] = {};
 
  printf("Preenche matriz aleatoriamente:");
  for(int i = 0; i < L; i++)
    for(int j = 0; j < C; j++)
    	m[i][j] = rand()%10; //preenche com uma ordem aleatoria de numeros que vão de 0 a 9
  
  
  printf("matriz original\n");
  for(int i = 0; i < L; i++) {
  	printf("%d [", i);
  	for(int j = 0; j < C; j++) {
      printf("%d ", m[i][j]);
    }
    printf("]\n");
  }
  
  //cria uma matriz identidade
  for(int i = 0; i < L; i++)
    for(int j = 0; j < C; j++) {
      if(i == j) m[i][j] = 1;
      else       m[i][j] = 0;
  }
  

  printf("\n");

  printf("Matriz identidade\n");
    for(int i = 0; i < L; i++) {
    printf("%d [", i);
    for(int j = 0; j < C; j++)
      printf("%d ", m[i][j]);
    printf("]\n");
  }

  return EXIT_SUCCESS;
}

 

usando funções no programa:

 

/*Programa basicamente cria uma matriz identidade
 *Para compilar: gcc -Wall matrizes-01.c -o test
 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
  
#define L 3 //LINHA
#define C 10 //COLUNA

void montaMatrizIdentidade(int m[L][C]);
void amostraMatriz(int m[L][C]);
void preencheMatriz(int m[L][C]);

void montaMatrizIdentidade(int m[L][C])
{
  for(int i = 0; i < L; i++)
    for(int j = 0; j < C; j++) {
      if(i == j) m[i][j] = 1;
      else       m[i][j] = 0;
    }
}

void amostraMatriz(int m[L][C])
{
  for(int i = 0; i < L; i++) {
    printf("%d [", i);
    for(int j = 0; j < C; j++)
      printf("%d ", m[i][j]);
    printf("]\n");
  }
}

void preencheMatriz(int m[L][C])
{
  for(int i = 0; i < L; i++)
    for(int j = 0; j < C; j++)
      m[i][j] = rand()%10;
}

int main(void)
{
  srand(time(NULL));
  int m[L][C] = {};

  preencheMatriz(m);
  
  printf("Original:\n");
  amostraMatriz(m);
  
  montaMatrizIdentidade(m);

  printf("Identidade:\n");
  amostraMatriz(m);

  return EXIT_SUCCESS;
}

como no exemplo, separei cada funcionalidade desse programa com funções o que torna ele mais organizado e mais legível porque voce sabe o que cada um daqueles blocos ira fazer.

 

AQUI O LINK COM UMA PLAYLIST SOBRE FUNÇÕES:

https://www.youtube.com/watch?v=Y19q6rgM9eo&list=PLa75BYTPDNKYccxYJXaHFjwMUm02xV915

 

bons estudos cara =)

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

Tão difícil não é >_<
 

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

void gotoxy ( int x, int y );
void menu(char op[][10]);

int main(){
    char op[4][10] = {
        {"Opcao1"},
        {"Opcao2"},
        {"Opcao3"},
        {"Sair"}
    };
    menu(op);
    int x = 1;
    int y = 1;
    //inicia em:
    gotoxy ( 1, 1 );
    int n = 0;
    printf ( ">" );
    //printf ( "%d",n );
    int ch;
    while ( ( ch = _getch() ) ) {
        if ( ch == 27 ) {
            gotoxy ( 0, 6 );
            return 0;
        }
        
        //Se pulsar flecha abaixo
        if ( ch == 72 ) {
            if ( y > 1 ) {
                gotoxy ( x, y );
                printf ( " " );
                y = y - 1;
                gotoxy ( x, y );
                n--;
                printf ( ">" );
                //printf ( "%d",n );
            }
            
        //Ou flecha abaixo
        } else if ( ch == 80 ) {
            if ( y <= 3 ) {
                gotoxy ( x, y );
                printf ( " " );
                y = y + 1;
                gotoxy ( x, y );
                n++;
                printf ( ">" );
                //printf ( "%d",n );
            }
            
        } else {}//Se não default(não fazer nada)
        
    }
    

    return 0;
}

void menu(char op[][10]){
    int i, z;
    //201 205 205 187
    //186         186
    //200 205 205 188
    
    //Primeira linha
    putchar((char)201);
    for (i=0; i< sizeof(op[0])+1; i++) {
        putchar((char)205);    
    }
    putchar((char)187);
    //menu
    putchar('\n');
    for (i=0; i < 4; i++) {
        putchar((char)186);
        putchar(' ');
        for (z = 0; z<sizeof(op[0]); z++) {
            putchar(op[i][z]);    
        }
        putchar((char)186);
        putchar('\n');
    }
    //Ultima linha
    putchar((char)200);
    for (i=0; i< sizeof(op[0])+1; i++) {
        putchar((char)205);    
    }
    putchar((char)188); 
}

void gotoxy ( int x, int y ) {
    HANDLE hcon;
    hcon = GetStdHandle ( STD_OUTPUT_HANDLE );
    COORD dwPos;
    dwPos.X = x;
    dwPos.Y = y;
    SetConsoleCursorPosition ( hcon, dwPos );
}

 

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

Visitante
Este tópico está impedido de receber novas respostas.

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!