Pela primeira vez me vi perdido nos exercicios acho que não peguei bem a lógica, mas estou estudando para entender. Vou mostrar meu código fonte por completo é pequeno e a questão. Ai gostaria da ajuda de voces para entender aonde estou errando.
-----Leia duas matrizes 20 x 20 e escreva os valores da primeira que ocorrem em qualquer posição da segunda.
#include <stdio.h> #include <stdlib.h>
int main(void) { int matrizx[3][3], matrizy[3][3], i, j, cont = 0; printf("----Primeira Matriz----\n"); for (i = 0; i < 3; i++) { printf(“Informe os X valores da %dº linha \n”, (cont = cont + 1)); for (j = 0; j < 3; j++) { scanf("%d", &matrizx[i][j]);
}
}
printf("----Segunda Matriz----\n");
cont = 0;
for (i = 0; i < 3; i++) {
printf("Informe os Y valores da %dº linha \n", (cont = cont + 1));
for (j = 0; j < 3; j++) {
scanf("%d", &matrizy[i][j]);
}
}
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
if (matrizx[i][j] == matrizy[i][j]) {
printf("%d", matrizx[i][j]);
}
}
}
return EXIT_SUCCESS;
}
Pessoal nesse ultimo bloco que é resṕonsável por fazer a analise que é a questão, ele só consegue pegar os primeiros valores repetido, que ele encontrar entre as matrizes porem somente a primeira linha que ele encontrar que os valores são iguais e exibido tais valores mas ele não prossegui com a analise para exibir outros valores. Tentei utilizar uma variavel auxiliar para ajudar a armazenar mas sem sucesso. Aguardo respotas galera!
Para ficar melhor, você deve criar uma função responsável por testar se um certo número está presente na matriz!
Basicamente você terá que pecorrer toda matriz em busca desse elemento!
Criar uma função? Desculpe sou novo ainda nisso. Mas estou pegando aos poucos seu raciocínio. Ainda não entramos bem no conteúdo de classes e funções isso será no semestre que vem da faculdade. Mas o que estou entendendo desse problema é que para percorrer toda essa matriz vou ter que criar um outro laço de repetição seria isso? Provavelmente um laço encadeados, se eu estiver errado estou aqui para aprender. Sinta se a vontade para explicar ou citar algum artigo que aprofunde um pouco mais nessa questão
Esse é o modo que fiz usando uma função responsável por checar se um número está presente na matriz.
#include <stdio.h>
#include <stdlib.h>
/* Passando a matriz de tamanho 3x3
E o número que eu quero verificar!
*/
int buscarNaMatriz(int m[3][3], int num) {
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(m[i][j] == num) {
return 1; // Encontrei o número
}
}
}
return 0; // Não achei o número
}
int main() {
int matrizA[3][3] = {{0, 1, 2},
{3, 4, 5},
{6, 7, 8}};
int matrizB[3][3] = {{10, 0, 9},
{1, 22, 3},
{11, 23, 7}};
/* Verificar se os elemento da matriz A,
* estão presente na matriz B!
*/
printf("Números presentes nas duas matrizes:\n");
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
int num = matrizA[i][j];
if(buscarNaMatriz(matrizB, num) == 1) {
printf("%d\n",num);
}
}
}
return 0;
}
Se não quiser introduzir o uso de funções agora, você pode colocar os 4 for encadeado!!!
A ideia é basicamente, para cada elemento da matriz A eu devo pecorrer toda a matriz B em busca desse elemento, se eu encontrar, devo mostrar esse valor na tela.
Examente essa é a ideia. Trabalha com função é está mais interessante do que eu criar mais um for encadeado, vc criou uma matriz com nome de m, e passou para ela o num, ele está zerada neh? é como se eu dizesse para o sistema hey inicialmente crie uma matriz apenas de zero. Eu acho que é isso a primeira etapa. O return 1 é possitivo é para informar que quando os valores iguais forem encontrado você vai returna um true? Certo? E o return 0 é para informar que não encontrou valor, false. Isso devido a condição que você definiu lá em cima. Até aqui eu falei alguma besteira? Então no último laço você faz a armazena a matrizA no num deixando ela livre para receber outros valores. Acho que até aí eu entendi uma pergunta nesse caso o num é um parâmetro ? if(buscarNaMatriz(matrizB, num) == 1) e aqui apenas nessa condição o que examente eu estou mandando o sistema fazer?
Na verdade, buscaNaMatriz é uma função que recebe dois parâmetros uma matriz de inteiros e número do tipo int ela apenas define um conjunto de procedimentos que deve ser realizado. Depois de definir a função eu devo chama-la de fato e passar o parâmetro necessário.
Nesse trecho eu tô “chamando” a função que foi definida lá em cima, passando a matriz que eu quero verificar e o número. Ambos são argumentos para essa função. Depois disso ela vai retornar 1 se encontrar o número ou 0 se não, eu uso o if para verificar isso!