Ir ao conteúdo

Posts recomendados

Postado

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?

 

Postado

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

Postado

@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

Postado

@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:

Visitante
Este tópico está impedido de receber 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!