não dava pra transformar o numero binario em array, somar cada item do array e se der par é par e assim segue?? --
Marlon Valério ┌─────────────────┐ Problems, lots of Problems └─────────────────┘ Em 13 de setembro de 2011 10:26, Celso Henrique <celsofigueir...@gmail.com>escreveu: > Prezado. > Desta forma que voce fez, o arquivo OERROR, vem duplicado, ou seja > esta errado, mas para inserrir o cabeçalho, acho que voce deve usar a > seguinte função: > bytesWritten = sprintf(buffer,"Aqui vem o texto \n"); > fwrite(buffer, 1, bytesWritten, evilFile); > tem que colocar antes do teste do arquivo. > > Celso. > > > Em 13 de setembro de 2011 08:53, Rafael Vicentini > <rafaestef...@gmail.com> escreveu: > > Olhasó amigo... também estou participando do concurso mainframes 2011 da > IBM. > > Procurando ajuda pela 'net' né? > > > > Seguinte bro, primeiramente precisamos declarar a variavel evilFile e > criação do > > output OEVIl logo apos a criação do ODIOUS > > > > #include <string.h> > > FILE *odiousFile > > FILE *evilfile /*variavel a ser inserida */ > > > > > > > > > > /*************************************/ > > /* Open file to write output */ > > /*************************************/ > > odiousFile = fopen("DD:ODIOUS", "w"); > > if (odiousFile == NULL) > > { > > printf("open error: %d/%s\n", errno, strerror(errno)); > > exit(99); > > } > > > > /* codigo a ser inserido */ > > evilFile = fopen("DD:OEVIL", "w"); > > if (evilFile == NULL) > > { > > printf("open error: %d/%s\n", errno, strerror(errno)); > > exit(99); > > } > > > > > > > > Analisando o final do código, observei como ele obtém um número odioso: > > int isOdious (int myInt) > > { > > > > > > /* Aqui ele gera o output pro arquivo error, pois se o número é igual a > zero.*/ > > int NumberOfOnes; > > NumberOfOnes=0; > > if (myInt==0) { > > bytesWritten = sprintf(buffer,"0 not > supported!\n"); > > fwrite(buffer, 1, bytesWritten, errorFile); > > return 100; > > } > > > > > > > > /* outro output pro arquivo error, caso for for maior que 1024 /* > > if (myInt>1024) { > > bytesWritten = sprintf(buffer,"%d too > large!\n",myInt); > > fwrite(buffer, 1, bytesWritten, errorFile); > > return 101; > > } > > while (myInt>0) { > > if (myInt%2==1) { > > NumberOfOnes=NumberOfOnes+1; > > myInt=myInt-1; > > } > > myInt=myInt/2; > > } > > > > > > > > /* Aqui ele divide a quantidade de 1`s por 2. Se restar 1, ele possui > número */ > > /*impar de números 1 */ > > > > if (NumberOfOnes%2==1) > > return 1; > > else > > return 0; > > } > > > > > > > > > > Então pensei o seguinte: "Puxa, na listagem, se o número não é Odious, > então ele > > é Evil" > > > > Fiz as devidas inserções: > > > > /*************************************/ > > /* Run program */ > > /*************************************/ > > > > > > while (fscanf(inputFile,"%d",&i) != EOF) { > > if (isOdious(i)==1) { > > bytesWritten = sprintf(buffer,"%d is > odious\n",i); > > fwrite(buffer, 1, bytesWritten, odiousFile); > > } > > > > /* codigo a inserir /* > > if (isOdious(i)==0) { > > bytesWritten = sprintf(buffer,"%d is > evil\n",i); > > fwrite(buffer, 1, bytesWritten, evilFile); > > } > > > > } > > > > > > > > Salve e de um submit naqueles dois Arquivos que a apostila pediu. Se > retornar > > nenhum erro, entro de PARTE2.DATA será criado o arquivo OEVIL. > > Entao compare com o arquivo ODIOUS. > > Os números contidos em uma listagem não estarão contidos na outra. > > Verifique o arquivo de erros, se continua somente com as duas linahs > originais. > > > > Espero ter ajudado se ficou confuso o post, mais tarde te envio o número > das > > linhas a inserir o codigo. Entendo muito pouco de C, somente li algum > tempo > > atrás qndo me preparava para um concurso. Caso alguém que domine > totalmente a > > linguagem puder auxiliar, a discussão será mais rica. > > > > > > > > > > Celso, estou com dificuldades em inserir o cabeçalho nos arquivos. Não > conheço > > bem a função fwrite. Voce consegue fazer isso? > > > > > > > > > > > > > > > > -- > > Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece > > > > Lista de discussão Ubuntu Brasil > > Histórico, descadastramento e outras opções: > > https://lists.ubuntu.com/mailman/listinfo/ubuntu-br > > > > -- > Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece > > Lista de discussão Ubuntu Brasil > Histórico, descadastramento e outras opções: > https://lists.ubuntu.com/mailman/listinfo/ubuntu-br > -- Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece Lista de discussão Ubuntu Brasil Histórico, descadastramento e outras opções: https://lists.ubuntu.com/mailman/listinfo/ubuntu-br