Solution à un exercice

dx3d Messages postés 68 Date d'inscription   Statut Membre Dernière intervention   -  
dx3d Messages postés 68 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Donc lors de mes révisions je suis tombé sur un exercice de programmation en c qu'on avait pas corrigé en cours ( on devait le rendre en projet ) mais on a jamais eu la solution, j'aimerais savoir si quelqu'un pourrait ce donné la peine d'écrire rapidement juste l'algorithme qui ferait fonctionner ce programme, l'énoncé est comme tel :

Une machine de Turing est une machine qui dispose d'un ruban divisé en cases et dans chaque case on peut écrire soit 1, soit 0, soit B ( qui signifie case vide), soit le caractère #. Au début d'un programme la machine commence toujours au début du ruban et utilise une variable ( notée q ) où elle stock l'entier 2. La machine n'accepte qu'un seul type d'instructions :

Lire c n n' c' d

-n,n' sont des entiers supérieurs où égaux à 2,
-c,c' sont des caractères dans l'ensemble {0,1,B,#},
-d est un caractère dans l'ensemble {l,r}.

La signification de l'instruction est la suivante : Lire la case courante du ruban, si c'est égal à c et que q est égale à n, alors affecter n' à q, écrire dans la case courante le caractère c' et aller à gauche ( si d=l), sinon aller à droite.( On suppose le ruban infini vers la droite, ie on peut toujours aller vers la droite et lorsque l'ont veut aller vers la gauche et que la machine ce trouve sur le bord gauche du ruban elle ne bouge pas) Un programme dans cette machine s'exécute de la manière suivante : A chaque cycle d'horloge la machine regarde toutes les instructions et exécute la première possible, et si aucune des instructions ne peut être exécutée elle s'arrête et le résultat du programme est la séquence de bits sur le ruban.

Question 1 : Ecrire un programme qui lit une séquence de bits sur le ruban terminé par # et inverse chaque bit. ( Le caractère # signifie la fin de la séquence )

Question 2 : Ecrire un programme qui lit 2 séquence de bits ( séparées par le caractère # ) et qui écrit après la 2éme séquence de bits la somme des deux ( la deuxième séquence est aussi terminée par un # pour signifier la fin ). Faire pareil pour le produit.


Donc j'arrive à comprendre à peut prêt ce qu'on me demande de faire, mais je ne sais pas vraiment par où commencé, je ne suis pas super bon en C ...

Si quelqu'un pouvait juste m'indiqué à peut prêt ce qui devrait être fait avec un algorithme simple j'essaierais de le coder moi même, aussi si quelqu'un peut me donner la réponse directement je ne suis pas contre non plus étant donné que c'est plus pour une révision qu'autre chose.

Merci d'avance à ceux qui prendront le temps de me répondre.


2 réponses

MaiMidou22 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   13
 
1plus1 est 2
0
dx3d Messages postés 68 Date d'inscription   Statut Membre Dernière intervention  
 
up
0