Salut à tous,

J'ai fait un programme de résolution d'équations de système linéaire. Seulement, si le déterminant est égal à 0, le programme ne fonctionne pas et je souhaiterais qu'íl me dise, par exemple, "résolution impossible". Du coup, je me demandais si je devais rajouter une procédure déterminant au début pour dire ensute if det différent de 0 then et lancer ma résolution d'équation. Mais je me demandais s'il n'y avait pas un truc plus simple, plus rapide ?

N'hésitez pas à commenter si j'ai une erreur dans mon programme

Merci

Elody

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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
program Gauss;
uses crt;
 
var
    a:array[1..10,1..10] of real;
    x:array[1..10] of real;
    i,j,k,n:integer;
    P:real;
 
begin
 
//Creation de la matrice
Writeln('Matrix order ');
readln(n);
 
for i:=1 to n do
begin
  for j:=1 to n do
 
   begin
    write('A',i,j,' ');
    readln(a[i,j]);
   end;
   write('B',i,'  ');
   readln(a[i,n+1]);
end;
clrscr;
 
//Ecriture de la m
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    write(a[i,j]:4:4,' x',j);
    if j < n then write(' + ');
   end;
   writeln(' = ',a[i,n+1]:4:4);
 end;
 
 
 begin
  j:=1
   repeat
   write(a[i,j]:4:4,' x',j);
   if j < n then write(' + ');
   until j=n ;
 end;
  writeln(' = ',a[i,n+1]:4:4);
  end;
 
//Gauss procedure
 
for i:=1 to n-1 do
 for j:=i+1 to n do
 
  begin
  P:=a[j,i];
  for k:=1 to n+1 do
   a[j,k]:=a[j,k] - P*a[i,k]/a[i,i];
 end;
readln;
 
//Ecriture de Gauss
 
for i:=1 to n do
 
 
  j:=1
  while j = n do
   begin
    write(a[i,j]:4:4,' x',j);
    if j < n then write(' + ');
   end;
   writeln(' = ',a[i,n+1]:4:4);
 
//calculate the values of x
 
x[n] := a[n,n+1] / a[n,n];
 
begin
 i:=n
 repeat
 x[i]:=a[i,n+1];
 until i= 1;
 
  begin
   j:= i+1
   repeat
   x[i]:=x[i] - a[i,j]*x[j];
   until j=n;
 x[i]:=x[i]/a[i,i];
end;
 readln;
 
 
 //Resultats
 
while i = n do
 begin
 write('x',i,' = ',x[i]:4:4,'  ');
 readln;
 end;
 
end.