Bonjour futur(e) sauveur,
je suis un étudiant et je dois faire un projet en langage C. Ceci doit, donner en sortie, les triangulations d'un polygone convexe. Par exemple, si, en entrée, on donne un hexagone ABCDEF , le programme doit renvoyer toutes les triangulations comme suit:
AC AD AE , BD BE BF, CE CF CA, DF DA DB, EA EB EC, FB FC FD.
la solution , la plus simple selon moi, serait de relier tous les sommets qui ne sont pas adjacents.
J'ai fait ce bout de programme. l'idée principale est de prendre le mot et le concaténer à lui même par ex, ABCDEFABCDEF. Ensuite de copier tout dans un tableau en entier par le code ASCII pour les manier.
Résultat:
il marche jusqu'à l'avant-dernier caractère du mot initial. Je crois qu'il y a un problème d'allocation de mémoire vu que je passe de char en int.
Merci de me corriger.
Au plaisir de lire vos commentaires.
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 #include <stdio.h> #include<string.h> #include<stdlib.h> int main() { char mot[50]; // un tableau d'au plus 50 caractères. char mot2[25]; int L; int tab[2*L]; printf("Donner un mot\n"); scanf("%s",mot); L=strlen(mot); strcpy(mot2,mot); // dupliquer le mot et concaténer les deux copies strcat(mot,mot2); printf("%s\n",mot); for (int i=0;i<=2*L-1;i++){ // l'idée d'utilisation du tableau en entier avec les codes ASCII des caractères est la facilité de manipuler tab [i]= mot[i]; //ce type de tableau par rapport à celui de caractères. } for (int i=0;i<=2*L-1;i++){ // pour juste voir si le tableau en entier contient les codes ASCII de caractères printf("%d\t",tab [i]); } for (int i=0;i<=L-1;i++){ int N=i+2; // la première itération commence à deux rangs plus loin que le nombre pointé par i. int M= L-2+i; // la dernière dépend de la longueur du mot donné et de la valeur de i. for(int j=N; j<=M;j++){ printf ("\n"); printf ("%c", tab [i]); // forcer le tableau à afficher le résultat en caractères. printf ("%c", tab[j]); printf ("\n"); } } return 0; }
Partager