トップページtech
1001コメント376KB

C/C++の宿題片付けます 124代目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/

前スレ
C/C++の宿題片付けます 122代目(実質123代目)
http://pc11.2ch.net/test/read.cgi/tech/1232029287/
0202デフォルトの名無しさん2009/03/12(木) 21:59:46
なんで196に行くのかが全然わからないや。
0203デフォルトの名無しさん2009/03/12(木) 22:32:48
>>196
出来ました!
ありがとうございます
すごいですね

でも、randを使っているから同じ数字が入りそうなんですけど
なんで同じ数字が入らないんだろう?
0204デフォルトの名無しさん2009/03/12(木) 22:38:04
ああ、iだからrand減って行くんですね
分かりました
i=size-1と(i + 1)がまだ分かりませんが
なんとか分かるように頑張ります
ありがとうございます
0205デフォルトの名無しさん2009/03/12(木) 22:40:21
私の知能じゃ10年かかっても思いつきませんでした
ありがとうございますm(_;)m
0206デフォルトの名無しさん2009/03/12(木) 23:35:10
まず、全体の中から1個選んで一番後ろに入れる。
次に、残ったものから1個選んで後ろから二番目に入れる。
これを残り0個になるまで繰り返す。

簡単だろ?
0207デフォルトの名無しさん2009/03/13(金) 00:30:49
規則性はあるけど、乱数発生器をiで割っているのがいいよね
0208デフォルトの名無しさん2009/03/13(金) 00:31:24
要するに松田優作ってことだ
0209デフォルトの名無しさん2009/03/13(金) 01:06:18
>>201
>>156
0210デフォルトの名無しさん2009/03/13(金) 07:17:51
>>206
なるほど
0211デフォルトの名無しさん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] その他の制限: なし

0212デフォルトの名無しさん2009/03/14(土) 17:10:44
プリントキューの仕様が不明だな。
0213デフォルトの名無しさん2009/03/14(土) 17:12:10
vaioも不明
0214デフォルトの名無しさん2009/03/14(土) 17:17:14
頭が弱いと生きるの大変そうだね
0215デフォルトの名無しさん2009/03/14(土) 17:17:56
ちょww vaio?wwww
0216デフォルトの名無しさん2009/03/14(土) 17:19:25
失礼しましたvaioじゃなくvoidでした。
キューを利用して、プリンタのプリントキューを再現したプログラム(以下に要点を記載)を作成しなさい。
"1”を入力するとキューにデータが追加され"2"を入力するとキューからデータが取り出される
キューが満杯になったり、空になったりした際はその旨をメッセージで表示する。
また、以下の関数を作成し、使用しなさい。
void enqueue(int val)キューにデータを追加する
void dequeue() キューからデータを取り出す
void queue_print()キュー全内容を表示する
0217デフォルトの名無しさん2009/03/14(土) 17:41:08
学校の課題でどうしてもできないC言語があるのですかどなたか手伝ってください。
スタックを利用した逆ポーランド電卓を作成しなさい。ただし、演算は四則演算のみとし、数値と数値、数値と演算子の間は半角スペースで区切って入力することとする。
お願いします。
0218デフォルトの名無しさん2009/03/14(土) 17:42:22
>>217
>>1
0219デフォルトの名無しさん2009/03/14(土) 18:05:23
[1] 授業単元: データ構造アルゴリズム
[2] 問題文(含コード&リンク):要素数10個の整数配列を用意します。要素を入力し、クイックソートを用いて昇順にソートするプログラムを作成しなさい。
[3] 環境
 [3.1] OS: (Linux/)
 [3.2] コンパイラ名とバージョン: (わかりません)
 [3.3] 言語: (C)
[4] 期限: [無期限]
[5] その他の制限: なし
0220デフォルトの名無しさん2009/03/14(土) 18:56:32
[1] 授業単元: データ構造アルゴリズム
[2] 問題文 スタックを利用した逆ポーランド電卓を作成しなさい。ただし、演算は四則演算のみとし、数値と数値、数値と演算子の間は半角スペースで区切って入力することとする。
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: [3/16]
[5] その他の制限: なし
0221デフォルトの名無しさん2009/03/14(土) 19:03:19
>>211
勝手に色々想像した。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8974.txt
0222デフォルトの名無しさん2009/03/14(土) 19:08:53
>>220 osはunixでした。
0223デフォルトの名無しさん2009/03/14(土) 19:11:10
>>219 私もosはunixでした。


0224デフォルトの名無しさん2009/03/14(土) 20:01:14
>>221
dequeue()の戻り値もvaioだぞw
0225デフォルトの名無しさん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]);
}
0226デフォルトの名無しさん2009/03/14(土) 20:19:18
>>225ありがとうございます。
0227デフォルトの名無しさん2009/03/14(土) 20:28:39
osによってプログラムの違いってあるんですか?
0228デフォルトの名無しさん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]);

なんか気持ち悪いな
0229デフォルトの名無しさん2009/03/14(土) 20:57:42
>>228
意図が読めないなんてピュアな方ですねw
0230デフォルトの名無しさん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]);
 }
}
0231デフォルトの名無しさん2009/03/14(土) 21:12:19
>>230dクス
02322302009/03/14(土) 21:13:38
やべバグあるわ。今直す
0233デフォルトの名無しさん2009/03/14(土) 21:17:42
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
http://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] その他の制限: ありません

よろしくお願いします
02342302009/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));
  }
}
0235デフォルトの名無しさん2009/03/14(土) 21:24:11
>>234さんたびたびdクスです。
0236デフォルトの名無しさん2009/03/14(土) 21:27:49
>>233
void PrintTreeRev(BinNode *p){
if (p != NULL) {
PrintTree(p->right);
PrintData(p->data);
PrintTree(p->left);
}
}
を追加してメニューから呼ぶようにしろ
02372362009/03/14(土) 21:28:40
おーう、中のPrintTreeもPrintTreeRevだ
逝ってくる
0238デフォルトの名無しさん2009/03/14(土) 21:33:53
>>227
微妙に質問が質問として成立してないんじゃね?
OS自体がプログラムだから、プログラムとして違いがあるし、
OSの機能を使うプログラムの場合も、OSが違うからプログラムとして違いがある。

>>234
いい感じ
でも、"%98s"じゃなく、"%98[^\n]"じゃないとダメぽ
02392342009/03/14(土) 21:44:06
>>238
すまん。なぜダメなのか教えてくれないか。
何が入力されたときにまずい?
0240デフォルトの名無しさん2009/03/14(土) 21:48:53
>>239
すんません。
勘違いしてました。
scanf一回で、式を全部持ってくるのかと思ってました。。。
02412342009/03/14(土) 21:51:32
>>240おk。
0242デフォルトの名無しさん2009/03/14(土) 22:12:01
>>237
出来ました!ありがとうございます!
0243デフォルトの名無しさん2009/03/14(土) 22:54:57
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):http://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] その他の制限:なし

お願いします
0244デフォルトの名無しさん2009/03/15(日) 00:23:05
>>243
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8977.txt
0245デフォルトの名無しさん2009/03/15(日) 00:37:13
あるある
0246デフォルトの名無しさん2009/03/15(日) 01:19:15
osの違いでC言語に違いが出てくることってあるんですか?
0247デフォルトの名無しさん2009/03/15(日) 01:19:53
>>244
ありがとうございます
0248デフォルトの名無しさん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] その他の制限: なし
よろしくお願いします。
0249デフォルトの名無しさん2009/03/15(日) 02:08:17
>>248

>>220>>234を見ろ。
なんというか、まあ、お前らのところ本当にどうしようもないのしかいないんだな
0250デフォルトの名無しさん2009/03/15(日) 02:18:35
>>249 問題が同じでも細かいところが違うんですよ。
0251デフォルトの名無しさん2009/03/15(日) 02:24:17
確かにOSが違うな
02522492009/03/15(日) 02:51:34
>>250
すまん、その細かいところってどこだ?

>>251
>>222見る限りOSも同じだが。
0253デフォルトの名無しさん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:}
0254>>2532009/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;
}
0255デフォルトの名無しさん2009/03/15(日) 03:41:45
>>254
すばやいご回答ありがとうございました。
私は問題の意味を勘違いしていたみたいでした。
自分一人だったら白紙で出すところでした。

本当にありがとうございました
0256デフォルトの名無しさん2009/03/15(日) 03:52:02
OSがunixって幅が広すぎるよな。
0257デフォルトの名無しさん2009/03/15(日) 04:01:21
[1] 授業単元: データ構造アルゴリズム
[2] 問題文:http://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] その他の制限:なし
0258>>2532009/03/15(日) 04:18:12
>>254さま
すみません、
今読んでいて疑問に思ったのですが、
6行目の
nt=10000;
とはどういう意味なのでしょう?
簡単に解説をしてくださると助かります
0259デフォルトの名無しさん2009/03/15(日) 04:50:50
>>252 問題はいっしょだが条件が追加されてる。
0260デフォルトの名無しさん2009/03/15(日) 05:09:36
>>259
どんな条件?

逆ポーランド電卓の説明が追加されているだけにしか見えんが?
0261デフォルトの名無しさん2009/03/15(日) 09:48:42
>>260
ようわからんが実行結果がちがったんじゃねーの?たぶん同じやつが書き込んでるとおもわれる。
0262>>2532009/03/15(日) 09:58:05
ntは引かれる数。10000は一万。
0263デフォルトの名無しさん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);
}
0264デフォルトの名無しさん2009/03/15(日) 13:45:44
このスレ、己の描いた独自プログラムと簡単な問題文しか出さない人が多いけど
独自プログラムなんて出すよりも
詳しい問題文やどういったアルゴリズムにしようとしてるか描いてくるほうがありがたい
というのもプログラムなんざ千差万別だから、そんなもの提示されても
俺のプログラムと描き方の雰囲気が少しでも違ってたらいちいち面倒なことになる
0265デフォルトの名無しさん2009/03/15(日) 14:12:06
>>264
宿題スレに何を求めているの?
0266デフォルトの名無しさん2009/03/15(日) 15:55:22
この世に存在するソフトウェアのソースが公開されているものなんて
ほんのごく一部だぞ?他人の猿真似でどうにかなるもんでもなかろう
定石なんて、書店に行けばいくらでも見つかるぞ
0267デフォルトの名無しさん2009/03/15(日) 15:55:41
osの違いでC言語に違いが出てくることってあるんですか?
0268デフォルトの名無しさん2009/03/15(日) 15:56:24
>>267
環境依存に関わるライブラリではあり得る。
0269デフォルトの名無しさん2009/03/15(日) 16:16:48
>>267
Cの規格上、差異を認めている部分(処理系定義)では起こりうる。
もちろんOSの値が以外の原因で起こることもあるけど。

型の大きさとか表現方法とか。
0270デフォルトの名無しさん2009/03/15(日) 17:24:29
>>264
所詮、ここはC系で一番バカな質問を受け付ける/受け流すためのハコだからな。
問題文の読み方も分からないって手合いが多数だし、「ここまで書きました」は大概読まないほうがいい。
動かないコードを見て、何のツモリか当て推量するのは不毛だしな。

・・・動いているコードでさえ、何のツモリ(仕様)かなんて、推量はあてにならないしな。
0271デフォルトの名無しさん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());
}
02722712009/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());
}
0273デフォルトの名無しさん2009/03/15(日) 18:03:04
getchar()使うヤツって……
0274デフォルトの名無しさん2009/03/15(日) 18:03:50
いちいち言うくせに、指摘や適切なものを提示しないヤツって・・・口先だけのインポ野郎だなw
0275デフォルトの名無しさん2009/03/15(日) 18:07:58
>>272さんありがとうございます。
0276デフォルトの名無しさん2009/03/15(日) 18:09:15
こんなスレで偉そうにしているヤツって……
0277デフォルトの名無しさん2009/03/15(日) 18:09:51
>>273
普通につかうガナ
0278デフォルトの名無しさん2009/03/15(日) 18:18:36
>>270
初心者のコード見てこき下ろしたり、黒歴史を思い返したりするのもまた一興じゃないか。
0279デフォルトの名無しさん2009/03/15(日) 20:03:56
お願いします

[1] 授業単元: データ構造アルゴリズム
[2] 問題文:http://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] その他の制限:なし
0280デフォルトの名無しさん2009/03/15(日) 21:55:22
非再帰って自前でスタック使ったら、再帰アルゴリズムを
言語の再帰使わずに実装しているだけの様な。
0281デフォルトの名無しさん2009/03/15(日) 22:37:11
クソ課題だなあ
0282自分が解けもしないくせに口だけは大きい馬鹿2009/03/15(日) 22:40:26
281 名前:デフォルトの名無しさん 投稿日:2009/03/15(日) 22:37:11
クソ課題だなあ
0283デフォルトの名無しさん2009/03/15(日) 22:55:57
分割統治法を非再帰でやらせるとか
クソ課題以外の何者でもないだろ
0284デフォルトの名無しさん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;
}
}
0285自分が解けもしないくせに口だけは大きい馬鹿2009/03/15(日) 23:14:59
283 名前:デフォルトの名無しさん 投稿日:2009/03/15(日) 22:55:57
分割統治法を非再帰でやらせるとか
クソ課題以外の何者でもないだろ
0286デフォルトの名無しさん2009/03/15(日) 23:15:35
オレが解けないのは課題が悪いからだ!
0287デフォルトの名無しさん2009/03/15(日) 23:18:06
>>281>>283
スレ違い。公開オナヌーは他所でどぞ。
0288デフォルトの名無しさん2009/03/15(日) 23:26:07
口先だけのヤツは、いつも自分がそれに対してどう思うか?
という主観しか述べず、問題があるなら問題点を指摘するなり
客観性のある見解を示さず、自分が言ったことを反対されると
ファビョるだけの井の中の蛙なんだなぁ
0289デフォルトの名無しさん2009/03/16(月) 00:15:42
>>284さんありがとうございますm(_;)m
0290デフォルトの名無しさん2009/03/16(月) 00:51:08
>>289
間違っる。
最初のleftとrightを記憶し、
左側を絞り込み、記憶しておいたleftとrightで右側を絞り込むように
2回に分けないといけないみたい。
0291デフォルトの名無しさん2009/03/16(月) 01:04:18
>>283
再帰を反復に変換するのは普通の課題だろ。
0292デフォルトの名無しさん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;


これはあってますか?
0293デフォルトの名無しさん2009/03/16(月) 01:19:08
>>292
間違ってます。
0294デフォルトの名無しさん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;
}
}
0295デフォルトの名無しさん2009/03/16(月) 02:16:47
それじゃ無理だろ
0296デフォルトの名無しさん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;
}
}
0297デフォルトの名無しさん2009/03/16(月) 04:16:12
>>294
>>295
>>296
重ね重ねありがとうございます
0298デフォルトの名無しさん2009/03/16(月) 04:28:20
>>296
無駄が多い
0299デフォルトの名無しさん2009/03/16(月) 04:55:23
>>298
模範解答をお願いします。
0300デフォルトの名無しさん2009/03/16(月) 05:27:00
クイックソート 非再帰でググればいくらでも転がってるだろ
0301デフォルトの名無しさん2009/03/16(月) 11:35:25
>>292
a,bに値が格納される前にcを計算しているので間違い。
■ このスレッドは過去ログ倉庫に格納されています