Bonjour,

En TP Informatique on doit faire la courbe de Dragon sauf que la courbe obtenue est plutôt étrange.
Pour ce qui est de la classe AffCourbe, c'est celle du professeur et elle fonctionne parfaitement.

Si quelqu'un pouvait me trouver le ou les erreurs s'il vous plaît.
Le professeur a regardé vite fait et n'a rien trouvé.

Sachant que :
- La fonction inv vient de inverser (pour inverser un tableau).
- La fonction test permet d'afficher les coordonnées des points.
- La fonction fus vient de fusionner (pour fusionner deux tableaux en un seul).

Code : 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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import java.util.Scanner;
import java.lang.String;
import javax.swing.*;
import java.awt.*;
 
public class Dragon
{
	public static Point[] inv(Point tab[]) 
	{
		int i;
		Point pro;
		for(i=0;i<=(tab.length)/2;i++) {
			pro = tab[i];
			tab[i] = tab[tab.length-i-1];
			tab[tab.length-i-1] = pro;
		}
		return tab;
	}
	public static void test(Point tab[]) {
		int i;
		for(i=0;i<tab.length;i++) {
			System.out.println(tab[i]);
		}
		System.out.println("--------------------------");
	}
	public static Point[] fus(Point tab[],Point tab2[])
	{
		int i,a=0;
		Point tabf[];
		System.out.println("TABLEAU 1");
		test(tab);
		System.out.println("TABLEAU 2");
		test(tab2);
		if (tab[tab.length-1] == tab2[0]) {
			tabf = new Point[tab.length+tab2.length-1];
			a =1;
		}
		else {
			tabf = new Point[tab.length+tab2.length];
		}
		for (i=0;i<tab.length;i++) {
			tabf[i] = tab[i];
		}
		for (i=a;i<tab2.length;i++) {
			tabf[tab.length+i-a] = tab2[i]; 
		}
		System.out.println("TABLEAU FUSIONNE");
		test(tabf);
		return tabf;
	}
	public static Point[] cpc(Point P, Point Q, int ordre) 
	{
		Point tab[] = {P,Q};
		if(ordre == 0) {
			return tab;
		}
		else 
		{
			Point R;
			R = new Point();
			R.x =(P.x+Q.x+Q.y-P.y)/2;
			R.y =(P.y+Q.y-Q.x+P.x)/2;
			return fus(cpc(P,R,ordre-1),inv(cpc(Q,R,ordre-1)));
		}
	}
	public static void main (String args[]) {
		Point A,B;
		A = new Point();
		B = new Point();
		A.x = 0;
		A.y = 0;
		B.x = 1000;
		B.y = 0;
		new AffCourbe(cpc(A,B,3));
	}
}

Merci beaucoup.