alexarpad2003 Posted May 31, 2011 Report Posted May 31, 2011 Am codu :<?phpif ($_POST['sub']){if (!is_numeric($_POST['nr1'])) echo "scrie un numar la numarul 1";elseif (!is_numeric($_POST['nr2'])) echo "scrie un numar la numarul 2";elseif ($_POST['nr1']%3==1) echo "numarul 1 nu este divizibil cu 3";elseif ($_POST['nr2']%3==1) echo "numarul 2 nu este divizibil cu 3";elseif (($_POST['nr1']%3==1) && ($_POST['nr2']%3==1)) echo "numarul 1 si 2 nu este divizibil cu 3";else {$nr1=$_POST['nr1'];$nr2=$_POST['nr2'];$op=$_POST['op'];if ($op=="+") { $rezult=$nr1+$nr2; $selected1="selected='selected'"; } elseif ($op=="-") { $rezult=($nr1-$nr2);$selected2="selected='selected'";} elseif ($op=="*") { $rezult=$nr1*$nr2;$selected3="selected='selected'";} else { $rezult=$nr1/$nr2; $selected4="selected='selected'"; }}}?>Insa conditia :elseif (($_POST['nr1']%3==1) && ($_POST['nr2']%3==1)) echo "numarul 1 si 2 nu este divizibil cu 3"; - nu o ia !Deci daca amandoua numere nu sunt divizibile cu 3 trece mai departe, ca si cum nu ar exista conditia. Unde gresesc ? Quote
Moderators Dragos Posted May 31, 2011 Moderators Report Posted May 31, 2011 Incearca elseif (!(($_POST['nr1']%3) && ($_POST['nr2']%3))) Quote
alexarpad2003 Posted May 31, 2011 Author Report Posted May 31, 2011 Nu vrea. Nu stiu unde gresesc. Quote
em Posted May 31, 2011 Report Posted May 31, 2011 Nu ai gandit problema bine dpdv logic. Uite solutia<?php if ($_POST['sub']) { if (!is_numeric($_POST['nr1'])) echo "scrie un numar la numarul 1"; elseif (!is_numeric($_POST['nr2'])) echo "scrie un numar la numarul 2"; elseif (($_POST['nr1']%3==1) && ($_POST['nr2']%3==1)) echo "numarul 1 si 2 nu este divizibil cu 3"; elseif ($_POST['nr1']%3==1) echo "numarul 1 nu este divizibil cu 3"; elseif ($_POST['nr2']%3==1) echo "numarul 2 nu este divizibil cu 3"; else { $nr1=$_POST['nr1']; $nr2=$_POST['nr2']; $op=$_POST['op']; if ($op=="+") { $rezult=$nr1+$nr2; $selected1="selected='selected'"; } elseif ($op=="-") { $rezult=($nr1-$nr2);$selected2="selected='selected'";} elseif ($op=="*") { $rezult=$nr1*$nr2;$selected3="selected='selected'";} else { $rezult=$nr1/$nr2; $selected4="selected='selected'"; } } } ?>Hint: Doar am inversat doua linii. Quote
alexarpad2003 Posted May 31, 2011 Author Report Posted May 31, 2011 Am observat. Merci, insa nu inteleg de ce unele numere care nu sunt divizibile cu 3, totusi mi le vede divizibile cu 3. <?phpif ($_POST['sub']){ if (!is_numeric($_POST['nr1'])) echo "scrie un numar la numarul 1"; elseif (!is_numeric($_POST['nr2'])) echo "scrie un numar la numarul 2"; elseif (($_POST['nr1']%3==1) && ($_POST['nr2']%3==1)) echo "numarul 1 si 2 nu este divizibil cu 3"; elseif ($_POST['nr1']%3==1) echo "numarul 1 nu este divizibil cu 3"; elseif ($_POST['nr2']%3==1) echo "numarul 2 nu este divizibil cu 3"; else{$nr1=$_POST['nr1'];$nr2=$_POST['nr2'];$op=$_POST['op'];if ($op=="+") { $rezult=$nr1+$nr2; $selected1="selected='selected'"; } elseif ($op=="-") { $rezult=($nr1-$nr2);$selected2="selected='selected'";} elseif ($op=="*") { $rezult=$nr1*$nr2;$selected3="selected='selected'";} else { $rezult=$nr1/$nr2; $selected4="selected='selected'"; }}}?><form method='post' ><input name='nr1' type='text' value=<?php echo $nr1; ?>><select name='op'> <option <?php echo $selected1; ?>>+</option> <option <?php echo $selected2; ?>>-</option> <option <?php echo $selected3; ?>>*</option> <option <?php echo $selected4; ?>>/</option></select><input name='nr2' type='text'value=<?php echo $nr2; ?>><input name='sub' type='submit' value='='><input name='rez' type='text' value=<?php echo $rezult; ?>></form>5+5=10 -> de ce nu se aplica if-urile aici ? 5 nu este divizibil cu 3 Quote
em Posted May 31, 2011 Report Posted May 31, 2011 (edited) @alexarpad2003Un numar este divizibil cu 3 daca n mod 3=0;Un numar NU este divizibil cu 3 daca n mod 3=1 SAU n mod 3=2. (Sau mai simplu n mod 3 > 0)Hope this helps. Edited May 31, 2011 by em Alta idee. 1 Quote
alexarpad2003 Posted May 31, 2011 Author Report Posted May 31, 2011 elseif (($_POST['nr1']%3>=1) && ($_POST['nr2']%3>=1)) echo "numarul 1 si 2 nu este divizibil cu 3";elseif ($_POST['nr1']%3>=1) echo "numarul 1 nu este divizibil cu 3";elseif ($_POST['nr2']%3>=1) echo "numarul 2 nu este divizibil cu 3Asa merge, merci ! Quote
caii Posted May 31, 2011 Report Posted May 31, 2011 <form method='post'>nr1<input type='text' name='nr1'>nr2<input type='text' name='nr2'>op<input type='text' name='op'><input type='submit' name='sub'></form><?$erori = 0;if(isset($_POST['sub'])) { if(!is_numeric($_POST['nr1'])) { $erori .= 'nr 1 nu este numeric '; } if(!is_numeric($_POST['nr2'])) { $erori .= 'nr 2 nu este numeric '; } if($_POST['op'] != '+' && $_POST['op'] != '-' && $_POST['op'] != '*') { $erori .= 'op nu este operator'; } if($erori != '0') { print str_replace('0', '', $erori); } else { $mesaj = ''; switch($_POST['op']) { case '+': if(is_int(($_POST['nr1'] + $_POST['nr2']) / 3)) { $mesaj .= 'suma numerelor este divizibila cu 3'; } else { print 'suma nu este divizibila cu 3'; } break; case '*': if(is_int(($_POST['nr1'] * $_POST['nr2']) / 3)) { $mesaj .= 'produs divizibil cu 3'; } else { $mesaj .= 'produs nedivizibil cu 3'; } break; case '-': if(is_int(($_POST['nr1'] - $_POST['nr2']) / 3)) { $mesaj .= 'nr1-nr2 divizibil cu 3'; } else { $mesaj .= 'nr1-nr2 nedivizibil cu 3'; } break; } if(is_int($_POST['nr1'] / 3)) { $mesaj .= 'nr1 divizibil cu 3'; } else { $mesaj .= 'nr1 nedivizibil cu 3'; } if(is_int($_POST['nr2'] / 3)) { print 'nr2 divizibil cu 3'; } else { $mesaj .= 'nr2 nedivizibil cu 3'; } print $mesaj; } } Quote