Projetinho Sistemas Operacionais (Faculdade)

7 respostas
D
/
/*
 * Esta rotina realiza a exibicao de caracteres. Nela e calculado um numero
 * pseudo-randomico entre 1 e 3 para determinar o numero de caracteres a exibir.
 * Se a protecao esta estabelecida, a rotina entao consegue o recurso. Em
 * seguida, PrintAlphabet() acessa o indice com seu valor corrente a partir da
 * memoria compartilhada. A rotina entra em loop, exibindo o numero aleatorio de
 * caracteres. Finalmente, a rotina incrementa o indice, conforme o necessario,
 * e libera o recurso, se for o caso.
*/
void PrintAlphabet( void )
{
	struct timeval tv;
	int number;

	int tmp_index;
	int i;

	/*
	 * Este tempo permite que todos os filhos sejam inciados
	 */
	usleep(200);

	/*
	 * Entrando no loop principal
	 */
	while(1) {

		/*
                 * Conseguindo o tempo corrente, os microsegundos desse tempo
             	 * sao usados como um numero pseudo-randomico. Em seguida,
            	 * calcula o numero randomico atraves de um algoritmo simples
		 */
		if( gettimeofday( &tv, NULL ) == -1 ) {
			fprintf(stderr,"Impossivel conseguir o tempo atual, terminando.\n");
			exit(1);
		}
		number = ((tv.tv_usec / 47) % 3) + 1;

//Boa tarde galera ,eu nao entendo essa formula que ele usa no number para calcular um numero randomico ... eu sei que ela retorna 1 , 2 ou 3 mais nao entendo por que... Se alguem por gentileza poder me ajudar desde ja agradeço.

7 Respostas

InicianteJavaHenriqu

Use a tag [code] para ficar mais fácil a visualização.

:thumbup:

D

perdao , ja arrumei obrigado.

InicianteJavaHenriqu

Olá :smiley:

Também não sei o problema :wink: disse para arrumar o código para as outras pessoas te ajudarem :idea:

:thumbup:

ViniGodoy

% é o operador de resto.

O resto de da divisão por um número N pode ser qualquer número entre 0 e (n-1).
Por exemplo, o resto da divisão por 5 pode ser qualquer número entre 0 e 4.

D

entao mais no number eu estou pegando os microsegundos … tipo pq dividir por 47… a unica coisa que eu tenho certeza eh que retorna 1 , 2 , 3 rs

ViniGodoy

Pouco importa o que seja o número, o que importa é que o resto da divisão de QUALQUER número por 3 é um número entre 0 e 2. Isso inclui seus milissegundos / 47.

D

Entendi cara! Obrigado

Criado 19 de maio de 2012
Ultima resposta 21 de mai. de 2012
Respostas 7
Participantes 3