Ir ao conteúdo
  • Cadastre-se

C++ novato estudante precisando de uma luz


Posts recomendados

pessoal, sou novato aqui e pretendo me profissionalizar na área de desenvolvimento, to estudando por contra propria para adquirir conhecimento de desenvolvimento porém to com algumas duvidas e um problema nesse projeto >> https://pastebin.com/raw/FUuyzuUd, tentei adiciona uma variável ou função (OBS: Estou aprendo a diferencia variável de função e vice versa desculpa se eu errei ) nesse projeto que pedisse para o usuario criar um conta antes de seleciona o carro e assim q selecionasse o carro e fizesse sua escolha, o veiculo adquirido fosse para seu cadastro porém to com essa dificuldade de ajunta os dois scripts e fazer eles rodarem juntos, sempre que tento ajunta-los da erro,  seguintes mensagens de erros abaixo :

 

  [Error] a function-definition is not allowed here before '{' token

  [Error] expected '}' at end of input

 

Link para o comentário
Compartilhar em outros sites

@Douglas Carvalho de brito Maneiro, desejo sucesso colega. Dúvidas aqui sempre serão bem vindas e respondidas.

Uma dica para seu código ser bem apreciado, é tentar esclarecer as etapas e instruções com comentários o mínimo possível, pelo menos em palavras. Ou seja, cada etapa, seja questionários, etc..., coloque um comentário indicando o inicio dela.

Mas eu entendo, você está começando agora, e quer saber cada processo. 

 

O erro citado, tem a ver com o símbolo { }, poís no final da função main, ficou faltando fechar com }

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

9 minutos atrás, TYSQUARE89 disse:

@Douglas Carvalho de brito Maneiro, desejo sucesso colega. Duvidas aqui sempre serão bem vindas e respondidas.

Uma dica para seu código ser bem apreciado, é tentar esclarecer as etapas e instruções com comentários o minimo possível, pelo menos em palavras. Ou seja, cada etapa, seja questionários, etc..., coloque um comentário indicando o inicio dessa etapa. 

Mas eu entendo, você está começando agora, e quer saber cada processo. 

 

O erro citado, tem a ver com o simbolo { }, pois no final da função main, ficou faltando fechar com }

 desculpa pelo erro bobo,

 

VOU COLOCA ESSAS DICAS EM PRATICA E CARA MUITO OBRIGADO

 

 fechei a chave que tava faltando porém agora outras partes do script da o mesmo erro de chaves(OBS VERIFIQUEI E NÃO TA FALTANDO AS CHAVES AO MEU VER DE INICIANTE RSRS)  e outros erro também nas variáveis 

 

coloquei uma imagem dos erros em anexo 

 

aqui esta o script sem a parte de cadastro do usuário funciona sem erro, porém gostaria de adiciona essa parte de criar conta e vincula as compras do cliente nele, é possivel ? tem algum luz por onde posso começa sem que ocorre erros de chave como na imagem https://pastebin.com/raw/zhxgM8QE 

 

 

 

 

 

imagemproj.png

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

@Douglas Carvalho de brito  Para não dar esses erros de 'was not declared in this scope', ou seja, "não foi declarado no escopo", você precisa declarar as structs antes de usa-las, assim como os protótipos das funções. 

Quando digo declarar as structs, quer dizer que se você for usar uma struct, antes ela precisa existir, depois ela precisa ser declarada, e então esses erros vão sair na hora. Segue um exemplo claro:

 

#include ...

//Até aqui em cima, não há struct Player, portanto não posso usa-la.
// se usar, vai dar erro de 'was not declared in this scope'
struct Player{
	int points;
	int x, y;
};
//a partir daqui a struct  Player existe e pode ser usada em baixo.


//Aqui em cima, joao não pode ser usado
Player joao;
//Aqui joao pode ser acessado normalmente
joao.x = 0;
joao.y = 0;

 

adicionado 7 minutos depois

@Douglas Carvalho de brito No outro pastebin que você mandou, a função 

void cadastraPessoa( struct Aluguel) {
// a.pessoa

 

não estava completa e está aberta.

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

7 minutos atrás, TYSQUARE89 disse:

@Douglas Carvalho de brito  Para não dar esses erros de 'was not declared in this scope', ou seja, "não foi declarado no escopo", você precisa declarar as structs antes de usa-las, assim como os protótipos das funções. 

Quando digo declarar as structs, quer dizer que se você for usar uma struct, antes ela precisa existir, depois ela precisa ser declarada, e então esses erros vão sair na hora. Segue um exemplo claro:

 


#include ...

//Até aqui em cima, não há struct Player, portanto não posso usa-la.
// se usar, vai dar erro de 'was not declared in this scope'
struct Player{
	int points;
	int x, y;
};
//a partir daqui a struct  Player existe e pode ser usada em baixo.


//Aqui em cima, joao não pode ser usado
Player joao;
//Aqui joao pode ser acessado normalmente
joao.x = 0;
joao.y = 0;

 

OPÁA ENTENDI AGORA, OS ERROS SUMIU porém QUANDO RODO O PROGRAMA DEPOIS DA PARTE DOS DADOS DO CLIENTE FECHA A TELA AO INVESTE DELE PROSSEGUIR PARA PARTE DE SELECIONA O VEICULO. ABAIXO E COMO TA O FINAL DA LINHA DE CADASTRO. O FINAL TEM QUE TERMINA COM SYSTEM("PAUSE") OU SYSTEM("CLS") CLS E PARA LIMPAR, CERTO? (DESCULPA AS PERGUNTAS, E DESDE JÁ OBRIGADO PELA TODA AJUDA, AJUDOU MUITO) 

 

    printf("Idade: %d",idade); // conecta com a variavel IDADE
    //a linha abaixo executa uma estrutura de decisão 
    if(idade<18)
    {
        printf("\nMenor de idade\n");
        printf("\nVocê não tem idade suficiente para ultilizar nossos serviços no momento.\n");
        printf("\nVolte assim que atigir idade minima de 18 anos.");
        return 0;
    }
    if(idade>=18)
    {
        printf("\nMaior de idade\n");
        printf("\n Você foi aceito em nosso sistema\n");
    }
    system("pause");

}

 

 

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

@Douglas Carvalho de brito Exatamente, system("pause") ele brevemente pausa o programa até a entrada receber alguma tecla. E system("cls"); // windows

system("clear"); // linux

servem para "limpar" a tela.

 

Observe, que quando você quer ir de uma função para outra, você precisa chama-la. Para chamar uma função o sistema precisa ter um protótipo que ira "dizer" ao compilador onde está o escopo da função. 

 

Enfim, o programa é fechado em 


    if(idade>=18)
    {
        printf("\nMaior de idade\n");
        printf("\n Você foi aceito em nosso sistema\n");
    }

por que tudo que você colocou no escopo do if foram 2 printfs, portanto, sempre chame a função que deseja usar, se não o programa automaticamente sai do escopo do if e continua as instruções restantes da função, que no caso é:
 

    system("pause");
}

 

Para chamar a função temos dois meios, sendo assim:

//metodo 1, usar protótipo, dizendo a main
//que a funcaoA existe.
void funcaoA();

int main(){
	int x=1, y=2;

	if(x < y){
       funcaoA();
	}      
}
              
void funcaoA(){
...              
}

ou assim:

//metodo 2, sem protótipos
void funcaoA(){
...              
}

int main(){
	int x=1, y=2;

	if(x < y){
       funcaoA();
	}      
}
         

 

 

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

4 minutos atrás, TYSQUARE89 disse:

@Douglas Carvalho de brito Exatamente, system("pause") ele brevemente pausa o programa até a entrada receber alguma tecla. E system("cls"); // windows

system("clear"); // linux

servem para "limpar" a tela.

 

Observe, que quando você quer ir de uma função para outra, você precisa chama-la. Para chamar uma função o sistema precisa ter um protótipo que ira "dizer" ao compilador onde está o escopo da função. 

 

Enfim, o programa é fechado em 


    if(idade>=18)
    {
        printf("\nMaior de idade\n");
        printf("\n Você foi aceito em nosso sistema\n");
    }

por que tudo que você colocou no escopo do if foram 2 printfs, portanto, sempre chame a função que deseja usar, se não o programa automaticamente sai do escopo do if e continua as instruções restantes da função, que no caso é:
 


    system("pause");
}

 

Para chamar a função temos dois meios, sendo assim:


//metodo 1, usar protótipo, dizendo a main
//que a funcaoA existe.
void funcaoA();

int main(){
	int x=1, y=2;

	if(x < y){
       funcaoA();
	}      
}
              
void funcaoA(){
...              
}

ou assim:


//metodo 2, sem protótipos
void funcaoA(){
...              
}

int main(){
	int x=1, y=2;

	if(x < y){
       funcaoA();
	}      
}
         

 

 

ah sim,  no script tão chamando as funções, estão mais para baixo no script, vou tenta começa do zero para vê se adiciono a função de cadastro antes da opções de aluguel de veículos assim acho q vai ser mais fácil, obrigado por toda ajuda  TYSQUARE89, muito agradecido pelo os esclarecimentos 

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

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!