Ir ao conteúdo
  • Cadastre-se

Cristina2000

Membro Pleno
  • Posts

    32
  • Cadastrado em

  • Última visita

  1. Eu consegui resolver vou postar aqui, talvez ajude alguém. #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <locale.h> #define TAMANHO 8 void imprime(int a[TAMANHO][TAMANHO]); int main() { int i,j,cont=1,movimento=1,movimento2=1,cont2=0,cont4=0,cont6=0,num1,num2; static int x=0,y=0,cont3=0,cont20=2,cont30=2,vetor[TAMANHO][TAMANHO]={0},tabuleiro[TAMANHO][TAMANHO]={0}; static int tabuleiro2[TAMANHO][TAMANHO]= {{2,3,4,4,4,4,3,2}, {3,4,6,6,6,6,4,3}, {4,6,8,8,8,8,6,4}, {4,6,8,8,8,8,6,4}, {4,6,8,8,8,8,6,4}, {4,6,8,8,8,8,6,4}, {3,4,6,6,6,6,4,3}, {2,3,4,4,4,4,3,2}}; setlocale(LC_ALL,""); while(cont<=64){ printf(" 1. Mover 2 posições à direita e 1 para baixo\n"); printf(" 2. Mover 1 posição à direita e 2 para baixo\n"); printf(" 3. Mover 2 posições à direita e 1 para cima\n"); printf(" 4. Mover 1 posição à direita e 2 para cima\n"); printf(" 5. Mover 2 posições à esquerda e 1 para cima\n"); printf(" 6. Mover 2 posições à esquerda e 1 para baixo\n"); printf(" 7. Mover 1 posição à esquerda e 2 para cima\n"); printf(" 8. Mover 1 posição à esquerda e 2 para baixo\n"); if(movimento==1){ x=x+1; if(x>TAMANHO-1) //Verifica se x está dentro do tabuleiro cont2++; y=y+2; //Verifica se y está dentro do tabuleiro if(y>TAMANHO-1) cont2++; if(cont2==0 && tabuleiro[x][y]==0){ //Verifica se a posição(x,y) está vazia if(tabuleiro2[x][y]==cont20){ //Verifica se a posição é igual ao valor buscado no momento vetor[x][y]=cont20; num1=x; num2=y; //Coloca a posição (x,y) no vetor cont3++; //conta quantas posição são válidas } } x=x-1; y=y-2; cont2=0; movimento++; //cont20 --> está procurando uma posição (x,y) no vetor tabuleiro2 printf("\n\ncont20= %d\n",cont20); //que seja igual a cont20 printf("cont3= %d\n",cont3); //cont3==0 nao encontrou nenhuma posição } //cont3==1 encontropu somente uma posição //cont3>1 encontrou várias posições if(movimento==2){ x=x+2; if(x>TAMANHO-1) cont2++; y=y+1; if(y>TAMANHO-1) cont2++; if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; num1=x; num2=y; cont3++; } } x=x-2; y=y-1; cont2=0; movimento++; printf("cont20= %d\n",cont20); printf("cont3= %d\n",cont3); } if(movimento==3){ x=x-1; if(x<0) cont2++; y=y+2; if(y>TAMANHO-1) cont2++; if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; num1=x; num2=y; cont3++; } } x=x+1; y=y-2; cont2=0; movimento++; printf("cont20= %d\n",cont20); printf("cont3= %d\n",cont3); } if(movimento==4){ x=x-2; if(x<0) cont2++; y=y+1; if(y>TAMANHO-1) cont2++; if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; num1=x; num2=y; cont3++; } } x=x+2; y=y-1; cont2=0; movimento++; printf("cont20= %d\n",cont20); printf("cont3= %d\n",cont3); } if(movimento==5){ x=x-1; if(x<0) cont2++; y=y-2; if(y<0) cont2++; if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; num1=x; num2=y; cont3++; } } x=x+1; y=y+2; cont2=0; movimento++; printf("cont20= %d\n",cont20); printf("cont3= %d\n",cont3); } if(movimento==6){ x=x+1; if(x>TAMANHO-1) cont2++; y=y-2; if(y<0) cont2++; if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; num1=x; num2=y; cont3++; } } x=x-1; y=y+2; cont2=0; movimento++; printf("cont20= %d\n",cont20); printf("cont3= %d\n",cont3); } if(movimento==7){ x=x-2; if(x<0) cont2++; y=y-1; if(y<0) cont2++; if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; num1=x; num2=y; cont3++; } } x=x+2; y=y+1; cont2=0; movimento++; printf("cont20= %d\n",cont20); printf("cont3= %d\n",cont3); } if(movimento==8){ x=x+2; if(x>TAMANHO-1) cont2++; y=y-1; if(y<0) cont2++; if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; num1=x; num2=y; cont3++; } } x=x-2; y=y+1; cont2=0; movimento++; printf("cont20= %d\n",cont20); printf("cont3= %d\n",cont3); } if(cont20==8) cont20=2; if(cont3==0){ printf("\ncont3=0 significa que não encontrou\n"); printf("\tnenhum movimento que possa ser feito no tabuleiro2(vetor)\n"); printf("\tneste momento"); cont20++; } if(cont3==1){ x=num1; y=num2; printf("\n\ncont3=1 significa que encontrou\n"); printf("\tsomente uma movimento possível no tabuleiro2(vetor)\n"); printf("num1= %d num2= %d\n",num1,num2); tabuleiro[x][y]=cont; cont20=2; cont++; } if(cont3>1){ printf("\ncont3>1 significa que encontrou\n"); printf("\tmais de um movimento possível no tabuleiro2(vetor)\n"); printf("\tAgora o programa vai procurar o movimento mais adequado\n\n"); printf("num1= %d num2= %d\n",num1,num2); Sleep(2200); while(cont30<=8){ for(i=0;i<TAMANHO;i++){ for(j=0;j<TAMANHO;j++){ if(vetor[i][j]!=0){ x=i; y=j; if(movimento2==1){ x=x+1; if(x>TAMANHO-1) //Verifica se x está dentro do tabuleiro cont4++; y=y+2; //Verifica se y está dentro do tabuleiro if(y>TAMANHO-1) cont4++; if(cont4==0 && tabuleiro[x][y]==0){ //Verifica se a posição(x,y) está vazia if(tabuleiro2[x][y]==cont30){ //Verifica se a posição é igual ao valor buscado no momento num1=i; num2=j; cont6++; break; } } x=x-1; y=y-2; cont4=0; movimento2++; printf("cont30= %d\n",cont30); printf("cont3= %d\n",cont3); } if(movimento2==2){ x=x+2; if(x>TAMANHO-1) cont4++; y=y+1; if(y>TAMANHO-1) cont4++; if(cont4==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont30){ num1=i; num2=j; cont6++; break; } } x=x-2; y=y-1; cont4=0; movimento2++; printf("cont30= %d\n",cont30); printf("cont3= %d\n",cont3); } if(movimento2==3){ x=x-1; if(x<0) cont4++; y=y+2; if(y>TAMANHO-1) cont4++; if(cont4==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont30){ num1=i; num2=j; cont6++; break; } } x=x+1; y=y-2; cont4=0; movimento2++; printf("cont30= %d\n",cont30); printf("cont3= %d\n",cont3); } if(movimento2==4){ x=x-2; if(x<0) cont4++; y=y+1; if(y>TAMANHO-1) cont4++; if(cont4==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont30){ num1=i; num2=j; cont6++; break; } } x=x+2; y=y-1; cont2=0; movimento2++; printf("cont30= %d\n",cont30); printf("cont3= %d\n",cont3); } if(movimento2==5){ x=x-1; if(x<0) cont4++; y=y-2; if(y<0) cont4++; if(cont4==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont30){ num1=i; num2=j; cont6++; break; } } x=x+1; y=y+2; cont4=0; movimento2++; printf("cont30= %d\n",cont30); printf("cont3= %d\n",cont3); } if(movimento2==6){ x=x+1; if(x>TAMANHO-1) cont4++; y=y-2; if(y<0) cont4++; if(cont4==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont30){ num1=i; num2=j; cont6++; break; } } x=x-1; y=y+2; cont4=0; movimento2++; printf("cont30= %d\n",cont30); printf("cont3= %d\n",cont3); } if(movimento2==7){ x=x-2; if(x<0) cont4++; y=y-1; if(y<0) cont4++; if(cont4==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont30){ num1=i; num2=j; cont6++; break; } } x=x+2; y=y+1; cont4=0; movimento2++; printf("cont30= %d\n",cont30); printf("cont3= %d\n",cont3); } if(movimento2==8){ x=x+2; if(x>TAMANHO-1) cont4++; y=y-1; if(y<0) cont4++; if(cont4==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont30){ num1=i; num2=j; cont6++; break; } } x=x-2; y=y+1; cont4=0; movimento2++; printf("cont30= %d\n",cont30); printf("cont3= %d\n",cont3); } } } if(cont6==1) break; } if(cont6==1) break; cont30++; movimento2=1; } x=num1; y=num2; tabuleiro[x][y]=cont; cont++; for(i=0;i<TAMANHO;i++){ for(j=0;j<TAMANHO;j++){ vetor[i][j]=0; } } cont20=2; } imprime(tabuleiro); movimento=1; cont3=0; num1=-1; num2=-1; } return 0; } void imprime(int a[TAMANHO][TAMANHO]){ int i,j; printf("\n\n"); for(i=0;i<TAMANHO;i++){ for(j=0;j<TAMANHO;j++){ printf("%3d",a[i][j]); Sleep(100); } printf("\n\n"); } Sleep(1000); printf("\n\n"); }
  2. Exercício 6.24 Como programar em C – H.M. Deitel e P.J.Deitel . Eu estou com problemas em resolver o exercício abaixo. Ele já está quase funcionando, mas tem algo que não está funcionando direito com relação à um vetor. Eu acumulo algumas posições para comparar qual a mais adequada para o próximo passo a ser dado. O programa seleciona estes movimentos os utiliza. E então eu tenho que zerar o vetor. Já fiz isso em três lugares diferentes e o vetor não “zera” de modo nenhum. Como eu tenho problemas de um cara que invade o meu computador e altera o meu IDE. Eu não sei se é algo que eu estou fazendo errado, ou se é “zoeira” desse cara que me persegue. Se alguém puder tentar me ajudar, eu agradeço. O programa está todo comentado e também está com vários “marcadores” que eu fiz procurando erros. Outra coisa. O programa é para ser feito utilizando somente vetores. Nesta parte do livro ainda não se chegou em struct ,filas ou ponteiros. Eu fiz um programa em um bloco único. Assim que ele estiver rodando eu o divido em funções. Desde já os meus agradecimentos. . Enunciado: Um dos problemas mais interessantes para os fãs do jogo de xadrez é o problema do Passeio do Cavalo proposto originalmente pelo matemático Euler. A questão é esta: a peça do jogo de xadrez chamada cavalo pode mover ao longo de um tabuleiro vazio e passar uma única vez em cada uma das 64 casas. O cavalo faz movimentos em formato de ”L” (percorre duas casas em uma direção e uma no sentido perpendicular às duas primeiras. Dessa forma de uma casa no meio do tabuleiro, o cavalo pode fazer 8 movimentos diferentes, ou seja, ele pode se movimentar: Movimento 1. Mover 2 posições à direita e 1 para baixo; Movimento 2. Mover 1 posição à direita e 2 para baixo; Movimento 3. Mover 2 posições à direita e 1 para cima; Movimento 4. Mover 1 posição à direita e 2 para cima; Desenvolva um programa que moverá o cavalo pelo tabuleiro de xadrez. O tabuleiro em si é representado pelo array bidimensional 8-por-8 tabuleiro. Cada um dos quadrados(casas) é inicializado com o valor zero. Utilize um contador que varie de 1 à 64. Lembre-se de testar cada movimento potencial para se certificar de que o cavalo não está saindo do tabuleiro. Os quadrados estão classificados de acordo com a sua acessibilidade pelo vetor tabuleiro2 onde deve-se mover o cavalo(dentro dos movimentos em forma de “L”) para o quadrado que seja mais inacessível. Os números do vetor tabuleiro2 indicam a partir de quantos quadrados um determinado quadrado pode ser acessado. O cavalo deve se mover para o quadrado com menor número de acessibilidade. Em caso de empate o cavalo pode se mover para qualquer um dos quadrados que empataram. Até aqui eu fiz. . Só que a continuação do exercício pede que agora o exercício seja modificado de modo a que quando houver um empate entre dois ou mais quadrados a escolha seja feita verificando os quadrados que podem ser alcançados a partir dos quadrados empatados. O programa deve fazer o movimento do cavalo para o quadrado para o qual o próximo movimento levar ao quadrado com menor número de acessibilidade. Por exemplo: Eu preenchi um quadrado e no próximo movimento existem duas posições que eu posso acessar de onde estou. O programa deve verificar qual das duas posições possui um número menor no vetor tabuleiro2. . #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <windows.h> #define TAMANHO 8 void imprime(int a[TAMANHO][TAMANHO]); int main() { int i,j,tabuleiro[TAMANHO][TAMANHO]={0}; static int x2,y2,num1=0,num2=0,movimento2=1,cont30=2,cont4=0,cont6=0; static int x=0,y=0,cont=0,cont2=0,cont3=0,cont20=2,movimento=1,vetor[TAMANHO][TAMANHO]={0}; static int tabuleiro2[TAMANHO][TAMANHO]= {{2,3,4,4,4,4,3,2}, {3,4,6,6,6,6,4,3}, {4,6,8,8,8,8,6,4}, {4,6,8,8,8,8,6,4}, {4,6,8,8,8,8,6,4}, {4,6,8,8,8,8,6,4}, {3,4,6,6,6,6,4,3}, {2,3,4,4,4,4,3,2}}; setlocale(LC_ALL,""); while(cont<64){ printf(" 1. Mover 2 posições à direita e 1 para baixo\n"); printf(" 2. Mover 1 posição à direita e 2 para baixo\n"); printf(" 3. Mover 2 posições à direita e 1 para cima\n"); printf(" 4. Mover 1 posição à direita e 2 para cima\n"); printf(" 5. Mover 2 posições à esquerda e 1 para cima\n"); printf(" 6. Mover 2 posições à esquerda e 1 para baixo\n"); printf(" 7. Mover 1 posição à esquerda e 2 para cima\n"); printf(" 8. Mover 1 posição à esquerda e 2 para baixo\n"); if(movimento==1){ x=x+1; //Testa o movimento 1 if(x>=TAMANHO) //Verifica se a linha cont2++; //pertence ao tabuleiro y=y+2; printf("1. x= %d y= %d\n",x,y); if(y>=TAMANHO) //Verifica se a coluna cont2++; //pertence ao tabuleiro if(cont2==0 && tabuleiro[x][y]==0){//Verifica se a posição está vazia if(tabuleiro2[x][y]==cont20){ //verifica se nessa posição está vetor[x][y]=cont20; //o menor valor do vetor tabuleiro[x][y]=cont; //Adiciona este movimento ao vetor cont++; num1=x; //cont20 ´começa do menos valor num2=y; //que é 2 e vai até 8 cont3++; // que são as posições do tabuleiro2 } //cont3 conta quantas posições ue servem } //foram encontradas x=x-1; //x w y retornam ao valor anterior y=y-2; //para continuar a busca cont2=0; movimento++; printf("1. x= %d y= %d\n",x,y); printf("cont20= %d\n",cont20); printf("cont3= %d\n\n",cont3); } if(movimento==2){ x=x+2; if(x>=TAMANHO) cont2++; y=y+1; printf("2. x= %d y= %d\n",x,y); if(y>=TAMANHO) cont2++; if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; tabuleiro[x][y]=cont; cont++; num1=x; num2=y; cont3++; } } x=x-2; y=y-1; cont2=0; movimento++; printf("2. x= %d y= %d\n",x,y); printf("cont20= %d\n",cont20); printf("cont3= %d\n\n",cont3); } if(movimento==3){ x=x-1; if(x<0) cont2++; y=y+2; printf("3. x= %d y= %d\n",x,y); if(y>=TAMANHO) cont2++; if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; tabuleiro[x][y]=cont; cont++; num1=x; num2=y; cont3++; } } x=x+1; y=y-2; cont2=0; movimento++; printf("3. x= %d y= %d\n",x,y); printf("cont20= %d\n",cont20); printf("cont3= %d\n\n",cont3); } if(movimento==4){ x=x-2; if(x<0) cont2++; y=y+1; printf("4. x= %d y= %d\n",x,y); if(y>=TAMANHO) cont2++; if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; tabuleiro[x][y]=cont; cont++; num1=x; num2=y; cont3++; } } x=x+2; y=y-1; cont2=0; movimento++; printf("4. x= %d y= %d\n",x,y); printf("cont20= %d\n",cont20); printf("cont3= %d\n\n",cont3); } if(movimento==5){ x=x-1; if(x<0) cont2++; y=y-2; printf("5. x= %d y= %d\n",x,y); if(y<0) cont2++; if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; tabuleiro[x][y]=cont; cont++; num1=x; num2=y; cont3++; } } x=x+1; y=y+2; cont2=0; movimento++; printf("5. x= %d y= %d\n",x,y); printf("cont20= %d\n",cont20); printf("cont3= %d\n\n",cont3); } if(movimento==6){ x=x+1; if(x>=TAMANHO) cont2++; y=y-2; printf("6. x= %d y= %d\n",x,y); if(y<0) cont2++; if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; tabuleiro[x][y]=cont; cont++; num1=x; num2=y; cont3++; } } x=x-1; y=y+2; cont2=0; movimento++; printf("6. x= %d y= %d\n",x,y); printf("cont20= %d\n",cont20); printf("cont3= %d\n\n",cont3); } if(movimento==7){ x=x-2; if(x<0) cont2++; y=y-1; printf("7. x= %d y= %d\n",x,y); if(y<0) cont2++; if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; tabuleiro[x][y]=cont; cont++; num1=x; num2=y; cont3++; } } x=x+2; y=y+1; cont2=0; movimento++; printf("7. x= %d y= %d\n",x,y); printf("cont20= %d\n",cont20); printf("cont3= %d\n\n",cont3); } if(movimento==8){ x=x+2; if(x>=TAMANHO) cont2++; y=y-1; printf("8. x= %d y= %d\n",x,y); if(y<0) cont2++; if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; tabuleiro[x][y]=cont; cont++; num1=x; num2=y; cont3++; } } x=x-2; y=y+1; cont2=0; movimento++; printf("8. x= %d y= %d\n",x,y); printf("cont20= %d\n",cont20); printf("cont3= %d\n\n",cont3); } if(cont3==0){ if(cont20==8) //Se cont3==0 significa que cont20=2; //nenhuma posição é igual a else //cont20. cont20++; } if(cont3==1){ x=num1; y=num2; for(i=0;i<TAMANHO;i++){ for(j=0;j<TAMANHO;j++){ vetor[x][y]=0; } } cont20=2; cont3=0; } if(cont3>1){ //cont=cont-cont3+1; printf("Maior que 1\n"); movimento2=1; while(cont30<8){ for(i=0;i<TAMANHO;i++){ Sleep(100); for(j=0;j<TAMANHO;j++){ cont6=0; Sleep(100); //********* printf("\n\n*UM\n\n\n"); //******* Sleep(100); if(vetor[i][j]!=0){ movimento2=1; printf("\n\nDOIS\n\n\n"); Sleep(100); printf("vetor[%d][%d]= %d\n",i,j,vetor[i][j]); printf("movimento2= %d\n",movimento2); x2=i; y2=j; if(movimento2==1){ x2=x2+1; if(x2>=TAMANHO) cont4++; y2=y2+2; printf("1. x2= %d y2= %d\n",x2,y2); if(y2>=TAMANHO) cont4++; if(cont4==0 && tabuleiro[x2][y2]==0){ if(tabuleiro2[x2][y2]==cont30){ tabuleiro[x2][y2]=cont; cont++; num1=x2; num2=y2; x=i; y=j; cont6++; cont30=2; printf("\n\nAqui eu zero o vetor nessa posição.\n"); vetor[x2][y2]=0; printf("vetor = %d\n",vetor[x2][y2]); printf("Só que ao imprimir o vetor (abaixo) ele não aparece zerado\n"); printf("Pelo menos no meu IDE ele não aparece zerado.\n\n"); imprime(vetor); break; } } x2=x2-1; y2=y2-2; cont4=0; movimento2++; printf("1. x2= %d y2= %d\n",x2,y2); printf("cont30= %d\n",cont30); printf("\n\nUm um\n\n\n"); } if(movimento2==2){ x2=x2+2; if(x2>=TAMANHO) cont4++; y2=y2+1; printf("2. x2= %d y2= %d\n",x2,y2); if(y2>=TAMANHO) cont4++; if(cont4==0 && tabuleiro[x2][y2]==0){ if(tabuleiro2[x2][y2]==cont30){ vetor[x2][y2]=cont30; tabuleiro[x2][y2]=cont; cont++; num1=x2; num2=y2; x=i; y=j; cont6++; cont30=2; printf("\n\nAqui eu zero o vetor nessa posição.\n"); vetor[x2][y2]=0; printf("vetor = %d\n",vetor[x2][y2]); printf("Só que ao imprimir o vetor (abaixo) ele não aparece zerado\n"); printf("Pelo menos no meu IDE ele não aparece zerado.\n\n"); imprime(vetor); break; } } x2=x2-2; y2=y2-1; cont4=0; movimento2++; printf("2. x2= %d y2= %d\n",x2,y2); printf("cont30= %d\n",cont30); printf("Dois dois\n\n\n"); } if(movimento2==3){ x2=x2-1; if(x2<0) cont4++; y2=y2+2; printf("3. x2= %d y2= %d\n",x2,y2); if(y2>=TAMANHO) cont4++; if(cont4==0 && tabuleiro[x2][y2]==0){ if(tabuleiro2[x2][y2]==cont20){ tabuleiro[x2][y2]=cont; cont++; num1=x2; num2=y2; x=i; y=j; cont6++; cont30=2; printf("\n\nAqui eu zero o vetor nessa posição.\n"); vetor[x2][y2]=0; printf("vetor = %d\n",vetor[x2][y2]); printf("Só que ao imprimir o vetor (abaixo) ele não aparece zerado\n"); printf("Pelo menos no meu IDE ele não aparece zerado.\n\n"); imprime(vetor); break; } } x2=x2+1; y2=y2-2; cont4=0; movimento2++; printf("3. x2 %d y2= %d\n",x2,y2); printf("cont30= %d\n",cont30); printf("Tres tres\n\n\n"); } if(movimento2==4){ x2=x2-2; if(x2<0) cont4++; y2=y2+1; printf("4. x2= %d y2= %d\n",x2,y2); if(y2>=TAMANHO) cont4++; if(cont4==0 && tabuleiro[x2][y2]==0){ if(tabuleiro2[x2][y2]==cont30){ tabuleiro[x2][y2]=cont; cont++; num1=x2; num2=y2; x=i; y=j; cont6++; cont30=2; printf("\n\nAqui eu zero o vetor nessa posição.\n"); vetor[x2][y2]=0; printf("vetor = %d\n",vetor[x2][y2]); printf("Só que ao imprimir o vetor (abaixo) ele não aparece zerado\n"); printf("Pelo menos no meu IDE ele não aparece zerado.\n\n"); imprime(vetor); break; } } x2=x2+2; y2=y2-1; cont4=0; movimento2++; printf("4. x2= %d y2= %d\n",x2,y2); printf("cont30= %d\n",cont30); printf("Quatro quatro\n\n\n"); } if(movimento2==5){ x2=x2-1; if(x2<0) cont4++; y2=y2-2; printf("5. x2= %d y2= %d\n",x2,y2); if(y2<0) cont4++; if(cont4==0 && tabuleiro[x2][y2]==0){ if(tabuleiro2[x2][y2]==cont30){ tabuleiro[x2][y2]=cont; cont++; num1=x; num2=y; x=i; y=j; cont6++; cont30=2; printf("\n\nAqui eu zero o vetor nessa posição.\n"); vetor[x2][y2]=0; printf("vetor = %d\n",vetor[x2][y2]); printf("Só que ao imprimir o vetor (abaixo) ele não aparece zerado\n"); printf("Pelo menos no meu IDE ele não aparece zerado.\n\n"); imprime(vetor); break; } } x2=x2+1; y2=y2+2; cont4=0; movimento2++; printf("5. x2= %d y2= %d\n",x2,y2); printf("cont30= %d\n",cont30); printf("Cinco cinco\n\n\n"); } if(movimento2==6){ x2=x2+1; if(x2>=TAMANHO) cont4++; y2=y2-2; printf("6. x2= %d y2= %d\n",x2,y2); if(y2<0) cont4++; if(cont4==0 && tabuleiro[x2][y2]==0){ if(tabuleiro2[x2][y2]==cont30){ tabuleiro[x2][y2]=cont; cont++; num1=x; num2=y; x=i; y=j; cont6++; cont30=2; printf("\n\nAqui eu zero o vetor nessa posição.\n"); vetor[x2][y2]=0; printf("vetor = %d\n",vetor[x2][y2]); printf("Só que ao imprimir o vetor (abaixo) ele não aparece zerado\n"); printf("Pelo menos no meu IDE ele não aparece zerado.\n\n"); imprime(vetor); break; } } x2=x2-1; y2=y2+2; cont4=0; movimento2++; printf("6. x2= %d y2= %d\n",x2,y2); printf("cont30= %d\n",cont30); printf("Seis seis\n\n\n"); } if(movimento2==7){ x2=x2-2; if(x2<0) cont4++; y2=y2-1; printf("7. x2= %d y2= %d\n",x2,y2); if(y2<0) cont4++; if(cont4==0 && tabuleiro[x2][y2]==0){ if(tabuleiro2[x2][y2]==cont30){ tabuleiro[x2][y2]=cont; cont++; num1=x; num2=y; x=i; y=j; cont6++; cont30=2; printf("\n\nAqui eu zero o vetor nessa posição.\n"); vetor[x2][y2]=0; printf("vetor = %d\n",vetor[x2][y2]); printf("Só que ao imprimir o vetor (abaixo) ele não aparece zerado\n"); printf("Pelo menos no meu IDE ele não aparece zerado.\n\n"); imprime(vetor); break; } } x2=x2+2; y2=y2+1; cont4=0; movimento2++; printf("7. x2= %d y2= %d\n",x2,y2); printf("cont30= %d\n",cont30); printf("Sete sete\n\n\n"); } if(movimento2==8){ x2=x2+2; if(x2>=TAMANHO) cont4++; y2=y2-1; printf("8. x2= %d y2= %d\n",x2,y2); if(y2<0) cont4++; if(cont4==0 && tabuleiro[x2][y2]==0){ if(tabuleiro2[x2][y2]==cont30){ tabuleiro[x2][y2]=cont; cont++; num1=x; num2=y; x=i; y=j; cont6++; cont30=2; printf("\n\nAqui eu zero o vetor nessa posição.\n"); vetor[x2][y2]=0; printf("vetor = %d\n",vetor[x2][y2]); printf("Só que ao imprimir o vetor (abaixo) ele não aparece zerado\n"); printf("Pelo menos no meu IDE ele não aparece zerado.\n\n"); imprime(vetor); break; } } x2=x2-2; y2=y2+1; cont4=0; movimento2++; printf("8. x2= %d y2= %d\n",x2,y2); printf("cont30= %d\n",cont30); printf("Oito oito\n\n\n"); } } } if(cont6==1){ //cont6==1 significa que o for(i=0;i<TAMANHO;i++){ //programa já encontrou um valor for(j=0;j<TAMANHO;j++){ //Estou zerando o vetor novamente vetor[x][y]=0; //para armazenar novos valores //Só que não zera //Não entendo o porquê } } break; //Saindo do for } } if(cont6==1){ for(i=0;i<TAMANHO;i++){ //zerando o vetor novamente for(j=0;j<TAMANHO;j++){ // Novamente Não zera vetor[x][y]=0; } } break; //Saindo do while } cont30++; //mesma função do cont20 } //na primeira parte do programa } cont3=0; movimento=1; imprime(tabuleiro); } } void imprime(int a[TAMANHO][TAMANHO]){ int i,j; printf("\n\n\n"); for(i=0;i<TAMANHO;i++){ for(j=0;j<TAMANHO;j++){ printf("%3d",a[i][j]); Sleep(100); } printf("\n\n"); } printf("\n\n\n"); }
  3. #include <stdio.h> #include <stdlib.h> #include <windows.h> #define TAMANHO 10 int main() { int i,j,x=0; for(i=0;i<TAMANHO;i++){ for(j=0;j<TAMANHO;j++){ x=x+1; if(j==5) break; } } printf("x= %d\n",x); return 0; } Resolvido
  4. Coloque o que já fez, para podermos lhe ajudar.
  5. Olá Qualquer dúvida me pergunte #include <stdio.h> int main() { int i, x, n[10],n1[10]; //elementos for(x=0;x<10;x++) { printf("escreva um numero:[%d]= ",x); scanf("%d",&n[x]); } //valores originais printf("\n::: Valores Originais :::\n"); { for(x=0;x<10;x++) printf("%d\n",n[x]); } //mutiplicado por 2 for(i=0;i<10;i++){ //for(x=0;x<10;x++) -->Não precisa //Errado //n[x]==n1[i]; //O array n já foi criado. Você tem que fazer ao contrário para //fazer uma cópia e criar n1 --> n1[i]=n[i]. Você pode usar o mesmo índice "i" //porque os arrays são diferentes. //Quando você faz n[x]==n1[i], você está fazendo uma comparação. //Por exemplo a=b --> Estou colocando em a o mesmo valor de b //Se eu fizer a==b eu estou comparando. Eu estou querendo saber se "a" é igual a "b" //Correto n1[i]=n[i]; n1[i]=n1[i]*2; } //exiber multiplicados por 2 printf("\n::: Valores Multiplicados por 2:::\n"); { for(i=0;i<10;i++) printf("%d ",n1[i]); printf("\n"); } return 0; }
  6. Olá Por favor, será que alguém pode me dar uma ajuda neste programa? Este programa está dando um erro bem estranho. Para um mesmo código ele está funcionando de modos diferentes. Os valores de x e y são incrementados e caso x e y fiquem para fora do tabuleiro, então eles devem voltar ao valor antigo. O mesmo deve acontecer se algumas condições não forem satisfeitas. No movimento==1 e movimento==2 ele está funcionando direito, mas a partir do Movimento==3 está funcionando de outro modo. Estou colocando somente o pedaço do código que está dando erro. Eu coloquei os printf somente para buscar os erros, eles não fazem parte do programa. printf(" 1. Mover 2 posições à direita e 1 para baixo\n"); printf(" 2. Mover 1 posição à direita e 2 para baixo\n"); printf(" 3. Mover 2 posições à direita e 1 para cima\n"); printf(" 4. Mover 1 posição à direita e 2 para cima\n"); printf(" 5. Mover 2 posições à esquerda e 1 para cima\n"); printf(" 6. Mover 2 posições à esquerda e 1 para baixo\n"); printf(" 7. Mover 1 posição à esquerda e 2 para cima\n"); printf(" 8. Mover 1 posição à esquerda e 2 para baixo\n"); if(movimento==1){ x=x+1; if(x>=TAMANHO) //Verifica se x está nos limites do tabuleiro cont2++; y=y+2; if(y>=TAMANHO) cont2++; printf("x= %d y= %d\n",x,y); if(cont2==0 && tabuleiro[x][y]==0){ //Verifica se essa posição ainda não foi ocupada if(tabuleiro2[x][y]==cont20){ //Verifica se essa posição do tabuleiro possui um determinado valor vetor[x][y]=cont20; //Coloca x e y em um vetor cont3++; } } if(cont2>0){ //Se x ou y estiverem para fora do tabuleiro então eles voltam ao valor anterior x=x-1; y=y-2; } if(cont2==0 || tabuleiro[x][y]!=0 || tabuleiro2[x][y]!=cont20){ x=x-1; //Se qualquer das condições não forem satisfeitas então x e y voltam ao valor anterior y=y-2; } printf("*x= %d y= %d\n",x,y); cont2=0; movimento++; } printf("**x= %d y= %d\n",x,y); printf("cont3= %d\n\n",cont3); if(movimento==2){ x=x+2; if(x>=TAMANHO) cont2++; y=y+1; if(y>=TAMANHO) cont2++; printf("x= %d y= %d\n",x,y); if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; cont3++; } } if(cont2>0){ x=x-2; y=y-1; } if(cont2==0 || tabuleiro[x][y]!=0 || tabuleiro2[x][y]!=cont20){ x=x-2; y=y-1; } printf("*x= %d y= %d\n",x,y); cont2=0; movimento++; } printf("**x= %d y= %d\n",x,y); printf("cont3= %d\n\n",cont3); if(movimento==3){ x=x-1; if(x<0) cont2++; y=y+2; if(y>=TAMANHO) cont2++; printf("x= %d y= %d\n",x,y); //Verifica se a coluna pertence ao tabuleiro if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ //verifica se nessa posição está o menor número de possibilidades vetor[x][y]=cont20; //Adiciona este movimento ao vetor cont3++; } } if(cont2>0){ x=x-1; y=y-2; } if(cont2==0 || tabuleiro[x][y]!=0 || tabuleiro2[x][y]!=cont20){ x=x-1; y=y-2; } printf("*x= %d y= %d\n",x,y); cont2=0; movimento++; } printf("**x= %d y= %d\n",x,y); printf("cont3= %d\n\n",cont3); if(movimento==4){ x=x-2; if(x<0) cont2++; y=y+1; if(y>=TAMANHO) cont2++; printf("x= %d y= %d\n",x,y); if(cont2==0 && tabuleiro[x][y]==0){ if(tabuleiro2[x][y]==cont20){ vetor[x][y]=cont20; cont3++; } } if(cont2>0){ x=x-1; y=y-2; } if(cont2==0 || tabuleiro[x][y]!=0 || tabuleiro2[x][y]!=cont20){ x=x-1; y=y-2; } printf("*x= %d y= %d\n",x,y); cont2=0; movimento++; } printf("**x= %d y= %d\n",x,y); printf("cont3= %d\n\n",cont3);
  7. #Bom Dia! Eu vim pedir ajuda, porque não estou entendendo o que está acontecendo dentro do #laço for. Entra uma lista e sai outra sem eu ter pedido para fazer nada. #Eu retirei o restante do exercício porque o erro está somente no for. #Eu estou subindo um print que eu fiz do IDE prova1=[8,6,3,9,7,4,5,6,4,8,9,10] print(prova1) soma=0 for c in prova1: print(prova1[c],end=" ")
  8. # Olá. Se alguém puder me ajudar, gostaria de saber o que está errado # no código abaixo # Enunciado: # Retirar todos os números impares da lista numeros=[1,2,3,4,5,6,7,8,9,10] for c in range(0,9): if numeros[c]%2==0: del numeros[c] print(numeros)
  9. @Lucca Rodrigues Oi Lucas. Você tem razão só que essa chamada na realidade não existe. Isso aconteceu porque eu estava fazendo várias mudanças e tentativas para corrigir o erro. E no momento em que copiei o código para colocar aqui esqueci de apagar essa chamada, não era para ela estar ali. @arfneto Olá. Obrigada pelas informações. O float c e a chamada da função antes do printf estão aí por engano. Eu fiquei mexendo no programa várias vezes tentando fazê-lo funcionar e no momento em que copiei o código esqueci de retirar essas alterações que havia feito. if(a>=90) return 4.; Eu fiz dessa forma, que mencionou, num primeiro momento, e fiquei bastante surpresa por não funcionar. Então eu achei que a sintaxe estava incorreta e acrescentei a variável b. Eu vi a solução que colocou usando vetor. É realmente muito mais eficiente. Eu já estudei vetores e sei usá-los. Só que eu estou fazendo esses exercícios de um livro e esses exercícios no livro estão antes do ensino dos vetores e são para praticar funções somente. Eu acho importante treiná-los sem os vetores para ir treinando o raciocínio, mesmo que na maioria das vezes fosse bem mais fácil usar os vetores. Eu acredito que com uma base bem sólida, ficará mais fácil o meu aprendizado à medida que a complexidade dos exercícios for aumentando. Muito obrigada, pela ajuda. Tenha um ótimo domingo.
  10. @devair1010 Oi, Devair. Obrigada pela ajuda. Eu já fiz isso que falou e continuou dando erro. Eu criei uma vaiável "x" e fiz x=media(med) e no printf eu coloquei x. E não funcionou do mesmo jeito. Estranho, não acha?
  11. Olá. Eu estou com um problema nesse programa. Eu quero que o programa imprima o return . No caso 1 ou 2 ou 3 ou 4. Só que não importa o valor da media que se digite ele retorna sempre zero #include <stdio.h> #include <stdlib.h> float media(float); int main() { float med,c; printf("Digite a media\n"); scanf("%f",&med); media(med); printf("A media do aluno retorna %f\n",media(med)); return 0; } float media(float a){ float b; if(a<60) b=0; if(a>=60 && a<=69) b=1; if(a>=40 && a<=79) b=2; if(a>=80 && a<=89) b=3; if(a>=90) b=4; return b; }
  12. @arfneto Olá, Tudo bem? O laço for em que uso a variável k é apenas para diminuir o processamento para que triângulo vá se formando lentamente. Só isso. Você sabe alguma função que eu possa usar no lugar do for para obter o mesmo efeito? Se puder me dizer eu agradeço. Quanto ao programa não estar bom. Eu estou aprendendo. Sei que estou melhorando a cada dia. Sei que vocês programadores são melhores do que eu, justamente por isso, porque já são programadores e eu ainda não sou, estou aprendendo, mas sei também que eu chego lá. É por isso que eu vim aqui buscar ajuda, porque sei que vocês são muito melhores do que eu e podem me ajudar. Toda a extensão da janela significa fazer aparecer mais do que dois triângulos lado a lado. Quando tento isso os triângulos saem desconfigurados. E quando tento criar um triângulo com mais de 5 linhas também está saindo uma figura desconfigurada. Obrigada pela ajuda. @AdrianoSiqueira Obrigada. Vou tentar implementar dessa forma. @Midori Obrigada. Vou tentar fazer dessa forma para ver.
  13. Olá Eu gostaria de saber como eu faço para imprimir os triângulos em toda a extensão da janela e com n maiores que 5.. Se eu coloco n maior que 5 dá erro. É como se a janela tivesse a metade do tamanho que tem. A figura começa a ficar amontoada no canto esquerdo. E não consigo colocar mais que duas figuras por página. O que está errado? #include <stdio.h> #include <stdlib.h> void figura(int); int main() { int n; printf("Digite n\n"); scanf("%d",&n); figura(n); printf("\n\n"); return 0; } void figura(int a){ int i,j,k,cont=1,cont2=0,cont3=0, cont4=0; for(i=0;i<a;i++){ printf("\n"); for(j=0;j<cont;j++){ for(k=0;k<80000000;k++) ; while(cont2<cont){ printf("*"); cont2++; } printf("\t\t"); while(cont3<cont){ printf("*"); cont3++; } } cont++; cont2=0; cont3=0; } }
  14. Oi, Devair Obrigada pela ajuda. Só que eu já fiz dessa forma. Deu certo. Eu estou tentando resolve dessa outra forma também. Porque como eu estou me preparando para o mercado de trabalho eu quero aprender a usar um contador.
  15. Olá! Eu consegui resolver esse exercício usado if/else, contudo eu quero aprender a resolver o exercício usando um contador. Só que até agora não consegui. Gostaria de uma ajuda. Obrigada!!! Eu anexei como está sendo a saída *************************************** //Dada uma sequência de n numeros reais,determinar os números que compõem a sequênia //e o número de vezes que cada um deles ocorre na mesma. #include <stdio.h> #include <stdlib.h> #define TAMANHO 50 int main() { int i,num1,frequencia[21]={0},vetor[TAMANHO]={0}; srand(time(NULL)); for(i=0;i<TAMANHO;i++){ //cria um vetor com números aleatórios de 1 até 20 num1=rand()%20+1; vetor[i]= num1; } printf("\n*****Sequencia desordenada*****\n\n"); //imprime o vetor for(i=0;i<TAMANHO;i++){ printf("%4d",vetor[i]); if((i+1)%10==0) printf("\n"); } for(i=0;i<50;i++){ //contador frequencia(conta quantas vezes cada número aparece) ++frequencia[vetor[i]]; } printf("\n\n"); printf("%s%20s\n","valor","frequencia"); for(i=0;i<=20;i++){ printf("%4d%20d\n",i,vetor[i]); } return 0; }

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