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

2011-09-10 Thread Celso Henrique
Prezados Ubundistas.

Estou precisando resolver este programa em C, abaixo, mas não estou
conseguindo, sera que voce poderia me ajudar.

UM ODIOSO E MALVADO PROGRAMA EM C
Brincadeiras à parte, de fato existe um conjunto de números chamado
Odious (de odd – paridade
ímpar), cuja conversão binária possui um número ímpar de 1s. Qualquer
número que não é
considerado “odious” é considerado Evil (de even – paridade ímpar),
significando que sua conversão
binária possui um número par de 1s.
Seu desafio nesta etapa será modificar um programa em C para que ele
atenda aos requisitos listados
abaixo:
Algumas explicações sobre o que esses membros são capazes!
ODIOUSRC – É o programa em C. Neste momento tudo que ele faz é listar
números Odious e erros,
mas iremos mudar isso!

ODIOUS – É o arquivo de entrada com todos os números a serem
verificados pelo programa.

Ok, tudo certo?  visualize os dois membros que foram criados, o ODIOUS
e o OERROR.
1. Modifique o ODIOUSRC de forma a gerar um terceiro output. Seu
programa já cria o ODIOUS e
OERROR, agora deverá gerar o membro OEVIL, que imprime números “evil”.
2. Modifique o ODIOUSRC de forma a incluir duas linhas de cabeçalho em
cada output:
1. Seu nome - Odious/Evil Number (ex: “Agatha Flesch – Odious Number”
para um relatório de
número odious, e assim por diante).
2. Linha em branco

Nota: Se seu membro OERROR repetir as linhas duas vezes, você não
completou esta parte com
sucesso. Refaça seu código.
-
ODIOUSRC:
--
#include 
#include 
#include 
#include 
FILE *odiousFile;
FILE *errorFile;
FILE *inputFile;
char buffer[81];
int bytesWritten;
main()
{
  int isOdious(int);
  int NumberOfOnes;
int i;
/*/
/* Open file to write output */
/*/
odiousFile = fopen("DD:ODIOUS", "w");
if (odiousFile == NULL)
{
printf("open error:   %d/%s\n", errno, strerror(errno));
exit(99);
}
/*/
/* Open file to write errors */
/*/
errorFile = fopen("DD:ERRORS", "w");
if (errorFile == NULL)
{
printf("open error:   %d/%s\n", errno, strerror(errno));
exit(99);
}
/*/
/* Open file to read input   */
/*/
inputFile = fopen("DD:INPUT", "r");
if (inputFile == NULL)
{
printf("open error:   %d/%s\n", errno, strerror(errno));
exit(98);
}
/*/
/* 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);
}
  }
/*/
/* Close output files*/
/*/
fclose(odiousFile);
fclose(errorFile);
/*/
/* Close input file  */
/*/
fclose(inputFile);
return 0;
}
int isOdious (int myInt)
{
  int NumberOfOnes;
  NumberOfOnes=0;
  if (myInt==0) {
 bytesWritten = sprintf(buffer,"0 not supported!\n");
 fwrite(buffer, 1, bytesWritten, errorFile);
return 100;
  }
  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;
  }
  if (NumberOfOnes%2==1)
   return 1;
  else
return 0;
}
--
ODIOUS:
---
É o arquivo que contem os numeros de: 1,2,3,498,499,500,1027.
Este programa da forma em que esta, gera, dois arquivos; o ODIOUS e o OERROR.
Este programa diz se o numero tem paridade par.
O que eu devo fazer ou alterar, para gerar o outro arquivo de paridade impar.

Celso.

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


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

2011-09-12 Thread Jeferson Rodrigues
Bom dia Celso,

Creio que você esteja fazendo um curso na área de informática aplicada ao
desenvolvimento de sistemas, como Sistemas de Informação, Tecnologia em
Informática, Ciências da Computação, ou algo do gênero.

Eu não sou formado, mas entendo um pouco de C, e até poderia te dar um
código com a solução pronta, mas se eu fizer isso não estaria te ajudando,
apenas estaria retardando seu aprendizado.

Baseado na minha experiência, para você aprender programação não há melhor
caminho do que o sistema "tentativa erro/acerto", só assim mesmo para
aprender C e lógica de programação. E, sinceramente, se você está com
dificuldades com este problema, prepare-se, pois a frente vem coisa muito
mais complicada. Portanto, estude, sente na frente do computador, e destroce
os bytes, sem dó.

Não se esqueça de deixar uma garrafa de café do lado do seu computador
pronta para te servir (com sua intervenção é claro =D). E outra coisa, nós
seres humanos não somos máquinas perfeitas, somos como o Windows, de vez em
quando travamos. Nestes casos, o melhor mesmo é você dar uma paradinha,
levantar do computador, dar um tempo pra cabeça. As soluções surgem que nem
um piscar de olhos.

Para não ficar só no sermão, vou te dar umas dicas do que você deverá fazer.

Pelo que vi, em termos gerais, o programa faz uma conversão binária dos
números lidos, conta os números 1 resultante da conversão e diz se a
contagem deles é impar ou par. Ou seja, não é só separar números pares de
ímpares, pois teremos números pares que, com sua contagem de números uns,
ficarão ímpares, e vice-versa. Vou citar alguns exemplos:
  DEC BIN  1 0001  2 0010  3 0011  4 0100  5 0101  6 0110

Observe que os números 1, 2 e 4 seriam alocados como números ímpares, pois
tem um número ímpar de uns (ou que a soma deles for ímpar), e que os números
3, 5 e 6 seriam pares. É assim que o algoritmo do programa funciona.

Na boa, não é difícil você resolver esse problema. Com 4 ou 5 linhas de
código simples você resolve. Esse é o tipo de código que você tem que ler
ele, entender o que ele faz, e modificar o necessário.

Abraços





 Em 10 de setembro de 2011 08:57, Celso Henrique
escreveu:

> Prezados Ubundistas.
>
> Estou precisando resolver este programa em C, abaixo, mas não estou
> conseguindo, sera que voce poderia me ajudar.
>
> UM ODIOSO E MALVADO PROGRAMA EM C
> Brincadeiras à parte, de fato existe um conjunto de números chamado
> Odious (de odd – paridade
> ímpar), cuja conversão binária possui um número ímpar de 1s. Qualquer
> número que não é
> considerado “odious” é considerado Evil (de even – paridade ímpar),
> significando que sua conversão
> binária possui um número par de 1s.
> Seu desafio nesta etapa será modificar um programa em C para que ele
> atenda aos requisitos listados
> abaixo:
> Algumas explicações sobre o que esses membros são capazes!
> ODIOUSRC – É o programa em C. Neste momento tudo que ele faz é listar
> números Odious e erros,
> mas iremos mudar isso!
>
> ODIOUS – É o arquivo de entrada com todos os números a serem
> verificados pelo programa.
>
> Ok, tudo certo?  visualize os dois membros que foram criados, o ODIOUS
> e o OERROR.
> 1. Modifique o ODIOUSRC de forma a gerar um terceiro output. Seu
> programa já cria o ODIOUS e
> OERROR, agora deverá gerar o membro OEVIL, que imprime números “evil”.
> 2. Modifique o ODIOUSRC de forma a incluir duas linhas de cabeçalho em
> cada output:
> 1. Seu nome - Odious/Evil Number (ex: “Agatha Flesch – Odious Number”
> para um relatório de
> número odious, e assim por diante).
> 2. Linha em branco
>
> Nota: Se seu membro OERROR repetir as linhas duas vezes, você não
> completou esta parte com
> sucesso. Refaça seu código.
> -
> ODIOUSRC:
> --
> #include 
> #include 
> #include 
> #include 
>FILE *odiousFile;
>FILE *errorFile;
>FILE *inputFile;
>char buffer[81];
>int bytesWritten;
> main()
> {
>  int isOdious(int);
>  int NumberOfOnes;
>int i;
>/*/
>/* Open file to write output */
>/*/
>odiousFile = fopen("DD:ODIOUS", "w");
>if (odiousFile == NULL)
>{
>printf("open error:   %d/%s\n", errno, strerror(errno));
>exit(99);
>}
>/*/
>/* Open file to write errors */
>/*/
>errorFile = fopen("DD:ERRORS", "w");
>if (errorFile == NULL)
>{
>printf("open error:   %d/%s\n", errno, strerror(errno));
>exit(99);
>}
>/*/
>/* Open file to read input   */
>/*/
>inputFile = fopen("DD:INPUT", "r");
>if (inputFile == NULL)
>{
>printf("open error:   %d/%s\n", errno, stre

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

2011-09-12 Thread Andre Cavalcante
Em 10 de setembro de 2011 12:57, Celso Henrique
escreveu:

> Prezados Ubundistas.
>

Olá


>
> Estou precisando resolver este programa em C, abaixo, mas não estou
> conseguindo, sera que voce poderia me ajudar.
>

Olha só, na boa. Se eu tivesse entendido o que o cara tá pedindo eu até
ajudava. Mas tá ruim demais entender o que ele pede. Na boa, paridade par e
paridade ímpar é trivial em C. Uma simples divisão sucessiva por 2 e conta
os uns que tu tens se o número tem paridade par ou paridade ímpar.

Mas tem umas coisas de arquivo de erro que eu tô passado! Por que complicar?

Abraços

André Cavalcante
Caparica, Portugal
Ubuntu User number # 24370
Quer saber sobre Open Source Software? http://sobreoss.blogspot.com
Quer saber mais sobre Espiritismo? http://sobreespiritismo.blogspot.com

Atenção: Este e-mail pode conter anexos no formato ODF (Open Document
Format)/ABNT (extensões odt, ods, odp, odb, odg). Antes de pedir os anexos
em outro formato, você pode instalar gratuita e livremente o BrOffice (
http://www.broffice.org) ou o seguinte Plugin para Microsoft Office (
http://odf-converter.sourceforge.net/index.html
).
-- 
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


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

2011-09-12 Thread Jeferson Rodrigues
Bom dia André,

Uma simples divisão sucessiva por 2 e conta os uns que tu tens se o número
> tem paridade par ou paridade ímpar.
>
O programa faz isso na verdade.

PS: você chegou a ver o meu e-mail anterior ajudando ele? Pergunto isso pois
eu mandei uma resposta com um "pequeno sermão" e dando uma forçinha pra ele,
e se você não viu desconfio que a lista tenha bloqueado.

Abraços

Em 12 de setembro de 2011 09:26, Andre Cavalcante <
andre.d.cavalca...@gmail.com> escreveu:

> Em 10 de setembro de 2011 12:57, Celso Henrique
> escreveu:
>
> > Prezados Ubundistas.
> >
>
> Olá
>
>
> >
> > Estou precisando resolver este programa em C, abaixo, mas não estou
> > conseguindo, sera que voce poderia me ajudar.
> >
>
> Olha só, na boa. Se eu tivesse entendido o que o cara tá pedindo eu até
> ajudava. Mas tá ruim demais entender o que ele pede. Na boa, paridade par e
> paridade ímpar é trivial em C. Uma simples divisão sucessiva por 2 e conta
> os uns que tu tens se o número tem paridade par ou paridade ímpar.
>
> Mas tem umas coisas de arquivo de erro que eu tô passado! Por que
> complicar?
>
> Abraços
>
> André Cavalcante
> Caparica, Portugal
> Ubuntu User number # 24370
> Quer saber sobre Open Source Software? http://sobreoss.blogspot.com
> Quer saber mais sobre Espiritismo? http://sobreespiritismo.blogspot.com
>
> Atenção: Este e-mail pode conter anexos no formato ODF (Open Document
> Format)/ABNT (extensões odt, ods, odp, odb, odg). Antes de pedir os anexos
> em outro formato, você pode instalar gratuita e livremente o BrOffice (
> http://www.broffice.org) ou o seguinte Plugin para Microsoft Office (
> http://odf-converter.sourceforge.net/index.html<
> http://www.sun.com/software/star/odf_plugin/get.jsp>
> ).
> --
> 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


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

2011-09-12 Thread Celso Henrique
Prezados.

Depois de apanhar e pesquisar um pouco, consegui chegar, neste codigo abaixo:
--
#include 
#include 
#include 
#include 

FILE *odiousFile;
FILE *errorFile;
FILE *inputFile;
FILE *evilFile;

char buffer[81] = "\x0";
int bytesWritten = 0;

main()
{

  int isOdious(int);
  int NumberOfOnes;
  int i;
  int rci = 26985;

/*/
/* Open file to write output */
/*/
odiousFile = fopen("DD:ODIOUS", "w");
if (odiousFile == NULL)
{
printf("open error:   %d/%s\n", errno, strerror(errno));
exit(99);
}

/*/
/* Open file to write errors */
/*/
errorFile = fopen("DD:ERRORS", "w");
if (errorFile == NULL)
{
printf("open error:   %d/%s\n", errno, strerror(errno));
exit(99);
}

/*/
/* Open file to read input   */
/*/

inputFile = fopen("DD:INPUT", "r");
if (inputFile == NULL)
{
printf("open error:   %d/%s\n", errno, strerror(errno));
exit(98);
}
/*/
/* Open file to write evil   */
/*/
evilFile = fopen("DD:OEVIL", "w");
if (evilFile == NULL)
{
printf("open error:   %d/%s\n", errno, strerror(errno));
exit(99);
}
/*/
/* Run program   */
/*/

  while (fscanf(inputFile,"%d",&i) != EOF) {
rci = isOdious(i);
if (rci == 1)
{
   bytesWritten = sprintf(buffer,"%d is odious \n",i);
   fwrite(buffer, 1, bytesWritten, odiousFile);
}
else if (rci ==0)  {
  bytesWritten = sprintf(buffer,"%d is evil \n",i);
  fwrite(buffer, 1, bytesWritten, evilFile);
}
else
{
  /* Nao fazer nada*/
}
  }
/*/
/* Close output files*/
/*/
fclose(odiousFile);
fclose(errorFile);
fclose(evilFile);

/*/
/* Close input file  */
/*/
fclose(inputFile);

return 0;
}

int isOdious (int myInt)
{
  int NumberOfOnes = 0;

/*NumberOfOnes=0; */

  if (myInt==0) {
 bytesWritten = sprintf(buffer,"0 not supported!\n");
 fwrite(buffer, 1, bytesWritten, errorFile);
return 100;
  }

  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;
  }

  if (NumberOfOnes%2==1)
   return 1;
  else
return 0;
}
--
Mas ainda esta faltando, eu incluir duas linhas no arquivo OEVIL, sera
que voce poderia me ajudar.

Celso.

Em 12 de setembro de 2011 09:58, Jeferson Rodrigues
 escreveu:
> Bom dia André,
>
> Uma simples divisão sucessiva por 2 e conta os uns que tu tens se o número
>> tem paridade par ou paridade ímpar.
>>
> O programa faz isso na verdade.
>
> PS: você chegou a ver o meu e-mail anterior ajudando ele? Pergunto isso pois
> eu mandei uma resposta com um "pequeno sermão" e dando uma forçinha pra ele,
> e se você não viu desconfio que a lista tenha bloqueado.
>
> Abraços
>
> Em 12 de setembro de 2011 09:26, Andre Cavalcante <
> andre.d.cavalca...@gmail.com> escreveu:
>
>> Em 10 de setembro de 2011 12:57, Celso Henrique
>> escreveu:
>>
>> > Prezados Ubundistas.
>> >
>>
>> Olá
>>
>>
>> >
>> > Estou precisando resolver este programa em C, abaixo, mas não estou
>> > conseguindo, sera que voce poderia me ajudar.
>> >
>>
>> Olha só, na boa. Se eu tivesse entendido o que o cara tá pedindo eu até
>> ajudava. Mas tá ruim demais entender o que ele pede. Na boa, paridade par e
>> paridade ímpar é trivial em C. Uma simples divisão sucessiva por 2 e conta
>> os uns que tu tens se o número tem paridade par ou paridade ímpar.
>>
>> Mas tem umas coisas de arquivo de erro que eu tô passado! Por que
>> complicar?
>>
>> Abraços
>>
>> André Cavalcante
>> Caparica, Portugal
>> Ubuntu User number # 24370
>> Quer saber sobre Open Source Software? http://sobreoss.blogspot.com
>> Quer saber mais sobre Espiritismo? http://sobreespiritismo.blogspot.com
>>
>> Atenção: Este e-mail pode c

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

2011-09-12 Thread Jeferson Rodrigues
Boa tarde Celso,

Era exatamente isso mesmo que eu estava falando.

Mas ainda esta faltando, eu incluir duas linhas no arquivo OEVIL
>
Mas o que tá faltando exatamente?

Abraços



Em 12 de setembro de 2011 10:26, Celso Henrique
escreveu:

> Prezados.
>
> Depois de apanhar e pesquisar um pouco, consegui chegar, neste codigo
> abaixo:
> --
> #include 
> #include 
> #include 
> #include 
>
>FILE *odiousFile;
>FILE *errorFile;
>FILE *inputFile;
> FILE *evilFile;
>
>char buffer[81] = "\x0";
>int bytesWritten = 0;
>
> main()
> {
>
>  int isOdious(int);
>  int NumberOfOnes;
>  int i;
>   int rci = 26985;
>
>/*/
>/* Open file to write output */
>/*/
>odiousFile = fopen("DD:ODIOUS", "w");
>if (odiousFile == NULL)
>{
>printf("open error:   %d/%s\n", errno, strerror(errno));
>exit(99);
>}
>
>/*/
>/* Open file to write errors */
>/*/
>errorFile = fopen("DD:ERRORS", "w");
>if (errorFile == NULL)
>{
>printf("open error:   %d/%s\n", errno, strerror(errno));
>exit(99);
>}
>
>/*/
>/* Open file to read input   */
>/*/
>
>inputFile = fopen("DD:INPUT", "r");
>if (inputFile == NULL)
>{
>printf("open error:   %d/%s\n", errno, strerror(errno));
>exit(98);
>}
>/*/
> /* Open file to write evil   */
>/*/
>evilFile = fopen("DD:OEVIL", "w");
>if (evilFile == NULL)
> {
>printf("open error:   %d/%s\n", errno, strerror(errno));
>exit(99);
>}
>/*/
> /* Run program   */
>/*/
>
>  while (fscanf(inputFile,"%d",&i) != EOF) {
> rci = isOdious(i);
>if (rci == 1)
> {
>   bytesWritten = sprintf(buffer,"%d is odious \n",i);
>   fwrite(buffer, 1, bytesWritten, odiousFile);
>}
> else if (rci ==0)  {
>  bytesWritten = sprintf(buffer,"%d is evil \n",i);
>  fwrite(buffer, 1, bytesWritten, evilFile);
>}
>else
>{
>  /* Nao fazer nada*/
> }
>  }
>/*/
>/* Close output files*/
>/*/
>fclose(odiousFile);
>fclose(errorFile);
> fclose(evilFile);
>
>/*/
>/* Close input file  */
>/*/
>fclose(inputFile);
>
>return 0;
> }
>
> int isOdious (int myInt)
> {
>   int NumberOfOnes = 0;
>
> /*NumberOfOnes=0; */
>
>  if (myInt==0) {
> bytesWritten = sprintf(buffer,"0 not
> supported!\n");
> fwrite(buffer, 1, bytesWritten, errorFile);
>return 100;
>  }
>
>  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;
>  }
>
>  if (NumberOfOnes%2==1)
>   return 1;
>  else
>return 0;
> }
> --
> Mas ainda esta faltando, eu incluir duas linhas no arquivo OEVIL, sera
> que voce poderia me ajudar.
>
> Celso.
>
> Em 12 de setembro de 2011 09:58, Jeferson Rodrigues
>  escreveu:
> > Bom dia André,
> >
> > Uma simples divisão sucessiva por 2 e conta os uns que tu tens se o
> número
> >> tem paridade par ou paridade ímpar.
> >>
> > O programa faz isso na verdade.
> >
> > PS: você chegou a ver o meu e-mail anterior ajudando ele? Pergunto isso
> pois
> > eu mandei uma resposta com um "pequeno sermão" e dando uma forçinha pra
> ele,
> > e se você não viu desconfio que a lista tenha bloqueado.
> >
> > Abraços
> >
> > Em 12 de setembro de 2011 09:26, Andre Cavalcante <
> > andre.d.cavalca...@gmail.com> escreveu:
> >
> >> Em 10 de setembro de 2011 12:57, Celso Henrique
> >> escreveu:
> >>
> >> > Prezados Ubundistas.
> >> >
> >>
> >> Olá
> >>
> >>
> >> >
> >> > Estou precisando resolver este programa em C, abaixo, mas não estou
> >> > conseguindo, sera que voce poderia me ajudar.
> >> >
> >>
> >> Olha só, na boa. Se eu tivesse entendido o que o cara tá pedindo eu até
> >> ajudava. Mas tá ruim demais entender o que ele pede. Na boa, paridade
> par e
> >> paridade í

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

2011-09-12 Thread Celso Henrique
Prezado.
O que esta faltando agora, é esta parte:
2. Modifique o ODIOUSRC de forma a incluir duas linhas de cabeçalho em
cada output:
1. Seu nome - Odious/Evil Number (ex: “Agatha Flesch – Odious Number”
para um relatório de
número odious, e assim por diante).
2. Linha em branco.

Celso


Em 12 de setembro de 2011 14:36, Jeferson Rodrigues
 escreveu:
> Boa tarde Celso,
>
> Era exatamente isso mesmo que eu estava falando.
>
> Mas ainda esta faltando, eu incluir duas linhas no arquivo OEVIL
>>
> Mas o que tá faltando exatamente?
>
> Abraços
>
>
>
> Em 12 de setembro de 2011 10:26, Celso Henrique
> escreveu:
>
>> Prezados.
>>
>> Depois de apanhar e pesquisar um pouco, consegui chegar, neste codigo
>> abaixo:
>> --
>> #include 
>> #include 
>> #include 
>> #include 
>>
>>        FILE *odiousFile;
>>        FILE *errorFile;
>>        FILE *inputFile;
>>         FILE *evilFile;
>>
>>        char buffer[81] = "\x0";
>>        int bytesWritten = 0;
>>
>> main()
>> {
>>
>>  int isOdious(int);
>>  int NumberOfOnes;
>>  int i;
>>   int rci = 26985;
>>
>>        /*/
>>        /*     Open file to write output     */
>>        /*/
>>        odiousFile = fopen("DD:ODIOUS", "w");
>>        if (odiousFile == NULL)
>>        {
>>                printf("open error:   %d/%s\n", errno, strerror(errno));
>>                exit(99);
>>        }
>>
>>        /*/
>>        /*     Open file to write errors     */
>>        /*/
>>        errorFile = fopen("DD:ERRORS", "w");
>>        if (errorFile == NULL)
>>        {
>>                printf("open error:   %d/%s\n", errno, strerror(errno));
>>                exit(99);
>>        }
>>
>>        /*/
>>        /*     Open file to read input       */
>>        /*/
>>
>>        inputFile = fopen("DD:INPUT", "r");
>>        if (inputFile == NULL)
>>        {
>>                printf("open error:   %d/%s\n", errno, strerror(errno));
>>                exit(98);
>>        }
>>        /*/
>>         /*     Open file to write evil       */
>>        /*/
>>        evilFile = fopen("DD:OEVIL", "w");
>>        if (evilFile == NULL)
>>         {
>>                printf("open error:   %d/%s\n", errno, strerror(errno));
>>                exit(99);
>>        }
>>        /*/
>>         /*     Run program                   */
>>        /*/
>>
>>  while (fscanf(inputFile,"%d",&i) != EOF) {
>>     rci = isOdious(i);
>>    if (rci == 1)
>>     {
>>       bytesWritten = sprintf(buffer,"%d is odious \n",i);
>>       fwrite(buffer, 1, bytesWritten, odiousFile);
>>    }
>>     else if (rci ==0)  {
>>      bytesWritten = sprintf(buffer,"%d is evil \n",i);
>>      fwrite(buffer, 1, bytesWritten, evilFile);
>>    }
>>    else
>>    {
>>      /* Nao fazer nada*/
>>     }
>>  }
>>        /*/
>>        /*     Close output files            */
>>        /*/
>>        fclose(odiousFile);
>>        fclose(errorFile);
>>         fclose(evilFile);
>>
>>        /*/
>>        /*     Close input file              */
>>        /*/
>>        fclose(inputFile);
>>
>>        return 0;
>> }
>>
>> int isOdious (int myInt)
>> {
>>   int NumberOfOnes = 0;
>>
>> /*NumberOfOnes=0; */
>>
>>  if (myInt==0) {
>>                         bytesWritten = sprintf(buffer,"0 not
>> supported!\n");
>>                         fwrite(buffer, 1, bytesWritten, errorFile);
>>    return 100;
>>  }
>>
>>  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;
>>  }
>>
>>  if (NumberOfOnes%2==1)
>>           return 1;
>>  else
>>    return 0;
>> }
>> --
>> Mas ainda esta faltando, eu incluir duas linhas no arquivo OEVIL, sera
>> que voce poderia me ajudar.
>>
>> Celso.
>>
>> Em 12 de setembro de 2011 09:58, Jeferson Rodrigues
>>  escreveu:
>> > Bom dia André,
>> >
>> > Uma simples divisão sucessiva por 2 e conta os uns que tu tens se o
>> número
>> >> tem paridade par ou paridade ímpar.
>> >>
>> > O programa faz isso na verdade.
>> >
>> > PS: você chegou a ver o meu e-mail anterior ajudando ele? Pergunto isso
>> pois
>> > eu mandei uma resposta com um "pequeno sermão" e dando uma forçinha pra
>> ele,
>> > e se você não viu desconfio que a lista tenha bloqueado.
>> >
>> >

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

2011-09-12 Thread Jeferson Rodrigues
Então Celso, são na verdade 1 input e 3 outputs: o evil, o odious, e o
error. Em ambos você vai ter que escrever no arquivo o cabeçalho descrito.
Essa é a parte mais fácil, vamos lá!!!

Abraços

Em 12 de setembro de 2011 14:47, Celso Henrique
escreveu:

> Prezado.
> O que esta faltando agora, é esta parte:
> 2. Modifique o ODIOUSRC de forma a incluir duas linhas de cabeçalho em
> cada output:
> 1. Seu nome - Odious/Evil Number (ex: “Agatha Flesch – Odious Number”
> para um relatório de
> número odious, e assim por diante).
> 2. Linha em branco.
> 
> Celso
>
>
> Em 12 de setembro de 2011 14:36, Jeferson Rodrigues
>  escreveu:
> > Boa tarde Celso,
> >
> > Era exatamente isso mesmo que eu estava falando.
> >
> > Mas ainda esta faltando, eu incluir duas linhas no arquivo OEVIL
> >>
> > Mas o que tá faltando exatamente?
> >
> > Abraços
> >
> >
> >
> > Em 12 de setembro de 2011 10:26, Celso Henrique
> > escreveu:
> >
> >> Prezados.
> >>
> >> Depois de apanhar e pesquisar um pouco, consegui chegar, neste codigo
> >> abaixo:
> >> --
> >> #include 
> >> #include 
> >> #include 
> >> #include 
> >>
> >>FILE *odiousFile;
> >>FILE *errorFile;
> >>FILE *inputFile;
> >> FILE *evilFile;
> >>
> >>char buffer[81] = "\x0";
> >>int bytesWritten = 0;
> >>
> >> main()
> >> {
> >>
> >>  int isOdious(int);
> >>  int NumberOfOnes;
> >>  int i;
> >>   int rci = 26985;
> >>
> >>/*/
> >>/* Open file to write output */
> >>/*/
> >>odiousFile = fopen("DD:ODIOUS", "w");
> >>if (odiousFile == NULL)
> >>{
> >>printf("open error:   %d/%s\n", errno, strerror(errno));
> >>exit(99);
> >>}
> >>
> >>/*/
> >>/* Open file to write errors */
> >>/*/
> >>errorFile = fopen("DD:ERRORS", "w");
> >>if (errorFile == NULL)
> >>{
> >>printf("open error:   %d/%s\n", errno, strerror(errno));
> >>exit(99);
> >>}
> >>
> >>/*/
> >>/* Open file to read input   */
> >>/*/
> >>
> >>inputFile = fopen("DD:INPUT", "r");
> >>if (inputFile == NULL)
> >>{
> >>printf("open error:   %d/%s\n", errno, strerror(errno));
> >>exit(98);
> >>}
> >>/*/
> >> /* Open file to write evil   */
> >>/*/
> >>evilFile = fopen("DD:OEVIL", "w");
> >>if (evilFile == NULL)
> >> {
> >>printf("open error:   %d/%s\n", errno, strerror(errno));
> >>exit(99);
> >>}
> >>/*/
> >> /* Run program   */
> >>/*/
> >>
> >>  while (fscanf(inputFile,"%d",&i) != EOF) {
> >> rci = isOdious(i);
> >>if (rci == 1)
> >> {
> >>   bytesWritten = sprintf(buffer,"%d is odious \n",i);
> >>   fwrite(buffer, 1, bytesWritten, odiousFile);
> >>}
> >> else if (rci ==0)  {
> >>  bytesWritten = sprintf(buffer,"%d is evil \n",i);
> >>  fwrite(buffer, 1, bytesWritten, evilFile);
> >>}
> >>else
> >>{
> >>  /* Nao fazer nada*/
> >> }
> >>  }
> >>/*/
> >>/* Close output files*/
> >>/*/
> >>fclose(odiousFile);
> >>fclose(errorFile);
> >> fclose(evilFile);
> >>
> >>/*/
> >>/* Close input file  */
> >>/*/
> >>fclose(inputFile);
> >>
> >>return 0;
> >> }
> >>
> >> int isOdious (int myInt)
> >> {
> >>   int NumberOfOnes = 0;
> >>
> >> /*NumberOfOnes=0; */
> >>
> >>  if (myInt==0) {
> >> bytesWritten = sprintf(buffer,"0 not
> >> supported!\n");
> >> fwrite(buffer, 1, bytesWritten, errorFile);
> >>return 100;
> >>  }
> >>
> >>  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;
> >>  }
> >>
> >>  if (NumberOfOnes%2==1)
> >>   return 1;
> >>  else
> >>return 0;
> >> }
> >> --
> >> Mas ainda esta faltando, eu incluir duas linha

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

2011-09-13 Thread Rafael Vicentini
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 
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


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

2011-09-13 Thread Celso Henrique
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
 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 
>        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


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

2011-09-19 Thread Marlon
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
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
>  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 
> >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, descadas

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

2011-09-20 Thread Andre Cavalcante
Olá Marlon

Em 20 de setembro de 2011 02:53, Marlon  escreveu:

> não dava pra transformar o numero binario em array, somar cada item do
> array
> e se der par é par e assim segue??
>

Não creio que o problema dele seja o cálculo da paridade, mas a manipulação
de arquivos

Abraços

André Cavalcante
Caparica, Portugal
Ubuntu User number # 24370
Quer saber sobre Open Source Software? http://sobreoss.blogspot.com
Quer saber mais sobre Espiritismo? http://sobreespiritismo.blogspot.com

Atenção: Este e-mail pode conter anexos no formato ODF (Open Document
Format)/ABNT (extensões odt, ods, odp, odb, odg). Antes de pedir os anexos
em outro formato, você pode instalar gratuita e livremente o BrOffice (
http://www.broffice.org) ou o seguinte Plugin para Microsoft Office (
http://odf-converter.sourceforge.net/index.html
).
-- 
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