質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

917閲覧

<PHP>for文がうまくいかない

nogish

総合スコア20

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/07/13 16:47

前提・実現したいこと

paizaラーニングのレベルアップ問題集を解いています。Dランクの問題なのですが、出力が思ったように得られず、なぜこのコードではダメなのか知りたいです。

1行目の標準入力で、整数nが入力されます。その次にn行の標準入力で整数a_1〜a_nが入力され、その中から最も大きい数を出力するという問題です。

発生している問題・エラーメッセージ

50 30 40 24 18 9 12 44 1 22 33 30 39 6 22 36 40 45 3 47 25 11 46 29 47 28 11 11 16 4 8 9 33 38 5 50 45 25 48 7 19 14 44 15 47 27 6 50 18 14 26 この入力の時に、9が出力されてしまいました

該当のソースコード

PHP

1 $n = fgets(STDIN); 2 $max = 0; 3 for ($i = 1; $i <= $n; $i++) { 4 $a_{$i} = fgets(STDIN); 5 if ($a_{$i} > $max) { 6 $max = $a_{$i}; 7 } 8 } 9 echo $max;

このコードの何が原因なのでしょうか?
初心者なので、超初歩的なことだと思いますが、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

文字列同士の比較をしており、先頭が9で始まるものが偶然「9」しかなかったので、「9」が出力されている。fgetsの前に(int)を付けてやれば数値同士の比較が行なわれるはず。

投稿2020/07/13 17:02

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nogish

2020/07/14 07:49

文字列の比較になっており、先頭の数値が比較されているということでしょうか? ありがとうございます!!
Daregada

2020/07/14 07:52

そうですね。先頭の文字で文字コードの比較をして、一番大きな「9」が選ばれています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問