Ir ao conteúdo

Posts recomendados

Postado

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
Postado

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

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
Postado

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

Postado

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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!