- 1 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 02:13:06 ]
- あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】 回答者の便宜のため、質問の際は以下を行うことを推奨します。 ・質問は【質問テンプレ】を利用してください。 ・問題文は、出題されたまま全文を書いてください。 ・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。 ・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。 ・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。 【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク): [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html 【過去ログ検索】 chomework.sakura.ne.jp/ 【wiki】 www23.atwiki.jp/homework/ 前スレ C/C++の宿題片付けます 122代目(実質123代目) pc11.2ch.net/test/read.cgi/tech/1232029287/
- 116 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 06:21:27 ]
- それで、後だししただの、麻呂のクソースも見てくれだのと言ったことに
腹を立てたこのスレの常駐引きこもり基地外がファビョって、麻呂は特定可能だからって 麻呂に当り散らしていたw 精神レベルが低いんだろうね、中学校レベルの数学なのに 麻呂では解けないとか、勝手なことを言い出したが、自分がその程度の問題を解いたくらいで 得意気になっているだけという、第三者から見たら滑稽な姿だと気づかないのが痛すぎるwww
- 117 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 06:25:00 ]
- さらに、麻呂はクソースと題して、単方向、双方向リスト、それに
ファイルを用いる機能を追加、並び替えも独自のコードで実装したわけだが これまた、後から後から訂正して、何がなんだかw あの手の問題は、既に定石、ありきたりの手法があるわけだが 丸写しを他人の質問で出しても、答えが側の実力とは言えないしな。 そんなこんなで、ここを自分の縄張りだと思っている、社会では まともに稼いでいないヘボプログラマーが、初心者が知識が乏しいことを良いことに 好き勝手なことを言っているわけだ。だから、こんなクソスレに成り下がっているわけで、 年々、大学や専門学校の先輩から後輩へ、このスレの存在が伝えられているのか 最近では過去に似た問題、あるいはまったく同じ問題と、同じ学校で同じ授業を受けている 生徒が鉢合わせになることもw
- 118 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 08:13:32 ]
- このキチガイ長文連投の言うこと信じる奴なんていんのかよw
- 119 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 09:05:42 ]
- 信じる信じない以前に見る気しない。
- 120 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 09:13:29 ]
- ↓おまいは、ある整数を1で割った余りを求めるプログラムでも作ってろ、な?
- 121 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 09:47:39 ]
- さすがにループ変数を自信満々でdoubleにして元のプログラムを間違ってると言ったアホ
は言うことが違うw
- 122 名前:デフォルトの名無しさん [2009/03/08(日) 17:33:07 ]
- コマンドラインからいくつかの文字列を入力し、
文字列を逆さに出力するプログラムを作成。 ただし、入力する文字列の長さや個数に制限をつけないために、 以下のような仕様とする。 文字列毎にその都度メモリを動的に確保する 一度確保したメモリは次の文字列を処理する前に解放する。 malloc とか使うんですかね? [動作例] % ./a.out abcde fghijklmn opqr edcba nmlkjihgf rqpo
- 123 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 17:47:17 ]
- >>122テンプレ
- 124 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 19:16:11 ]
- >>122
こんなんでどうでしょう? kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8956.c
- 125 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 19:33:33 ]
- よく見るとメモリを確保する必要性がないな
- 126 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 19:41:38 ]
- #include <stdio.h>
char *reverse(char *cs) { char tmp, *p, *q; if (!cs) return 0; for (p = cs, q = p + strlen(p) - 1; p < q; p++, q--) { tmp = *p; *p = *q; *q = tmp; } return cs; } int main(int argc, char *argv[]) { int i; char *p; for (i = 0; i < argc; i++) { if (i == 0) continue; p = reverse(strdup(argv[i])); printf("%s\n", p); free(p); } }
- 127 名前:デフォルトの名無しさん [2009/03/08(日) 20:09:23 ]
- 麻呂のクソースに期待
- 128 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:25:05 ]
- 最近は<string.h>をincludeしないのでstrlen()を使うのがが流行り?
- 129 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:45:38 ]
- >>127
いない奴に期待してどうすんだ?w
- 130 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:48:37 ]
- #include <stdio.h>
void print_reverse(char * s) { char * p = s; while(*p != 0) p++; for(; p != s; putchar(*p)) p--; putchar('\n'); } int main(int argc, char ** argv) { int i; for(i = 1; i < argc; i++) print_reverse(argv[i]); return 0; }
- 131 名前:130 mailto:sage [2009/03/08(日) 20:51:48 ]
- ごめん問題文読んでなかった。メモリ確保がいるの。
でも別にこれで長さにも個数にも制限なくないですか
- 132 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:57:13 ]
- mallocと麻ー呂っくを掛けたのか?w
- 133 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:58:33 ]
- 無意味な仕様であることは確かだな。
- 134 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:13:41 ]
- >for(; p != s; putchar(*p)) p--;
なんでわざわざこんな記法をw
- 135 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:16:16 ]
- p=sのときも表示させるための工夫なんだろ
while(p!=s) putchar(*--p) でいい気もするが。
- 136 名前:122 mailto:sage [2009/03/08(日) 21:30:26 ]
- >123-135
いろいろありがとうございました。 次回あれば、テンプレ忘れないよう気をつけます。
- 137 名前:モデム接続 mailto:sage [2009/03/09(月) 01:07:40 ]
- > 最近は<string.h>をincludeしないのでstrlen()を使うのがが流行り?
実行ファイルが a.out だから、コンパイラは gcc ではないだろうか。
- 138 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 03:45:30 ]
- Cygwinとかならgccでもa.exeじゃね?
- 139 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 07:01:44 ]
- >>138
数学で逆は真ならずってならわなかったか 逆、裏、対偶ってあって真なのは対偶
- 140 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 08:24:46 ]
- いや、それ、命題としてもどうかと。数学とかって話じゃないだろ。
実際に分かりきっている事実なんだから、調べれば良いだけ。
- 141 名前: ◆v/LK4luEPU mailto:sage [2009/03/09(月) 09:43:46 ]
- >>90
遅くなりました、ありがとうございます。 おかげさまで望みのコード勉強が出来ました。 参考書みてるだけじゃ、このレベルのコードも書けないという 勉強にもなり、いい経験になりました。 >>92 なるほど、参考になります。 それと、先日の土日を利用して、図書館へ行きCの参考書を2点程借りてきて みたのですが、どうやらその参考書にも「getch()」の記述が載ってないんですよね。 「getchar()」の方は載っているのですが、この二つは何か違いがあるのでしょうか? スレ違いでしたらすみません。
- 142 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 10:40:23 ]
- getchar と getch は挙動が全く違うし、getch は環境依存だから。
Windows の場合は getch でいいんだが、UNIX系OSの場合は termios (あるいは curses の getch) を使うことになる。
- 143 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 12:57:23 ]
- >>142
win2kを使っててgetch()に酷い目にあわされたw
- 144 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:57:36 ]
- [1] 授業単元:授業とは関係なし
[2] 問題文(含コード&リンク): 世界のナベアツのネタ「3の倍数と3が付く数字だけアホになり、5の倍数だけ犬っぽくなる」プログラムを作りたいと思っています。 出力は 1 2 ア3 4 犬5 ア6 のようにアホになるときは数字の前に「ア」、犬の時は数字の前に「犬」を付ける形で出力したいです。 1〜10000程度の範囲でお願いします 春休みに入り、プログラミングの授業の復習のつもりでやってみようと思ったのですが、 思っていたよりも難しくて挫折しました。 [3] 環境 [3.1] OS:Windows VISTA [3.2] コンパイラ名とバージョン:BCC Borland C++ 5.5.1 [3.3] 言語: C [4] 期限: 早いとうれしいですが、課題ではなく提出期限が無いのでいつでも [5] その他の制限: あまり深くは習っていません。あまり難しいと困ります。
- 145 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:17:18 ]
- >>144
#include<stdio.h> int main(void){ int i; for(i=1;i<=10000;i++) printf("%s%s%d ", (i%3)?"":"ア", (i%5)?"":"犬", i); return 0; }
- 146 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:19:30 ]
- >>144
www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
- 147 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:22:58 ]
- FizzBuzzと言う名前、忘れてた
これができないというのは正直信じられん
- 148 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:29:29 ]
- >>147
もう久しく紙に書く習慣がなくなってしまったので、cでも急に紙に書けといわれるとどうかな。
- 149 名前:144 mailto:sage [2009/03/09(月) 22:47:04 ]
- FizzBuzzは書けました。ですが、3が付く数字がどう判定して良いかわかりません。
- 150 名前:145 mailto:sage [2009/03/09(月) 22:52:10 ]
- >>144
3がつく数字忘れてた #include<stdio.h> int chk3(int num){ if(num%3==0) return 1; for(;num>0;num/=10) if(num%10==3) return 1; return 0; } int main(void){ int i; for(i=1;i<=100;i++) printf("%s%s%d ", !chk3(i)?"":"ア", (i%5)?"":"犬", i); return 0; }
- 151 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:56:17 ]
- >>145
俺はお前のような漢になりたい
- 152 名前:規制解除したようす mailto:sage [2009/03/09(月) 23:56:00 ]
- #include <stdio.h>
int main(void) { int i; for(i=1;i<=10000;i++){ printf("%s%s%d ", (i%3==0 || (i/10)-(i/100)*10==3 || (i/100)-(i/1000)*10==3 || (i/1000)-(i/10000)*10==3 )?"ア":"", (i%5==0)?"犬":"", i); if(i%10==9) puts(""); } return 0; }
- 153 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 02:52:49 ]
- >>99
俺にはこれが限界だ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8959.txt
- 154 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 02:54:49 ]
- >num = rand() % 53;
こう書くと偏るからダメだって言う奴がでるからダメ。
- 155 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 02:59:31 ]
- >>154
randの偏りをなくすのは諦めたw あと、カードを取ってあがった場合の処理もw
- 156 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 03:07:41 ]
- num = rand() % (i + 1) もしくは num = i + rand() % (53 - i) にする。
または、 for(i=53; i>1; ) { num = rand() % i--; temp = allcard[i]; allcard[i] = allcard[num]; allcard[num] = temp; } にする。
- 157 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 03:42:25 ]
- >>153見ずに>>154見て、下位ビットは云々という話かとおもた
- 158 名前:152 mailto:sage [2009/03/10(火) 10:24:48 ]
- >>152 の6〜8行目。間違っていました。
訂正後:printf("%s%s%d ", (i%3==0 || i%10==3 || (i/10)%10==3 || (i/100)%10==3 || (i/1000)%10==3)
- 159 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 11:34:33 ]
- >>144
嫌がらせのように見にくいコード #include <stdio.h> #include <string.h> int main() { char buf[256]; int i; for(i = 1; 1; i++, sprintf(buf, "%d", i)) printf("%s%s%d ", ((i % 3 == 0 || strchr(buf, '3') != NULL) ? "ア" : ""), ((i % 5 == 0) ? "犬" : ""), i); return 0; }
- 160 名前:デフォルトの名無しさん [2009/03/10(火) 11:58:21 ]
- 別にこれでええやん
#include "stdafx.h" #include <iostream> #include "windows.h" using namespace std; int main(void){ int i; for(i=1;i<=10000;i++){ if(i%3==0 && i%5!=0){ cout << "ア"; }else if(i%5==0 && i%3!=0){ cout << "犬"; }else if(i%3==0 && i%5==0){ cout << "ア犬"; } cout << i << endl; Sleep(500); } return 0; }
- 161 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 12:11:27 ]
- >3が付く数字
- 162 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 12:12:41 ]
- >>160
*30から*39も全部アホにならないといけないそうだ 300から399も
- 163 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 12:15:49 ]
- 1からnまでの間に3の倍数と3のつく数字がいくつあるか求める関数
int nabeatu(int n) を作れ というのを以前見たような気がする
- 164 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:32:53 ]
- >>150に勝てる気がしなくてやめた
- 165 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:50:54 ]
- 倍数を求めるのは難しくないが、3の付く数字は
一度文字列に置き換えて、3が含まれるかチェキするとか。
- 166 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:51:44 ]
- って、文字列に置き換える必要はなかったか。10で割った余りが3かどうかで
順に10で割っていけば良いか、すまそ。
- 167 名前:99 mailto:sage [2009/03/10(火) 16:11:22 ]
- >>153
ありがとうございます。 今夜にでもゆっくりソースを読ませてもらいます。 今後の書き方の参考にもさせてもらいます。
- 168 名前:デフォルトの名無しさん [2009/03/10(火) 18:33:38 ]
- >>161-162
あぁ読み間違えてた 俺もプログラミング習いたてだけど 一応できたわ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8964.txt つうか、>>150みたいな短い書き方あるんだな 俺もそういう書き方してえわ
- 169 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 22:12:07 ]
- 生年月日を2000/01/01もしくは2000/1/1の形式で入力し、
誕生日から現在まで何日経過したか、現在の年齢の2項目を表示するプログラムをお願いします。
- 170 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 01:35:21 ]
- >>169 かなり制約つき
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8965.txt コンパイラ:VC++ 2005 日数;満日数 年齢:数え年齢(めんどうなので。満年齢は勝手にどうぞ) 誕生日:1970年以降 現在日付:2038年迄
- 171 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 01:52:00 ]
- >>169
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8966.txt 投稿してみよう…
- 172 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 01:54:59 ]
- おまえら優しいな…
- 173 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:04:04 ]
- >>169
2行目が曖昧かな?誕生日からというのは、前の誕生日からなのか、 生まれたその日からのどちらか?
- 174 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:25:19 ]
- >>173
お誕生日会と誕生日の違いだな。
- 175 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:29:37 ]
- >>174
お誕生日”会” ???
- 176 名前:170 mailto:sage [2009/03/11(水) 09:50:29 ]
- そもそも、生まれた当日は0日目なのか、1日目なのか。
それの方が悩んだ。
- 177 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:01:16 ]
- 年齢計算に関する法律について調べるべし。
- 178 名前:170 mailto:sage [2009/03/11(水) 10:26:20 ]
- オッケー、日本語で。0日目で正しいようだ。
「年齢計算に関する法律」で検索した。
- 179 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:28:08 ]
- 法律を知らないとプログラムって書けないんだね><
- 180 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:44:12 ]
- >>179
法律を知らないと書けないと言うか 作ろうとしてるプログラムの内容を知ってないと 作れない
- 181 名前:99 mailto:sage [2009/03/11(水) 19:19:39 ]
- 要求定義ってやつじゃないか?
- 182 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 19:34:42 ]
- >>178
年齢ハ出生ノ日ヨリ之ヲ起算ス 初日不算入の例外が年齢だよ 出生日が1日目
- 183 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:19:05 ]
- 指定した年に、13日の金曜日があるか調べ、あるならそれが何月か表示せよ
- 184 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:54:30 ]
- 指定した年に、13日の金曜日があるか調べ、あるならその日を災いにせよ
>>182 例外に含まれるのを見落としてました。 なるほどしかし、法律的には4月1日に生まれた子女は翌年の3月31日 午後12時に1歳に成るとなっている。4月1日午前0時でなく。 満年齢はそれでいいとして、課題は"経過した"日数も…(2項目)だから生まれた日の 翌日が第1日目でいいじゃないかと思う。生まれた当日は何かとバタバタしてるし。 正確に言えば翌日も出生時刻までが0日目で、第2日目てことは無いと思う。
- 185 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:06:52 ]
- >>183
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8967.txt
- 186 名前:185 mailto:sage [2009/03/11(水) 21:12:19 ]
- 間違えてた
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8968.txt
- 187 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 22:39:41 ]
- >>186
今年って3回もあるんだ ジェイソンも大変だなw
- 188 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 02:21:34 ]
- kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8969.txt
言語・コンパイラ:C・VC++ 2005 日数;満日数 年齢:数え年齢(めんどうなので。満年齢は勝手にどうぞ) 誕生日:1901年以降 <--- new 現在日付:2038年迄 <--- なんとか?
- 189 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 02:46:53 ]
- >>188
struct tmからtime_tをつくるmk_time()つー関数がなんか便利だたよ
- 190 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 02:59:04 ]
- × mk_time
○ mktime tm構造体つくる→年月日時分秒メンバを書き換える→mktime() →localtime_s()でstruct tmに変換 →曜日・日数が自動補完されてうまー
- 191 名前:デフォルトの名無しさん [2009/03/12(木) 11:27:49 ]
- 皆C言語で書いてるってことなのか?
よくわからないんだけどCとC++が微妙に構文違うのはなぜなの?
- 192 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 11:44:11 ]
- >>191
struct tm 変数名; // C structが必要 tm 変数名; // C++ structをつけなくていい C++は、変数の宣言が処理の途中で出来る。等々
- 193 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 15:13:21 ]
- ttp://www3.uploader.jp/dl/akaiup/akaiup_uljp00797.zip.html
[1] 授業単元: エムピーアイ [2] 問題文(含コード&リンク):ガウス消去法を並列化せよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 2009/03/13中 [5] その他の制限: エムピーアイの問題ですが、後退代入以外完成してます。上三角型の行列を作るところまでは 出来たのであとは単純に答えを計算するだけなのですが、アルゴリズムがわかりません。 なので115行目の”後退代入”のところを埋めて下さいまし。 エムピーアイというか単にC言語のループの書き方のレベルなのでエムピーアイを知らなくても アルゴリズムがわかれば書けると思います。なおプロセス数はmpirun -np 4 ./a.out で実行して下さい(添付のインプットファイルが4行4列なので)
- 194 名前:デフォルトの名無しさん [2009/03/12(木) 19:50:50 ]
- プログラム教えてください
配列の中の数値をランダムに入れ替えたいんです たとえば int A[]={ 1,2,3,4,5,6,7,8,9,10} ↓ランダム 4,9,5,1,8,6,2,10,3,7 教えてください
- 195 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 20:08:15 ]
- >>194
for ( i = 0; i < 100; i++) { 乱数で0-9の数字を2個( p , q )作成 tmp = A[ p ]; A[ p ] = A[ q ]; A[ q ] = tmp; }
- 196 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 20:34:59 ]
- #include <stdio.h>
#include <time.h> int main(void) { int ar[]={11,12,13,14,15,16,17,18,19,20}; int size=sizeof(ar)/sizeof(ar[0]); int i, num, temp; srand( (unsigned)time( NULL ) ); for(i=size-1; i>=0; i--){ num = rand() % (i + 1); temp = ar[i]; ar[i] = ar[num]; ar[num] = temp; printf("%d ", ar[i]); } return 0; }
- 197 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 21:00:29 ]
- >>196
偏りそうにも見えるが、上手くいくのかな? 誰か優しく証明して。
- 198 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 21:15:23 ]
- なんでこう、乱数絡みの問題が定期的に湧くんだw
- 199 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 21:21:01 ]
- 偏りっていうのはrandをつかうからってことなの?
どれぐらい偏るもんなの?
- 200 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 21:24:01 ]
- いやいや、randのせいじゃなく、
単純に処理としての話。 for(i=0; i < size; i++)だと分かるんだけど、 逆でも良いのかなってこと。
- 201 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 21:50:49 ]
- >>200
> for(i=0; i < size; i++)だと分かるんだけど、 > 逆でも良いのかなってこと。 逆のほうが簡潔に書けるって話だな デバッガで追っかけるとわかる for(i=0; i < size; i++)で書いてみ 最終的に行き着くのが196になる
- 202 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 21:59:46 ]
- なんで196に行くのかが全然わからないや。
- 203 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 22:32:48 ]
- >>196
出来ました! ありがとうございます すごいですね でも、randを使っているから同じ数字が入りそうなんですけど なんで同じ数字が入らないんだろう?
- 204 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 22:38:04 ]
- ああ、iだからrand減って行くんですね
分かりました i=size-1と(i + 1)がまだ分かりませんが なんとか分かるように頑張ります ありがとうございます
- 205 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 22:40:21 ]
- 私の知能じゃ10年かかっても思いつきませんでした
ありがとうございますm(_;)m
- 206 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 23:35:10 ]
- まず、全体の中から1個選んで一番後ろに入れる。
次に、残ったものから1個選んで後ろから二番目に入れる。 これを残り0個になるまで繰り返す。 簡単だろ?
- 207 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 00:30:49 ]
- 規則性はあるけど、乱数発生器をiで割っているのがいいよね
- 208 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 00:31:24 ]
- 要するに松田優作ってことだ
- 209 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 01:06:18 ]
- >>201
>>156
- 210 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 07:17:51 ]
- >>206
なるほど
- 211 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:04:38 ]
- 学校の課題を手伝ってください。
[1] 授業単元: データ構造アルゴリズム [2] 問題文(含コード&リンク): キューを利用して、プリンタのプリントキューを再現したプログラム(以下に要点を記載)を作成しなさい。 "1”を入力するとキューにデータが追加され"2"を入力するとキューからデータが取り出される キューが満杯になったり、空になったりした際はその旨をメッセージで表示する。 また、以下の関数を作成し、使用しなさい。 vaio enqueue(int val)キューにデータを追加する vaio dequeue() キューからデータを取り出す vaio queue_print()キュー全内容を表示する 以上ですお願いします。 [3] 環境 [3.1] OS: Linux ソラリス [3.2] コンパイラ名とバージョン: 不明 [3.3] 言語: C [4] 期限: ([2009年3月15日]) [5] その他の制限: なし
- 212 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:10:44 ]
- プリントキューの仕様が不明だな。
- 213 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:12:10 ]
- vaioも不明
- 214 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:17:14 ]
- 頭が弱いと生きるの大変そうだね
- 215 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:17:56 ]
- ちょww vaio?wwww
- 216 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:19:25 ]
- 失礼しましたvaioじゃなくvoidでした。
キューを利用して、プリンタのプリントキューを再現したプログラム(以下に要点を記載)を作成しなさい。 "1”を入力するとキューにデータが追加され"2"を入力するとキューからデータが取り出される キューが満杯になったり、空になったりした際はその旨をメッセージで表示する。 また、以下の関数を作成し、使用しなさい。 void enqueue(int val)キューにデータを追加する void dequeue() キューからデータを取り出す void queue_print()キュー全内容を表示する
|

|