ajuda à resoluçao de exercicio em C

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

ajuda à resoluçao de exercicio em C

Mensagempor stiba » Segunda Jun 28, 2010 11:37

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
stiba
Novato
Novato
 
Mensagens: 4
Registado: Domingo Mar 21, 2010 20:31

Mensagempor alr_tech » Segunda Jun 28, 2010 12:16

boas

é o seguinte...
aqui não fazemos exercícios ....
ok...
nós tb tivemos de dar duro...

a única coisa que interessa é :
- geração de letras aleatórias - descobre o uso das funções de conversão e de random...
atenção à Dica: Escolha uma letra seleccionando um número inteiro aleatório entre 1 e 26.

- Conte o número de letras escritas - uso de variáveis incrementáveis...
- até o programa produzir uma das palavras de duas letras as, is, he, we, up, ou on - uso de Ifs encadeados ou Case...
uso de string para maior facilidade de comparação..

ex:
sair - falso
enquanto não for sair

gerar valor
converter em caracter
passar para string
incrementar contador
gerar valor
converter em caracter
somá-lo á string
incrementar contador
(colocar aqui um loop para ficar algoritmamente correcto)

comparar string
se for um dos casos -> sair = verdadeiro

fazer

apresentar resultados

bom estudo

cumps
AMD XP 2400+, ASUS A7N8X-E Deluxe
1 Gb DDR 400, Seagate 80 GB ATA + 120 Gb ATA, ATI 9600 XT
alr_tech
Gurus
Gurus
 
Mensagens: 6768
Registado: Quinta Fev 17, 2005 18:01
Localização: Lisboa

Mensagempor JoaoRosa » Quarta Jun 30, 2010 14:14

alr_tech Escreveu:boas

é o seguinte...
aqui não fazemos exercícios ....
ok...
nós tb tivemos de dar duro...


depois de seguires o algortimo dado, e implementares algo, diz como correu, e aí sim é que começamos a dar código! :)
Portátil: LG LW65-P4XP c/ upgrade: Seagate Momentus 7200.1 (2.5" IDE 7200rpm 80Gb) & 2x1GB Kingston PC 4200 533 MHz DDR2
Disco Externo: Caixa Point of View Hdd Enclosure 2.5" & Disco Fujitsu MHV2080AT (2.5" IDE 4200rpm 80Gb)
Avatar do Utilizador
JoaoRosa
Membro de Prata
Membro de Prata
 
Mensagens: 439
Registado: Quinta Nov 03, 2005 21:38
Localização: Oliveira de Azeméis

Mensagempor CryptorX » Quarta Jun 30, 2010 18:20

Yep... dava mais jeito se já tivesses alguma coisa feita para a gente te ajudar...

Se estás mesmo á nora e nem sabes por onde pegar deixa-me tentar dar umas dicas... sim... só vou tentar porque eu sou mais de Java e acima de tudo C++ enquanto que em C fico-me mais pelo básico mas julgo ser o suficiente para te dar uma mão.

Primeiro começas por definir um vector de strings de 26 elementos (0 a 25)
e associas a cada um desses elementos a respectiva letra do abecedário (vector[0]=A, vector[1]=B, vector[2]=C etc... até vector[25]=Z).

Depois inicializas quatro variáveis do tipo int com um nome ao teu gosto desde que sejam inicializadas com o valor 0 (depois vês porque).
Vamos usar por exemplo as variáveis A B C e D.

E depois inicializas duas strings chamadas letra1 e letra2 inicializadas com o valor a, isto porque uma string tem sempre de ter um valor associado ao contrario de ints.

Depois inicias um ciclo de repetição do tipo while que é executado enquanto a variável D for igual a 0.

Nesse ciclo While devem de ser gerados dois valores aleatórios de 0 a 25 (26 valores), sendo é que um é atribuído a uma das variáveis do tipo int que foram inicializadas (A por exemplo) e o outro valor aleatório a outra variável (B).

Depois usas os valores atribuídos ás variáveis A e B para pesquisar o abecedário para ver a que letra correspondem, associando esse valor á variável letra1 e letra2 respectivamente... ex:

letra1=vector[a];
letra2=vector[letra b];(senão isto põe tudo em bold daqui para a frente :roll: )

Se o valor atribuído aleatoriamente a A e B fosse 11 e 22 respectivamente então a letra1 e letra2 seriam K e V, ou seja, já podes formar uma string com o conteúdo KV e compara-la aos conjuntos de letras que referis-te... 1º comparas com 1, se for igual o valor D passa a 1, senão for continua zero e compara ao próximo, e por assim adiante, depois de comparares com todos incrementas 1 á variável C que ira servir para contar o numero de tentativas, para isto podes fazer C++; ou C=C+1;, sebem que os cetores preferem que uses o incrementador ++.

Quando no ciclo de repetição for gerado um conjunto de letras que corresponda a algum que referiste então é associado á variável D o valor 1 e termina o ciclo While.

Depois escreves uma linha a dizer que o conjunto X foi encontrado em N tentativas...

Enfim... tu tens que aprender a fazer isso, por isso não te vou dar código contribuindo para alguma preguiça da tua parte como estaria também a desrespeitar a atitude dos membros arl_tech e JoaoRosa, atitude essa com a qual eu concordo, mas se quiseres voluntario-me a fazer-te isso em Java, terás que alterar muita coisa mas ao menos ficas com uma ideia de como as coisas funcionam, se quiseres diz...

É que isto dá mais trabalho a explicar do que simplesmente fazer...

Cumps
Imagem
CryptorX
Membro de Ouro
Membro de Ouro
 
Mensagens: 913
Registado: Quinta Nov 20, 2008 7:35
Localização: Lisboa, Xabregas


Voltar para Programação

Quem está ligado:

Utilizadores a ver este Fórum: Nenhum utilizador registado e 0 visitantes

cron