- 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/
- 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()キュー全内容を表示する
- 217 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:41:08 ]
- 学校の課題でどうしてもできないC言語があるのですかどなたか手伝ってください。
スタックを利用した逆ポーランド電卓を作成しなさい。ただし、演算は四則演算のみとし、数値と数値、数値と演算子の間は半角スペースで区切って入力することとする。 お願いします。
- 218 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:42:22 ]
- >>217
>>1
- 219 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 18:05:23 ]
- [1] 授業単元: データ構造アルゴリズム
[2] 問題文(含コード&リンク):要素数10個の整数配列を用意します。要素を入力し、クイックソートを用いて昇順にソートするプログラムを作成しなさい。 [3] 環境 [3.1] OS: (Linux/) [3.2] コンパイラ名とバージョン: (わかりません) [3.3] 言語: (C) [4] 期限: [無期限] [5] その他の制限: なし
- 220 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 18:56:32 ]
- [1] 授業単元: データ構造アルゴリズム
[2] 問題文 スタックを利用した逆ポーランド電卓を作成しなさい。ただし、演算は四則演算のみとし、数値と数値、数値と演算子の間は半角スペースで区切って入力することとする。 [3] 環境 [3.1] OS: (Linux) [3.2] コンパイラ名とバージョン: (gcc) [3.3] 言語: (C) [4] 期限: [3/16] [5] その他の制限: なし
- 221 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 19:03:19 ]
- >>211
勝手に色々想像した。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8974.txt
- 222 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 19:08:53 ]
- >>220 osはunixでした。
- 223 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 19:11:10 ]
- >>219 私もosはunixでした。
- 224 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:01:14 ]
- >>221
dequeue()の戻り値もvaioだぞw
- 225 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:14:08 ]
- >>219
#include<stdio.h> #include<stdlib.h> #define N 10 int f(const void*a,const void*b){  return *(const int*)a-*(const int*)b; } int main(){  int a[N],i;  for(i=0;i<N;++i)scanf("%d",a+i);  qsort(a,N,sizeof(int),f);  for(i=0;i<N;++i)printf("%d ",a[i]); }
- 226 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:19:18 ]
- >>225ありがとうございます。
- 227 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:28:39 ]
- osによってプログラムの違いってあるんですか?
- 228 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:56:28 ]
- for(i=0;i<N;++i)scanf("%d",a+i);
for(i=0;i<N;++i)printf("%d ",a[i]); なんか気持ち悪いな
- 229 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:57:42 ]
- >>228
意図が読めないなんてピュアな方ですねw
- 230 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:09:19 ]
- >>220 終了はCtrl+Z
#include<stdio.h> #include<stdlib.h> int s[99],p; void push(int n){s[p++]=n;} int pop(void){return s[--p];} int main(){  char b[99];  for(;scanf("%98s",b)==1;){   switch(*b){    case'+':push(pop()+pop());break;    case'-':push(pop()-pop());break;    case'*':push(pop()*pop());break;    case'/':{int t=pop();push(pop()/t);}break;    default:push(atoi(b));   }   printf("%d\n",s[p-1]);  } }
- 231 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:12:19 ]
- >>230dクス
- 232 名前:230 mailto:sage [2009/03/14(土) 21:13:38 ]
- やべバグあるわ。今直す
- 233 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:17:42 ]
- [1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8975.txt データを表示する場合に,データの昇順と降順の両方向での表示が選択で きるように,このプログラムに変更してください [3] 環境 [3.1] OS:Win [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:C [4] 期限: 2009/03/16 [5] その他の制限: ありません よろしくお願いします
- 234 名前:230 mailto:sage [2009/03/14(土) 21:18:22 ]
- >>220 少し短くなったかな
#include<stdio.h> #include<stdlib.h> int s[99],p; void push(int n){s[p++]=n;} int pop(void){return s[--p];} int main(){  char b[99];  for(;scanf("%98s",b)==1;printf("%d\n",s[p-1]))   switch(*b){    int t;    case'+':t=pop();push(pop()+t);break;    case'-':t=pop();push(pop()-t);break;    case'*':t=pop();push(pop()*t);break;    case'/':t=pop();push(pop()/t);break;    default:push(atoi(b));   } }
- 235 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:24:11 ]
- >>234さんたびたびdクスです。
- 236 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:27:49 ]
- >>233
void PrintTreeRev(BinNode *p){ if (p != NULL) { PrintTree(p->right); PrintData(p->data); PrintTree(p->left); } } を追加してメニューから呼ぶようにしろ
- 237 名前:236 mailto:sage [2009/03/14(土) 21:28:40 ]
- おーう、中のPrintTreeもPrintTreeRevだ
逝ってくる
- 238 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:33:53 ]
- >>227
微妙に質問が質問として成立してないんじゃね? OS自体がプログラムだから、プログラムとして違いがあるし、 OSの機能を使うプログラムの場合も、OSが違うからプログラムとして違いがある。 >>234 いい感じ でも、"%98s"じゃなく、"%98[^\n]"じゃないとダメぽ
- 239 名前:234 mailto:sage [2009/03/14(土) 21:44:06 ]
- >>238
すまん。なぜダメなのか教えてくれないか。 何が入力されたときにまずい?
- 240 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:48:53 ]
- >>239
すんません。 勘違いしてました。 scanf一回で、式を全部持ってくるのかと思ってました。。。
- 241 名前:234 mailto:sage [2009/03/14(土) 21:51:32 ]
- >>240おk。
- 242 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 22:12:01 ]
- >>237
出来ました!ありがとうございます!
- 243 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 22:54:57 ]
- [1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8976.txt [3] 環境 [3.1] OS:ウィンドウズvista [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: [2009年3月15日] [5] その他の制限:なし お願いします
- 244 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 00:23:05 ]
- >>243
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8977.txt
- 245 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 00:37:13 ]
- あるある
- 246 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:19:15 ]
- osの違いでC言語に違いが出てくることってあるんですか?
- 247 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:19:53 ]
- >>244
ありがとうございます
- 248 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:49:26 ]
- [1] 授業単元: データ構造アルゴリズム
[2] 問題文 スタックを利用した逆ポーランド電卓を作成しなさい。ただし、演算は四則演算のみとし、数値と数値、数値と演算子の間は半角スペースで区切って入力することとする。 逆ポーランド電卓 逆ポーランド記法の数式を入力してリターンキーを押すと答えを表示してくれるもの。スタックを使用して以下のように計算する。 1.数値なら、そのままスタックにつむ 2.演算子なら、2つの数をスタックからおろして演算を行い、その結果を再びスタックにつむ。 ※逆ポーランド記法とは演算子を後ろに置く記法。例えば1+2は12+に、(1+2)*3は12+3*になる。逆ポーランド記法は後置法ともよばれる。 [3] 環境 [3.1] OS: (unix) [3.2] コンパイラ名とバージョン: (gcc) [3.3] 言語: (C) [4] 期限: [3/16] [5] その他の制限: なし よろしくお願いします。
- 249 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 02:08:17 ]
- >>248
>>220と>>234を見ろ。 なんというか、まあ、お前らのところ本当にどうしようもないのしかいないんだな
- 250 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 02:18:35 ]
- >>249 問題が同じでも細かいところが違うんですよ。
- 251 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 02:24:17 ]
- 確かにOSが違うな
- 252 名前:249 mailto:sage [2009/03/15(日) 02:51:34 ]
- >>250
すまん、その細かいところってどこだ? >>251 >>222見る限りOSも同じだが。
- 253 名前:デフォルトの名無しさん [2009/03/15(日) 03:22:19 ]
- すみません、C初心者で、今課題をやってるのですが、入門書見ながらでもさっぱりです。
よろしくおねがいします。。 ↓↓↓↓↓ 以下のプログラムは、入力された10個の数値を引き算し、その結果を表示するプログラムです。 9〜11行目を別の関数(関数名はFuncDev)とし、修正しなさい。ただし、グローバル変数は使わないこと。 またFuncDev内のローカル変数名は任意とします FuncDev関数は以下の定義とします int FuncDec(void); FuncDev関数の戻り値は、画面入力されたint型データとします。 1:#include<stdio.h> 2:void main(void); 3:void main(void) 4:{ 5: int n1 n2; 6; int nt; 7: nt=0; 8: for(n1=0;n1<10;n1++){ 9: printf("0-9の数値を入力:"); 10: scanf(" %d",&n2); 11: nt-=n2; 12: } 13: printf("結果は%dです",nt); 14:}
- 254 名前:>>253 mailto:sage [2009/03/15(日) 03:34:52 ]
- #include <stdio.h>
int FuncDev(void); int main(void) { int nt, n1; nt = 10000; for(n1 = 0; n1<10; n1++){ nt -= FuncDev(); } printf("結果は%dです", nt); } int FuncDev(void) { int n2; scanf(" %d", &n2); return n2; }
- 255 名前:デフォルトの名無しさん [2009/03/15(日) 03:41:45 ]
- >>254
すばやいご回答ありがとうございました。 私は問題の意味を勘違いしていたみたいでした。 自分一人だったら白紙で出すところでした。 本当にありがとうございました
- 256 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 03:52:02 ]
- OSがunixって幅が広すぎるよな。
- 257 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 04:01:21 ]
- [1] 授業単元: データ構造アルゴリズム
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8979.txt [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン: BCC Borland C++ 5.5.1 [3.3] 言語: C [4] 期限: ([2009年3月15日]) [5] その他の制限:なし
- 258 名前:>>253 [2009/03/15(日) 04:18:12 ]
- >>254さま
すみません、 今読んでいて疑問に思ったのですが、 6行目の nt=10000; とはどういう意味なのでしょう? 簡単に解説をしてくださると助かります
- 259 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 04:50:50 ]
- >>252 問題はいっしょだが条件が追加されてる。
- 260 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 05:09:36 ]
- >>259
どんな条件? 逆ポーランド電卓の説明が追加されているだけにしか見えんが?
- 261 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 09:48:42 ]
- >>260
ようわからんが実行結果がちがったんじゃねーの?たぶん同じやつが書き込んでるとおもわれる。
- 262 名前:>>253 mailto:sage [2009/03/15(日) 09:58:05 ]
- ntは引かれる数。10000は一万。
- 263 名前:デフォルトの名無しさん [2009/03/15(日) 13:42:22 ]
- >>253
#include "stdafx.h" #include <stdio.h> #include <iostream> #include "windows.h" using namespace std; int FuncDec(){ int n2; cout << "input 0-9" << endl; cin >> n2; return n2; } int main(void){ int n1; int nt=0; for(n1=0;n1<10;n1++){ nt-=FuncDec(); } cout << "output " << nt; Sleep(10000); }
- 264 名前:デフォルトの名無しさん [2009/03/15(日) 13:45:44 ]
- このスレ、己の描いた独自プログラムと簡単な問題文しか出さない人が多いけど
独自プログラムなんて出すよりも 詳しい問題文やどういったアルゴリズムにしようとしてるか描いてくるほうがありがたい というのもプログラムなんざ千差万別だから、そんなもの提示されても 俺のプログラムと描き方の雰囲気が少しでも違ってたらいちいち面倒なことになる
- 265 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 14:12:06 ]
- >>264
宿題スレに何を求めているの?
- 266 名前:デフォルトの名無しさん [2009/03/15(日) 15:55:22 ]
- この世に存在するソフトウェアのソースが公開されているものなんて
ほんのごく一部だぞ?他人の猿真似でどうにかなるもんでもなかろう 定石なんて、書店に行けばいくらでも見つかるぞ
- 267 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:55:41 ]
- osの違いでC言語に違いが出てくることってあるんですか?
- 268 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:56:24 ]
- >>267
環境依存に関わるライブラリではあり得る。
- 269 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 16:16:48 ]
- >>267
Cの規格上、差異を認めている部分(処理系定義)では起こりうる。 もちろんOSの値が以外の原因で起こることもあるけど。 型の大きさとか表現方法とか。
- 270 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 17:24:29 ]
- >>264
所詮、ここはC系で一番バカな質問を受け付ける/受け流すためのハコだからな。 問題文の読み方も分からないって手合いが多数だし、「ここまで書きました」は大概読まないほうがいい。 動かないコードを見て、何のツモリか当て推量するのは不毛だしな。 ・・・動いているコードでさえ、何のツモリ(仕様)かなんて、推量はあてにならないしな。
- 271 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 17:57:16 ]
- >>248 parseあんま自信無いw
#include<stdio.h> #include<ctype.h> int s[99],p,a; void push(int n){s[p++]=n;} int pop(void){return s[--p];} int main(){  int c,t;  for(;(c=getchar())!=EOF&&c!='\n';){   if(isspace(c));   else if(c=='+')t=pop(),push(pop()+t);   else if(c=='-')t=pop(),push(pop()-t);   else if(c=='*')t=pop(),push(pop()*t);   else if(c=='/')t=pop(),push(pop()/t);   else if(ungetc(c,stdin),scanf("%d",&t)==1)push(t);   else return fprintf(stderr,"Parse error!");  }  printf("%d\n",pop()); }
- 272 名前:271 mailto:sage [2009/03/15(日) 18:00:01 ]
- 悪い。修正版。
#include<stdio.h> #include<ctype.h> int s[99],p; void push(int n){s[p++]=n;} int pop(void){return s[--p];} int main(){  int c,t;  for(;(c=getchar())!=EOF&&c!='\n';)   if(isspace(c));   else if(c=='+')t=pop(),push(pop()+t);   else if(c=='-')t=pop(),push(pop()-t);   else if(c=='*')t=pop(),push(pop()*t);   else if(c=='/')t=pop(),push(pop()/t);   else if(ungetc(c,stdin),scanf("%d",&t)==1)push(t);   else return fprintf(stderr,"Parse error!");  printf("%d\n",pop()); }
- 273 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:03:04 ]
- getchar()使うヤツって……
- 274 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:03:50 ]
- いちいち言うくせに、指摘や適切なものを提示しないヤツって・・・口先だけのインポ野郎だなw
- 275 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:07:58 ]
- >>272さんありがとうございます。
- 276 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:09:15 ]
- こんなスレで偉そうにしているヤツって……
- 277 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:09:51 ]
- >>273
普通につかうガナ
- 278 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:18:36 ]
- >>270
初心者のコード見てこき下ろしたり、黒歴史を思い返したりするのもまた一興じゃないか。
- 279 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 20:03:56 ]
- お願いします
[1] 授業単元: データ構造アルゴリズム [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8979.txt こののプログラムのクイックソートを行っている関数quickを,非再帰的なアルゴリズムに書き換えてください. [3] 環境 [3.1] OS:Win [3.2] コンパイラ名とバージョン: BCC [3.3] 言語: C [4] 期限: ([2009/3/15]) [5] その他の制限:なし
- 280 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 21:55:22 ]
- 非再帰って自前でスタック使ったら、再帰アルゴリズムを
言語の再帰使わずに実装しているだけの様な。
- 281 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 22:37:11 ]
- クソ課題だなあ
- 282 名前:自分が解けもしないくせに口だけは大きい馬鹿 [2009/03/15(日) 22:40:26 ]
- 281 名前:デフォルトの名無しさん 投稿日:2009/03/15(日) 22:37:11
クソ課題だなあ
- 283 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 22:55:57 ]
- 分割統治法を非再帰でやらせるとか
クソ課題以外の何者でもないだろ
- 284 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 23:02:32 ]
- こんな感じかな?
void quick(Data a[], int left, int right, int Cmp(Data x, Data y, int order), int order){ int pl; int pr; Data x; while(1) { pl =left; pr =right; x = a[(pl+pr)/2]; do { while(Cmp(x, a[pl], order)) pl++; while(Cmp(a[pr], x, order)) pr--; if ( pl <= pr ){ swap(Data , a[pl], a[pr]); pl++; pr--; } } while(pl <= pr ); if (left < pr) {right = pr; continue;} if (pl < right) {left = pl; continue;} break; } }
- 285 名前:自分が解けもしないくせに口だけは大きい馬鹿 [2009/03/15(日) 23:14:59 ]
- 283 名前:デフォルトの名無しさん 投稿日:2009/03/15(日) 22:55:57
分割統治法を非再帰でやらせるとか クソ課題以外の何者でもないだろ
- 286 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 23:15:35 ]
- オレが解けないのは課題が悪いからだ!
- 287 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 23:18:06 ]
- >>281>>283
スレ違い。公開オナヌーは他所でどぞ。
- 288 名前:デフォルトの名無しさん [2009/03/15(日) 23:26:07 ]
- 口先だけのヤツは、いつも自分がそれに対してどう思うか?
という主観しか述べず、問題があるなら問題点を指摘するなり 客観性のある見解を示さず、自分が言ったことを反対されると ファビョるだけの井の中の蛙なんだなぁ
- 289 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 00:15:42 ]
- >>284さんありがとうございますm(_;)m
- 290 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 00:51:08 ]
- >>289
間違っる。 最初のleftとrightを記憶し、 左側を絞り込み、記憶しておいたleftとrightで右側を絞り込むように 2回に分けないといけないみたい。
- 291 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:04:18 ]
- >>283
再帰を反復に変換するのは普通の課題だろ。
- 292 名前:デフォルトの名無しさん [2009/03/16(月) 01:15:13 ]
- 初心者です。
/*BMI.c*/ #include<stdio.h> int main() { double a,b,c; c=b/(a*a); printf("あなたの身長(m)を入力してください。-----"); scanf("%f",&a); printf("あなたの体重(kg)を入力してください。-----"); scanf("%f",&b); printf("あなたのBMIは%fです。\n",c); if(c >=25){ printf("あなたは肥満です。"); } return 0; } これはあってますか?
- 293 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:19:08 ]
- >>292
間違ってます。
- 294 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:25:59 ]
- 修正?
void quick(Data a[], int left, int right, int Cmp(Data x, Data y, int order), int order){ int pl;int pr;Data x;int _right; _right = right; while(1) { pl = left;pr = right;x = a[(pl+pr)/2]; do {while(Cmp(x, a[pl], order)) pl++;while(Cmp(a[pr], x, order)) pr--; if ( pl <= pr ){swap(Data , a[pl], a[pr]);pl++;pr--;} } while(pl <= pr ); if (left < pr) {right = pr; continue;} break; } left = 1;right = _right; while(1) { pl = left;pr = right;x = a[(pl+pr)/2]; do {while(Cmp(x, a[pl], order)) pl++;while(Cmp(a[pr], x, order)) pr--; if ( pl <= pr ){swap(Data , a[pl], a[pr]);pl++;pr--;} } while(pl <= pr ); if (pl < right) {left = pl; continue;} break; } }
- 295 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 02:16:47 ]
- それじゃ無理だろ
- 296 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 03:09:37 ]
- 修正の修正?
void quick(Data a[], int left, int right, int Cmp(Data x, Data y, int order), int order){ int pl; int pr; Data x; int _right; _right = right; while(1) { pl = left; pr = right; x = a[(pl+pr)/2]; do { while(Cmp(x, a[pl], order)) pl++; while(Cmp(a[pr], x, order)) pr--; if ( pl <= pr ){ swap(Data , a[pl], a[pr]); pl++; pr--; } } while(pl <= pr ); if (left < pr) {right = pr;continue;} else right = _right; if (pl < right) {left = pl;continue;} break; } }
|

|