Solution à un exercice

Fermé
dx3d Messages postés 68 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 juillet 2017 - 12 juin 2013 à 22:38
dx3d Messages postés 68 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 juillet 2017 - 13 juin 2013 à 15:06
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 mercredi 12 juin 2013 Statut Membre Dernière intervention 15 juin 2013 13
12 juin 2013 à 22:41
1plus1 est 2
0
dx3d Messages postés 68 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 juillet 2017
13 juin 2013 à 15:06
up
0