PHP Centeri avaleht Skriptikogu Küsimuste-vastuste leht Teadete vaatamine ja saatmine Foorum - koht küsimiseks Otsingumootor Siit saad infot meie kohta

Kasutajanimi:  
  Parool: 
  Registreeri!   Unustasid salasõna?

Foorumid Programmeerimine Värsked skriptid Arva arvu 1-100
Autor Abi Postitus Abi

mma

Postitusi: 2
Tase: 1
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
Arva arvu 1-100

Tere, olen suhteliselt algaja php progreja ning vajan teie abi!
Nimelt anti meile koolis ülesanne koostada teisipäevaks programm, mis palub ära arvata ühe arvu vahemikust 1 kuni 100. Erinevalt programmist arva100.php tuleb äriloogika realiseerida nii, et arvaja peab alati tegema vähemalt 7 katset, enne kui ostitavale arvule „pihta“ saab – seega juhuslikult pihtasaamise võimalust ei tohi olla! Seejuures teated, mida programm arvajale saadab, ei tohi olla omavahel loogiliselt vastuolulised.

Näide vastuoluliste teadete jadast:

1.Otsitav arv on siiski väiksem kui 55.
2.Otsitav arv on siiski suurem kui 27.
3.Otsitav arv on siiski väiksem kui 13.

Vastuolu:   1. ja 2.      27 < x < 55
3.        x < 13

Seega peab programm käituma tõelise petisena: väljaspoolt jätab mulje, et otsitav arv on valitud juhuslikult, tegelikult aga…

Järgnevalt on minu enda kokku keeratud käkk. Kui leiate vigu või kuidas sellist programmi lihtsamalt/lühidamalt teha, andke teada, hetkel puudub mul võimalus selle programmi toimivust kontrollida. Ärge väga sõimake, kui see ikka tõeline jama on ning ette tänud abi eest!

PHP kood:


<?php
session_start
();
?><html>
<head>
<title>Arva100</title>
</head>
<body>
<p>  
<?php
echo "<pre>";
if( !isset(
$_REQUEST['arvas']) ) {
    
// algab uus m?ng...
    
$_SESSION['arv'] = rand(1,100); // genereerime uue otsitava arvu ja salvestame selle
    
$teated array(); // t?hi teadete massiiv: esialgu teateid ei ole 
    
echo "Arva ?ra arv vahemikust 1 kuni 100\n";
}
else { 
// m?ng j?tkub...
    
$arvas $_REQUEST['arvas']; // mida m?gija arvas
    
$arv $_SESSION['arv'];     // otsitav arv
    
$teated $_SESSION['teated'];    // loeme k?ik senised teated...
    
$teateid count($teated);        // ...ja leiame nende arvu
    // echo "teateid = $teateid\n";  // kontrolltr?kk
    
for( $k=0$k<$teateid$k++ ) // v?ljastame k?ik senised teated...
        
echo ($k+1).". $teated[$k]\n";  //...koos jrk. nr.
    
$teateid++;     // j?rgmise teate jrk. nr.
    // ----------------------- ?riloogika algus -----------------------------------------------------
    
if($arvas == $arv) {
        
$_SESSION['arv'] = rand(1,100); 
    }
    elseif(
intval($arvas) == && $arvas != "0")
        
$teade "Arve tahaks, mitte mingit soga...\n";
    elseif( (
$arvas 1) or ($arvas 100) )
        
$teade "V?imalikud variandid on siiski 1 kuni 100.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski v?iksem kui $arvas.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski suurem kui $arvas.\n";
    
$teated[$teateid-1] = $teade;  // lisame teadete massiivi l?ppu uue teate
    
echo "$teateid. $teade\n";
    if(
$arvas == $arv) {
        
$_SESSION['arv'] = rand(1,100); 
    }
    elseif(
intval($arvas) == && $arvas != "0")
        
$teade "Arve tahaks, mitte mingit soga...\n";
    elseif( (
$arvas 1) or ($arvas 100) )
        
$teade "V?imalikud variandid on siiski 1 kuni 100.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski v?iksem kui $arvas.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski suurem kui $arvas.\n";
    
$teated[$teateid-1] = $teade;  // lisame teadete massiivi l?ppu uue teate
    
echo "$teateid. $teade\n";
    if(
$arvas == $arv) {
        
$_SESSION['arv'] = rand(1,100); 
    }
    elseif(
intval($arvas) == && $arvas != "0")
        
$teade "Arve tahaks, mitte mingit soga...\n";
    elseif( (
$arvas 1) or ($arvas 100) )
        
$teade "V?imalikud variandid on siiski 1 kuni 100.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski v?iksem kui $arvas.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski suurem kui $arvas.\n";
    
$teated[$teateid-1] = $teade;  // lisame teadete massiivi l?ppu uue teate
    
echo "$teateid. $teade\n";
    if(
$arvas == $arv) {
        
$_SESSION['arv'] = rand(1,100); 
    }
    elseif(
intval($arvas) == && $arvas != "0")
        
$teade "Arve tahaks, mitte mingit soga...\n";
    elseif( (
$arvas 1) or ($arvas 100) )
        
$teade "V?imalikud variandid on siiski 1 kuni 100.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski v?iksem kui $arvas.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski suurem kui $arvas.\n";
    
$teated[$teateid-1] = $teade;  // lisame teadete massiivi l?ppu uue teate
    
echo "$teateid. $teade\n";
    if(
$arvas == $arv) {
        
$_SESSION['arv'] = rand(1,100); 
    }
    elseif(
intval($arvas) == && $arvas != "0")
        
$teade "Arve tahaks, mitte mingit soga...\n";
    elseif( (
$arvas 1) or ($arvas 100) )
        
$teade "V?imalikud variandid on siiski 1 kuni 100.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski v?iksem kui $arvas.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski suurem kui $arvas.\n";
    
$teated[$teateid-1] = $teade;  // lisame teadete massiivi l?ppu uue teate
    
echo "$teateid. $teade\n";
    if(
$arvas == $arv) {
        
$_SESSION['arv'] = rand(1,100); 
    }
    elseif(
intval($arvas) == && $arvas != "0")
        
$teade "Arve tahaks, mitte mingit soga...\n";
    elseif( (
$arvas 1) or ($arvas 100) )
        
$teade "V?imalikud variandid on siiski 1 kuni 100.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski v?iksem kui $arvas.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski suurem kui $arvas.\n";
    
$teated[$teateid-1] = $teade;  // lisame teadete massiivi l?ppu uue teate
    
echo "$teateid. $teade\n";
    if(
$arvas == $arv) {
        
$_SESSION['arv'] = rand(1,100); 
    }
    elseif(
intval($arvas) == && $arvas != "0")
        
$teade "Arve tahaks, mitte mingit soga...\n";
    elseif( (
$arvas 1) or ($arvas 100) )
        
$teade "V?imalikud variandid on siiski 1 kuni 100.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski v?iksem kui $arvas.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski suurem kui $arvas.\n";
    
$teated[$teateid-1] = $teade;  // lisame teadete massiivi l?ppu uue teate
    
echo "$teateid. $teade\n";
    if(
$arvas == $arv) {
        echo 
"$teateid. Tubli! ?ra arvasid! Arv oli t?epoolest $arv.\n";
        exit(
"</body>\n</html>");  //  m?ng on l?ppenud; vormi pole enam vaja n?idata!
    
}
    elseif(
intval($arvas) == && $arvas != "0")
        
$teade "Arve tahaks, mitte mingit soga...\n";
    elseif( (
$arvas 1) or ($arvas 100) )
        
$teade "V?imalikud variandid on siiski 1 kuni 100.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski v?iksem kui $arvas.\n";
    elseif(
$arvas $arv)
        
$teade "Otsitav arv on siiski suurem kui $arvas.\n";
    
// ----------------------- ?riloogika l?pp -------------------------------------------------------
    
$teated[$teateid-1] = $teade;  // lisame teadete massiivi l?ppu uue teate
    
echo "$teateid. $teade\n";
}
$_SESSION['teated'] = $teated;    // NB! salvestame k?ik teated
echo "</pre>";
// vormiv?rk...
echo "<form action=\"{$_SERVER['PHP_SELF']}\" method=\"post\">\n";
echo 
"Arv: <input name=\"arvas\" value=\"\""// value=""  ehk input box t?hjaks
if(isset($arvas)) 
    echo 
" value=\"$arvas\""// sisestatud arvu kuvamine input box'is
echo " />\n";
echo 
"<input type=\"Submit\" value=\"Arva\" />\n";
echo 
"</form>\n";
?>
</body>
</html>




Seda postitust on muudetud 7 korda (viimati muudeti 2008-01-27 10:13:22 andoro poolt)

27.01.2008 01:28:46 Vajutades siia näed kasutaja mma profiili

andoro

Postitusi: 1235
Tase: 9
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Arva arvu 1-100

Loogiline käekäik...vb panin mööda su tahtmistest, - aga midagi analoogset vähemalt :p
PHP kood:

<?php
session_start
();
$min 1;
$max 100;
$_SESSION['rand'] = isset($_SESSION['rand']) ? $_SESSION['rand'] : rand($min$max); //üheks sessiooniks üks arv
#$_SESSION['rand'] = rand(1,100); //iga refresh genereeritakse uus valik
$_SESSION['repeat'] = isset($_SESSION['repeat']) ? $_SESSION['repeat'] : 0;
$_SESSION['tries'] = isset($_SESSION['tries']) ? $_SESSION['tries'] : '';

$choose array(
=> 'Teie valitud arv(X) vastas ootustele, õige!',
=> 'Arv on väiksem kui X',
=> 'Arv on suurem kui X',
=> 'Sisestage ikka arv vahemikus '.$min.' kuni '.$max
);
if(isset(
$_GET['id']) && $_GET['id'] == 'unset')
{
    unset(
$_SESSION['rand'], $_SESSION['repeat'], $_SESSION['tries']);
    
header('Location: ?');
}
if(isset(
$_POST['post']))
{
    
$nr = (int)$_POST['nr'];
    
$nr2 $_SESSION['rand'];
    
$_SESSION['repeat']++;
    if(
$nr $min || $nr $max)$e $choose[3];
    elseif(
$nr $nr2)$e $choose[2];
    elseif(
$nr $nr2)$e $choose[1];
    elseif(
$nr == $nr2)$e $choose[0];
    else 
$e='Tundmatu viga';
    
$_SESSION['tries'] .= $_SESSION['repeat'].': '.str_replace('X'$nr$e).'<br>';
    echo 
$_SESSION['tries'];
}
?>
<form method="post" action="?">
<input type="hidden" name="post" value="1">
<input name="nr">
<input type="submit">
</form>
<a href="?id=unset">Alusta uuesti</a>



___________________________________________________
Ma oskan lugeda numbreid  2 3 4 5 6 7 8 9 10 poiss, emand, kunn, äss.

27.01.2008 10:20:12 Vajutades siia näed kasutaja andoro profiili

mma

Postitusi: 2
Tase: 1
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
RE: Arva arvu 1-100

Ok, tänud skripti eest!

27.01.2008 12:23:55 Vajutades siia näed kasutaja mma profiili

tooming

Postitusi: 79
Tase: 4
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
RE: Arva arvu 1-100

No andoro pani siiski mööda.. Skript ei käitu ju nö "petisena" nagu ülesande kirjelduses tahetud on.

27.01.2008 18:17:56 Vajutades siia näed kasutaja tooming profiili
Kokku: 25949 registreerunud kasutajat, 9711 teemat, 54603 postitust.
Täna on pühapäev, 8. detsember 2019. Kell on 16:13.

    Vaata selle lehe printerisõbralikku versiooni

Avaleht   -    Skriptikogu   -    Teated   -    Foorum   -    Reklaam   -    Tagasiside   -    Kasutamise reeglid

© Copyright 2002-2019 PHP Center. Kõik õigused reserveeritud.