Académique Documents
Professionnel Documents
Culture Documents
RA: 3226009474
RA: 4243835825
SRIE: 5/6
DATA: 23/03/2015
TURMA:A
Nota Trabalhos:
1. (EM LABORATRIO) Implementar um algoritmo em Linguagem C que leia uma string (tamanho
mximo de 10 caracteres) e verifique se a mesma pertence a linguagem T* do alfabeto T = {a,b}.
Exemplo:
Entrada: abc
Sada: No pertence (o smbolo c no faz parte do alfabeto)
Entrada: aabaa
Sada: Pertence (todos os smbolos fazem parte do alfabeto)
OBS. O algoritmo proposto prova que o conjunto T* um conjunto RECURSIVO (pois possvel para
qualquer cadeia identificar se a mesma pertence ou no ao conjunto)
Resposta:
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main() {
//Foi declarado o vetor de 11 posies pois 10 so para os valores do alfabeto e a ltima posio para
o smbolo terminal "\0"
char alfabeto[11], alfaT[] = {'a','b'}, op;
int i=0, pertence=0;
printf("Digite os caracteres do alfabeto a ser comparado: ", i+1);
gets(alfabeto);
for(i=0; i<strlen(alfabeto); i++)
{
if(alfabeto[i] == alfaT[0])
pertence = pertence +1;
if(alfabeto[i] == alfaT[1])
pertence = pertence +1;
}
if(strlen(alfabeto) == pertence)
printf("\nEsta cadeia pertence a linguagem T!");
else
printf("\nEsta cadeia nao pertence a linguagem T!");
printf("\nAlfabeto: %s Tamanho do alfabeto: %d", alfabeto, strlen(alfabeto));
system("\nPAUSE");
}
2.
Para A = { 1,2 } e B = { {1}, {2}, 1, 2} determine o conjunto resultante em cada um dos itens
seguintes:
a)
b)
c)
d)
e)
f)
g)
h)
i=0
y=0
Emita i
i=i+1
y=y-1
Emita i e y
V para 4 ou V para 5
G1 = S -> a
S -> aS -> aaS -> aaa
G2= S -> AS -> aS -> aAS -> abS -> aSb -> aASb -> aaSb ->
Obs.: Processo de derivao infinita.
G3 = S -> AS -> aAS -> aaAS -> aaaS -> aaab
S -> AS -> aAS -> aaAS -> aaaS -> aaaAS -> aaaaS -> aaaab
G4 = S -> ASB -> aASB -> aaSB -> aacB -> aacbB -> aacbbB -> aacbbbB -> aacbbbb
S -> ASB -> aASB -> aaASB -> aaaASB -> aaaaSB -> aaaacB -> aaaacbB -> aaaacbbB ->
aaaacbbbB -> aaaacbbbb
G5 = S -> XC -> xC