| ||||||||
Astucien ![]() | Bonjour à tous !
Je dois faire un petit programme comme exercice pour mon cours d'informatique. Le problème c'est que je m'en sors presque pas...
Je viens ici pour vous demander un petit coup de mains. Je ne demande pas qu'on me le fasse ou qu'on me donne la solution telle quelle, mais juste la démarche à suivre, la manière de réflechir et de procéder pour y arriver.
Voici l'énoncé :
------------------
Sujet: L'hypoténuse est le côté opposé à l'angle droite d'un triangle rectangle, et son carré est égal à la somme des 2 autres côtés,
Soit : K² = I² + J²
On demande de trouver les triangles dont l'hypoténuse est un nombre entier tout en limitant la recherche à I et J compris entre 2 et X (entier).
Le programme contiendra une liste des résultats obtenus sous la forme I + J = K et un bouton "Go"
X est introduit via un inputquery entre 3 et 65 utilisant la vérification directe.
------------------
J'imagine que pour vous c'est archi simple, mais pour moi... pfff c'est assez compliqué.
PS: le hic, c'est que je dois rendre le code source et l'exercice terminé pour demain...
Je repasserais quelques fois voir si y a déjà des réponses.
Merci 1000x à vous [hello]
Modifié par Gh0st_D0g le 16/10/2006 10:22 | |||||||
Publicité | ||||||||
| ||||||||
Astucien | Salut,
Bon, le fait d'avoir le langage utilisé serait déjà d'une bonne aide…
Et, de toutes manières, une chance que tu ne nous demande pas de solution, mais un algo, car… on ne va quand meme pas faire ton exercice pour toi, non [question]
Sinon, la solution passe par:
1- calculer le carré de l'hypoténuse
2- calculer l'hypoténuse (la racine carrée… du carré de l'hypoténuse, en somme)
3- vérifier le modulo du carré de l'hypoténuse par l'hypothénuse lui-meme (le modulo étant le reste de la division d'un entier par un autre entier)
4- si le modulo vaut 0, c'est que l'hypothénuse est un entier [clindoeil]… vu que la racine carrée du carré de l'hypoténuse, c'est l'hypoténuse lui meme [clindoeil] | |||||||
Astucien ![]() | Désolé de pas avoir précisé le language mais pourtant avant de valider mon message, j'ai du sélectionner le language, Delphi donc... | |||||||
Astucien | Gh0st_D0g a écrit :
Ca, ca permet tout au plus de demander un tri des messages en fonction du langage…
Et comme, par habitude, je parcourres tous les messages pour lesquels il n'est pas clairement spécifié un langage que je ne connais absolument pas…Désolé de pas avoir précisé le language mais pourtant avant de valider mon message, j'ai du sélectionner le language, Delphi donc... | |||||||
Astucien ![]() | Bon ben voila c'est foutu comme chaque semaine...
Voila ce que j'ai déjà pu faire
[code]unit Ex07;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
lbl_Noms: TLabel;
lbl_Date: TLabel;
lb_Resultats: TListBox;
btn_Go: TButton;
procedure btn_GoClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
c_Min = 2;
c_Max = 65;
procedure TForm1.btn_GoClick(Sender: TObject);
var
i_I, i_J, i_K, i_Mod, c_Min, c_Max : integer;
begin
for i_K := c_Min to c_Max do
begin
i_I := 2;
while NOT (i_K mod i_I = 0) do
i_I := i_I + 1;
if i_I = i_K
then lb_Resultats.Items.Add(IntToStr(i_K) + ' est entier')
end;
end;
end.[/code] | |||||||
Astucien | Fais attention au fait que le carré de l'hypoténuse est la somme des carrés des deux autre cotés, c'est à dire que la formule est
hyptoénuse*hypoténuse=(cotéa*cotéa)+ (coteb*coteb)
Ca pouvait devenir
hypocarre=(cotea*cotea)+(coteb*coteb)
//calcule de l'hypotenuse
hypo=racinecaree(hypocarre)
//vérification
verif=hypocarre mod hypo
si(verif==0)
{
hypo est entier
}
sinon
{
hypo n'est pas un entier
} | |||||||
Astucien | Gh0st_D0g a écrit :
[code]
...
var
i_I, i_J, i_K, i_Mod, c_Min, c_Max : integer;
...
[/code]
Bonjour,
Ne devrait tu pas utilisé le type reel? | |||||||
Astucien ![]() | Hello !
Je suis en classe la [langue]
J'ai réussi a faire l'exercice mais avec de l'aide.
Sinon je n'y serais pas arriver
[code]unit Ex07;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
Tlbl_Date = class(TForm)
lbl_Noms: TLabel;
lbl_Date: TLabel;
lb_Resultats: TListBox;
btn_Go: TButton;
procedure btn_GoClick(Sender: TObject);
procedure formshow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
lbl_Date: Tlbl_Date;
implementation
{$R *.dfm}
const
c_i_Min = 3;
c_i_Max = 65;
procedure Tlbl_Date.btn_GoClick(Sender: TObject);
var
i_I, i_J, i_K : integer;
r_K : real;
begin
for i_J := c_i_Min to c_i_Max do
begin
for i_I := i_J to c_i_Max do
begin
r_K := sqrt((i_J*i_J) + (i_I*i_I));
if trunc(r_K) = r_K
then
lb_Resultats.Items.Add(IntToStr(i_J)+' ² + '+IntToStr(i_I)+ ' ² = '
+floatToStr(trunc(r_K))+ ' ² ');
end;
end;
end;
[/code] | |||||||
|
Les bons plans du moment PC Astuces | Tous les Bons Plans | ||||||||||||||||
|