Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
Arthurdr

Problema com matriz

Recommended Posts

Estou com problema na hora de salvar os dados a matriz, para depois mostralos. Quando uso somente 1 coluna, a matriz fica normal, mas quando uso mais de 1 coluna, os valores repetem.

Exemplo: Quando a resposta deveria ser:  1   3   5                ela deixa assim:  1   2   4               
                                                                     2   7   9                                           2   4   6

                                                                     4   6   10                                         4   6   10

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main()
{
	
int M, N, cont, i, j, k, x, aux, a, b, w, ocorrencia_direta[cont], ocorrencia_complementar_invertida[cont], salva_direto[a+1][cont+1], salva_invertido[b+1][cont+1];

	printf ("\n				   PROJETO GENOMA \n\n	        * O tamanho maximo de uma cadeia e 15000 letras *\n   * As cadeias inseridas so poderao conter os caracteres 'A', 'C', 'T', 'G' *\n		* A cadeia t deve ser maior ou igual a cadeia p *\n     * Para executar o programa digite o tamanho das cadeias p e t como 0 *\n\n");
	
	do
	{
	cont=cont+1;
		
		do
		{
			do
			{
			printf ("\n\n	Digite os tamanhos das cadeias p e t:	");
			scanf ("%i %i", &M, &N);
			if((0>M) || (M>15000) || (0>N) || (N>15000) || (M==0 && N!=0) || (N==0 && M!=0))
				printf ("\n\n		!!!VALORES INVALIDOS!!!\n\n");
			}while ((0>M) || (M>15000) || (0>N) || (N>15000) || (M==0 && N!=0) || (N==0 && M!=0));

			if (M>N)
				printf ("\n\n		!!!VALOR INVALIDO!!!\n	!!!VALOR DE p SUPERIOR AO VALOR DE t!!!\n\n");
		}while (M>N);
			
		if ((M!=0) || (N!=0))
		{
	
			char p[M+1], t[N+1];
			int teste[M], letrasT[N], letraT, letrasP[M], letraP;
			bool igual = true ;
		
			do
			{
				do
				{
					i=0;
					letraP=0;
					letrasP[i]=0;
					printf ("\n	Digite a cadeia p: ");
					scanf ("%s", p);
					if (M!=strlen(p))
						printf ("\n\n		!!!TAMANHO DE p INVALIDO!!!\n\n");
					for (i=0; i<M; i++)
						if ((p[i]!='A') && (p[i]!='C') && (p[i]!='G') && (p[i]!='T'))
							letrasP[i]=1;
						else
							letrasP[i]=0;
					for (i=0; i<M; i++)
						if (letrasP[i]==1)
							letraP=1;
					if (letraP==1)
						printf ("\n\n		!!!CADEIA DE p INVALIDA!!!\n\n");
				}while (letraP==1);
			}while (M<strlen(p));
		
			do
			{
				do
				{
					i=0;
					letraT=0;
					letrasT[i]=0;
					printf ("\n	Digite a cadeia t: ");
					scanf ("%s", t);
					if (N!=strlen(t))
						printf ("\n\n		!!!TAMANHO DE t INVALIDO!!!\n\n");
					for (i=0; i<N; i++)
						if ((t[i]!='A') && (t[i]!='C') && (t[i]!='G') && (t[i]!='T'))
							letrasT[i]=1;
						else
							letrasT[i]=0;
					for (i=0; i<N; i++)
						if (letrasT[i]==1)
							letraT=1;
					if (letraT==1)
						printf ("\n\n		!!!CADEIA DE t INVALIDA!!!\n\n");
				}while (letraT==1);
			}while (N<strlen(t));
	
		
			// ocorrencia direta
			a=0;
			ocorrencia_direta[cont]=0;
			for (i=0; i<strlen(t); i++)
				{
					igual = true;
					if (t[i]==p[0])
						{
														
							aux=i+1;
							teste[0]=1;
							for (j=1; j<strlen(p); j++)
							{
									if (p[j]==t[aux])
								{
									teste[j]=1;
									
								} 
								else 
								{
									teste[j] = 0; 
								}
								aux++;
							}
							
						
							for (x=0; x<strlen(p); x++)
							{
								if (teste[x]==0)
									igual = false;	
								  
							}
							if(igual == true){
								ocorrencia_direta[cont]++;
								salva_direto[a][cont]=i+1;
								a++;
							}
						}
				}
				
				if(ocorrencia_direta[cont]==0)
				{
					salva_direto[a][cont]=0;
					a++;
				}
			
		//ocorrencia complementar invertida	

			for(i=0;i<strlen(p); i++)
			{
				if(p[i]=='A')
				{
					p[i]='T';	
				}
				else if(p[i]=='C')
				{
					p[i]='G';	
				}	
				else if(p[i]=='G')
				{
					p[i]='C';	
				}
				else if(p[i]=='T')
				{
					p[i]='A';	
				}	
				
			}
			
			char auxiliar;
			for(i=0;i<M/2; i++)
			{
		
		      auxiliar=p[i]; 
		      p[i]=p[M-1-i];
		      p[M-1-i]=auxiliar;  
		   
			}
			
			b=0;
			ocorrencia_complementar_invertida[cont]=0;
				for (i=0; i<strlen(t); i++)
				{
					igual = true;
					if (t[i]==p[0])
						{
														
							aux=i+1;
							teste[0]=1;
							for (j=1; j<strlen(p); j++)
							{
									if (p[j]==t[aux])
								{
									teste[j]=1;
									
								} 
								else 
								{
									teste[j] = 0; 
								}
								aux++;
							}
							
						
							for (x=0; x<strlen(p); x++)
							{
								if (teste[x]==0)
									igual = false;	
								  
							}
							if(igual == true){
								ocorrencia_complementar_invertida[cont]++;
								salva_invertido[b][cont]=i+1;
								b++;
							}
						}
				}
				
				if(ocorrencia_complementar_invertida[cont]==0)
				{
					salva_invertido[b][cont]=0;
					b++;
				}

		}
		
	}while ((M!=0) && (N!=0));
	
	w=cont;
	
	for (cont=1; cont<w; cont++)
	{
	printf ("\n\n	Teste %i\n	Ocorrencia Direta:  ", cont);
		for (a=0; a<ocorrencia_direta[cont]; a++)
			printf ("%i  ", salva_direto[a][cont]);
			
	printf ("\n	Ocorrencia Complementar Invertida:  ");
		for (b=0; b<ocorrencia_complementar_invertida[cont]; b++)
			printf ("%i  ", salva_invertido[b][cont]);
	}
	
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Cara, você postou um código gigante e sem nenhuma função. Sem falar que ta usando muito do while, o que é incomum. Posta só a parte que da erro e usa mais funções pra nao ter um código tão fat.

 

Ah, também não faça um printf tão gigante com tantos \n. Faça vários printf. É melhor para os outros lerem

 

Editado por lucasoad399

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×