Ir para conteúdo

POWERED BY:

Arquivado

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

Jose_@ugusto

[Resolvido] Usar uma função que leia tres arquivos e crie um com

Recommended Posts

A main está escrita abaixo, preciso de uma ajuda de como montar a função.

 

 

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

int main(int argc, char *argv[])
{
const int tamA = 10;
int numerosA[tamA];
const int tam = 20;
int numerosB[tam];
const int tamC = 30;
int numerosC[tamC];

if(argc < 4)
{
printf("nErro: Digite o nomes dos arquivos !!!nn");
system("PAUSE");
exit(1);
}
Leitura_Arquivo_Inteiros(argv[1],numerosA,lidoA);
Leitura_Arquivo_Inteiros(argv[2],numerosB,lidoB);
Uniao_Vetores(numerosA,tamA,numerosB,tam,numerosC ,tamC)
Escreve_Arquivo_Inteiros(argv[3],numerosC,tamC);
system("PAUSE");
return(0);
}

 

obrigado....

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza vow te ajudar, + primeiro qro saber ql a duvida.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

quitZAUMMM boa tarde vou te passar qual seria a duvida é q meu amigo não soube se expressar sou da mesma sala q ele =D escrevi em maiuscula o q tenho q fazer na função UNIAO_VETORES

vou te mandar o meu codigo e valeu pela ajuda é q tenho q entregar isso amanhã e agarrei nessa parte =(

 

 

 

/**************************************************************/
/* Escrever funções que completam o programa abaixo:						  */ 
/*************************************************************/
#include <stdio.h>
#include <stdlib.h>

void leituras (char *argv, int *vet, int *qnt);
int Uniao_Vetores(vetA,qntA,vetB,qntB,vetC,qntC);

int main(int argc, char *argv[])
  {

	int qntA = 10 , vetA[qntA];
	int qntB = 20 , vetB[qntB];
	int qntC = 30 , vetC[qntC];   
   
	if(argc < 3) // AKI ESTA 3 PQ AINDA NAO COLOQUEI O 3 ARQUIVO ASSIM Q INSERIR PASSARA PARA O VALOR = 4
	{
		 printf("\nErro: Digite o nomes dos arquivos !!!\n\n");
		 system("PAUSE");
		 exit(1);
	}
	
	leituras(argv[1],vetA,&qntA);
	system("pause");
	system("cls");
	leituras(argv[2],vetB,&qntB);
	system("pause");
	system("cls");
	
	Uniao_Vetores(vetA,qntA,vetB,qntB,vetC,qntC); // NECESSITO CRIAR UMA FUNÇÃO QUE JUNTE O VETOR A COM O VETOR B SEM NUMEROS REPETIDOS E PASSAR VET C PARA UM ARQUIVO	
	

	Escreve_Arquivo_Inteiros(argv[3],numerosC,tamC);
	system("PAUSE");
	return(0); 
  }
  
void leituras (char *argv, int *vet, int *qnt)
{
  FILE *arquivo;
  int lidos, j;
  
  if ((arquivo = fopen(argv,"r")) == NULL)
	{
	   printf("Erro ao abrir arquivo!!!\n\n");
	   system("PAUSE");
	   exit(1);
	}
  
  lidos = 0;	
  
  while(fscanf(arquivo, "%d", &vet[lidos]) == 1)
	  { 
		   lidos++;
	  }

  fclose(arquivo);

  printf("\nNumeros lidos : %d\n",lidos);
  printf("Os numeros sao:\n");

  for(j=0; j<lidos; j++) 
	 { 
		printf("%d\n", vet[j]);
	 }
}

int Uniao_Vetores(vetA,qntA,vetB,qntB,vetC,qntC)
{
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza vow te ajudar, + primeiro qro saber ql a duvida.

 

[]s

 

 

Eu preciso criar uma funçao que leia tres arquivos de inteiros de tamanhos variados e pega todos os valores lidos e coloca-los em um arquivo só, excluindo os valores repetidos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom em portugol você sabe fazer a uniao de 2 vetores???

para saber c estará repetido, você tera q compará-lo com os dados do outro vetor..

e para gravar os dados um fprintf resolve..

 

tente pelo menos esboçar a função para eu ver onde vcs estão travando na lógica.. assim poderei ajudá-los melhor..

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue meu codigo tosko pra unir vetores muita coisa esta comentada pq estava tentando fazer funcionar

 

 

void Uniao_Vetores(int *numerosA, int tamA, int *numerosB, int tamB, int *numerosC, int *tamC)
{
	  int a = 0, b = 0, c = 0, lidos = 0;
//	  int i, j = 0;
	  
//	  for (i=0;i<*tamA;i++)
	  
	  for (a=0;a<tamA;a++)
	  {
			for(b=0;b<tamB;b++)
			{										
				if (numerosA[a] = numerosB[b])
				{
					numerosC[c] = numerosA[a];
					c++;
					a++;
					lidos++;
				}
				else
				{
					numerosC[c] = numerosB[b];
					c++;
					b++;
					lidos++;
				}
		 
		  }
//			numerosC[j] = numerosA[i];
//			j++;
	  }
//	  for (i=0;i<*tamB;i++)
//	  {
//			numerosC[j] = numerosB[i];
//			j++;
//	  }
	  *tamC = lidos;
	  printf ("\n\nArquivo f1.txt e f2.txt concatenados!!!\n\n");	  
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom eu faria algo assim:

void uniaVetores(int iVetA[],int iVetB[], int iElemA, int iElemB){
   int iVetC[iElemA+iElemB], iAux = 0;
   int iInd = iElemA;
   for(int i=0;i<iElemA;i++) iVetC[i] = iVetA[i];
   for(int j=0;j<iElemB;j++) {
	   iAux = 0;
	   for (int x=0; x<iElemA;x++) If (iVetB[j] == iVetC[x]) iAux = 1;
	   If (iAux <> 1)  iVetC[iInd++];
	}
}
Nossa sem um compilador por perto soh pessimo HFADUSH..

tomare q minha lógica esteja certa, fiz as pressas aki..

volte a postar ;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quit não consegui fazer a adaptação para o meu programa , no exemplo acima você declara o vetor C como local , sendo q ele deve ser passado por parametro direto da main , e esse codigo (<>) seria igual ao (!=) ??? pois o compilador aki não o reconheceu !!!

 

Caso você tente novamente teria como você me ajudar comentando o codigo pois nao entendi muito a sua logica sou meio noob pra programar ainda xD

 

Agradeço demais pela ajuda , valeu !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom é q eu fiz meio por cima, o diferente é o != msm.. e é soh você passar o vetor por referencia eu coloquei local + soh passar ele no parametro..

bom minha lógica:

 

*passo o vetorA inteiro pro VetorC.

*kd item do vetorB eu comparo com o VetorC c jah existir iAux = 1, no final do loop eu vejo c iAux for diferente de 1, ow seja naum existe, entaum esse novo elemente é add no vetorC..

 

entendeu??

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.