phpの問題でIF文を用いて、成績を入力し、60点以上70点未満なら"可"、70点以上80点未満なら"良"、80点以上90点未満なら"優"、90点以上なら"秀"と表示するプログラムを作成せよ。
この問題の解答を教えてください。お願いします。

A 回答 (1件)

流れ的にはこんな感じ



<form method="get">
<input type="text" name="val">
<input type="submit" value="go">
</form>
<?PHP
$val=filter_input(INPUT_GET,"val");
if(is_numeric($val)){
$ret="不可";
if($val>=90) $ret="秀";
if($val>=80) $ret="優";
if($val>=70) $ret="良";
if($val>=60) $ret="可";
print htmlspecialchars($val).":".$ret;
}
?>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qif ○○以上>会員番号>○○未満とする場合

会員番号($UserCD)が1~1000まであると仮定して
500以上と未満で異なるメッセージを表示させたい場合

if ($UserCD >= 500)
$no = "500以上";
else
$no = "500未満";

となるのはわかるのですが
300以上700未満としたい場合はどうすればよいのでしょうか?

if (700 > $UserCD >= 300)

これでは駄目みたいですね。
ご教授頂けると幸いです。
よろしくお願い致します。

Aベストアンサー

/* 二つに分ける */

if ((300 <= $UserCD) && ($UserCD < 700)){
}

/*
本題には直接関係無いけど,

場合によっては
http://soudan1.biglobe.ne.jp/qa4616887.html
#3のように,あまり長く続けないようにする工夫も考えよう
*/

Q$test = array(80,60,22,50,75);を(22,60,80,50,75);変更

https://oshiete.goo.ne.jp/qa/9231613.html から
 $test = array(0=>80,1=>60,2=>22,3=>50,4=>75); のご回答をもとに
$test = array(80,60,22,50,75);を$test = array(22,60,80,50,75);に変更しました。
 結果が”最高得点22です。”と予想しておりました・・しかし、変わらずに
 ”最高得点は80です。”のままでした!?この場合ですが、考え方はとしまして、
 $test = array(2=>22,1=>60,0=>80,3=>50,4=>75);となったので、以上の結果となっ
との考えで間違いないでしょうか?
 よろしくお願いいたします。

Aベストアンサー

表現は未熟ではありませんが、Campus2さんがどのような思考をしているのかという意味で
国語の問題に近いと言っただけですのでご了承を〜

ちなみに今回のはキーに関しては何でもいいのです。
以下のコードでも最高点は80と出力されます。

<?php
//$test = array(80,60,22,50,75);
$test = array("apple"=>80,"tomato"=>60,"banana"=>22,"milk"=>50,"cake"=>75);

$max = 0;

foreach($test as $id => $value){
if($max < $value) $max = $value;
}

print "<p>最高得点{$max}です。</p>";
?>

また$id => $valueも関係性を示しているだけなので、
foreach文は以下のようにも記述できます(紛らわしいのでこんな書き方しませんが)。

foreach($test as $aaa => $bbb){
if($max < $bbb) $max = $bbb;
}

///////////////////////////////////////////

過去の質問
https://oshiete.goo.ne.jp/qa/9200257.html
でも答えましたが、

例えば配列
array("22","80", "75","60","50")
はキーを何も指定しない場合以下と同じになります。
array('0' =>"22",'1' =>"80", '2' =>"75",'3' =>"60",'4' =>"50");

array("50","80", "75","60","22")
と並び変えても
array('0' =>"50",'1' =>"80", '2' =>"75",'3' =>"60",'4' =>"22");
のままです。

表現は未熟ではありませんが、Campus2さんがどのような思考をしているのかという意味で
国語の問題に近いと言っただけですのでご了承を〜

ちなみに今回のはキーに関しては何でもいいのです。
以下のコードでも最高点は80と出力されます。

<?php
//$test = array(80,60,22,50,75);
$test = array("apple"=>80,"tomato"=>60,"banana"=>22,"milk"=>50,"cake"=>75);

$max = 0;

foreach($test as $id => $value){
if($max < $value) $max = $value;
}

print "<p>最高得点{$max}です。</p>";
?>

また$id => $value...続きを読む

Qピクセル座標で2点間の直線上の座標点をPHPで求める方法を教えてくださ

ピクセル座標で2点間の直線上の座標点をPHPで求める方法を教えてください。

やりたいことは、ピクセル座標点A、点Bを直線で結んだ時の
ピクセル座標端の座標(X.Y)を求めたいです。
分かっている情報(引数)としては、
点AのX.Y(可変)
点BのX.Y(可変)
ピクセル座標の高さ(範囲は0~n)
ピクセル座標の幅(範囲は0~n)

条件としては
点Aは必ずピクセル座標の高さ、ピクセル座標の幅の範囲内の場所。
点Bはピクセル座標の高さ、ピクセル座標の幅の範囲外の場所。
点Aから見たときの点Bの場所は上下左右どこの位置でもOK

例えばサンプル画像の例1のように
ピクセル座標の高さ30
ピクセル座標の幅40
点A(22.18)点B(20.39)を直線で結び
この時のピクセル座標の高さ、ピクセル座標の幅上の座標点を求めたいです。
この場合Yの値は30は決まっているのですが、Xの値を求めたい。

例2の場合はXの値は0は決まっていてYの値を求めたいです。

何か数式にあてはめて求めることが出来るのでしょうか?
PHPで作成したあとにそれをC++に置き換えも考えています。

色々考えてみたのですが、
まったくわからない状態です。
どなたかご教授いただければと思います。よろしくお願いいたします。

ピクセル座標で2点間の直線上の座標点をPHPで求める方法を教えてください。

やりたいことは、ピクセル座標点A、点Bを直線で結んだ時の
ピクセル座標端の座標(X.Y)を求めたいです。
分かっている情報(引数)としては、
点AのX.Y(可変)
点BのX.Y(可変)
ピクセル座標の高さ(範囲は0~n)
ピクセル座標の幅(範囲は0~n)

条件としては
点Aは必ずピクセル座標の高さ、ピクセル座標の幅の範囲内の場所。
点Bはピクセル座標の高さ、ピクセル座標の幅の範囲外の場所。
点Aから見たときの点Bの場所は上...続きを読む

Aベストアンサー

。。。単なる内分比の問題です。

点A = (Ax, Ay) 点B = (Bx, By) とし、求めたい点を 点P = (Px, Py) とします。

例1)Px = {(By - 30) * Ax + (30 - Ay) * Bx} / (- Ay + By)
例2)Py = (- Bx * Ay + Ax * By) / (Ax - Bx)

[PHP]
define ('Nx', 30);
define ('Ny', 40);

$a = array ('x' => ***, 'y' => ***);
$b = array ('x' => ***, 'y' => ***);

/* PHP 限定 C++ の場合は、if で地味に */
switch (true) {
case $b['x'] < 0 : $p = interior_division($a, $b, array ($a['x'], - $b['x'])); break;
case $b['x'] > Nx : $p = interior_division($a, $b, array (Nx - $a['x'], $b['x'] - Nx)); break;
case $b['y'] < 0 : $p = interior_division($a, $b, array ($a['y'], - $b['y'])); break;
case $b['y'] > Ny : $p = interior_division($a, $b, array (Ny - $a['y'], $b['y'] - Ny)); break;
default : echo 'The condition is not satisfied.';
}

function interior_division($a, $b, $r) {
return array (
'x' => ($r[1] * $a['x'] + $r[0] * $b['x']) / ($r[0] + $r[1]),
'y' => ($r[1] * $a['y'] + $r[0] * $b['y']) / ($r[0] + $r[1])
);
}
[/PHP]

。。。単なる内分比の問題です。

点A = (Ax, Ay) 点B = (Bx, By) とし、求めたい点を 点P = (Px, Py) とします。

例1)Px = {(By - 30) * Ax + (30 - Ay) * Bx} / (- Ay + By)
例2)Py = (- Bx * Ay + Ax * By) / (Ax - Bx)

[PHP]
define ('Nx', 30);
define ('Ny', 40);

$a = array ('x' => ***, 'y' => ***);
$b = array ('x' => ***, 'y' => ***);

/* PHP 限定 C++ の場合は、if で地味に */
switch (true) {
case $b['x'] < 0 : $p = interior_division($a, $b, array ($a['x'], - $b['x'])); break;
c...続きを読む

Q10円未満を切り捨てる方法は?

商品価格の10円未満を切り捨てたいのですが、
どのように書けばスマートでしょうか?

<?
$price = 9999;
?>

Aベストアンサー

素直に、

$p = floor( $price / 10 ) * 10;

で良いかと。

Q仕様ならしようがない(洒落)

$a = 0;

if ($a == "hoge"){ echo "a"; }
elseif($a == 0) { echo "b"; }
else { echo "c"; }

//-----
true,falseならcを吐きそうだし。
なぜでしょうか。

Aベストアンサー

さらにこういう話もあったり。

PHPで==の代わりにstrcmp関数を使うことによる問題点 - hnwの日記
http://d.hatena.ne.jp/hnw/20090123


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング

おすすめ情報