Ir ao conteúdo
  • Cadastre-se

C++ Copiar e colar partes do código


Posts recomendados

// Ruliam dos Santos de Oliveira, J1, Jogo de perguntas e respostas


#include <iostream>
#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#include <windows.h>
// #include <locale.h>  Não funcionou

using namespace std;


int main(){
    char inicio;
    char nome [40];
    int pontos = 0;
    int erros = 0;
    char resp_1 = 'z';
    char resp_2 = 'z';
    char resp_3 = 'z';
    char resp_4 = 'z';
    char resp_5 = 'z';
    // setlocale(LC_ALL,"Portuguese");  Está tudo sem acento, porque o comando não funcionou

    string linha = "*-------------------------------------------------------------------------------*";
    cout << linha <<endl;
    cout << ("|                   Jogo de Perguntas e Respostas de Ruliam                     |\n");
    cout << linha <<endl;

    cout << "\nDigite seu nome" <<endl;
    cin >> nome;
    system("pause");
    system ("cls");

    cout << linha <<endl;
    cout << ("|                                     Questao 1                                 |") <<endl;
    cout << ("|                           Qual e a capital do Parana?                         |") <<endl;
    cout << linha <<endl;
    cout << endl;
    cout << linha <<endl;

    cout << ("| A) Joinville     | B) Curitiba       | C) Foz do Iguacu     | D) Brasilia     |") <<endl;
    cout << linha << endl;
    cout << "Escreva a letra correspondente" <<endl;
    cin >> resp_1;
        if((resp_1=='B')||(resp_1=='b')){
                pontos++;
                system("cls");
                system("color a7");
            cout << "voce acertou, parabens!" <<endl;
                system("pause");
        }
        else{
            erros++;
            system("cls");
            system("color 47");
            cout << "voce errou, estude mais um pouco da proxima vez :)" <<endl;
            system("pause");
        }
    system("cls");
    system("color 07");
    cout << linha <<endl;
    cout <<"|                                     Questao 2                                 |" <<endl;
    cout <<"|                                 Qual e o numero PI?                           |" <<endl;
    cout << linha << endl;
    cout << endl;

    cout << linha << endl;
    cout << "| A) 3,14          | B) 4,11            | C) 2,14            | D) 1,61          |" <<endl;
    cout << linha <<endl;
    cout << "Escreva a letra correspondente" <<endl;
    cin >> resp_2;
            if ((resp_2=='a')||(resp_2=='A')){
                pontos++;
                system("cls");
                system("color a7");
                    cout << "voce acertou, parabens!" <<endl;
                system("pause");
        }
            else{
            erros++;
            system("cls");
            system("color 47");
                cout << "voce errou, estude mais um pouco da proxima vez :)" <<endl;
            system("pause");
        }
    system("cls");
    system("color 07");
    cout<<linha<<endl;
    cout<<"|                                  Questao 3                                    |" <<endl;
    cout<<"|                               O camaleao e um:                                |" <<endl;
    cout<<linha<<endl;
    cout<<endl;

    cout<<linha<<endl;
    cout<<"| A) Anfibio       | B) Oviparo         | C) Mamifero        | D) Reptil        |"<<endl;
    cout<<linha<<endl;
    cout<<"Escreva a letra correspondente"<<endl;
    cin >> resp_3;
        if ((resp_3=='d')||(resp_3=='D')){
            pontos++;
            system("cls");
            system("color a7");
                cout << "voce acertou, parabens!" <<endl;
            system("pause");
        }
        else{
            erros++;
            system("cls");
            system("color 47");
                cout << "voce errou, estude mais um pouco da proxima vez :)" <<endl;
            system("pause");
        }
    system("cls");
    system("color 07");
    cout<<linha<<endl;
    cout<<"|                                   Questao 4                                   |"<<endl;
    cout<<"|                           Quem descobriu o Brasil?                            |"<<endl;
    cout<<linha<<endl;
    cout<<endl;

    cout<<linha<<endl;
    cout<<"| A) Pedro Alvares Cabral    | B) Dom Pedro II      | C) Napoleao Bonaparte     |"<<endl;
    cout<<linha<<endl;
    cout<<"Escreva a letra correspondente"<<endl;
    cin >> resp_4;
        if((resp_4=='a')||(resp_4=='A')){
            pontos++;
            system("cls");
            system("color a7");
                cout << "voce acertou, parabens!" <<endl;
            system("pause");
        }
        else{
            erros++;
            system("cls");
            system("color 47");
                cout << "voce errou, estude mais um pouco da proxima vez :)" <<endl;
            system("pause");
        }
    system("cls");
    system("color 07");
    cout<<linha<<endl;
    cout<<"|                                   Questao 5                                   |"<<endl;
    cout<<"|                    Em que ano comecou a Segunda Guerra Mundial                |"<<endl;
    cout<<linha<<endl;
    cout<<endl;

    cout<<linha<<endl;
    cout<<"| A) 1918           | B) 1945           | C) 1939           | D) 1914           |"<<endl;
    cout<<linha<<endl;
    cout<<"Escreva a letra correspondente"<<endl;
    cin >> resp_5;
        if((resp_5=='c')||(resp_4=='C')){
            pontos++;
            system("cls");
            system("color a7");
                cout << "voce acertou, parabens!" <<endl;
            system("pause");
        }
        else{
            erros++;
            system("cls");
            system("color 47");
                cout << "voce errou, estude mais um pouco da proxima vez :)" <<endl;
            system("pause");
        }
    system("cls");
    system("color 07");
    cout<<"*===========================*"<<endl;
    cout<<"| Muito obrigado por jogar! |"<<endl;
    cout<<"*===========================*"<<endl;

    cout<<"Nome: "<<nome<<endl;
    cout<<"Acertos: "<<pontos<<endl;
    cout<<"Erros: "<<erros<<endl;
    system("pause");
}

Olá, comecei a programar recentemente, e estou com uma duvida, eu estou criando um joguinho de teste, que toda vez que a pessoas acerta a resposta ocorre uma ação (com if e else), sempre uso os códigos dentro do if e else, ent gostaria de saber que não tem um método, tipo criar um comando que chamem esses comandos, porém só com uma linha, sem precisar sempre escrever o mesmo código dentro deles, e acabar ocupando mais espaço no código do que deveria.
Como já disse antes, comecei a programar recentemente ( 2 dias), e estou aceitando outras dicas no código tb, agradecido desde já.

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

Sim. Você pode agrupar linhas de código e dar um nome, se chama função ou método. E essas funções podem ter argumentos.

 

Você tem um livro? Recomendo muito ter um livro.

 

Em C++ pode ir um pouco além e usar uma classe. Uma classe pode ter usas funções, esses blocos de código, e suas variáveis. E é uma cosia importante.

 

No seu caso imagine uma classe Pergunta: uma pergunta tem um texto, alternativas e uma resposta. Então você pode automatizar esse 🚝 de milhões de maneiras.

 

Digitei um exemplo em cima de seu programa pra você ter um exemplo de alguns comandos

 

Rode em seu computador e procure entender as diferenças.

#include <iomanip>
#include <iostream>
using namespace std;

class Pergunta
{
private:
    char resposta;
public:
    string  alt1;
    string  alt2;
    string  alt3;
    string  alt4;
    string  texto;

public:
    Pergunta(
        string questao,
        char r,
        string a1, string a2,
        string a3, string a4
    ) : texto(questao), resposta(r), alt1(a1),
        alt2(a2), alt3(a3), alt4(a4) {};

    int mostra()
    {   // mostra a pergunta, le a opcao e retorna 1
        // se o cara acertou
        char resp_1;
        cout << endl << texto << endl;
        cout << endl << 
            "| A) " << setw(16) << alt1 << endl <<
            "| B) " << setw(16) << alt2 << endl <<
            "| C) " << setw(16) << alt3 << endl <<
            "| D) " << setw(16) << alt4 << endl <<
            endl;
        cout << "Escreva a letra correspondente: ";
        cin >> resp_1;
        // se a letra veio minuscula muda para maiuscula
        // as letras vem em ordem: a..z e A..Z
        if ((resp_1 >= 'a') && (resp_1 <= 'd'))
            resp_1 = (resp_1 - 'a') + 'A';
        // convertida para maisucula, compara com a resposta
        if (resp_1 == resposta)
        {
            cout << "voce acertou, parabens!" << endl;
            return 1;
        };
        cout << "voce errou, estude mais um pouco da proxima vez :)" << endl;
        return 0;
    };  // mostra()
};  // classe Pergunta

int main()
{
    Pergunta Q1("Qual a capital do Parana?", 'B',
        "Joinville", "Curitiba", "Foz do Iguacu", "Brasilia");
    Pergunta Q2("Qual o numero PI?", 'A',
        "3,14", "4,11", "2,14", "1,61");
    int pontos = 0;
    pontos = pontos + Q1.mostra() + Q2.mostra();
    cout << endl << "voce terminou com " << pontos << " ponto (s)!" << endl;
    return 0;
};

Aí no main() você vê que um jeito de entrar com a questão pode ser direto na hora de criar. Assim não precisa repetir aquele código de alinhar as opções por exemplo. E se mudar ali muda para todas as questões, que eu acho que é o que você queria saber como.

 

A função mostra() retorna 1 ou 0 então já pode ir somando em pontos

 

Não é um exemplo sério. Apenas para você ver alguns mecanismos

 

Veja o que sai na tela


Qual a capital do Parana?

| A)        Joinville
| B)         Curitiba
| C)    Foz do Iguacu
| D)         Brasilia

Escreva a letra correspondente: a
voce errou, estude mais um pouco da proxima vez :)

Qual o numero PI?

| A)             3,14
| B)             4,11
| C)             2,14
| D)             1,61

Escreva a letra correspondente: B
voce errou, estude mais um pouco da proxima vez :)

voce terminou com 0 ponto (s)!

 

 

 

 

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

@arfneto Opa, não tenho um livro não, mas vou procurar por um, obrigado pela dica. Eu li o código que você me mandou algumas vezes, pesquisei o que não sabia e creio que entendi ele, amanhã tentarei reescrever ele com base no que vi no seu, muito obrigado pela ajuda.

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

14 minutos atrás, Ruliam Oliveira disse:

@arfneto Opa, não tenho um livro não, mas vou procurar por um, obrigado pela dica. Eu li o código que você me mandou algumas vezes, pesquisei o que não sabia e creio que entendi ele, amanhã tentarei reescrever ele com base no que vi no seu, muito obrigado pela ajuda.

:)

você já está em um forum. Rodou o programa em sua máquina? Tem algo específico que não entendeu naquilo? Esse é um forum frequentado por iniciantes então sua eventual dúvida pode ajudar outros, aqui mesmo

 

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

7 minutos atrás, Ruliam Oliveira disse:

Rodei o arquivo sim, e consegui entender, e o que não entendi pesquisei. A unica coisa que me mati um pouco foi nessa parte do ">='a' e <='d'". E "- 'a') + 'A';

 

Eu deixei um comentário lá mas era meio resumido :(  Entenda que o que faltava fazer ali era converter a resposta para maiúscula ou minúscula antes de comparar com a que estava na questão. Tem um milhão de maneiras de fazer isso, já que o programa é nosso. Podia cadastrar mais de uma resposta, chamar uma função, testar as letras uma a uma, sei lá.

 

No entanto as letras tem um valor, um código. E estão lá uma depois da outra: ('A'+ 1) é 'B', ('A' + 4) é 'D' e assim por diante para as 26 letras. Então se uma letra var é minúscula e eu sei que 'a' é a primeira, então (var - 'a') é a posição dela, sequencial no alfabeto, 'a' vale zero, 'z' vale 26. 

 

E assim se eu pegar a posição dela e somar com 'A' eu vou ter a maiúscula correspondente.

 

Você podia ter usado cout e mostrado o valor lá das parcelas e acho que ia entender.

 

É só uma maneira de converter a letra --- somente se for a,b,c ou d --- para a maiúscula antes de comparar com a resposta

image.png.b89a8cdfa382837e6e4b883498a90a6e.png

 

porque as respostas foram colocadas em maiúscula.

 

Na verdade o certo é colocar as respostas na classe e não ficar convertendo toda hora. Esse programa era só pra você ver umas construções comuns nessa linguagem.

 

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