Power2d 0 Denunciar post Postado Abril 17, 2008 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
Kandrade 7 Denunciar post Postado Abril 17, 2008 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
Power2d 0 Denunciar post Postado Abril 17, 2008 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
quitZAUMMM 18 Denunciar post Postado Abril 17, 2008 você naum sabe gravar esses dados ow naum sabe fazer gravação em txt? caso naum saiba gravar veja: Gravação simples em um *.txt Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Abril 17, 2008 Essa dúvida também é similar a essa: http://forum.imasters.com.br/index.php?showtopic=282848 OBS: Link corrigido, me desculpem!!! Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Abril 17, 2008 opa você deve der daco ctrl c + ctrl v , errado xD Compartilhar este post Link para o post Compartilhar em outros sites
Power2d 0 Denunciar post Postado Abril 17, 2008 é, 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
quitZAUMMM 18 Denunciar post Postado Abril 17, 2008 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
Power2d 0 Denunciar post Postado Abril 17, 2008 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
quitZAUMMM 18 Denunciar post Postado Abril 17, 2008 deu certo? Compartilhar este post Link para o post Compartilhar em outros sites
Power2d 0 Denunciar post Postado Abril 17, 2008 não dá isso [Warning] assignment makes integer from pointer without a cast Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Abril 17, 2008 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
Power2d 0 Denunciar post Postado Abril 17, 2008 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
quitZAUMMM 18 Denunciar post Postado Abril 17, 2008 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
Power2d 0 Denunciar post Postado Abril 17, 2008 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
quitZAUMMM 18 Denunciar post Postado Abril 17, 2008 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
Power2d 0 Denunciar post Postado Abril 17, 2008 ok.. mandei por MP Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Abril 17, 2008 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
Power2d 0 Denunciar post Postado Abril 17, 2008 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
quitZAUMMM 18 Denunciar post Postado Abril 17, 2008 bom qnd você arrumar me manda pra dar uma olhada ok? http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites