Comparaison de deux nombres [Résolu]

Signaler
Messages postés
17
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
3 mai 2008
-
Messages postés
17
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
3 mai 2008
-
Salut,
voila mon problème:
 J'ai utilisé  le "stringGrid" et j'ai comparé deux nombres puis j'ai calculer  leur somme .
Voilàle le codeque j'ai tapé :

if  ( StringGrid1.cells[0,0] >= StringGrid1.cells[1,0] ) then
     begin
      pl2:=Strtofloat(StringGrid1.cells[0,0])+ 2;
      StringGrid1.cells[2,01]:=floattostr(pl2);
     end;

exmple:
lorsque je tape 7 et 5 le resultat est 9
mais lorsque je tape 9 et 14 (je tape n'importe quel valeur de deux chiffres ou plus)  le resultat  est 11

je ne sais pas pourquoi ?

d'avance merci pour votre aide

19 réponses

Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Si tu ne sais pas pourquoi je te conseille de lire un manuel de programmation!

le problème est ici et je te laisse deviner:
if  ( StringGrid1.cells[0,0] >= StringGrid1.cells[1,0] ) then

A+
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Si tu veux ajouter 2 au plus grand nombre (j' essaye de deviner ce que tu veux faire), il te faut faire un "else" dans ton "if"
Messages postés
169
Date d'inscription
dimanche 16 février 2003
Statut
Membre
Dernière intervention
15 avril 2008

il compare deux extrainteger venu de planet Stringus, j'ignore que le dephi peut lire dans nos pensécool!
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Je continue sans savoir ce que tu veux faire mais il me semble que : 

else
     begin
     pl2:=Strtofloat(StringGrid1.cells[0,0])+4;

doit être remplacé para :

else
     begin
     pl2:=Strtofloat(StringGrid1.cells[1,0])+4;
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
39
Toujours pas réglé ce problème ?

Commence déjà par modifier ceci :

procedure TForm1.Button3Click(Sender: TObject);
var k,l,i,n : integer;
var j,a,pl1,pl2,pl: Integer;
begin
  if (edit5.Text= '') or (edit6.Text='') or (edit1.Text='') then
    begin
    showmessage ('remplir les champs S.V.P ');
    //Application.Run; ceci n'a rien à faire ici
    // remplace le par :
    Exit;
    end
    else
.....

puis tu change tous les StrToFloat en StrToInt
et tous les FloatToStr en IntToStr

et regarde si ça fonctionne comme ça

Mais tu devrait réecrire ton code en séparant plus les défférentes étapes ... parce que là c'est un peut le wide (le bordel)

 
@+
Cirec

<hr siz ="" />
Messages postés
17
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
3 mai 2008

j'ai remplacé  if  ( StringGrid1.cells[0,0] >= StringGrid1.cells[1,0] ) then
par if  ( strtofloat(StringGrid1.cells[0,0]) >= strtofloat(StringGrid1.cells[1,0] ) ) then

malheuresement aucune resultat
Messages postés
17
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
3 mai 2008

j'ai ajouté le "else" 

     if  ( strtofloat(StringGrid1.cells[0,0]) >= strtofloat(StringGrid1.cells[1,0] ) ) then
     begin
      pl2:=Strtofloat(StringGrid1.cells[0,0])+ 2;
      StringGrid1.cells[2,01]:=floattostr(pl2);
     end
     else
     begin
      pl2:=Strtofloat(StringGrid1.cells[i-1,n+1])+Strtofloat(fabbac.Items[n]);
      StringGrid1.cells[i,n+1]:=floattostr(pl2);
      end;

le meme probleme
Messages postés
17
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
3 mai 2008

j'ai ajouté le "else" 

     if  ( strtofloat(StringGrid1.cells[0,0]) >= strtofloat(StringGrid1.cells[1,0] ) ) then
     begin
      pl2:=Strtofloat(StringGrid1.cells[0,0])+ 2;
      StringGrid1.cells[2,01]:=floattostr(pl2);
     end
     else
     begin
      pl2:=Strtofloat(StringGrid1.cells[i-1,n+1])+Strtofloat(fabbac.Items[n]);
      StringGrid1.cells[i,n+1]:=floattostr(pl2);
      end;

le meme probleme
Messages postés
17
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
3 mai 2008

je suis desolé pour le message précedant

voila le code correcte :
   if  ( strtofloat(StringGrid1.cells[0,0]) >= strtofloat(StringGrid1.cells[1,0] ) ) then
     begin
      pl2:=Strtofloat(StringGrid1.cells[0,0])+ 2;
      StringGrid1.cells[2,01]:=floattostr(pl2);
     end
     else
     begin
     pl2:=Strtofloat(StringGrid1.cells[0,0])+4;
      StringGrid1.cells[2,01]:=floattostr(pl2);
      end;

le meme probleme
Messages postés
17
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
3 mai 2008

le probleme qu'avec cette condition
if  ( strtofloat(StringGrid1.cells[0,0]) >= strtofloat(StringGrid1.cells[1,0] ) ) then 
il n'y a aucune resultat (cad lorsque on ajoute le "strtofloat ")
Messages postés
17
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
3 mai 2008

lorsque je tape ce code :
  if  ( StringGrid1.cells[0,0]) >= StringGrid1.cells[1,0] ) ) then
     begin
      pl2:=Strtofloat(StringGrid1.cells[0,0])+ 2;
      StringGrid1.cells[2,1]:=floattostr(pl2);
     end
     else
     begin
     pl2:=Strtofloat(StringGrid1.cells[1,0])+4;
      StringGrid1.cells[2,1]:=floattostr(pl2);
      end;

 lorsque je tape deux valeurs composé chacun d'un seul chiffre le resultat est correcte ( 8 et 6 le resultat est 10)
mais lorsque je tape deux valeurs ,le premier est composé d'un seul chiffre et le deuxieme de deux chiffres le resultat est fausse ( 9 et 12 le resultat est 11 car la comparaison est faite entre 9 et la premiere chiffre du deuxieme valeur ( 1 ))

d'avance merci de votre aide
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
39
Salut,

1° il est placé ou ton code (dans quel évènement) ? (le problème peut venir de là)

2° si c'est que des entiers que tu entres dans les cellules, tu peux remplacer
StrToFloat par StrToInt
et bien sur pl2 est de Type Integer. (Var pl2 : Integer)

 
@+
Cirec

<hr siz="" />
Messages postés
17
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
3 mai 2008

j'ai remplacé  StrToFloat par

StrToInt

le meme problème
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
C' est sûr que si tu continues avec ça :
if  ( StringGrid1.cells[0,0]) >= StringGrid1.cells[1,0] ) ) then

...
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
39
répond à la première question .... si tu fais les choses à moitier .... c'est normal

 
@+
Cirec

<hr siz="" />
Messages postés
17
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
3 mai 2008

j'ai pas compris ta question ( 1 ere question )
 pour le membre "cirec"
svp un peut de clarté
merci
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
39
c'est toi qui demande un peut de clareté alors que tout le monde te demande plus de précision, tu nous remets toujours le même morceau de code ... c'est le monde à l'enver
C'est pourtant simple ...
ce code se trouve bien dans une procedure, et c'est, généralement, un évènement (OnClick, OnKey etc etc) ... donne nous le nom de la procedure
encore mieux donne nous la procedure complète.

et c'est pas la peine d'écrire en gros et en gras on est pas aveugle

 
@+
Cirec

<hr siz="" />
Messages postés
17
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
3 mai 2008

voilà tout le code de mon programme :
procedure TForm1.Button3Click(Sender: TObject);
var k,l,i,n : integer;
var j,a,pl1,pl2,pl:real;
begin
  if (edit5.Text='') or (edit6.Text='') or (edit1.Text='') then
    begin
    showmessage ('remplir les champs S.V.P ');
    Application.Run;
    end
    else
   ListBox1.Items.add(refart.Text);
   ListBox2.Items.add(Edit5.Text);
   nbrebac.Items.add(Edit6.Text);
   listbox3.Items.add(mach.Text);
   ListBox7.Items.add(Edit1.Text);
   j:=((60/(StrToInt(Edit5.Text)))*StrToInt(Edit1.Text))/60;
   fabbac.Items.add(floattostr(j)) ;
   for i:=0 to listbox1.Count-1 do
   begin
   a:=(strTofloat(nbrebac.Items[i])*strTofloat(fabbac.Items[i])) ;
   chargeart.Items[i]:= floattostr(a);
   end;


//------srtringrid------------------


   lig:=listbox3.Count+2 ;
   col:=Strtoint(edit6.Text)+1;
   stringGrid1.ColCount:=col;
   StringGrid1.RowCount:=lig;
   StringGrid1.Cells[0,0]:='Machine\Bac';
   StringGrid1.ColWidths[0]:=120;
   pl:=0;


   for l:=0 to fabbac.Count-1 do
   begin
   StringGrid1.Cells[0,l+1]:=listbox3.Items[l];
   StringGrid1.Cells[1,0]:='Bac N°1';
   pl:=pl + (Strtofloat(fabbac.Items[l]));
   StringGrid1.cells[1,l+1]:=floattostr(pl);


    for  k:=2 to col do
   begin
   StringGrid1.Cells[k,0]:='Bac N°'+inttostr(k);
   pl1:=Strtofloat(StringGrid1.cells[k-1,1])+Strtofloat(fabbac.Items[0]);
   StringGrid1.cells[k,1]:=floattostr(pl1);
   end;


   for n:=1 to fabbac.Count-1 do
    begin
    for  i:=2 to col do
    if  (StringGrid1.cells[i,n]) >= (StringGrid1.cells[i-1,n+1])then
     begin
        pl2:=Strtofloat(StringGrid1.cells[i,n])+Strtofloat(fabbac.Items[n]);
        StringGrid1.cells[i,n+1]:=floattostr(pl2);
     end
    else
      begin
      pl2:=Strtofloat(StringGrid1.cells[i-1,n+1])+Strtofloat(fabbac.Items[n]);
      StringGrid1.cells[i,n+1]:=floattostr(pl2);
      end;




    end;
    end;
   Edit5.Clear;
   Edit6.Clear;
   Edit1.Clear;


end;

et merci pour votre aide
Messages postés
17
Date d'inscription
mardi 5 décembre 2006
Statut
Membre
Dernière intervention
3 mai 2008

merci pour votre aide
mon peobleme est résolu