Ir ao conteúdo
  • Cadastre-se
Wallace Henrique Coelho

C++ Programa não quer compilar

Recommended Posts

Fala galera. Sou bem iniciante nesse ramo e estou tentando compilar esse programa no Code Blocks e não dá certo. Alguém pode ajudar?

 

int solicitarInt(){
int valorDigitado;
while (scanf("%d", &valorDigitado)!=1){
esvaziarBufferEntrada();
printf("Digite um numero: ");
}
return valorDigitado;
}
void esvaziarBufferEntrada(){
char c;
while((c = getchar()) != '\n' && c != EOF);
}

void limparTela(){
#ifdef linux
system ("clear");
#elif defined WIN32
system ("cls");
#else
printf("\e[H\e[2J");
#endif
}


struct horario{
char tabelaPoltronas[QUANTIDADE_POLTRONAS];
int necessidadereduzidaDisponiveis;
float valorticketComum;
char dataPalestra[15];
char horaPalestra[15];
int numeroHorario;
};


/*
Cria objetos do tipo struct horário para cada um dos horários para o qual
será disponibilizada a venda de tickets
*/
typedef struct horario Horario;
Horario horario19, horario21, horario22;

/*função inicializarHorarios(). Com informações dos
mesmos. Exemplo com horário da palestra das 19h30. Os demais
fazem isso com os demais horários disponíveis para o funcionamento do Sistema.
*/

void inicializarHorario(){
//incializa as informações com o horário da palestra as 19h30
strcpy(horario19);
strcpy(horario19.dataPalestra, "16/12/2018");
strcpy(horario19.horaPalestra, "19:30");
horario19.valorTicketComum = 60.0;
horario19.gratuidadesDisponiveis=2;
inicializarPoltronas(&horario19);
}

/*O vetor dos horário será inicializado com a função inicializarPoltronas().
Inicializa a tabela de poltronas do horário da palestra correspondente
*/
void inicializarPoltronas(Horario *pHorario){
int cont;
for(cont=0; cont<QUANTIDADE_POLTRONAS; cont++){
pHorario->tabelaPoltronas[cont] = ASSENTO_VAGO;
}
}
/*
Exibe na tela o comprovante de compra de ticket */
void imprimirTicket(int numPoltrona, Horario *pHorario){
limparTela();
printf("*************************************\n");
printf("* Comprovante de Compra de Ticket *\n");
printf("*************************************\n");
printf("Palestra as %s do dia %s\n\n", pHorario->horaPalestra, pHorario->dataPalestra);
pausar();
}
void exibirAssentos(Horario *pHorario){
int numPoltrona;
for(numPoltrona=0; numPoltrona<QUANTIDADE_POLTRONAS; numPoltrona++){
//Quebra uma linha a cada dez poltronas
if (numPoltrona % 4 == 0){
printf("\n");
}
//Exibe o número da poltrona e um caracter representando sua ocupação
printf("%02d| %c | ", numPoltrona+1, pHorario->tabelaPoltronas[numPoltrona]);
}}

/*
Calcula e retorna o valor do ticket de estudante para o ticket solicitado
*/

float getValorEstudante(Horario *pHorario){
return pHorario->valorTicketComum/2;
}
struct transacao{
float valor;
//char descricao[];
struct transacao *proximaTransacao;
};
/*
listaTransacoes do tipo Transacao que
armazenará as operações efetuadas, garantindo o controle
do caixa */
typedef struct transacao Transacao;
Transacao* listaTransacoes;

void registrarTransacao(float num){
listaTransacoes = inserirTransacao(listaTransacoes, num);
}

/*Função para inserir transações no relatório de caixa. Não deve ser chamada
diretamente.*/
Transacao* inserirTransacao (Transacao *pLista, float num){
Transacao* nova_Transacao = (Transacao*)malloc(sizeof(Transacao));
nova_Transacao->valor = num;
nova_Transacao->proximaTransacao = pLista;
}

inserirTransacao(),
registrarTransacao, imprimeTansacoes() e da estrutura “transacao”.
A impressão de todo o fluxo de caixa pode ser realizada através do menu principal.
/*
Imprime o relatório do caixa e o saldo existente
*/
void imprimeTransacoes (Transacao *pLista){
float total = 0.0;
Transacao* aux;
limparTela();
printf("Movimentacao do Caixa\n\n");
for (aux = pLista; aux !=NULL; aux = aux->proximaTransacao){
printf ("R$%.2f\n", aux->valor);
total += aux->valor;
}
printf("\nO saldo no caixa eh de R$%.2f\n\n", total);
pausar();
}

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Wallace Henrique Coelho     esse seu programa está com erros , e faltando a função principal   " main  " sem ela o programa não funciona mesmo não , você disse que é iniciante  , mas esse programa é de quem já tem muita experiência , pois trabalhar com ponteiros é muito difícil , eu ainda não cheguei lá , mas consegui ajeitar ele para que possa  compilar e rodar , então precisa verificar essas funções para saber o que elas fazem e acertar o restante do código , e esse código que você postou é feito na linguagem e você postou no local de c++ , mas ele funciona no codeblocks tanto se for em c ou c++ , apenas que se for em  você precisa deletar o primeiro include <iostream> e para postar seu código é melhor usar o botão   <>  que está lá na barra de ferramentas da janela de postar , pois senão seu código fica faltando alguns caracteres ,  então seu código com algumas modificações poderia ser assim   :

#include <iostream>
#include <windows.h>
#include <conio.h>
/*#define QUANTIDADE_POLTRONAS 10;*/
int QUANTIDADE_POLTRONAS=10;
int solicitarInt(){
int valorDigitado;
while (scanf("%d", &valorDigitado)!=1){
/*esvaziarBufferEntrada();*/
printf("Digite um numero: ");
}
return valorDigitado;
}
void esvaziarBufferEntrada(){
char c;
while((c = getchar()) != '\n' && c != EOF);
}

void limparTela(){
#ifdef linux
system ("clear");
#elif defined WIN32
system ("cls");
#else
printf("\e[H\e[2J");
#endif
}


struct horario{
/*char tabelaPoltronas[QUANTIDADE_POLTRONAS];*/
int necessidadereduzidaDisponiveis;
float valorticketComum;
char dataPalestra[15];
char horaPalestra[15];
int numeroHorario;
};


/*
Cria objetos do tipo struct horário para cada um dos horários para o qual
será disponibilizada a venda de tickets
*/
typedef struct horario Horario;
Horario horario19, horario21, horario22;

/*função inicializarHorarios(). Com informações dos
mesmos. Exemplo com horário da palestra das 19h30. Os demais
fazem isso com os demais horários disponíveis para o funcionamento do Sistema.
*/

void inicializarHorario(){
//incializa as informações com o horário da palestra as 19h30
/*strcpy(horario19);
strcpy(horario19.dataPalestra, "16/12/2018");
strcpy(horario19.horaPalestra, "19:30");
horario19.valorTicketComum = 60.0;
horario19.gratuidadesDisponiveis=2;
inicializarPoltronas(&horario19);*/
}

/*O vetor dos horário será inicializado com a função inicializarPoltronas().
Inicializa a tabela de poltronas do horário da palestra correspondente
*/
void inicializarPoltronas(Horario *pHorario){
int cont,QUANTIDADE_POLTRONAS=10;
for(cont=0; cont<QUANTIDADE_POLTRONAS; cont++){
/*pHorario->tabelaPoltronas[cont] = ASSENTO_VAGO;*/
}
}
/*
Exibe na tela o comprovante de compra de ticket */
void imprimirTicket(int numPoltrona, Horario *pHorario){
limparTela();
printf("*************************************\n");
printf("* Comprovante de Compra de Ticket *\n");
printf("*************************************\n");
printf("Palestra as %s do dia %s\n\n", pHorario->horaPalestra, pHorario->dataPalestra);
/*pausar();*/
}
void exibirAssentos(Horario *pHorario){
int numPoltrona;
for(numPoltrona=0; numPoltrona<QUANTIDADE_POLTRONAS; numPoltrona++){
//Quebra uma linha a cada dez poltronas
if (numPoltrona % 4 == 0){
printf("\n");
}
//Exibe o número da poltrona e um caracter representando sua ocupação
/*printf("%02d| %c | ", numPoltrona+1, pHorario->tabelaPoltronas[numPoltrona]);*/
}}

/*
Calcula e retorna o valor do ticket de estudante para o ticket solicitado
*/

float getValorEstudante(Horario *pHorario){
/*return pHorario->valorTicketComum/2;*/
}
struct transacao{
float valor;
//char descricao[];
struct transacao *proximaTransacao;
};
/*
listaTransacoes do tipo Transacao que
armazenará as operações efetuadas, garantindo o controle
do caixa */
typedef struct transacao Transacao;
Transacao* listaTransacoes;

void registrarTransacao(float num){
/*listaTransacoes = inserirTransacao(listaTransacoes, num);*/
}

/*Função para inserir transações no relatório de caixa. Não deve ser chamada
diretamente.*/
Transacao* inserirTransacao (Transacao *pLista, float num){
Transacao* nova_Transacao = (Transacao*)malloc(sizeof(Transacao));
nova_Transacao->valor = num;
nova_Transacao->proximaTransacao = pLista;
}

/*inserirTransacao(),
registrarTransacao, imprimeTansacoes() e da estrutura “transacao”.
A impressão de todo o fluxo de caixa pode ser realizada através do menu principal.
/*
Imprime o relatório do caixa e o saldo existente
*/
void imprimeTransacoes (Transacao *pLista){
float total = 0.0;
Transacao* aux;
limparTela();
printf("Movimentacao do Caixa\n\n");
for (aux = pLista; aux !=NULL; aux = aux->proximaTransacao){
printf ("R$%.2f\n", aux->valor);
total += aux->valor;
}
printf("\nO saldo no caixa eh de R$%.2f\n\n", total);
/*pausar();*/
}/*             0     1    2     3   4      5      6      7         8  */
typedef enum{BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY,DARKGRAY,   /* nome das cores */
LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE} COLORS;
/*  9         10         11        12        13         14    15 */

static int __BACKGROUND = 1/*BLACK*/;/*pode ser o numero ou o nome da cor*/
static int __FOREGROUND = LIGHTGRAY;

void textcolor (int letras, int fundo){/*para mudar a cor de fundo mude o background*/
    __FOREGROUND = letras;
    __BACKGROUND = fundo;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    letras + (__BACKGROUND << 4));
}
void gotoxy(int x, int y) {
    COORD c;
    c.X = x;
    c.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
void pausar(int r){
    int carac[8]={179,47,196,92,179,47,196,92};
    int j,w,x,y;                              /* variáveis simples                       */
    HANDLE hOut;                              /* controle dos dispositivos do pc         */
    hOut= GetStdHandle(STD_OUTPUT_HANDLE);    /* pega a saída padrão                     */
    CONSOLE_SCREEN_BUFFER_INFO SBInfo;        /* informações sobre a buffer da tela      */
    GetConsoleScreenBufferInfo(hOut, &SBInfo);/* pega a posição do cursor do console     */
    x = SBInfo.dwCursorPosition.X;            /* X será a posição x do cursor no console */
    y = SBInfo.dwCursorPosition.Y;            /* Y será a posição y do cursor no console */
    for(j=0;j<10;j++){
        textcolor(12,15);
        gotoxy(x+1,y);
        printf(" %d",9-j);
        textcolor(10,0);
        for(w=0;w<8;w++){
            if(kbhit()){
                j=10;
                break;
            }
            gotoxy(x,y);
            printf("%c",carac[w]);/* gira o caractere na tela */
            Sleep(r/25);          /* dorme um tempinho        */
        }
    }
    gotoxy(x,y);
    textcolor(7,0);
    printf("      \n\n");
}


using namespace std;
int main(){
    cout<<"seu programa esta rodando , mas tem alguns erros em algumas funcoes"<<endl;
    cout<<"qual objetivo desse programa ? ";
    pausar(1200);
    cout<<"\n"<<endl;
    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Wallace Henrique Coelho     no codeblocks você cria um novo arquivo clicando em   File > New > File  e nessa janela clique duas vezes no ícone c/c++

 

tela_cd_block.JPG.6bf3729f09ac84fdd28f5e549c74df6f.JPG

 

e nessa janela escolha c++

tela_cd_block1.JPG.89f1f6460dedfd73bcb20062757b1160.JPG

 

depois coloque o nome do programa e clique em finish , e coloque esse código que postei na janela que se abre , salve ele e pode compilar que está funcionando , já aqui testei e está bom  .

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Wallace Henrique Coelho, segui o código postado pelo @devair1010 e após fazer algumas modificações eu consegui compilar (no Code::Blocks). Aí só falta chamar as funções no main. Você deve fazer o mesmo, só seguir os erros que o compilador te indica e consertar.

 

Você também poderia nos dizer o que o programa faz. Dê mais detalhes.

 

E se o seu sistema for o Linux então o código não vai funcionar mesmo, pois usa a biblioteca específica do Windows.

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@allanxd você pode colar aqui o código modificado que deu certo?

adicionado 2 minutos depois

@devair1010 Cara, também não sei. Aparece isso quando tentamos compilar o seu.

 

 

5557046A-C426-4DA5-86EF-B20F8A85089D.jpeg

adicionado 4 minutos depois

@devair1010 @allanxd Vcs poderiam me chamar no Whatsapp? Que mando o vídeo da compilação e vocês podem ver o que tá acontecendo.

 

Rapaziada desde já agradeço muito! Preciso compilar isso pra uma apresentação na faculdade hoje.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve o código em um arquivo com extensão .cpp, ao invés de .c .

 

A IDE, nesse caso Codeblocks, compila o código usando o compilador apropriado para a linguagem dependendo da extensão do arquivo, a extensão .cpp é para código em C++, e a extensão .c é para código em C, o código do @devair1010 está em C++.

 

Mas o código parece não esta usando nenhum recurso do C++ propriamente, foi feito usando recursos do C, então poderia mudar apenas a biblioteca <iostream> pelas biblitecas do C <stdio.h> (e talvez adicionar algum outra como stdlib.h, conforme necessário), e remover a linha do "using namespace std" e o código poderia ser compilado como código C.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
28 minutos atrás, Wallace Henrique Coelho disse:

@isrnick você tentou compilar com essas alterações?

Não. Aqui só testo online, e como esse código usa window.h só pode ser compilado no Windows, não funciona em compiladores online.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se está usando o código que o @devair1010 postou sem alterações, você colocou o código num arquivo com extensão .cpp?

(Na imagem que você postou estava com extensão .c, logo com certeza não vai funcionar.)

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por que na sua tela todas as partes que estavam comentadas com /* e */ no código do @devair1010 estão sem o asterisco * ?

 

Isso removeu os comentários e introduz comandos e texto no código que não deveriam fazer parte do dele.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

printf pertence a biblioteca cstdio, então basta adicionar outro include com essa biblioteca no começo do código.

#include <iostream>
#include <cstdio>
#include <windows.h>
#include <conio.h>

 

As mensagens de erro estão aí por um motivo, elas normalmente dão uma boa indicação de onde está o problema...

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não consigo ver o erro. Poderia transcrever a mensagem de erro aqui?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, não posso.

 

Não consigo ver direito o seu código, mas parece que está assim:

static int __BACKGROUND = 1/BLACK/;

E o certo seria assim:

static int __BACKGROUND = 1/*BLACK*/;

Veja se funciona agora.

  • Curtir 1

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

×