アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語のプログラミングです
以下の実行結果ように, キーボードから整数を3つ 空白区切りで続けて入力すると, それらの値が:
- 全て等しい場合は「同じ」,
- 小さい順に入力された場合は「昇順」,
- 大きい順に入力された場合は「降順」,
- 上記以外の場合は「バラバラ」
って言う問題で、

int x, y, z;

printf("整数を3つ入力> ");
scanf("%d%d%d", &x, &y, &z);
if(x<=y<=z){
printf("昇順¥n");
}
else if(x>=y>=z){
printf("降順¥n");
}
else{
printf("バラバラ¥n");
}

ここまで書いたんですが全部昇順になります。
間違えているところを教えて下さい

A 回答 (6件)

ANSI Common Lispみたいな極めて優秀な言語じゃないと、そういう比較の仕方って通常成り立たないんだよねぇ。



/* ここから */

#include <stdio.h>
#include <stdlib.h>

int main(void) {
 int x, y, z;

 printf("整数を3つ入力> ");
 scanf("%d%d%d", &x, &y, &z);
 if ((x == y) && (y == z) && (z == x)) {
  printf("同じ\n");
 } else if ((x < y) && (y < z) && (x < z)) {
  printf("昇順\n");
 } else if ((x > y) && (x > z) && (y > z)) {
  printf("降順\n");
 } else {
  printf("バラバラ\n");
 }
 return EXIT_SUCCESS;
}

/* ここまで */

だからついつい「x<=y<=z」みたいに書きたがるのは分かるんだけど、通常は許されない。
多分Lisp系言語以外だとそうそう認めてくれないんじゃないかなぁ。
    • good
    • 0
この回答へのお礼

やってみます!ありがとうございます!

お礼日時:2021/09/28 13:30

コードを書かなくなってもう二十年近くなるので


最近のコンパイラだと、三評価を1度にしてくれるようなのも有るのかと思ったけどね

<<この部分は問題に書いてあったので間違えではないはずなのです>>

何の問題? <-テキストならテキスト名など具体名を書いてみて
コンパイラは何?
    • good
    • 0

半角ブランク区切りなのであれば "%d%d%d" ではなく "%d %d %d" では?


あと、if(x<=y<=z)ではなくif(x<=y && y<=z)などと記すのでは?

参考まで。
    • good
    • 0

No.1 です。


言い忘れました。
まともな子なら、小学生でもこのぐらい出来ます。
自分のアホさを考えなさい。
    • good
    • 0
この回答へのお礼

どうもありがとうございます☺︎

お礼日時:2021/09/28 13:11

<< if(x<=y<=z) >>


C言語で三つの変数を同時に評価出来ません
    • good
    • 0
この回答へのお礼

この部分は問題に書いてあったので間違えではないはずなのですが…そうなんですか??

お礼日時:2021/09/28 13:10

プログラミングを学びたければ、紙の上で遊ぶのはやめなさい。


こんなものは、タダで手に入るCの開発環境を、自分のPCにダウンロードし、そこで実行すればすぐにわかります。
そんなことも出来ないならプログラミングなんてやめちまえ。
    • good
    • 0
この回答へのお礼

ありがとうございます。実行してできなかったので聞いています☺︎

お礼日時:2021/09/28 13:09

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