整数の並べ変え – プログラミング – Home

通知
すべてクリア

[解決済] 整数の並べ変え


みほ
 みほ
(@みほ)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

はじめまして。今回お聞きしたいのは3つの整数を入力すると、それがおおきい順に並べ替えて
表示する,プログラムをつくりたいのですが、どうしたらいいか分からないで困っています。
どうか,教えてください。よろしくお願いします。


引用未解決
トピックタグ
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

どこまで判っていて、どこが判らないか書いていないのではどうお教えして良いのか
分りませんよ


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

[1] a < b なら交換する
[2] b < c なら交換する
[3] a < b なら交換する

おしまい


返信引用
Loreley
 Loreley
(@Loreley)
ゲスト
結合: 22年前
投稿: 4
 

1.入力してそのまま出力(表示)することはできるか。
2.2つの整数のどちらが大きいかの比較はできるのか。
3.2つの整数であれば大きい順に交換はできるのか。
4.3つの整数が一発で並び変えられると思っていないか。
ぐらいはわからないと、答えようがないですよ~


返信引用
みほ
 みほ
(@みほ)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

皆さんお返事ありがとうぎざいます。
並べ変えは条件判断ということでIF文をつかえばよいのですよね?
3つの数字をn1n2n3とおいて、nの数は%dとして
どちらが大きいかを表示してくれるようにしたらいいのでしょうか?
何度もすみません・・・。


返信引用
zeta
 zeta
(@zeta)
ゲスト
結合: 22年前
投稿: 20
 

こんにちわ
επιστημηさんがアルゴリズムを提示していただいたので大丈夫かな?
と思ったのですが、やはりだめだったようですね。

こんな感じになると思います。

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

void myswap( int *i, int *j )
{
int tmp;
tmp = *i;
*i = *j;
*j = tmp;
}

void main( void )
{
int a, b, c;

printf( n1 > );
scanf( %d, &a );
printf( n2 > );
scanf( %d, &b );
printf( n3 > );
scanf( %d, &c );

if( a < b ) myswap( &a, &b );
if( b < c ) myswap( &b, &c );
if( a < b ) myswap( &a, &b );

printf( %d %d %d\n, a, b, c );
}

私も人のことを言える立場じゃないのですが(^^;
アルゴリズムの勉強されたほうがよろしいかと思います。
本屋さんに行けばいろんな本がおいてあります。
プログラムはアルゴリズムとデータ構造の結晶です。

また、最後のコメントから判断するとC/C++の文法知識も乏しいように
見受けられます。基礎知識がないと説明するのも大変なので・・・。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

参考(にならんのは百も承知で) C++版
# C++だとこんなのが書けちゃうから、もうCには戻れない...^^;

/*
* trial.cpp
*/
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <functional>
#include <cstdlib>

using namespace std;

int main(int argc, char* argv[]) {
vector<int> data;
transform(argv+1, argv+argc-1, back_inserter(data), atoi);
sort(data.begin(), data.end(), greater<int>());
copy(data.begin(), data.end(), ostream_iterator<int>(cout, ));
return 0;
}

----- 実行結果 ------
>trial 3 6 5 4 7 6 8 7
8 7 6 6 5 4 3


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

っく、ちょんぼです。

ばつ: transform(argv+1, argv+argc-1, back_inserter(data), atoi);
まる: transform(argv+1, argv+argc, back_inserter(data), atoi);


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

ときに みほ さん、コンパイラはお持ちなんでしょ?
だったら、

> 並べ変えは条件判断ということでIF文をつかえばよいのですよね?
> 3つの数字をn1n2n3とおいて、nの数は%dとして
> どちらが大きいかを表示してくれるようにしたらいいのでしょうか?

やってみればいいじゃない?

いつ返ってくるかわからない掲示板への回答を待つより
数百倍早いでしょうに。


返信引用
みほ
 みほ
(@みほ)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

本当にありがとうございます。
大学ではじめてC言語を習い始めて、混乱してしまっていて。
勉強不足です・・。なのに、親切に教えていただきありがとうございます。
これから、ちょっとずつ理解できるようがんばってみます。
また、壁にぶつかるかもしれませんが、よろしくおねがいします。
多数のお返事恐縮です!!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました