[Ubuntu-BR] [OFF-TOPIC] Programa em linguagem C.

Celso Henrique celsofigueiredo em gmail.com
Terça Setembro 13 13:26:39 UTC 2011


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
<rafaestefano em 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
>




More information about the ubuntu-br mailing list