Ir para conteúdo
Ds1991

Dúvida: Como fazer um programa rodar novamente?

Recommended Posts

Olá, amigos, eu me chamo Daniel e sou aluno de ADS, vamos direto ao ponto, eu gostaria de saber como eu faço para rodar esse programa novamente, resetar as informações anteriores e rodar o programa como se fosse a primeira vez (não sei se estou sendo claro o suficiente) , eu já tentei colocar o comando "system ("cls")" em várias partes do código, mas não está resolvendo, não sei mais o que fazer, agradeço a sua ajuda. Obrigado.

 

 

#include <iostream>
#include <stdlib.h>

 

using namespace std;

 

char matriz[3][3] = {'1','2','3','4','5','6','7','8','9'};
int n;
char jog = 'X';
char sair = 's';
bool s = true;

 

void Jogo(){
    system("cls");
    cout << "\n   JOGO  DA  VELHA\n\n";
    for (int a=0;a<3;a++){
       cout << "\t";
         for (int j=0;j<3;j++){
            cout << matriz[a][j]<< " ";
        }
        cout << "\n";
    }
    cout << "\n";
}

 

void Entrada(){
    int p;
    cout << "Digite um numero: ";
    cin >> p;
    
    if (p==1){
        if(matriz[0][0] == '1'){
            matriz[0][0] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==2){
        if(matriz[0][1] == '2'){
            matriz[0][1] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==3){
        if(matriz[0][2] == '3'){
            matriz[0][2] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==4){
        if(matriz[1][0] == '4'){
            matriz[1][0] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==5){
        if(matriz[1][1] == '5'){
            matriz[1][1] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==6){
        if(matriz[1][2] == '6'){
            matriz[1][2] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==7){
        if(matriz[2][0] == '7'){
            matriz[2][0] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==8){
        if(matriz[2][1] == '8'){
            matriz[2][1] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
    else if(p==9){
        if(matriz[2][2] == '9'){
            matriz[2][2] = jog;
        }
        else{
            cout << "\nJogada invalida! Tente novamente.\n\n";
            Entrada();
        }
    }
}

 

void Alterna(){
    if (jog == 'X')
        jog = 'O';
    else{
        jog = 'X';
     } 
}

 

char Vencedor(){

 

  // Jogador 1

 

    if (matriz[0][0] == 'X' && matriz[0][1] == 'X' && matriz[0][2] == 'X')
        return 'X';
    if (matriz[1][0] == 'X' && matriz[1][1] == 'X' && matriz[1][2] == 'X')
        return 'X';
    if (matriz[2][0] == 'X' && matriz[2][1] == 'X' && matriz[2][2] == 'X')
        return 'X';

 

    if (matriz[0][0] == 'X' && matriz[1][0] == 'X' && matriz[2][0] == 'X')
        return 'X';
    if (matriz[0][1] == 'X' && matriz[1][1] == 'X' && matriz[2][1] == 'X')
        return 'X';
    if (matriz[0][2] == 'X' && matriz[1][2] == 'X' && matriz[2][2] == 'X')
        return 'X';

 

    if (matriz[0][0] == 'X' && matriz[1][1] == 'X' && matriz[2][2] == 'X')
        return 'X';
    if (matriz[0][2] == 'X' && matriz[1][1] == 'X' && matriz[2][0] == 'X')
        return 'X';

 

    //Jogador2

 

    if (matriz[0][0] == 'O' && matriz[0][1] == 'O' && matriz[0][2] == 'O')
        return 'O';
    if (matriz[1][0] == 'O' && matriz[1][1] == 'O' && matriz[1][2] == 'O')
        return 'O';
    if (matriz[2][0] == 'O' && matriz[2][1] == 'O' && matriz[2][2] == 'O')
        return 'O';

 

    if (matriz[0][0] == 'O' && matriz[1][0] == 'O' && matriz[2][0] == 'O')
        return 'O';
    if (matriz[0][1] == 'O' && matriz[1][1] == 'O' && matriz[2][1] == 'O')
        return 'O';
    if (matriz[0][2] == 'O' && matriz[1][2] == 'O' && matriz[2][2] == 'O')
        return 'O';

 

    if (matriz[0][0] == 'O' && matriz[1][1] == 'O' && matriz[2][2] == 'O')
        return 'O';
    if (matriz[0][2] == 'O' && matriz[1][1] == 'O' && matriz[2][0] == 'O')
        return 'O';

 

    return 'e';
}

 

int main(){
     
   while (s == true){
         Jogo();;    
        while (true){
            n++;
            Entrada();
            Alterna();
            Jogo();
                if (Vencedor() == 'X'){
                    cout << "Jogador X Venceu!\n\n";
                    break;
                }
                else if(Vencedor() == 'O'){
                    cout << "Jogador O Venceu!\n\n";
                   break; 
                }
                else if(Vencedor() == 'e' &&     n == 9){
                    cout << "Deu empate!\n\n";
                    break;
                }              
          }
          cout << "Jogar novamente?\n(s/n): ";
          cin >> sair;
        
        if(sair == 's' || sair == 'S'){
            s = true;
        }
        else if(sair == 'n' || sair == 'N'){
            s = false;
            break;
        }
    }
    system("pause");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só usar o comando "return" para retornar a função principal do programa


#include <stdio.h>

int main(){
  int valor = 12;
  printf("%d", valor);
  valor = 40;
  return main();

 

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

  • Conteúdo Similar

    • Por Bruno Goedert Dalmolin
      Não consigo apresentar as palavras equivalentes conseguem me ajudar???
      O código é o seguinte: 
       
      #include <stdio.h>
      char equivale(int ddd){
          switch(ddd){
              case 61:
                  return "Brasilia";
                  break;
              case 71:
                  return "Salvador";
                  break;
              case 11:
                  return "Sao Palo";
                  break;
              case 21:
                  return "Rio de Janeiro";
                  break;
              case 32:
                  return "Juiz de Fora";
                  break;
              case 19:
                  return "Campinas";
                  break;
              case 27:
                  return "Vitoria";
                  break;
              case 31:
                  return "Belo Horizonte";
                  break;
          }
      }
      int main(){
          int ddd;
          scanf("%d",&ddd);
          equivale(ddd);
          printf("%d",equivale(ddd));
      }
    • Por Caio Mekacheski
      Beleza galera, nesse meu primeiro post, quero compartilhar esse video onde inicio um tutorial básico pra aprender a programar em c++, só que de maneira prática. Um programa simples que eu escrevi pra fazer o cálculo da metragem cúbica de peças de madeira que eu beneficio aqui na minha pequena marcenaria. Um programa simples que me ajuda a executar uma tarefa tediosa, e que apresenta um conhecimento básico na programação em c++. Então resolvi fazer dele um tutorial prático para iniciantes. Nesse primeiro video eu apresento um esboço inicial pra entender o que o programa vai fazer. Conforme for desenvolvendo o programa, vou apresentando novos conceitos gradativamente. Espero que gostem. 
       
      https://www.youtube.com/watch?v=Obr8Jrp7LGQ
    • Por darkskull10
      Numa cidade as crianças costumam brincar com um jogo (de dois jogadores) onde:
      um jogador A define uma sequência de 10 letras usando: G, R e B (exemplo: G – G – G – R – B – R – B – B – B – R)
      um jogador B pode ler a sequência quantas vezes quiser
      o jogador B também pode dizer uma das letras e obter em quais posições a letra dada se encontra na sequência
      o jogador B também pode dar uma posição e saber qual letra ocupa a posição na sequência
      para finalizar, o jogador B deve dizer a sequência de letras, obtendo um ponto para cada acerto.
       
      Só consegui pensar nisso por enquanto.
       
      //identificar que letra ocupa esta posição na sequência:
      do{
      scanf(“%d”,&Posicao);
      Posicao=Posicao-1;}
      while ((Posicao<0)||(Posicao>9));
      printf(“%c”,Sequencia[Posicao]);
       
      //exibir sequencia
      for (Cont=0; Cont<=9; Cont++)
      printf(“%c”,Sequencia[Cont]);
       
      //exibir posições
      for (Cont=0; Cont<=9; Cont++)
      printf(“%d%c”,Cont+1,Sequencia[Cont]);
    • Por JPMarte
      Olá, sou estudante iniciante de programação e estou desenvolvendo um código para uma aula, onde esse é o enunciado:
       
      "Faça um código que ajude a calcular a resposta para seus exercícios de Física.
      As questões consistem em calcular a força de atração elétrica entre duas cargas puntiformes,  a força é calculada de acordo com a seguinte fórmula:
       
      F=K×Q1×Q2/D^2
       
      Utilize o valor de 100 para K, Q1, Q2 e D serão fornecidos pelo usuário.

      Mostre o valor de F com duas casas decimais.
       
      Entrada
          Serão fornecidos ao seu programa três valores inteiros, Q1, Q2 e D, respectivamente.
      Saída
          Seu programa deve mostrar o resultado da conta com exatas 2 casas decimais, de acordo com o exemplo abaixo."
       
      Então eu fiz o código que tirei print aqui, mas alguns resultados saem incorretos e sem as casas decimais necessárias!
      Em setprecision, eu coloquei o limite de duas casas (2), mas o programa mostra dois dígitos...
      Quando utilizei setprecision (4) ele até funcionou com resultados como 22.22, mas com números maiores, como 3600, não se mostra uma solução viável.
      Se alguém puder me ajudar, agradeço muito! 

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.