Ir ao conteúdo

Dúvida em um programa utilizando Matriz!


Houseofzuera

Posts recomendados

Postado
Elabore um programa que faça a entrada de dados para duas matrizes formadas, cada uma, por 20 elementos do tipo caracter. Após a entrada dos valores para cada matriz, faça um processamento que realize uma pesquisa utilizando as duas matrizes de modo a identificar os valores em comum que deverão ser armazenados, sem repetição, numa terceira matriz. Ao final do processamento exiba os conteúdos de cada matriz. Exemplo:
 
MATRIZ 1
|A|*|B|E|$|h|A|c|*|f|E|$|x|D|J|*|m|E|$|x|
 
MATRIZ 2
|s|*|d|E|$|x|p|c|*|f|E|$|x|M|A|*|?|E|$|;|
 
MATRIZ 3
|A|*|E|$|c|f|x|
 
 
OBSERVAÇÕES:
Não utilizar funções e não utilizar Tabela ASCII
 
Eu fiz uma parte do código, porém, não sei como não repetir os caracteres. Olhem o código:
 
int main()
{
char Tab1[19];
char Tab2[19];
char Tab3[19];
int Lin;
 
for(Lin=0;Lin<19;Lin++)
{
printf("\nCaracteres1\n");
scanf(" %c", &Tab1[Lin]);
}
for(Lin=0;Lin<19;Lin++)
{
printf("\nCaracteres2\n");
scanf(" %c", &Tab2[Lin]);
}
 
printf("\nCaracteres1\n");
for(Lin=0;Lin<19;Lin++)
{
printf(" %c", Tab1[Lin]);
}
printf("\nCaracteres2\n");
for(Lin=0;Lin<19;Lin++)
{
printf(" %c", Tab2[Lin]);
}
printf("\nCaracteres3\n");
for(Lin=0;Lin<19;Lin++)
{
 
if(Tab1[Lin]==Tab2[Lin])
{
Tab3[Lin]=Tab1[Lin];
printf(" %c", Tab3[Lin]);
}
}
 
}

 

 

Quem puder ajudar, agradeço! :D

Postado

Segue uma ideia (Não que seja a melhor maneira-fica o gancho para melhora-lo)

#include<stdio.h>#define MAX 4int main(){char Tab1[MAX];char Tab2[MAX];char Tab3[MAX];int Lin,Lin2=0,Lin3=0,Lin4=0,existe; for(Lin=0;Lin<MAX;Lin++){	puts("\nCaracteres1");	Tab1[Lin]=getchar();	fflush(stdin);}for(Lin=0;Lin<MAX;Lin++){	puts("\nCaracteres2\n");	Tab2[Lin]=getchar();	fflush(stdin);} puts("\nprocessando");for(Lin=0;Lin<MAX;Lin++){	existe=0;	for(Lin2=0;Lin2<MAX;Lin2++)	{		if(Tab1[Lin2]==Tab2[Lin])		{			for(Lin4=0;Lin4<Lin3;++Lin4)				if(Tab3[Lin4] == Tab2[Lin]){					existe=1;					break;				}			if(existe != 1)				Tab3[Lin3++]=Tab2[Lin];		}		if(existe == 1)			break;	}}puts("\nCaracteres1\n");for(Lin=0;Lin<MAX;Lin++){	printf(" %c",Tab1[Lin]);}puts("\nCaracteres2");for(Lin=0;Lin<MAX;Lin++){	printf(" %c", Tab2[Lin]);}puts("\nCaracteres3"); for(Lin=0;Lin<Lin3;Lin++){	printf(" %c", Tab3[Lin]);}}
Postado

Outra forma, com uma variável de controle "ok" para informar se o caractere já foi copiado para o terceiro vetor. Caso não tenha, a variável flag vai incrementando o índice a medida que novos caracteres devem ser incluídos.

 

#include <stdio.h>int main(){    char v1[20] = "A*BE$hAc*fExDJ*mE$x",         v2[20] = "s*dE$xpc*fE$xMA*?E$;",         v3[20];    int n1,n2,n3;    int ok = 0, flag = 0;    for(n1 = flag = 0; n1 < 20; n1++){                for(n2 = 0; n2 < 20; n2++){            if(v1[n1] == v2[n2]){                for(n3 = 0; n3 <= n1; n3++){                    if(v3[n3] == v1[n1]){                        ok = 0;                        break;                    }else{                        ok = 1;                    }                }                if(ok){                    v3[flag] = v1[n1];                    flag++;                }            }        }    }    for(n3 = 0; n3 < flag; n3++){        printf("%c\n", v3[n3]);    }    return 0;}

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!