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

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

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

788閲覧

C言語...データのある範囲を出力するプログラム(初質問)

yu-114

総合スコア13

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2017/10/24 16:20

###前提・実現したいこと
学生です、c言語の課題です。以下のような例の出力を期待するプログラムを作成したのですが
どんな数値を入力しても出力値が0.0,0.0となってしまって困っています。
(例)
入力値...
3
less 130
bigger 123
bigger 125

出力値
125.0,130.0

開発環境...visualstdio commnity2017

###該当のソースコード
c言語
ここにご自身が実行したソースコードを書いてください

  #include<string.h> int main(void){ int N; float h1[100][100]; char c1[100][100]; int i = 0; float max, min,max2,min2; scanf_s("%d\n", &N); for (i = 0; i < N; i++) { scanf_s("%s, %.1f", &c1[i][100], &h1[i][100]); } while (i<N) { if (strcmp(c1[i][100], "less") == 0) { max = h1[i][100]; if (max > max2) { max2 = max2; } } else if (strcmp(c1[i][100], "bigger") == 0) { min = h1[i][100]; if (min < min2) { min2 = min; } } i++; } printf("%.1f,%.1f", min2, max2); } ###補足情報(言語/FW/ツール等のバージ 初質問です。形式が間違えていたら申し訳ないです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

そもそも配列の使い方を間違えていませんか?

C

1... 2float h1[100][100]; 3... 4scanf_s("%s, %.1f", &c1[i][100], &h1[i][100]); 5... 6max = h1[i][100]; 7...

h1[i][100]にはアクセスできません。
また、scanfの使い方も怪しいです。文字列の受け取り方をもう一度確認してください。
さらに言うと、h1が二次元配列である妥当性が全く見出せません。

上記三点に加えなにが良くないのか、一応列挙します。多分これでもまだ漏れがあります。

  • whileループの条件式が、このコードでは決して真にならない
  • strcmpの使い方がおかしい (scanfの使い方に関する話と同じ)
  • max2の値が初期化されるより前に参照されている
  • max2 = max2 ???
  • min2の値が初期化されるより前に参照されている
  • そもそもlessとかbiggerとかの存在意義が謎

現段階では、まず参考書の内容を理解する方に重きを置いた方がいいです。
数か所直せば正常に動くようなコードではありません。


teratailでは、上記のようにコードを見やすく表示する機能があります。
編集画面を開き、コードを選択した状態で<code>ボタンを押してください。

投稿2017/10/24 16:32

編集2017/10/24 16:46
LouiS0616

総合スコア35658

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

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

yu-114

2017/10/24 16:51

丁寧な回答、ありがとうございます。 まだ知識が定着していないようなのでもう一度参考書を用い勉強し直したいと思います。 夜遅くに失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問