Ir ao conteúdo
  • Cadastre-se
Cainho

C passar C++ para C

Posts recomendados

ola boa tarde , gostaria de passar esse problema C++ para C , alguém poderia me ajuda ? 

 

#include <conio.h>
#include <iostream.h>
#include <ctype.h>
void main()
{ int corredor[24], janela[24], achou, i, num, op;
    char posicao;
    for (i=0;i<24;i++)
    { corredor = 0;
        janela = 0;
    }

    do
    { clrscr();
        printf("\n1- Vender passagem \n2- Mostrar mapa de ocupa‡ao do onibus \n3- Encerrar ");
        scanf( >> op);
        if (op == 1)
             { achou = 0;
                 for (i=0;i<24;i++)
                 { if (corredor == 0 || janela == 0)
                            achou = 1;
                 }
                 if (achou == 0)
                        cout << "\nOnibus lotado";
                 else
                        { do
                             { cout << "\nDigite J se deseja poltrona na janela ou C se deseja poltrona no corredor ";
                                 cin >> posicao;
                                 posicao = toupper(posicao);
                             } while (posicao != 'J' && posicao != 'C');
                            do
                             { cout << "\nDigite o numero da poltrona desejada (entre 1 e 24) ";
                                 cin >> num;
                             } while (num < 1 || num > 24);
                            num = num - 1; //eh necessario diminuir 1 unidade porque os indices em C++ come‡am em zero
                            if (posicao == 'J' && janela[num] == 0)
                                 { cout << "\nVenda efetivada";
                                     janela[num] = 1;
                                 }
                            else
                                 if (posicao == 'C' && corredor[num] == 0)
                                        { cout << "\nVenda efetivada";
                                            corredor[num] = 1;
                                        }
                                 else
                                        cout << "\nPoltrona ocupada";
                    }
                getch();
             }
        if (op == 2)
             { cout << "  JANELA              CORREDOR\n";
                 for (i=0;i<24;i++)
                 { if (i+1 < 10)
                            cout << " ";
                     if (janela == 0)
                            cout << (i+1) << "- Livre            ";
                     else  cout << (i+1) << "- Ocupada          ";
                            if (i+1 < 10)
                                 cout << " ";
                            if (corredor == 0)
                                 cout << (i+1) << "- Livre\n";
                            else cout << (i+1) << "- Ocupada\n";
                 }
                getch();
             }
    } while (op != 3);
}(= “J” E janela[num] = 1

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse é já basicamente um programa em C.

 

Não usa templates, herança, classes, polimorfismo, functors, nada. Nada de STL, apenas uso de streams via cout e cin que pode trocar por fprintf() ou printf(), e scanf() ou gets() ou fgets() e uma folclórica inacreditável chamada à sobrevivente getch() dos anos 80, direto da biblioteca conio que deveria ser esquecida

 

Qual a sua dificuldade em particular nesse programa?

 

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

então gostaria do código reformulado para a linguagem C 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, Cainho disse:

então gostaria do código reformulado para a linguagem C 

isso já estava claro. 

 

Entendeu o que eu disse sobre já ser praticamente um programa em C e não ter nenhuma dificuldade em especial? Não usa nenhum recurso complicado de portar para C. Você conhece C++? C?

Está portando de uma linguagem que conhece ou PARA uma linguagem que conhece melhor?

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basicamente, troque os cout por printf e os gech por getchar.

Troque o include do iostream pelos stdio.h e stdlib.h.

Remova o include do conio.h.

 

Opcional.: Formate esse código, pois com essa bagunça é quase impossível encontrar possíveis erros.

 

Acredito que já seja suficiente.

  • Curtir 2
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@arfneto    para não usar a conio.h , tentei usar o

  fgetc(0) ;

, para substituir o

 getch();  // esperar pressionar uma tecla no teclado
           // pegar o código da tecla , sem precisar 
           // pressionar Enter e nem deixar 
           // o caractere na tela

, mas não funciona da mesma forma . 

Compartilhar este post


Link para o post
Compartilhar em outros sites

image.png.a4358194e0d88db567ff7d02d316cf14.png

 

Faz sentido... Viu o protótipo de fgetc()?
 

    int fgetc(FILE*);

Pois é. E sabe o que é 0, certo?  NULL
 

image.png.316b4d39613b40d3ac11f0c10971754c.png


Então você chamou fgetc(NULL) e fgetc() vai tentar ler um char de onde? De lugar algum. O parâmetro deve ser um ponteiro para um stream, um arquivo aberto. Use fgetc(stdin) e terá sucesso...

 

 

 

  • Obrigado 2

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

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

hardware-hacking.jpg

Aprenda a hackear dispositivos de hardware!

CLIQUE AQUI E CONFIRA AGORA MESMO!