Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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;
}

 

Postado

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

Postado

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

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

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

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
Postado

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
Postado

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
Postado

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

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!