要素を小さい順に格納するプログラム – 固定ページ 2 – プログラミング – Home

要素を小さい順に格納するプログラム
 
通知
すべてクリア

[解決済] 要素を小さい順に格納するプログラム

固定ページ 2 / 2

ryo
 ryo
(@ryo)
ゲスト
結合: 23年前
投稿: 252
 

「宿題」なの?


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

Bettyさんが発言しています。

> Betty 2010/06/14(月) 21:51:43
> この場合、宿題を出した学校の先生は........


返信引用
ryo
 ryo
(@ryo)
ゲスト
結合: 23年前
投稿: 252
 

一行質問で意図が伝わらなくてごめん、

質問者本人の発言ではないものから派生して
「宿題である」と確定して話がすすんでるけどなんで?って聞きたかった

επιστημη さんが「え? これ宿題なの?」と聞いてるのに
質問者本人はスルーしてんだから
回答者側が「宿題かどうかは言及してないが、宿題だろうからそれに見合った回答してあ
げよう」
なんて考える必要はないと思うが


返信引用
矢頭
 矢頭
(@矢頭)
ゲスト
結合: 14年前
投稿: 12
Topic starter  

大したことではないんで、ここに書きこみます。
要素数がnoのint型の配列vcの並びを逆順にする関数なんですが、
#include <stdio.h>

#define NUMBER 5

void rev_intary(int vc[], int no)
{
int i;
int temp = vc[0];

for(i = 0; i < no; i++)
vc[i] = vc[4 - i];
vc[4 - i] = temp;
}

int main(void)
{
int i;
int ac[NUMBER];

printf(整数を%d入力してください。\n, NUMBER);
for (i = 0; i < NUMBER; i++)
{
printf(ac[%d], i + 1); scanf(%d, &ac[i]);
}

for (i = 0; i < 5; i++)
printf(ac[%d] = %d\n, i, ac[i]);

return (0);
}
どこかが間違っているようなんですがどうように直せばいいのかわかりません。
どなたかお答えできる人がいらしゃればお教え下さい。


返信引用
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

新しい質問は新しいスレッドで。

> どこかが間違っているようなんですがどうように直せばいいのかわかりません。
> どなたかお答えできる人がいらしゃればお教え下さい。
それぞれの部分がどういうつもりで書かれたのかわからないので本人が期待している
内容かどうか不明ですが、

> for(i = 0; i < no; i++)
> vc[i] = vc[4 - i];
> vc[4 - i] = temp;
インデントと for の範囲があっていませんね。
4という数値がありますが何の数値ですか?配列サイズなら no です。
main()からrev_intary()が呼び出されていません。

どういう操作をすればいいかを机上で考えてからコーディングすればいいのに。

> 要素数がnoのint型の配列vcの並びを逆順にする関数なんですが、
並びを逆にするのだから、
先頭と最後を入れ替える。
2番目と最後からひとつ前を入れ替える。
3番目と...
この操作を繰り返し実行する。
最後までやっちゃうと元に戻ってしまうから半分でやめる。

これをコード化すれば目的の関数は完成するはずです。
先頭はvc[0]、最後はvc[no-1]
次はvc[1]、最後からひとつ前はvc[no-2]
...
i番目はvc[i]、後ろからi番目はvc[no-1-i]
ここまで書けば後はわかるでしょ。


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

宿題/課題じゃないなら

#include <algorithm>
#define NUMBER 5

int main() {
int ac[NUMBER];
...
std::reverse(ac, ac+NUMBER); // こんだけ
...
}


返信引用
矢頭
 矢頭
(@矢頭)
ゲスト
結合: 14年前
投稿: 12
Topic starter  

maru様
教えていただきありがとうございました。
他にも気になることがあるので、続きは新スレッドにします。


返信引用
矢頭
 矢頭
(@矢頭)
ゲスト
結合: 14年前
投稿: 12
Topic starter  

επιστημη様
お答え頂きありがとうございました。
しかし、自分のC言語の理解がまだそこまで進んでいないので、
その答えは生かすことができそうもありません。
申し訳ありません。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

C言語とC++言語は別物なのでちゃんと認識して書かれた方が良いです。
επιστημηさんが書かれているSTL関連の話はC++言語での話です。
C言語の範疇で解決する必要があるのであれば、STLは関係なくなります。

C言語でやるなら地道にゴリゴリコーディングする手でしょう。

前の書き込みでも書きましたが、まずは机上でシュミレーションしましょう。
変数を四角で書いて中に値を実際に書いたり消したりしても良いと思います。
まずは実際にどういう動きになれば良いのかを考えます。
その上でその動きを実現する為のコードを考えます。
プログラムのコードは動きを実現する為の物なので
動きを理解していないとコードになりませんし、
たとえ間違ったコードだったとしても自分で気づく事ができません。


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

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