Jump to content

ajuda à resoluçao de exercicio em C


stb_airlines
 Share

Recommended Posts

boa caros foristas.

estou com um pequeno problema para a resolução de um exercicio, agradeceria que me pudessem disponibilizar alguma dicas para poder avançar na resoluçao.

o exercicio é o seguinte:

Foi sugerido que um robot apertando teclas aleatórias numa máquina de escrever poderia produzir uma obra de Shakespeare. Cria uma aplicação que simule essa ideia através da geração de letras aleatórias. Conte o número de letras escritas até o programa produzir uma das palavras de duas letras as, is, he, we, up, ou on. Quando uma dessas palavras for produzida, pare o programa e mostre o total de números de letras escrito.

(Dica: Escolha uma letra selecionando um número inteiro aleatório entre 1 e 26.)

nao compreendendo bem o exercicio, a minha dificuldade está em gerar as letras aleatorias e como fazer a parte das palavras de duas letras.

ainda sou um novato nista, dai a dificuldade até na intrepetação.

aguardo ansioso por uma pekena orientação, muito agradecido;

jose luis

Link to comment
Share on other sites

Para gerares letras aleatórias usas a função rand(), lembra-te que chars são na verdade números (ascii), por isso geras uma letra entre 'a' e 'z' e adicionas à string (vai ver a tabela ascii para ver em que número começa o abcedário e em que número acaba). Depois, quando geras a palavra (de dimensão 2) comparas com cada uma dessas strings e verificas se é igual (strcmp). A cada letra que adicionas a uma nova string aumentas uma variável de controlo.

O programa não deve demorar muito tempo a executar visto que só tens 26^2 hipoteses de palavras.

here since 2009

Link to comment
Share on other sites

viva pessoal,

o meu projecto ainda esta em construçao, será que me podem dizer se estou no bom sentido.

 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define STOP_WORDS_NUMBER 6

int stop(char first, char second);
char robot();



int main(){
    char stopWord[sTOP_WORDS_NUMBER][3] = {"as\0", "is\0", "he\0", "we\0", "up\0","on\0"};
    char alphabet[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','x','w','y','z'};

    
    srand(time(NULL));
char firstLetter = robot();
char secondLetter = robot();
int robotCount = 2;
printf("--------------- \nSTOP WORDS ARE\n");
int i=0;
for(; i < 6; i++){
	printf(" %d. %s \n",(i+1), stopWord[i]);
}
printf("--------------- \n");
while(stop(firstLetter, secondLetter) ){
	firstLetter=secondLetter;
	secondLetter=robot();
	robotCount++;				
}

printf("O ROBOT TECLOU %d\n", robotCount);

}

system("PAUSE");


}
char robot(){
int lenght = 26;
short value = rand() % lenght;
return [value];
}
int stop(char first, char second){

int i;
for(i=0;i<STOP_WORDS_NUMBER;i++){
	if(first == stopWord[i][0] && second == stopWord[i][1]){ 
		return 1;
	}else {
		continue;
	}
}

return 0;

}
Link to comment
Share on other sites

Põe a tag [code=c] antes do código e [/code] depois dele, para isso ficar legível. Sem isso é capaz de ter "comido" uns caracteres.

Mas há uns problemas que se podem identificar mesmo sem isso. Experimentaste compilar o código?

A chamada à função system() está fora da função main(), porque tens uns } a mais.

Na função robot(), tens "return [value];". Não sei se te "comeu" a variável por não teres usado as tags, mas tens que fazer "return alphabet[value];"

O problema é que a variável alphabet foi declarada na função main(), o que significa que não existe quando estás a executar outra função. Devias passar a variável num parâmetro da função robot().

Na função stop() tens um problema semelhante: usas a variável stopWord sem esta estar declarada nessa função. Acrescenta um parâmetro à stop() para passares a variável "lá para dentro".

❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.