プロが教える店舗&オフィスのセキュリティ対策術

以下の問題でorder関数の使い方がわからないので教えてください。途中まで作成したものも貼っておきます。
よろしくおねがいします。

100 までのランダムな整数 x, y を定義する。int 型のポインタを 2 つ受け取る order 関数をつくり,int 型変数(x)が(y)よ りも大きい場合は,値を入れ替える。

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

void swap(int *x, int *y);
int main(void)
{
int x,y;
int *p;
srand((unsigned)time(NULL));
x= (int)(rand()/(RAND_MAX +1.0)*100);
y=(int)(rand()/(RAND_MAX +1.0)*100);
p=&x;
printf("x:address %p, value = %d\n",&x,x);
printf("y:address %p, value = %d\n",&y,y);
if (x<y)
{ swap(&x,&y);}
printf("x:address %p, value = %d\n",&x,x);
printf("y:address %p, value = %d\n",&y,y);
return 0;
}

void swap(int *x, int *y)
{
int c;
c = *x; *x =*y; *y = c;
return ;
}

閉じる

質問者からの補足コメント

  • うーん・・・

    ありがとうございます
    記載したソースコードはswap関数を使っているんですが、order関数を使って同じ結果を得たいのですがどうすればいいのでしょうか。
    わかりづらい質問ですみません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/10/17 22:07

A 回答 (2件)

>order関数の使い方がわからないので



swapをorderにしたら
if (x<y)
が要らなくなるだけだと思いますが・・・

因みにそんな物作ってもソースが分かりにくくなる
だけだと思う。
    • good
    • 0

order関数とありますが、ソースコードを見る限りswap関数ではないですか?


あとp=&x;の部分ですが、printf関数に直接アドレスと値を渡しているように見えるので要らないかと思われます。
(途中までとのことなのでこの後何かに使われるのかもしれませんが。)
xがyより大きい場合ならif文の不等号が逆です。
if (x<y)

if(x>y)

swap関数にはそれぞれxとyの変数のアドレスを渡して、中身を入れ替えることをやっています。
ですので呼び出し元の変数も同様に入れ替わっています。
この回答への補足あり
    • good
    • 0

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

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


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