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  
Caue Santana

Comparar os dados de um vetor

Recommended Posts

Olá, estou com uma dúvida num programa que estou fazendo. É assim:

Tenho que fazer uma comparação no vetor para que as datas de um arquivo não se repitam.

Tentei usar o strcmp mas n entendi muito bem como funciona.

 

E tem um outro ponto, para cada comparação entre os elementos tenho que fazer uma soma de valores onde a parte das datas se repetem e caso não repita, eu coloco as datas em outro vetor,  mas pelo que eu vi, só dá para comparar o vetor inteiro ao invés de parte por parte, mas posso estar enganado, como disse n entendi muito bem como funciona.

 

Então como fazer a comparação tal que a cada comparação eu posso fazer uma determinada função?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Caue Santana  O melhor seria que tu postasse o código que já fez. Você quer comparar dois vetores ou elementos dentro de um único vetor? Ao que eu entendi é que você tem que comparar cada elemento com todos os outros para ver se existem elementos repetidos dentro de um mesmo vetor, é isso mesmo? poste até onde você já chegou neste código.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • @Gustavo.Loggin  Bom, eu tentei comparar 2 vetores, mas de qualquer forma esses vetores têm o mesmo valor, então se for mais fácil comparar elementos de um único vetor sinta-se a vontade para mudar o que for preciso

     

    #include<stdio.h>
    #include<time.h>
    #include<stdlib.h>
    #include <string.h>
    #include <locale.h>
    
    struct Final
    {
    	int ano, mes, dia, codigo;
      	float qtde, total;
    };
    
    struct Comp 
    {
      int ano, mes, dia, codigo;
      float qtde, preco;
    };
    
    struct TVendasT 
    {
      int ano, mes, dia, codigo;
      float qtde, preco;
    };
      
    int main() 
    {
      FILE *Arq, *Arq1;
      int QtdeVenda = 0;
      int QtdeVend = 0;
      int QtdeVendasDia = 0;
      int i, cont, g, h, j, x, y, z, teste;
      int *A1, *A2, *M1, *M2, *D1, *D2, *Cod1, *Cod2, *d, *a, *m;
      float *Q1, *Q2, *P1, *P2;
      int *Ano[z], *Mes[y], *Dia[x];
      float Total[x], *Media[x];
      char S[100];
      char Q[100];
      char K[100];
      float var1, var2;
      TVendasT *VT;
      Comp *C;
      Final *F;
       	
     Arq = fopen("vendas.txt", "r");
      while (fgets(Q, sizeof(Q), Arq) != NULL) 
        QtdeVenda++;
        fclose(Arq);
        
        
      D1 = (int *)malloc(sizeof(int) * QtdeVenda);
      M1 = (int *)malloc(sizeof(int) * QtdeVenda);
      A1 = (int *)malloc(sizeof(int) * QtdeVenda);
      Cod1 = (int *)malloc(sizeof(int) * QtdeVenda); 
      Q1 = (float *)malloc(sizeof(float) * QtdeVenda);
      P1 = (float *)malloc(sizeof(float) * QtdeVenda);
    
      D2 = (int *)malloc(sizeof(int) * QtdeVenda);
      M2 = (int *)malloc(sizeof(int) * QtdeVenda);
      A2 = (int *)malloc(sizeof(int) * QtdeVenda);
      Cod2 = (int *)malloc(sizeof(int) * QtdeVenda); 
      Q2 = (float *)malloc(sizeof(float) * QtdeVenda);
      P2 = (float *)malloc(sizeof(float) * QtdeVenda);
     
         Arq = fopen("vendas.txt", "r");
      while (fgets(S, sizeof(S), Arq) != NULL) 
        QtdeVend++;
      VT = (TVendasT *)malloc(sizeof(TVendasT) * QtdeVend);
      fclose(Arq);
      
    
      
      Arq = fopen("vendas.txt", "r");
      i = 0;  
      		while (fscanf(Arq, "%d;%d;%d;%d;%f;%f;\n", &A1[i], &M1[i], &D1[i], &Cod1[i], &Q1[i], &P1[i]) != EOF)
        	{
        		teste++;	
    			i++;  
    		}
    	fclose (Arq);
    	printf("%d\n", i);
    	//Eu coloquei esses printf para saber se estava tudo ocorrendo bem, antes eu iria usar a variável "teste" mas não deu muito certo.
    	teste--;
    	printf("%d\n\n", teste);
    	
    	
        //Aqui, ele pega todos os valores que leu do Arq "vendas.txt" e salva a partir da 2ª linha
        
        /*
    	Eu fiz isso pois eu decidi fazer a comparação entre dois vetores, mas se for mais fácil comparar os elementos de um vetor
    	pode ser dessa forma também, apenas tem que fazer a comparação.
    	*/
    	Arq = fopen("totvendas.txt", "w");
      for(i = 1; i < QtdeVend; i++)
      {
    	fprintf(Arq, " %d;%d;%d;%6.2f;%5.2f; \n", D1[i], M1[i], A1[i], Q1[i], P1[i]);
      }
      		fclose(Arq);
      		 
      		 //Esse foi um teste para saber se até aqui está OK.
      		 printf("PI\n\n");
      		 system("pause");
      		 
    	//Arquivo "totvendas.txt" que recebeu os valores do "vendas.txt" a partir da segunda linha
    	Arq = fopen("totvendas.txt", "r");
      	i = 0;  
      		while (i <= QtdeVenda-1)
    		  {
    		  	fscanf(Arq, "%d;%d;%d;%f;%f;\n", &D2[i], &M2[i], &A2[i], &Q2[i], &P2[i]);
    		  	i++;
    		   } 
        		
        
    	fclose (Arq);	
    	printf("foi\n");
    	printf("%d", i);
    	
    //	  for(i = 0; i < QtdeVend; i++)
      //{
    	//		if(D2 == 0 || M2 == 0 || A2 == 0 || D2 == 0)
    	//		printf(" %d;%d;%d;%6.2f;%5.2f; \n", D2[i], M2[i], A2[i], Q2[i], P2[i]);
    
    //  }
      		//fclose(Arq);
      		printf("\nPA\n");
    
      	Arq = fopen("totvendas.txt","r");  	
    		 
    	i=0;	 
    	x=1;
    	
    	
    //	*Total[0] = P1[0];
    //	*Dia[0] = D1[0];
    	
    	//Esse	foi o último teste que tentei fazer
    	cont=0;
    	while (D1 == D2)
    	{
    		Total[i] = P1[cont];
    		cont++;
    	}
    	
    	printf("Piu\n");
    	
    	//Abaixo estão vários teste que eu tentei fazer para rodar, mas n obtive êxito
    	
    //	printf("%d \t %d\n", Total[0], P1[0]);
    //	printf("%d \t %d\n", Dia[0], D1[0]);
    	
    /*	
    	for(cont=1; cont<QtdeVenda;cont++)
    	{
    		if (D2 == 0)
    		{
    			Total[x] += g;
    			break;
    		}
    		
    		if (D1[cont] == D2[cont])
    		{
    			g = P1[cont];
    			Total[x] += g;
    			g = NULL;
    		}
    		else
    		{
    			h = D1[cont];
    			Dia[x] = h;
    			h = NULL;
    			x++;
    		}
    	}
    */	
    //	for(cont =0; cont<x;cont++)
    //	{
    //		printf("%d \t %d", Dia[cont], Total[cont]);
    //	}
    
    
    	
    //	{
    //		if (D1 == D2)
    //	}	
    		
    		
    /*		//else
    		{
    			if(D1 != D2)
    			{
    				Dia[i] = D1[i];
    				x++;
    			}
    		}
    		
    
    		
    		i++;
    	} 		
    */ 	
      //  fclose(Arq);
    //	system("pause");
    	
     //	printf("%d \t %d", i, j);
     	
     	
     	
     	
     	
    	
    /* 	
    	for(cont=0;cont<QtdeVend;cont++) 		
    	{
    		A2[cont] = A1[cont];
    		M2[cont] = M1[cont];
    		D2[cont] = D1[cont];
    	}
    */
    	
    	
    //	system("pause");
    	printf("PI");
    }
    

     

    Estou anexando também o arquivo -> vendas.txt

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @Caue Santana  Cara, a melhor forma seria comparação de um elemento com todos os outros em um laço de repetição FOR e uma estrutura condicional IF para realizar as medidas necessárias caso encontre um valor igual.

     

    Ex:

    int vetor[10];
    
    for(int i=0; i<10; i++){
      for(int j=1; j<10; j++){
      	if(vetor[i]==vetor[j]){
          		cout<<"Valores iguais!";
        	}
      }
    }

    Desculpe por eu não analisar mais a fundo seu código e te sugerir mudanças específicas, é que as provas de fim de ano da faculdade estão tomando todo meu tempo... :tw_dissapointed:

    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

    ×