Comparaison de deux nombres

Résolu
bensalahriadh Messages postés 17 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 3 mai 2008 - 10 avril 2008 à 02:17
bensalahriadh Messages postés 17 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 3 mai 2008 - 14 avril 2008 à 15:08
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

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
10 avril 2008 à 10:06
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+
3
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
10 avril 2008 à 12:45
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"
3
cs_matrix1 Messages postés 169 Date d'inscription dimanche 16 février 2003 Statut Membre Dernière intervention 15 avril 2008
10 avril 2008 à 13:03
il compare deux extrainteger venu de planet Stringus, j'ignore que le dephi peut lire dans nos pensécool!
3
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
10 avril 2008 à 13:03
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;
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
13 avril 2008 à 17:18
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 ="" />
3
bensalahriadh Messages postés 17 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 3 mai 2008
10 avril 2008 à 12:41
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
0
bensalahriadh Messages postés 17 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 3 mai 2008
10 avril 2008 à 12:52
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
0
bensalahriadh Messages postés 17 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 3 mai 2008
10 avril 2008 à 12:52
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
0
bensalahriadh Messages postés 17 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 3 mai 2008
10 avril 2008 à 12:55
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
0
bensalahriadh Messages postés 17 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 3 mai 2008
10 avril 2008 à 13:21
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 ")
0
bensalahriadh Messages postés 17 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 3 mai 2008
10 avril 2008 à 14:08
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
10 avril 2008 à 14:35
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="" />
0
bensalahriadh Messages postés 17 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 3 mai 2008
10 avril 2008 à 14:51
j'ai remplacé  StrToFloat par

StrToInt

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

...
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
10 avril 2008 à 17:16
répond à la première question .... si tu fais les choses à moitier .... c'est normal

 
@+
Cirec

<hr siz="" />
0
bensalahriadh Messages postés 17 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 3 mai 2008
10 avril 2008 à 19:00
j'ai pas compris ta question ( 1 ere question )
 pour le membre "cirec"
svp un peut de clarté
merci
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
10 avril 2008 à 19:44
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="" />
0
bensalahriadh Messages postés 17 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 3 mai 2008
10 avril 2008 à 22:05
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
0
bensalahriadh Messages postés 17 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 3 mai 2008
14 avril 2008 à 15:08
merci pour votre aide
mon peobleme est résolu
0
Rejoignez-nous