Ir ao conteúdo
  • Cadastre-se

heitorfarias_

Membro Júnior
  • Posts

    6
  • Cadastrado em

  • Última visita

Reputação

2
  1. @CiroboyBR O Código é esse abaixo, é uma torre de hanoi. Estou apanhando pra colocar esse "Jogar Novamente". Estou colocando dentro da void Menu(), logo abaixo da verificação de movimentos do jogador. #include <iostream> #include <stdlib.h> #include <math.h> // Para Usar Potencia na verificação using namespace std; int cont =0, tamanho =0, dificuldade=0, v1[7]={1,2,3,4,5,6,7}, v2[7]={0,0,0,0,0,0,0}, v3[7]={0,0,0,0,0,0,0}; void test(); void Dificuldade(); void Torres(); void mDiscos(); void Menu(); void instrucoes(); int Novamente(); int vTorre(int Torre[7]); int dTorre (int Torre[7]); int Final(); int main (void){ int op=1; while (op!=3){ cout << "1.Jogar\n2.Instrucoes\n3.Sair\n"; cin >> op; switch (op){ case 1: Dificuldade(); Torres(); Menu(); break; case 2: instrucoes(); break; default: if (op!=3){ cout << "Opcao Invalida.\n"; system ("PAUSE"); system ("CLS"); } break; } } return 0; } int vTorre(int Torre[]){ //Ultimo valor do Vetor int aux=0; for (int i=tamanho-1; i>=0; i--){ if (Torre[i]!=0){ aux=i; } if (Torre[tamanho-1]==0){ aux=0; } } return (aux); } int dTorre (int Torre[]){ //Torre Destino int aux=0; for (int i=0; i<tamanho; i++){ if (Torre[i]==0){ aux =i; } } return (aux); } void mDiscos(int origem, int destino){ int a,b,c; // ORIGEM 11 if (origem ==1){ // *DESTINO - TORRE 2 if (destino ==2){ a = v1[vTorre(v1)]; b = v2[dTorre(v2)+1]; c = v2[vTorre(v2)]; if (c<a && c != 0){ cout << "Disco da Origem" << a << "eh maior que o disco do destino " << c; system ("PAUSE"); }else { if (a==0){ cout << "Torre de origem vazia\n"; system ("PAUSE"); }else { v1[vTorre(v1)] = 0; v2[dTorre(v2)] = a; cont++; } } // **DESTINO - TORRE 3 }else{ a = v1[vTorre(v1)]; b = v3[dTorre(v3)+1]; c = v3[vTorre(v3)]; if (c<a && c != 0){ cout << "Disco da Origem" << a << "eh maior que o disco do destino " << c; system ("PAUSE"); }else { if (a==0){ cout << "Torre de origem vazia\n"; system ("PAUSE"); }else { v1[vTorre(v1)] = 0; v3[dTorre(v3)] = a; cont++; } } } } //ORIGEM 2 if (origem == 2){ // DESTINO - TORRE 1 if (destino ==1){ a = v2[vTorre(v2)]; b = v1[dTorre(v1)+1]; c = v1[vTorre(v1)]; if (c<a && c != 0){ cout << "Disco da Origem " << a << " eh maior que o disco do destino " << c; system ("PAUSE"); }else { if (a==0){ cout << "Torre de origem vazia\n"; system ("PAUSE"); }else { v2[vTorre(v2)] = 0; v1[dTorre(v1)] = a; cont++; } } // DESTINO - TORRE 3 }else{ a = v2[vTorre(v2)]; b = v3[dTorre(v3)+1]; c = v3[vTorre(v3)]; if (c<a && c != 0){ cout << "Disco da Origem " << a << "eh maior que o disco do destino " << c; system ("PAUSE"); }else { if (a==0){ cout << "Torre de origem vazia\n"; system ("PAUSE"); }else { v2[vTorre(v3)] = 0; v3[dTorre(v3)] = a; cont++; } } } } // ORIGEM 3 if (origem ==3){ // *DESTINO - TORRE 1 if (destino ==1){ a = v3[vTorre(v3)]; b = v1[dTorre(v1)+1]; c = v1[vTorre(v1)]; if (c<a && c != 0){ cout << "Disco da Origem " << a << " eh maior que o disco do destino " << c; system ("PAUSE"); }else { if (a==0){ cout << "Torre de origem vazia\n"; system ("PAUSE"); }else { v3[vTorre(v3)] = 0; v1[dTorre(v1)] = a; cont++; } } // **DESTINO - TORRE 2 }else{ a = v3[vTorre(v3)]; b = v2[dTorre(v2)+1]; c = v2[vTorre(v2)]; if (c<a && c != 0){ cout << "Disco da Origem " << a << " eh maior que o disco do destino " << c; system ("PAUSE"); }else { if (a==0){ cout << "Torre de origem vazia\n"; system ("PAUSE"); }else { v3[vTorre(v3)] = 0; v2[dTorre(v2)] = a; cont++; } } } } Torres(); } void Menu(){ int origem, destino, teste =0, aux2; do{ if (Final()==1){ aux2 = pow(2,tamanho)-1; if (cont == aux2){ cout << "\nVoce ganhou, sua pontuacao foi: " << cont << " de " << aux2 << ". Excelente!\n\n"; }else if (cont > aux2 && cont < aux2+5){ cout << "\nVoce ganhou, sua pontuacao foi: " << cont << " de " << aux2 << ". voce pode melhorar.\n\n"; }else { cout << "\nVoce ganhou, sua pontuacao foi: " << cont << " de " << aux2 << ". Pessimo!\n\n"; } system ("pause"); system ("CLS"); if (Novamente()==1){ main (); // Pergunta para o user se quer jogar novamente. } else { exit(0); } } cout <<"\nQual Torre de Origem ?\n"; cin >> origem; do{ if (origem <1 || origem >3){ cout << "\nTorre de origem inexistente."; cout <<"\nQual Torre de Origem ?"; cin >> origem; } }while(origem <1 || origem >3); Torres(); cout << "\nQual Torre de Destino?\n"; cin >> destino; do { if (destino < 1|| destino >3){ cout << "\nTorre de destino inexistente."; cout << "\nQual Torre de Destino?\n"; cin >> destino; } if (destino == origem){ cout << "\nA torre destino nao pode ser a mesma que a torre de origem\n"; cout << "\nQual Torre de Destino?\n"; cin >> destino; } }while (destino <1 || destino >3 || destino == origem); mDiscos(origem, destino); }while (teste!=1); } void Dificuldade(){ system ("CLS"); do{ cout << "Qual Dificuldade?\n"; cout << "1.fácil(3 Discos)\n2.Normal(5 Discos)\n3.difícil(7 Discos)\n\nDigite: "; cin >> dificuldade; }while (dificuldade < 1 || dificuldade > 3); switch (dificuldade){ case 1: tamanho = 3; break; case 2: tamanho = 5; break; case 3: tamanho = 7; break; } } void Torres(){ // Imprime "Torres" system("CLS"); for (int i=0; i < tamanho; i++){ cout << "|" << v1[i] << "|" << "\t|"<< v2[i] << "|" << "\t|" << v3[i]<< "|\n"; } cout << "\nNumero de jogadas:"; if (cont < 10){ cout << ""<<cont; }else { cout << "\n" << cont; } } int Final(){ int opc =0; if (v3[0]==1){ opc =1; } return (opc); } int Novamente (){ int op2 = 0; do{ cout << "Gostaria de Jogar novamente?\t(1.Sim 2.Nao)\nDigite: "; cin >> op2; if (op2==1){ return 1; } else if (op2 ==2){ return 0; } }while (op2>2 || op2 <1); } void instrucoes(){ system ("CLS"); cout << "O objetivo deste jogo consiste em deslocar todos os discos da haste onde se encontram para uma haste diferente,\n"; cout << "respeitando as seguintes regras:\n"; cout << "1.deslocar um disco de cada vez, o qual devera ser o do topo de uma das tres hastes\n"; cout << "2.cada disco nunca poderá ser colocado sobre outro de diametro mais pequeno.\n\n"; system ("PAUSE"); system ("CLS"); }
  2. @CiroboyBR Consegui chamando a função main, porém os valores das variaveis não zeram, pois declarei fora da função principal... Teria como zerar isso assim que a função acabar?
  3. Olá, bom dia, estou com a seguinte dúvida, é possível usar um goto dentro de uma função para retornar ao código fonte? ex: #include <iostream> #include <stdlib.h> using namespace std; void Calc(); int main (void ){ inicio: Calc(); return 0; } void Calc(){ int n1, n2, op=0; cout << "Digite dois num\n"; cin >> n1 >> n2; do { cout << "\nGostaria de fazer novamente? (1.Sim 2.Nao)"; cin >> op; if (op==1){ goto inicio; } }while (op>2 || op<1) }
  4. Obrigado amigo, consegui adicionando um for e solicitando ao usuário qual coluna ele queria: cout << "Digite qual coluna:" << endl; cin >> a; for (i=0; i<n; i++){ cout << matriz[i][a]<< " "; }
  5. Olá, alguém poderia me ajudar a entender a lógica? Consegui mostrar a diagonal secundária e principal, porém não consigo entender como farei pra retirar apenas um linha ou coluna. O código abaixo é o que fiz, está simples, apenas entrada e saída de matriz. #include <iostream> using namespace std; int main(){ int n,m; int i,j; cout << "Digite a quantidade de linhas e colunas:\n"; cin >> n >> m; int matriz[n][m]; cout << "Digite os valores da matriz:\n"; for (i=0; i<n; i++){ for (j=0; j<m; j++){ cin >> matriz[i][j]; } } for (i=0; i<n; i++){ for (j=0; j<m; j++){ cout << matriz[i][j] << " "; } cout << "\n"; } return 0; }
  6. Olá, bom dia. Fiquei preso na lógica de um código, gostaria de uma pequena ajuda. o código está a baixo e a dúvida é a seguinte: Devo armazenar minha matrícula em um vetor, após isso o usuário deve digitar um número inteiro com valor entre 0 e 9, o código deverá ler os vetores e dizer em qual/quais posição o número digitado está presente. #include <iostream> using namespace std; int main (){ int v[10]; int n; cout << "Digite um numero natural entre 0 e 9" << endl; cin >> n; while (n<0 || n > 9){ cout << "Digite um numero natural entre 0 e 9" << endl; cin >> n; } v[0]=2; v[1]=0; v[2]=1; v[3]=6; v[4]=0; v[5]=1; v[6]=2; v[7]=9; v[8]=1; v[9]=9; for (int i = 0; i < 10; i++){ if (v[i] = n){ cout << "O numero esta presente nas posições: " << i << endl; } } return 0; } Quando digito 0 ele não faz nada, mas quando digito qualquer outro valor ele mostra os valores de 0 a 9. Alguém pode me ajudar? EDIT : Foi apenas confusão no operador =, pode fechar o tópico mod.

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