Jump to content

Wilkyn Fernandes Taborda C

Members
  • Content count

    51
  • Joined

  • Last visited

Community Reputation

0 Comum

About Wilkyn Fernandes Taborda C

Contato

  • Twitter
    @FernandesWilkyn
  1. Wilkyn Fernandes Taborda C

    Problema Olímpico com Números Pares

    Em cada um dos inteiros existentes entre 2007 e 7002 o programa identifica todos os algarismos e os divide por 2 para ver se são pares. Os números que tem todos os algarismos pares são mostrados na tela. int main(){ int numero, algarismos[4]={2,0,0,7},i,epar; epar=1; for(numero=2007;numero<=7002;numero++){ for(i=0;i<4;i++) if(algarismos[i]%2) epar=0; if(epar) printf("%d\n",numero); epar=1; if(algarismos[3]<9) algarismos[3]++; else if(algarismos[2]<9){ algarismos[3]=0; algarismos[2]++; } else if(algarismos[1]<9){ algarismos[3]=0; algarismos[2]=0; algarismos[1]++; } else{ algarismos[3]=0; algarismos[2]=0; algarismos[1]=0; algarismos[0]++; } } system("pause"); }
  2. Wilkyn Fernandes Taborda C

    Batalha_Naval: como impedir que os navios fiquem próximos uns aos outros?

    Sendo uma matriz de 10x10 posições marcada com 0 nas posições livres e 1 nas preenchidas: while(1){ printf("\ndigite a linha e coluna:"); scanf("%d",&linha); scanf("%d",&coluna); if((linha>=0)&&(linha<=10)&&(coluna>=0)&&(coluna<=10)) if (matriz[linha][coluna]) printf("Posicao ocupada. Tente outra."); else if((coluna>0) && matriz([linha][coluna-1])) printf("Muito Proximo. Tente outra posicao."); else if((coluna<9) && matriz([linha][coluna+1])) printf("Muito Proximo. Tente outra posicao."); else if((linha>0) && matriz([linha-1][coluna])) printf("Muito Proximo. Tente outra posicao."); else if((linha<9) && matriz([linha+1][coluna])) printf("Muito Proximo. Tente outra posicao."); else matriz[linha][coluna]=1; }
  3. Wilkyn Fernandes Taborda C

    Fettuccine, ricci - recursividade

    Corrigindo: Se o termo for par, resultado = atual - anterior, se for ímpar, resultado = atual + anterior. Ricci: int main(){ int num1,num2,soma,i; printf("Digite o 1o Numero:"); scanf("%d",&num1); printf("Digite o 2o Numero:"); scanf("%d",&num2); printf("Os dez primeiros termos:"); printf("\n%d\n%d",num1,num2); for (i=0;i<8;i++){ soma=num1+num2; printf("\n%d",soma); num1=num2; num2=soma; } system("pause"); } Fetuccine: int main(){ int num1,num2,resultado,i; printf("Digite o 1o Numero:"); scanf("%d",&num1); printf("Digite o 2o Numero:"); scanf("%d",&num2); printf("Os dez primeiros termos:"); printf("\n%d\n%d",num1,num2); for (i=3;i<=10;i++){ if (i%2==1){ resultado=num2+num1; printf("\n%d",resultado); } else{ resultado=num2-num1; printf("\n%d",resultado); } num1=num2; num2=resultado; } system("pause"); }
  4. Wilkyn Fernandes Taborda C

    Erro de FALHA DE SEGMENTAÇÃO

    Na função principal quando você chama as funções preordem, emordem e posordem você passa através de parâmetros valores diferentes do especificado na lista de parâmetros dessas funções. Elas estão esperando receber valores de um tipo e recebem de outro. O valor inteiro da variável raiz é passado no lugar de um ponteiro de tree. Passar valores de tipo diferente do especificado e esperado pelas funções em C mesmo sendo aceito pelo compilador e criado o programa faz com que ele trave durante sua execução.
  5. Wilkyn Fernandes Taborda C

    Lista Encadeada ERRO Inserção do Final da Lista

    O programa não mostra o último valor inserido por que as linhas de código que imprimem esse valor estão comentadas. Retire as barras duplas das funções de impressão que o valor será mostrado.
  6. Wilkyn Fernandes Taborda C

    Exer de c++

    Exatamente. Dividindo um número pela sua base, o quociente dessa divisão novamente por essa mesma base, fazendo assim por diante até que o quociente seja menor do que essa base e pegando-se esse último quociente juntamente com todos os restos das divisões anteriores obtém-se todos os algarismo individuais de um número: int vetor[50];/*Vetor de algarismos. Cada posicao desse vetor guarda um dos algarismos do numero original*/ int i=0; void limpaalgarismos(){//serve para limpar o vetor de algarismos i=0; } void algarismos(int num){/*Funcao que armazena somente 1 algarismo do numero por vez no vetor de algarismos*/ int quociente,resto; if(num<10) vetor[i]=num; else{ quociente=num/10; resto=num%10; vetor[i]=resto; i++; algarismos(quociente); } } int umalgarismo(){ int j,soma=0; for(j=i;j>=0;j--) soma=soma+vetor[j]; while(soma>=10){ limpaalgarismos(); algarismos(soma); soma=umalgarismo(); } return soma; } int main(){ int N=1,M=1; for(;;){ scanf("%d",&N); scanf("%d",&M); if((N==0)&&(M==0)) return; algarismos(N); N=umalgarismo(); limpaalgarismos(); algarismos(M); M=umalgarismo(); limpaalgarismos(); if(N>M) printf("1"); else if(N<M) printf("2"); else printf("0"); printf("\n"); } }
  7. Wilkyn Fernandes Taborda C

    Matrizes

    rafael_iftm após o programa entrar nos dois laços que fazem a leitura dos elementos da matriz representados por linha e coluna ele faz uma comparação para ver se o elemento digitado e armazenado na matriz principal é igual ao elemento que está na matriz auxiliar e se for o programa vai dizer que o número está repetido e que é para o usuário digitar outro porém ele sempre irá dizer que o número digitado é repetido mesmo que ele não seja pois toda vez que ele lê um valor digitado tanto a matriz principal quanto a auxiliar recebem esse mesmo valor e após isso é feita a comparação para ver se o valor dos dois é igual o que resultará sempre em verdadeiro. Isso não é um erro de programação mas é um erro de lógica. Outro erro de lógica que tem nesse mesmo programa é que mesmo que o usuário digite números repetidos o programa nem sempre irá exibir o aviso e nem pedir para digitar de novo pois mesmo com a lógica errada ele só compara uma vez para ver se o valor é repetido e após isso pula para a leitura e armazenamento do valor da próxima posição da matriz sem verificar. Para consertar o programa devemos fazer uma rotina de verificação que compara o último valor digitado com todos os anteriores já armazenados na matriz e então ver se há algum igual. O programa do Nefisto está funcionando certinho e já inclui essa rotina de verificação porém como ele mesmo diz falta a rotina de verificação do menor valor da matriz e também do maior. Aqui vai um código que mostra como achar e mostrar o menor e o maior valor dessa matriz e suas respectivas posições: int main(){ int matriz[5][5],i,j,guarda_i,guarda_j,menor=32768,maior=0; /*Assumimos aqui que todos os valores digitados e sem repetidos ja estao guardados na variavel matriz para que eu nao precise aqui refazer o programa todo*/ for(i=0;i<5;i++) for(j=0;j<5;j++) if(matriz[i][j]<menor){ menor=matriz[i][j]; guarda_i=i; guarda_j=j; } printf("O menor valor e %d nas posicoes %d e %d",matriz[i][j],guarda_i,guarda_j); for(i=0;i<5;i++) for(j=0;j<5;j++) if(matriz[i][j]>maior){ maior=matriz[i][j]; guarda_i=i; guarda_j=j; } printf("\nO maior valor e %d nas posicoes %d e %d",matriz[i][j],guarda_i,guarda_j); system("pause"); }
  8. Wilkyn Fernandes Taborda C

    Rand nao funciona :(

    Programa que simula uma corrida de 5 voltas com 10 corredores: #define NUM_CORREDORES 10 #define NUM_VOLTAS 5 int pista[NUM_CORREDORES]; int main(){ int i,j,k,temp; printf("Pre-largada\n"); for(i=0; i<NUM_CORREDORES; i++) printf("\nCorredor %d: 1",i+1); k=0; for(i=0; i<NUM_CORREDORES; i++) pista[i]=0; for(i=0; i<NUM_VOLTAS;){ temp=(rand()%10)+1; for(j=0; j<NUM_CORREDORES; j++) if(temp==pista[j]) break; if(j==10){ pista[k]=temp; k++; } if(k==10){ i++; printf("\n\nVolta %d",i); for(k=0; k<NUM_CORREDORES; k++) printf("\nCorredor %d: %d",k+1,pista[k]); k=0; for(j=0; j<NUM_CORREDORES; j++) pista[j]=0; } } system("pause"); }
  9. Wilkyn Fernandes Taborda C

    Dúvida - Lista Encadeada C - Zivianni

    Não dá erro algum. Funciona se tirar qualquer um dos dois ou até mesmo os dois.
  10. Wilkyn Fernandes Taborda C

    [Resolvido]Somar todas diagonais de uma matriz

    Primeiramente no programa do henriquemss. Na seguinte linha de código: result = 0 ; dá erro de tipos incompatíveis em atribuição por que você está querendo atribuir um valor inteiro que é zero a um vetor de inteiros que é result. Isso acontece por que result não é uma variável de um único inteiro mas sim uma variável vetor de variáveis do tipo inteiro ou seja um conjunto de inteiros composto por mais de uma variável desse mesmo tipo armazenadas sequencialmente na memória. Dá esse erro por que o valor que se quer atribuir é diferente do tipo de valor que aquela variável pode armazenar. Um vetor de inteiros não pode armazenar um único inteiro. Modifica-se colocando o índice do vetor à direita após o nome: result[i] = 0 ; Após isso o compilador parará de emitir a mensagem de erro. Ainda há erros de lógica que não são reconhecidos pelo compilador. Na seguinte linha de código: result [ k ]=mat[ j ]; result na posição k está recebendo um endereço de memória e não um valor inteiro. mat é uma matriz bidimensional e mat[j] indica o endereço de memória da linha j da matriz e não o seu valor. Deve-se incluir o segundo índice da matriz: result [ k ]=mat[ i ][ j ]; e isso vale também para a linha: result[ k ]+= mat [ a ]; que fica: result[ k ]+= mat [ a ][ b ]; A variável aux está declarada mas não está sendo usada. Pode ser retirada do programa. O mesmo vale para a biblioteca math.h e a variável soma. Em: printf ( "\t%d " , mat [ j ]); e printf ( "%d " , result ); o programa está imprimindo endereços de memória dessas duas variáveis convertidos para inteiro e não valores. Então fica: printf ( "\t%d " , mat [ i ] [ j ]); e: printf ( "%d " , result [ i ] ); Agora no programa do Nefisto. #define MIN ( a , b ) a < b ? a : b #define ZERO ( O , tmp ) O > 0 ? 0 : tmp O programa não compila e o compilador acusa erros por que essas duas macros estão definidas utilizando nomes de variáveis que não estão no programa que são b e O. O meu código simples para resolver esse problema é: #define M 4 #define N 3 int main (){ int i,j,pula_diagonal; int mat [M][N]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}}, result[M+N-1]; for (i=0; i<M+N-1; i++) result[i]=0; int k=0; pula_diagonal=0; for (j=0;j<=2;j++){ k=0+pula_diagonal; for(i=0; i<=3 ; i++){ result[k]+=mat[i][j]; k++; } pula_diagonal++; } for(i=0;i<M;i++){ for(j=0;j<N;j++) printf ( "%d ",mat[i][j]); printf("\n"); } printf("\n"); for(i=0;i<M+N-1;i++) printf("%d ",result[i]); system("pause"); }
  11. Wilkyn Fernandes Taborda C

    Existe um operador que me mostre o módulo do número?

    int main(){ char codigo[6]; int digitov,s=0,i,j; printf("Digite um codigo com 5 digitos para ver o digito verificador:"); scanf("%s",codigo); for(i=0,j=6;(i<5)&&(j>1);i++,j--) s = s + (codigo[i]*j); printf("\nO digito verificador e:%d ",s%7); system("pause"); }
  12. Wilkyn Fernandes Taborda C

    Existe um operador que me mostre o módulo do número?

    Esta mensagem aqui está postada errada. Peço para algum moderador apagar por favor.
  13. Wilkyn Fernandes Taborda C

    [Dúvida] Ordenação de Vetores

    Felipp, o que diz está errado pois a saída nesse caso deve ser {1,3,4,6,2} já que são os valores do vetor antes de ele ser ordenado. Lendo o seu enunciado vejo que o que você quer fazer é ordenar os valores em um vetor mas somente após isso mostrar esse vetor com os seus valores antes dessa ordenação. Sendo assim dá para fazer exatamente como a _Isis_ e o r.vinícius dizem e aplicar um algoritmo de ordenação nesse vetor após fazer uma cópia dele para poder mostrar na tela os valores em sua ordem original antes dessa ordenação. Aqui vai o código para isso: #include<iostream.h> int main(){ int v[5]={1,3,4,6,2}; int vcopia[5],aux; for(int i=0; i<5; i++) vcopia[i]=v[i]; for(int i=0; i<4; i++) for(int j=i+1; j<5; j++) if(v[i]<v[j]){ aux=v[i]; v[i]=v[j]; v[j]=aux; } for(int i=0; i<5; i++) cout << vcopia[i] << " "; system("pause"); }
  14. Wilkyn Fernandes Taborda C

    Como verifico se os números dentro do vetor é primo ?

    Nefisto, eu não consigo entender o por quê de você fazer um código tão complicado assim desse jeito para simplesmente resolver o problema de verificar se os números de um vetor são primos ou não. Aqui vai o meu código simplificado para isso: #include<iostream.h> int main(){ int numeros[10]; cout << "Digite 10 numeros para saber quais sao os primos:"; for(int i=0; i<10; i++) cin >> numeros[i]; for(int i=0; i<10; i++){ if(numeros[i]==1) cout << numeros[i] << ": Este numero e primo." << endl; else if(numeros[i]==0) cout << numeros[i] << ": Este numero nao e primo." << endl; else{ for(int j=2;j<numeros[i];j++){ if(!(numeros[i]%j)){ cout << numeros[i] << ": Este numero nao e primo." << endl; break; } if(j==(numeros[i]-1))cout << numeros[i] << ": Este numero e primo." << endl; } } } system("pause"); }
  15. Wilkyn Fernandes Taborda C

    Dado um vetor inteiro calcular média e desvio padrão

    O programa trava na seguinte linha de código: scanf ( "%f" , vetor [ i ]); Isso se deve ao fato de aqui se ter esquecido de inserir o operador de endereço de memória que é o &. Você deve informar para a função de leitura scanf o endereço de memória da variável para a qual você quer ler um valor e não a variável em si. Caso contrário o programa irá travar como é esse o caso. Então a partir da hora em que você adiciona o operador de endereço de memória & nessa linha de código que está fazendo o programa travar o programa simplesmente pára de travar e executa normalmente até o seu final. Colocamos-o logo à esquerda do nome da variável para a qual se quer ler o valor digitado. Então vai ficar: scanf ( "%f" , &vetor [ i ]);
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.