Ir para conteúdo

POWERED BY:

Arquivado

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

Power2d

[Resolvido] Problema com armazenação de array em struct

Recommended Posts

Pessoal o problema é o seguinte

 

meu programa pega 3 numeros decimais e os transformam em binario.

em outro calculo cada binario gera um outro numero ( 0 ou 1), ou seja, terei 3 numeros agoras.

 

exemplo

13,18,22 -> passam para binario -> geram 0, 1, 0.

 

esses '0','1','0' estam em um array. Meu problema é passar esses (ex.) 0','1','0' para uma struct, ou seja na minha struct

queria que 't->paridade' esteja com o valor '010'.

 

Segue o codigo, espero que alguém tenha uma luz..

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

typedef struct
{
		int paridade[4];
		int mens;
		int fonte;
		int destino;
		int valido;
}MENS;
 

main()
{
   int i,v=0,j,f,paridade,b=0,binario[100],numero,cont=0,calpari[5];
   char pari[5];
   MENS *t;
   
   t->mens=13;
   t->fonte=18;
   t->destino=22;
   
  for(f=0;f<3;f++){
   
   if(f==0){
			numero=t->mens;
		   }
   if(f==1){
			numero=t->fonte;
			}
   if(f==2){
			numero=t->destino;
			}	
								
   i=-1;
   while(numero!=0)
   {
	  i++;
	  binario[i] = numero % 2;
	  numero = numero / 2;
   }
   b=i;
	  printf("BINARIO: ");
   while(i >= 0)			   //escrevendo numero em binario na ordem certa
   {
	  
	  printf("%d",binario[i]);
	  i--;
   }
   
   for(j=0;j<=b;j++)	   //Contador de Bits 1
   {
			  
			  if(binario[j]==1)
			  {
			  cont++;
			  }
   }
   
   printf("\nNUMERO de 1: %d\n:",cont);  
   
   cont=cont%2; // Bit Paridade: se for impar=0, se for par=1
   if(cont==1)
   {
		 paridade=0;
   }
	if(cont==0)
	{ 
		 paridade=1;
	}	
	
   cont=0;
   printf("Bit Paridade: %d\n",paridade);
   
   calpari[v]= paridade;	//pari[v] = a sequencia de paridade
   v++;			
	 
   printf("\n");
   system("PAUSE");
   system("cls");
  
}
  printf("\nSEQUENCIA:");

	  for(v=0;v<3;v++){		   
	   printf("%d",calpari[v]);
					   }
					   printf("\n");		  
												//  :!: PROBLEMA AQUI, Não sei como faço para armazenar o array calpari[] na struct( t->paridade)
					   
					   printf("PARIDADEEE: %s",	  );		 
   
system("pause");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce manipula o array da mesma forma na struct.

Veja como poderia ficar:

 

for(v=0;v<3;v++){		   
		 printf("%d",calpari[v]);
	  }
	  printf("\n");   

//  :!: PROBLEMA AQUI, Não sei como faço para armazenar o array calpari[] na struct( t->paridade)	   
	  for(v=0;v<3;v++){		   
		 t->paridade[v] = calpari[v];
	  }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito Obrigado Kandrade!

 

Só estou com mais uma dúvida como faço para armazenar essa struct 't' em um arquivo de texto ou binário, ou seja, gravar

os dados (ex.) 010 13 18 22 em uma linha do arquivo ?

 

Mais uma vez obrigado pela ajuda!

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa você deve der daco ctrl c + ctrl v , errado xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

é, deve ter dado um crtl C errado.. eh o link deste topico...

 

sim,eu sei gravação simples, o que eu não to sabendo fazer é salvar os dados da struct em um arquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça um loop normal e va escrevendo no arquivo *.txt usando o fprintf por exemplo, soh naum pular linha q td grava na msm linha! entendeu?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz assim em binario

 

QUADRO binario(QUADRO *t);

main()
{
int bin;

bin=fopen("quadro.txt","wb");


while(-999)


binario(t); // essa função binario no caso, é o programa acima transformado em uma função
fwrite(&t,sizeof(QUADRO),1,bin);
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

e se você tentar algo assim:

FILE *arq;
char palavra[50];
arq = fopen("quadro.txt","wb"))
if(!arq) exit(1);
for(v=0;v<3;v++)  fprintf(arq, "%s", t->paridade[v]);
veja c da certo, pq to sem compilador aki e sem compilador naum sou nd heHAUH!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

mudei o fprintf(arq, "%d", t->paridade[v]);

 

ele criou o arquivo, fiz tanto como arquivo normal como arquivo binario, mas tinham numeros totalmente diferentes..

 

e eu to querendo gravar a struct todo.. 't', e não so a 't->paridade'..

 

sem compilador fica dificil msm... ehauiehiuae

 

mas ta valendo a ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

jah q qr gravar a struct td soh dar + uns fprintf !

e como assim tinham numeros diferentes você ta falando q ele naum ta gravando certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eh tava gravando coisa.. como se fossem lixo ele gravou isso -55-6212

 

sera que tem que colocar algo tipo assim..

fwrite(&t,sizeof(QUADRO),1,arq);

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom tanto faz o fwrite ow fprintf os dois vão escrever no txt!

eu prefiro fprintf(opinião neh)!

manda seu programa atual pra mim por MP ow pelo tópico aki pra mim dar uma olhada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

nossa seu programa ta um pouco errado!

você tentar usar a estrutura MENS soh q ela naum existe!

ta vindo sujeira pq você naum esta chamando a função binario no main()

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que na hora de mandar o programa eu apaguei sem querer o binario(t);

 

e a struct MENS.. eh outra coisa

pq na verdade meu programa vai rodar no linux, usando memoria compartilhada, mas antes eu to testando

a gravacao em arquivo..

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.