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

Celso Henrique celsofigueiredo em gmail.com
Sábado Setembro 10 11:57:50 UTC 2011


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 <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
	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.




More information about the ubuntu-br mailing list