forbid 0 Denunciar post Postado Outubro 20, 2008 Ler uma matriz D 5 x 5 (considere poderão ser informados valores duplicados). A seguir ler um número X e escreva uma mensagem indicando se o valor de X existe ou NÃO na matriz. Substitua todas as ocorrências de X por 0 (zero) na matriz e escreva a matriz resultante no formato: D = [ d11 d12 d13 d14 d15 d21 d22 d23 d24 d25 d31 d32 d33 d34 d35 d41 d42 d43 d44 d45 d51 d52 d53 d54 d55 ] Eu estou conseguindo fazer quase tudo, só não consigo fazer a identificação dos números iguais e consequentemente a troca deles por zero. Alguém tem alguma sugestão? O código está abaixo. #include <stdio.h> #include <stdlib.h> int main() { int m[5][5]; int i,j; for (i=0; i<=4; i++) for (j=0; j<=4; j++) { printf("Digite o valor do numero na posicao i=%d | j=%d: ",i,j); scanf("%d",&m[i][j]); } printf("\n"); for (i=0; i<=4; i++) for (j=0; j<=4; j++) { if(m[i][j]==m[i][j]) { printf("Valores repetidos.\n"); m[i][j]=0; } } printf("\nD= [\n"); for (i=0; i<=4; i++) { for (j=0; j<=4; j++) { printf("%8.2d",m[i][j]); } printf("\n"); } printf("\n]\n"); system("PAUSE"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 20, 2008 aqui você esta comparando uma posição da matriz com ela msm????? for (i=0; i<=4; i++) for (j=0; j<=4; j++) { if(m[i][j]==m[i][j]) { printf("Valores repetidos.\n"); m[i][j]=0; } } A seguir ler um número Xfaça a leitura do numero.ai você compara com '==' e se for 'ok', move 0 pra posicao da matriz.. tipo: ler numero; para i de 0 até 5 faça para j de 0 até 5 faça se (numero == matriz[i][j]) então matriz[i][j] = 0; fim_se fim_para fim_para []'s Compartilhar este post Link para o post Compartilhar em outros sites
forbid 0 Denunciar post Postado Outubro 20, 2008 Boa tarde. Colega, eu não entendi a parte de ler o número X: ler numero; Poderia explicar melhor? Estou começando em programação.. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 20, 2008 é q eu escrevi em portugues estruturado.. para C ficaria assim: scanf("%d", &numero); []'s Compartilhar este post Link para o post Compartilhar em outros sites
forbid 0 Denunciar post Postado Outubro 26, 2008 Amigos, eu ainda nao consegui! Tá dizendo que todos números existem e que todos números não existem! Não sei o que tá errado! O código eu escrevi assim: #include <stdio.h> #include <stdlib.h> int main() { int m[5][5]; int i,j,x; for (i=0; i<=4; i++) for (j=0; j<=4; j++) { printf("Digite o valor do numero na posicao i=%d | j=%d: ",i,j); scanf("%d",&m[i][j]); } printf ("Digite um numero para sua existencia ser verificada na matriz D: "); scanf("%d",&x); for (i=0; i<=4; i++) for (j=0; j<=4; j++) { if (x==m[i][j]); { printf("Este numero existe na matriz!"); m[i][j]=0; } if (x!=m[i][j]) printf("Este numero nao existe!"); } printf("\nD= [\n"); for (i=0; i<=4; i++) { for (j=0; j<=4; j++) { printf("%8.2d",m[i][j]); } printf("\n"); } printf("\n]\n"); system("PAUSE"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Outubro 26, 2008 if (x==m[j]); Tá vendo o ponto e vírgula ali?? Compartilhar este post Link para o post Compartilhar em outros sites
forbid 0 Denunciar post Postado Outubro 27, 2008 if (x==m[j]); Tá vendo o ponto e vírgula ali?? Ah.. por isso que o else não tava funcionando! Mas o programa ainda não está certo... Quando ele pede pra digitar qual valor pra verificar se existe, eu digito algum repetido e ele troca por zero, mas ainda está dizendo pra todos valores que são iguais e não iguais (tá dando todos printf do if e do else) Alguma dica pra arrumar isso? #include <stdio.h> #include <stdlib.h> int main() { int m[5][5]; int i,j,x; for (i=0; i<=4; i++) for (j=0; j<=4; j++) { printf("Digite o valor do numero na posicao i=%d | j=%d: ",i,j); scanf("%d",&m[i][j]); } printf ("Digite um numero para sua existencia ser verificada na matriz D: "); scanf("%d",&x); for (i=0; i<=4; i++) for (j=0; j<=4; j++) { if (x==m[i][j]) { printf("Este numero existe na matriz!"); m[i][j]=0; } else printf("Este numero nao existe!"); } printf("\nD= [\n"); for (i=0; i<=4; i++) { for (j=0; j<=4; j++) { printf("%8.2d",m[i][j]); } printf("\n"); } printf("\n]\n"); system("PAUSE"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Outubro 27, 2008 Olha cara não saquei o que você quis dizer, aqui parece que rodou direitinho, quando o número existe na posição checada aparece que ele existe quando não existe aparece que não existe acho que é isso que você quer mudar certo? Grave em uma nova variável "int existe = 0;" Aí aqui você adiciona: if (x==m[i][j]) { m[i][j]=0; existe = 1; } Aí depois você adiciona, fora do loop. if(existe) { printf("Este numero existe na matriz!"); } else { printf("Este numero nao existe!"); } Compartilhar este post Link para o post Compartilhar em outros sites
forbid 0 Denunciar post Postado Outubro 27, 2008 Olha cara não saquei o que você quis dizer, aqui parece que rodou direitinho, quando o número existe na posição checada aparece que ele existe quando não existe aparece que não existe acho que é isso que você quer mudar certo? Grave em uma nova variável "int existe = 0;" Aí aqui você adiciona: if (x==m[i][j]) { m[i][j]=0; existe = 1; } Aí depois você adiciona, fora do loop. if(existe) { printf("Este numero existe na matriz!"); } else { printf("Este numero nao existe!"); } Agora sim deu certo... era isso mesmo! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Valeu amigo! Abração! Compartilhar este post Link para o post Compartilhar em outros sites