1 :
デフォルトの名無しさん :
2008/06/27(金) 19:47:22 BE:113605362-2BP(2700)
[1] 授業単元:cプログラミング
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7084.txt ・部分木p から最小のキーを持つノードを削除した部分木を返す関数deleteMinNode を作成せよ.
・上の資料等 を参考にして,コマンドライン引数で指定したキーを持つノードを2 分探索木から削除するプログラムを作成せよ.
ただし,プログラム引数の「整数1 整数2 …」の各値をキーに持つノードを順に挿入して2 分探索木を生成し,
deleteNode 関数を使ってコマンドライン引数の「X1 X2 …」の各値をキーに持つノードを順に2 分探索木より削除する.
また,次のようなプログラム実行例を想定している.
% ./a.out 9 5 11 3 4 15 10 -- 4 5 9
入力データ [9 [5 3 _ 4] _ ] [ 11 10 15 ] ]
deleteNode(4)
==> [9 [5 [ 3 _ _ ] _ ] [ 11 [10 _ _ ] [ 15 _ _ ] ] ]
deleteNode(5)
==> [9 [ 3 _ _ ] [ 11 [ 10 _ _ ] [ 15 _ _ ] ] ]
deleteNode(9)
==> [10 [ 3 _ _ ] [ 11 _ [ 15 _ _ ] ] ]
%
% ./a.out 9 5 11 3 4 15 10 -- 8
入力データ [9 [5 3 _ ] [ 11 _ 15 ] ]
deleteNode(8)
deleteNode: 指定キーのノードがありません
[3] 環境
[3.1] OS: (Windows/Linux/等々)
linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
6月30日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
スレが変わったのでもう一度書き込ませてもらいます。よろしくお願いします
前スレ1000www AYBABTUなつかしいw
[1] 授業単元:cプログラミング [2] 問題文(含コード&リンク):C++の問題なのですが、難しい問題でスレを汚すのも嫌なのでメールにてご助力いただきたいです。 [3] 環境 [3.1] OS: Winows [3.2] コンパイラ名とバージョン:VC6.0 [3.3] 言語: C++ [4] 期限:6/29 [5] その他の制限: 制限は特にないです。 なかなか解けず苦労しています。よろしくお願いします。
>>6 とりあえず貼るほうがいいと思うんだが。
WinowsというOSは経験ないけどもしかしたら分かるかもしれないし
>>1 に補足
アップローダーを使う場合でも、こちらに、ダイジェスト(概要)を
1行程度でもいいから書いて下さい。
単なるリンクだけじゃ、掲示板をメール代わりに使ってることに
なり運営者に失礼というものです。
アップローダーの内容が消されたり、置き換えられたりした場合は、
このスレも壊れてしまうことになります。
>>8 > 掲示板をメール代わりに使ってること
ならねーよw
このスレを使う場合でも、こちらに、アップローダーのURLを 1行程度でもいいから書いて下さい。 ここに長々と書き込むだけじゃ、このスレをチャット代わりに使ってることに なり、読みづらくなり他の利用者に迷惑というものです。 2ちゃんのサーバーが停止したり、移転したりした場合は、 このスレも壊れてしまうことになります。
>>10 #include <stdio.h>
int f(int n){
int cnt = 0;
while(n > 9) {
int c = 1;
while(n) { c *= n % 10; n /= 10; }
n = c;
cnt++;}
return cnt;}
void show(int n){
printf("%d", n);
while(n > 9) {
int c = 1;
while(n) { c *= n % 10; n /= 10; }
n = c;
printf("→%d", n);
}
putchar('\n');
}
int main(void)
{
int i, j, m = 4;
for(i=0; m < 9; i++) {
if(f(i) > m) {
printf("m = %d :", ++m);
show(i);
}
}
return 0;
}
>>10 #include<stdio.h>
int hoge(int x, int is_print){
int a,c,n=0;
while(x>9){
if(is_print) printf("%d -> ", x);
c=1;
do{
a=x%10;
x=(x-a)/10;
c=c*a;
}while(x!=0);
x=c;
++n;
}
if(is_print) printf("%d\n", x);
return n;
}
int main(){
int i, j, n, num[10]={0};
for(i=1;;i++){
n=hoge(i, 0);
if(n>=10) continue;
if(num[n]==0){
num[n]=i;
for(j=5;j<=9;j++) if(num[j]==0) break;
if(j>9) break;
}
}
for(j=0;j<=9;j++) hoge(num[j], 1);
return 0;
}
1分で、ろだにスレ立てて来る。連立するな。
前
>>964 回答を書いた者だけど
自分が説明するのが下手なのは自覚はしてるけど
本当は下の人間に教えていかないといけない立場になりつつあるから
克服しないといけないなorz
なかなか意思の疎通と言うのは難しいもんだねぇ
16 :
デフォルトの名無しさん :2008/06/28(土) 00:58:17
[1] 授業単元: プログラミング言語 [2] 問題文(含コード&リンク): 1、 "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday","Saturday" の7個の文字列の長さを求めて表示させるプログラムを作成せよ。 ただし、ポインタのポインタを使用すること。 2、 まず初めに、入力する整数の個数をキーボードにより指定する。 次に指定され数だけキーボードから整数を入力し、int型配列に格納していく。 この配列について, 「最大値の要素番号」(要素番号とは配列の[]の中の数字)「最小値の要素番号」 の2つを Call by Reference によって求める関数GetMaxMinIndex()を作成し、実行例のように動作するプログラムを作成せよ。(注:関数の引数の個数は任意) <実行例> 入力する値の個数 3 値の入力 data #0 : 2 data #1 : -9 data #2 : 6 最大 : data #2 (値:6) 最小 : data #1 (値:-9) [3] 環境 [3.1] OS:Linux [3.3] 言語: C [5] その他の制限: 構造体まで習いました。 よろしくお願いします。
17 :
デフォルトの名無しさん :2008/06/28(土) 01:00:13
>>16 1,の実行例
曜日 文字数
-------------------
Sunday 6
Monday 6
Tuesday 7
Wednesday 9
Thursday 8
Friday 6
Saturday 8
[1] 授業単元:アルゴリズムとデータ構造 [2] 問題文:動的配列を使ってヒープを実現せよ。ただし、各記憶要素xは整数値をとるものとする。 関数として、空のヒープを生成するcreate(),要素xを挿入するinsert(int x), 最小値を削除してその値を返すdeletmain(),ヒープが空かどうかを判定するempty(), 現在のヒープ内容全体を表示するshow()を用意する。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 2008年6月28日まで [5] その他の制限: ポインタはできるだけ使用しないでください よろしくお願いします。
前スレの
>>897 の方どうもありがとうございます。
勉強になりました
しかも、2の方条件満たしてねーwww
24 :
21 :2008/06/28(土) 01:26:14
26 :
デフォルトの名無しさん :2008/06/28(土) 01:33:27
>>21 1の方はポインタのポインタを使って欲しいんですが…
>>4 windows bcc unistd
これらをすべて満たす環境を持ってないんですけどいいですかね。
>>28 構わないです
とりあえず全く閃かないので、参考になるものが欲しいです
すいません。。
>>29 閃くも何も3の処理を1に入れるくらいはやったんだよね?
>>31 はい
家でプログラミングの環境無いため、学校でやりました
上手くいきませんでした…
>>32 コンパイルエラーが出てあきらめて帰ってきたのか。
学校で質問すればよかったのにねえ。
以下の宣言を追加
int i,j;
double w[5000],x[5000],y[5000],z[5000];
etimeの算出部は以下のように。
etime = tend.tv_sec - tbgn.tv_sec + tend.tv_usec - tend.tv_usec;
これで動くと思うよ。
小出しでごめんね。 単精度浮動小数はfloatに変えればよいよ。 乗算、除算は分かるよね。 あとネックになるのはグラフだと思うけどこればっかりは形式が決まってないのでなんともいえない。 Windowsを使うことができる学校環境のようなので、各結果をまとめてエクセルでグラフ作ればいいかなあ。
[1]回答レベル:ヒント・ソースだけ・コンパイル済・テスト済・清書済み(模範解答の自信あり) [2]コード:リンクの場合はリンクミスで他人に迷惑がかからないように、内容のほうも抜粋で かまいませんので記入願います。 [3]処理系:コンパイル・テストをした環境をお願いします(Windows/Visual C++ 2003/Cモードコンパイル) 特別なライブラリを使用する場合は、ライブラリファイル一覧もお願いします。 [4]コメント:ソースだけでなく、コメントも入れるようお願いします。
>>12 >>13 ありがとうございます
聞きたいんですが、どうやったらこういった問題が解けるようになるんですか?
正直、ソース読んでこんなの書けるとか凄すぎる…とか思ったんですが
コメント入れろと仰ってます?
>>38 それは読んで理解したと思えばよい?
そうであれば、その積み重ねをすることで自然とかけるようになるよ。
模範解答の自信あり、なんてつけられてたら逆に怖いけどな。 回答テンプレ使って欲しい!っていってる人がいるのに使ってる回答者がいないってことは テンプレ推奨派は回答者じゃないってことだよね。 何でテンプレ使って欲しいか書いてよ。本音で。
>>38 慣れでできるとだけは思わないほうがいいな
ただしどのようにすればそういう風になれるか、なれるかなれないかを
分ける決定的なものは分からない。熱意があってもダメな人はダメだし。
才能とか天性のものとかいうんじゃなくて、運命づけられたものに近いんじゃ
ないか?
12と13以外は答えるなよw
通信と教育を区別することは重要
>>1 に回答者用のテンプレなんてないぞ???
っつか、ここでは回答する義務も何もあるわけじゃないし
有志者が適当に答えているのに、答えるなら
親切丁寧に、分かりやすく答えろって催促はないだろ。
そこまでしなくてもコードを書いて質問者が気に入らなきゃそれまでだし
コメントをつけろって半ば命令っぽい指図はないだろ。
あまりしつこいと、回答者が減るぞ。
49 :
未解決? :2008/06/28(土) 05:57:36
>>3 BSTREE_NODE *deleteMinNode(BSTREE_NODE *p, BSTREE_K_TYPE *min){
if(p->left == NULL){
*min = p->key;
return deleteRootNode(p, *min);
}
p->left = deleteMinNode(p->left, min);
return p;
}
int main(int argc, char *argv[]){
BSTREE_NODE *bstree = NULL;
BSTREE_NODE *result;
BSTREE_K_TYPE x;
int n1, i;
bstree = inputBSTree(bstree, &argv[1], argc -1, &n1);
if (n1 < 1 || argc -1 - n1 < 2)
error("引数の指定方法: 整数1 整数2 … -- X");
printf("入力データ "); printBSTree(bstree, 0, 1);
for(i = n1 + 2; i < argc; ++i){
x = atoi(argv[i]);
printf("deleteNode(%d)\n", x);
result = deleteNode(bstree, x);
printf("==> "); printBSTree(result, 0, 0);
bstree = result;
}
destroyBSTree(bstree);
return 0;
}
コード貼る前に質問者がここに来てるか確認してから貼れば? 「今から送りますよ」 とね。
未解決問題はあるか?
あと6つぐらい?
>>50 ありがとうございます!
実行例では
% ./a.out 9 5 11 3 4 15 10 -- 8
入力データ [9 [5 3 _ ] [ 11 _ 15 ] ]
deleteNode(8)
となるところで、
$ ./a.exe 9 5 11 3 4 15 10 -- 8
入力データ [ 9 [ 5 [ 3 _ 4 ] _ ] [ 11 10 15 ] ]
deleteNode(8)
deleteNode: 指定キーのノードがありません
となるのですが、実行例のほうがおかしいんですかね?
明らかにそうっぽいですが・・
どなたか前スレ900をお願いします
見に行くの面倒だからこっちに張れよ。
質問はテンプレに沿った形で行って下さい。 特に質問者はトリップを使って下さい。 トリップを使っていない名前の質問は、正式な質問では無いものとします。 (「荒らし」扱いですが、必ずしも排撃されるわけではありません。) 再質問の場合は、アンカーで元質問に誘導して下さい。 特に複数スレに跨がる場合は前スレがDAT落ちする場合が多いので 再質問であることを明記の上、同じフォーマットで質問を上げ直して下さい。 外部サイトに問題文の表示をデリゲートする場合でも、質問の概要だけでも 書いて下さい(リンクのみは禁止です)ミスリンクがあった場合に問題が生じます。 問題の訂正は、最初の質問から30分以内に2回を上限として行うことが出来ます。 しかし一般的にいって問題を訂正した場合回答される可能性は著しく低くなると思っ て下さい。30分以内の3回目の、或は30分を経過してからの訂正を意味するレス を質問者が行った場合は、質問はその時点で自動的にクローズされるものとします。 回答者は回答をしないで下さい。質問者に対するペナルティとして、24時間以内に 同じIDの質問が発生した場合でも、質問は即時クローズされます。回答者は回答しな いで下さい。 質問は、テンプレ項目の期限以内でも、48時間経過したら自動的にクローズ されるものとします。テンプレ項目の期限前30分でも、オープンされていれば 自動的にクローズされます。
なんだこのバカは
>>54 deleteNode(8)の入力データの表示は実行例がおかしい
入力してる4と10が何もしてないのにどっかいってる
>>36 寝てしまっていました。
エクセルでグラフ作成するだと思います!
>>57 検索しても出ないあたり、まさか手書きか?
62 :
デフォルトの名無しさん :2008/06/28(土) 12:49:21
前スレ
>>972 ありがとうございます
fours.txtの方を変えればいいのでしょうか?
>>57 っつか、何だよあんた?w
一人なに必死になってんだ???
うpロダ使えに激しく反発したり、自分勝手過ぎやしないか???
少し黙っててくれ。ここに用があるなら、宿題に答えろよ?
>>63 回答テンプレを使えという自治厨に対して、じゃあ質問者もこうしろよっていう
別の自治厨がわいただけ
>>64 ここで回答している身としてはレベル低いと言われて快くはないが、
それはさておき、教師が2chやmixiをチェックしていると言っている時点で
学生は2chやmixiに丸投げしないだろうな
つまり丸投げするようなレベルの低い人間に適した場所って意味だろ
適した場所ではあるが、出題者の教師はそのように主張していないらしい
その先生のソースみたいなw
でも実際、前スレでも行列の指数関数の近似やら自動車の燃費やらは回答されてなかったよな。 あの辺になると俺も自分の課題でしかやらんし、苦労してやっと作れるレベルのは丸投げしても回答もらえる確率の方が低いだろう。
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7120.txt ↑資料
E1: ノードp が葉の場合は,空の木を返す.min にはノードp のキーを格納.
E2: ノードp が左部分木を持つ場合は,左部分木から最小のキーを持つノードを削除した部分木p を返す.
min には左部分木の最少のキーを格納.
E3: ノードp が右部分木だけを持つ場合は,右部分木を返す. min ノードp のキーを格納する.
以上の処理の場合分けを行った、部分木p から最小のキーを持つノードを削除した部分木を返す関数deleteMinNodeを作成せよ。
[3] 環境
[3.1] OS: (Windows/Linux/等々)
linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
6/30
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
すいません、
>>3 なのですが、
deleteMinNode関数の処理の場合分けの記載を忘れていました。
どなたかdeleteMinNode関数だけ作り直していただけないでしょうか?
よろしくお願いします
>>70 それらはプログラムの問題より、プログラムで扱う各内容の問題になってるしw
”何々する”問題をプログラムで作れって、
だけでプログラムの問題になるならプログラマは万能優秀な人間じゃなきゃ務まらないわな
流体力学をシミュレートして飛行機が飛ぶプログラムを作れ
とか
☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ毎日新聞社による日本人女性への誹謗中傷☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ☠ฺ
・母親は受験勉強をする息子の学力向上のためにフェラチオをする
・日本人女性の55%は、出会ったその日に男と寝る
・ファストフードは女子高生たちを性的狂乱状態におとしいれる
・ティーンたちはバイアグラを使ってウサギのようにセックスをする
・女子高生は、刺激のためにノーブラ・ノーパンになる
・日本の最新の流行 : 70歳の売春婦
・老人の売春婦の人気にもかかわらず、日本では小学生の売春婦にも仕事がある
・日本の若い看護婦は売春婦に勝る
・24時間オルガズムが止まらない病気で苦しむ日本人女性の数が増えている
・15未満の子供を対象とした疑似ポルノが日本に蔓延している
・OLの72%が、セックスをより堪能するために何らかのトレーニングを受けている
・人妻は気分転換の目的で昔の恋人に抱かれに行く
・主婦は郊外のコイン・シャワーで売春をしている
・日本男子は柔道や空手の部活で男相手に童貞を捨てている
・ほとんどすべての漁師は海でマンタとSEXしている
・まだ10代の少年から退職した老人までみんな2980円の手コキを利用している
・六本木のあるレストランでは、食事の前にその材料となる動物と獣姦する
※同社が全年齢向けコーナーで七年以上にわたり世界に向けて配信していたものの一部です
※同社の行為は日本人への偏見や人種差別、婦女暴行、幼児虐待を助長するものです
◆毎日新聞の英語版サイトがひどすぎる まとめ@wiki
http://www9.atwiki.jp/mainichiwaiwai/ ◆毎日新聞問題の情報集積wiki
http://www8.atwiki.jp/mainichi-matome/ つまり日本国民は
http://www.vipper.net/vip552788.jpg
>>35 etimeの算出は
etime = (tend.tv_sec + (double)tend.tv_usec*1e-6) - (tbgn.tv_sec + (double)tbgn.tv_usec*1e-6);
こうじゃyない?
gettimeofdayを使ったことないんだけど、ぐぐったらこうなってたんだが
75 :
74 :2008/06/28(土) 14:00:54
>>72 プログラムが書けるのと
問題の内容が理解できるのとでは別問題だからねぇ
高卒な俺には理解できない内容あるからなorz
ぐぐれば何とかなる事もあるけど
>>74 windowsは良く知らないんだが、timersubが使えるならば、
それを使ったようが良くない?
79 :
デフォルトの名無しさん :2008/06/28(土) 14:46:10
単位が足りないので単位を修得するプログラムを書いてください
>>74 ほんとですね。フォローありがとうございます。
※質問者は質問をオープンする。質問をオープンした者が質問者である。 ※質問は所定の形式である必要がある。(テンプレ) ※質問者は質問をオープンしてから一定時間はその質問内容を一定回数まで訂正できる。 ※回答者は質問者の最後の訂正があってから所定時刻が経過するまで回答してはならない。 ※回答する場合は、質問者に回答通告を出す。質問者の回答通告応答があった場合は 通信確立で所定形式で回答できる。質問者の回答許可が出ない段階での回答は許可されない。 ※通信確立以後の通信確立解除までの通信形式は自由である。特に他の参加者からの 割り込みはこれを拒否することは出来ない。( 公開掲示板システム上の制約) ※質問者は同時に複数の回答者と通信を確立することは出来ない。最初に通信を確立した 回答者との通信が終了するまで、別の回答者との通信を確立することは出来ない。 ただし、回答者との通信が終了した時点で、質問をクローズしない限り、別の回答者が 存在する場合は通信を確立することが出来る。 ※通信確立以後、質問者のキーワード「ありがとうございました」で通信確立が解除される。 ※一定の時刻到達時点、或は質問時刻から一定時間経過時点、或は質問者の明示で 質問はクローズされる。 ※質問がクローズされるまで、回答者は回答通告を出すことが出来る。 ※回答通告を出した回答者は、質問者の通信が確立してから所定時間内に回答しなければなら ない。所定時間経過後は、自動的に回答通告は取り消される。質問者は回答通告を出した 回答者が回答しないことを批判することは出来ない。 ※回答通告を出してから質問者の通信確立応答が無いまま、所定時間経過した或は質問が クローズされた場合は回答通告は自動的に無効になる。この場合、回答者は質問者を 誹謗することが出来る。
未解決のほとんどが今日期限だな
まあそろそろ期末が終わってレポートの期限だからな
未解決問題じゃなくて、所詮はどっか(宿題を出した人)に模範解答がある宿題の未回答質問だよ。 あなたの未解決問題かも知れないけど。
どうしたらそんな的外れな事を言えるのか想像が付かないな。
>>75 一箇所訂正
誤:w[i] = y[i] * z[i] * w[i];
正:x[i] = y[i] * z[i] * w[i];
92 :
デフォルトの名無しさん :2008/06/28(土) 18:21:07
前スレの未解決問題貼りなおしてもいいですか?
おk
ただし期限切れの場合、貼った人が一応質問者とみなされますんで
誰も手をつけない問題に多いのが、 問題を出した本人にしか分らない部分がある等の問題内容に不備があるか 扱う内容がプログラムレベル以上に高くて面倒か、のどちらかだと思う… 圧倒的に前者が多い気がするが… ”問題”の丸投げは良いが… 誰もがお前と同じ講義を取ってる訳じゃない、 講義取ってる人間しか分らない”問題文”を丸投げするなって事だ
ダメ元で投げてるんだろう
>>97 #include <string.h>
#define cmemmove memmove
cmemmove(char*dest ,char*src, int length);
>>97 C言語の範囲では、結果が未定義になっていいなら回答するけど、どうする?
# この問題を最も手軽に解く方法の一つにポインタの大小を判定する方法があるが、
# ポインタの大小は同じ配列を指しているときしか比較できない。
# たまたま同じ配列を指していないポインタの大小を比較したら結果が未定義になるorz
# 結果が未定義にならないようにもできるが、とてつもなく遅くなる。
>>98 【関数】cmemmove(char*dest ,char*src, int length)を作れ
srcで示されるアドレスからlengthバイト分だけの領域を、destで示される領域へコピーする 関数cmemmove(char*dest ,char*src, int length)を作れ、なお、送り元の領域と送り先領域 がオーバーラップしていても、正しくコピーできるしようにせよ。なおchar型の配列を宣言し、 cmemmove()が正確に動作すること確認(メモリ領域の内容を整数値として表示)するプログラム を作成せよ。
5行ですね
cmemmove(void*dest ,void*src, int length) { if (stc <= src || (char *)stc >= ((char *)src + length)) { /* * Non-Overlapping Buffers * copy from lower addresses to higher addresses */ while (length--) { *(char *)stc = *(char *)src; stc = (char *)stc + 1; src = (char *)src + 1; } } else { /* * Overlapping Buffers * copy from higher addresses to lower addresses */ stc = (char *)stc + length - 1; src = (char *)src + length - 1; while (length--) { *(char *)stc = *(char *)src; stc = (char *)stc - 1; src = (char *)src - 1; } } } まあ、汎用型だが書き換えは楽だろ。
>>99 問題の補足に[※malloc()関数の使い方を知っている者はchar型の配列を宣言する代わりに
malloc()を使ってメモリ領域を確保し、comemmove()が正確に動作することを確認するプログラム
を作れ]とありんですが。結果が未定義ということは問題の実行例のようにならないということでしょうか?
叱ってあげて下さい
void cmemmove(char*dest ,char*src, int length) { memmove(dest,src,length); }
>>105 厳密にいえば未定義だが、たいていの場合104のようなプログラムでうまくいく。
Linuxなら多分OK.
malloc関数でバイト数lengthの配列確保してコピーして先生を驚かせてやればいいんだな
できればmainの方も教えていただきたいのですが
んなもん char *str="sorekuraijibunndekake"; printf'("%s\n",str); comemmove(str+3,str,5); printf'("%s\n",str); とでもすれば分かるだろ。
コードを上げる時に、仮定している処理系をきちんと書けば、その上に仮想メモリ空間が サポートされているOSかどうかすぐわかるし、そういったOSの上で動作する処理系の場合は 2つのポインタについて比較は自由に出来るとしてまずOKだと思う。 (ポインタが指している内容の参照は勿論できるとは限らないけど) 仮定している処理系が書かれていないと、比較が許されていない処理系にも対応した コードとしなければならなくなるだけ。
でっていうw
>>71 BSTREE_NODE *deleteMinNode(BSTREE_NODE *p, BSTREE_K_TYPE *min){
BSTREE_NODE *sub;
if(isLeafNode(p)){
*min = p->key;
destroyNode(p);
return NULL;
} else if(p->left != NULL){
p->left = deleteMinNode(p->left, min);
return p;
} else {
sub = p->right;
*min = p->key;
destroyNode(p);
return sub;
}
}
c言語 windows VC++ *問題文* (1)double型の変数a,bを仮引数とし、それらの和を返す関数プログラム『add_ab』の プロトタイプ宣言を行う、関数値はdouble型。 (2)double型の変数x,yにキーボードから実数を入力、x,yを実引数として『add_ab』を 呼び出し、xとyの和を表示するメインプログラムを作成。 (3)double型の変数a,bを仮引数とし、それらの和を返す関数プログラム『add_ab』を 作成せよ。 よろしくお願します
#include<stdio.h> double add_ab(double a, double b); int main()
{ double x, y; printf("実数x:"); scanf("%lf", &x); getchar(); printf("実数y:"); scanf("%lf", &y); getchar(); printf("%lf", add_ab(x, y)); getchar(); return 0; } double add_ab(double a, double b) { return a + b; }
>>前スレ946さん 再帰の使い方も理解でき大変助かりました。 ありがとうございました。
エスパーはいない
>>122 × printf("%lf", add_ab(x, y));
○ printf("%f", add_ab(x, y));
コンパイルボタンが灰色のままでコンパイルボタン押せなくなっちゃいました 以下エラー文 intermediate.manifest : general error c1010070: Failed to load and parse the manifest.
だからどうした?
動的配列でヒープを実現せよって問題なのに、ポインタはできるだけ使うなって言われてもなあw
たぶん子から親を参照するときポインタを使わずi/2(切捨て)とするんだと思います
131 :
デフォルトの名無しさん :2008/06/29(日) 00:32:45
>>131 数学とか理系とかの板で質問すれば、プログラムが何をしたいのか
空気を読んでくれて直してくれるかも知れないが、
プログラム板では、コンパイルが通ってOSと衝突することなく動作す
るプログラムは仕様が明記されていない限り、AS IS(ありのままの姿
で受けいれるしかない。
前スレで誰かが、そのコードを若干修正して、ほぼ正しく動作する
プログラムだとしてたが、ああいった感じにしたいというのであれば
要求仕様をまとめてみよう。
>>131 添削するのは出題者の仕事
ここは基本的に問題に答えるだけのスレ
>>131 係数を求めるのは手計算じゃあ駄目なのか?
(この程度の問題なら手計算の方が簡単...)
あと、kはループの度に初期化しとけよ。
>>97 #include<stdio.h>
#include<stdlib.h>
#define BUFSIZE 18
void buf_print(char *buf, int bufsize){
int i;
for(i=0;i<bufsize;i++) printf("%d ", buf[i]);
printf("\n");
}
void cmemmove(char*dest ,char*src, int length){
int i;
if(dest<src) for(i=0;i<length;i++) dest[i]=src[i];
if(dest>src) for(i=length-1;i>=0;i--) dest[i]=src[i];
}
int main(void){
char *buf;
int i;
buf=malloc(BUFSIZE);
for(i=0;i<5;i++) buf[i]=i+1;
for(;i<BUFSIZE;i++) buf[i]=0;
buf_print(buf, BUFSIZE);
cmemmove(&buf[10], &buf[0], 5);
buf_print(buf, BUFSIZE);
cmemmove(&buf[3], &buf[0], 5);
buf_print(buf, BUFSIZE);
return 0;
}
エラトステネスの篩の問題で、2以上で10000以下の自然数を入力し、2から入力した自然数以下の素数を全て表示する。 素数間にタブを入れ、3個区切りで表示せよ。*一次配列を使うこと。 という問題なのですが、ちょっと分からないので質問しました。 ちにみに素数間にタブを入れというのは、 2 3 5 7 11 13 こんな感じに表示されるらしいです。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■ 一次元配列を使った問題で実行結果が、 ---------- 1番目の点数を入力して下さい。 67 1番目の点数は67点です。 2番目の点数を入力して下さい。 89 2番目の点数は89です。 3番目の点数を入力して下さい。 55 3番目の点数は89です。 4番目の点数を入力して下さい。 101 合計は○○.○ 平均は○○.○ 点数 平均からの差 67 -○○.○ 89 ○○.○ 55 -○○.○ ---------- こんな感じなのですが、 *入力した番目は1以上100未満として 入力の終わりは101とします。
139 :
138 :2008/06/29(日) 13:48:27
1] 授業単元:c言語プログラミング
[2] 問題文
>>138 [3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c言語
[4] 期限:6月30日まで
[5] エラトステネスの篩/一次元配列
>>138 エラトステネスの篩
#include <stdio.h>
int main(void)
{
int i, j, n;
char sieve[10001] = {1,1};
scanf("%d", &n);
for(i=4; i<=n; i+=2) sieve[i] = 1;
for(i=3; i*i<=n; i++) if(!sieve[i]) for(j=i*i; j<=n; j+=i) sieve[j] = 1;
for(i=0, j=1; i<=n; i++) if(!sieve[i]) printf(j++ % 3 ? "%d\t" : "%d\n" , i);
return 0;
}
141 :
131 :2008/06/29(日) 14:08:17
回答ありがとうございます。
係数は求められるのですが、それをf(t)に代入する部分を教えていただきたいです。
>>132 まさに前スレでの回答のようにしたいです。
仕様とはなんですか?
f(t) フーリエ展開から求めたもの
0.004052 0.000000
0.200007 0.200000
0.400001 0.400000
0.599999 0.600000
0.799993 0.800000
0.995948 1.000000
0.799993 0.800000
0.599999 0.600000
0.400001 0.400000
0.200007 0.200000
0.004052 0.000000
>>135 係数はプログラムで計算しないと駄目です
悪質な質問には悪質なレスか.....
>>141 >まさに前スレでの回答のようにしたいです
それが要求仕様じゃないの?
>>138 #include <stdio.h>
int main(void)
{
int i, j, score[1000], temp, sum = 0;
double ave;
for(i=0; ;i++) {
printf("%d番目の点数を入力して下さい。\n", i+1);
scanf("%d", &temp);
if(temp > 100) break;
printf("%d番目の点数は%d点です。\n", i+1, temp);
score[i] = temp;
sum += temp;
}
ave = sum / i;;
printf("合計は%.1f\n平均は%.1f\n", (double)sum, ave);
printf("点数\t平均からの差\n");
for(j=0; j<i; j++) printf("%d\t%.1f\n", score[j], score[j] - ave);
return 0;
}
145 :
138 :2008/06/29(日) 14:43:52
>>131 シンプソンの公式を使って定義通りに積分しているようだね。
こういうアルゴリズムがらみの情報は小出しにすると回答率が下がるよ。
まだ他に何か隠してたりしないだろうね?
(fftは使っちゃ駄目だとか)
149 :
146 :2008/06/29(日) 16:01:24
そいう訳じゃないけど、添削すべき部分は foursの中じゃなくて、mainの中の方(だけ)のような気がしたので、 暗に聞き出そうとしてるだけ。
>>151 実は、試験に類似問題が出るという親心かもしれないよ。
ExcelでやるとExcelの勉強も兼ねられるが、CでやってもCのスキルが必要であれど、Cの勉強には 余りならないという意味(コード量/処理量が多い割には処理は単純)では酷な問題
>>155 リンク先をみろ、同一人物がコメントを追加しての再レスだよ。
急いでいる割には
>>151 のお礼はいっこうに無いし
>>154 は回答フォーマットに即してないところみるとひょっとして自演?
ま、どーでもいいけどな。
回答フォーマットって何? 回答にもフォーマットが必要なのか?
自分が作ったから使え、と主張する奴がいるだけ。
ああなるほどね。 回答フォーマットなんて俺は従わないよ。 自分の作った基準に人を従わせる奴が俺は一番嫌いでね。 そういう奴の性格を肛門性格って言うんだけど永遠に話が合わない。
>>160 > 回答フォーマットなんて俺は従わないよ。
> 自分の作った基準に人を従わせる奴が俺は一番嫌いでね。
# だけど俺の作ったフォーマットに人を従わせます
それは言い過ぎだよw
>>161 は?お前なんか勘違いしてないか?
俺は別に誰も従わせるつもりはないが。
よくいるんだよなこういう勘違い野郎が
し、従わせるつもりはないのよ、か、勝手に、人が従ってくるんだからね!
>>165 具体的に指摘してみなよ
そこまで言うなら
けっやっぱり何か一言ケチを付けたいだけのカスか 所詮その程度の人間なんだよお前は
何かあるとする人格攻撃だな。
人格攻撃のどこが俺の作ったフォーマットに人を従わせる 事になるんだよ? というか言いだしっぺはそっちだろうが。俺はそれに対して 反論を返しただけだ。具体的に指摘もできないくせに。
こらやめれw
元はと言えばお前が的外れな指摘をするからだ それを俺が「それはおかしい」と言った。これのどこが 「フォーマットに従わせる」だ?お前は誰が見てもおかしいだけ。
横レスだが、 コード貼る前に、相手がオンラインかどうか確かめてから、貼ったほうがいいような感じ socketとかでもそうでしょ?connect,listen,accept,send,recvとか通信手順というかプロトコルがあるよね
なんでわざわざ貼る側が確かめなきゃならないんだ 質問者が定期的に見に来れば拾えるだろ
質問者が言いたいのはこういう事だろ。以下コピペ うpする時は下記の方法でうpしてくれるとありがたいです。 @ パスは出来るだけ付けないで下さい。 どうしてもと言う場合は私が指定したパスでお願いします。 解凍パスは絶対に付けないで下さい。(解凍できずに1年以上HDDに放置してるzipがあるので) A 直ぐに流れてしまうロダは絶対に避けて下さい。 出来たらうpする前に聞いてくれれば、私がロダ指定します。 B うp神は24時間スレを監視してください。 私が「うpお願いします!」と言ったタイミングでうpお願いします。(取り逃した事が何度かあるので) 贅沢な要求かも知れませんが、皆さんで共有するためにも是非お願いしますm(_ _)m ZIPをDLする時は以下のマナーを守ってくれるとありがたいです。 ←New @ ZIPのDLは、私が「はい、どうぞ」とレスした後からしてください。 私がDLしようとしたとき、混雑しているためになかなかDLできないためです。 A削除キーが公開されているZIPは削除しないでください。 私がDLしようとしたら、削除されてしまっていたことが何度もありますので。 私が責任を持ってDL後に削除いたしますので、どうぞ削除なさらないようにお願いします。 ZIPスレを共に楽しむために必要不可欠なマナーだと思いますので、是非守ってくださいますようお願いします。
糞して寝ろ
ところで回答フォーマットってなんだ?
* 肛門のシンボルとだけは思わないでくれ、Cプログラマならw
俺もこれから回答を肛門上げしようかな 難解なクイズパスを使って固めて斧みたいな 取りにくいロダにでも上げてやろうか
>>166 具体的に指摘されてるのに気づかないあたりが無自覚pgr
腐った板に釘打っても仕方なかろうもん
どっかのアホのせいで普段正常な住人までもが言い合いしてるな スルーしろ
>>180 だからどこで指摘してんだよ
アンカー付けてみろ
やっぱりか アンカーも打てないって事は口だけ番長だな 馬鹿丸出し
>>182 節穴どころか大穴墓穴掘ってる気がするなこいつ
ネチネチと女の腐ったような奴ばっかりだな藁 男ならズバッと指摘してみろよ 指摘も出来ないんなら最初から書くな
>>186 人から指摘されないと気づかないとか流石にドン引きだわ…
集団になじまなくて苦労してるだろ?
そんで原因は自分にないと正直思ってるだろ?
まあまあ、どちらもお引きなさい。 「ドン引き」だとか、「糞」だとか 挑発的な言葉をつかえば、相手が逆上するのも至極当然のことです。
>>187 お前煽りたいだけだろ?
具体的に指摘しないんじゃなくて出来ないだけ。
>>189 今頃気づいても踊らされた心は元に戻りません
というか核心突かれて動揺しすぎですよ
4次元のルンゲクッタの公式精度いい〜厳密解true(t)=2.0*exp(t)+exp(2.0*t) koumon@anus~ $ ./111-151.exe t=0.000000 y=3.000000 y'=4.000000 true=3.000000 t=0.100000 y=3.431788 y'=4.653212 true=3.431745 t=0.200010 y=3.934730 y'=5.426609 true=3.934684 t=0.300020 y=4.522012 y'=6.344229 true=4.521963 t=0.400030 y=5.209464 y'=7.435165 true=5.209413 t=0.500040 y=6.016126 y'=8.734652 true=6.016074 t=0.600050 y=6.964921 y'=10.285396 true=6.964869 t=0.700060 y=8.083484 y'=12.139195 true=8.083434 t=0.800070 y=9.405166 y'=14.358912 true=9.405119 t=0.900080 y=10.970254 y'=17.020882 true=10.970215 t=1.000010 y=12.825647 y'=20.214703 true=12.825822
匿名掲示板で何言おうと勝手だけど 早合点されるとちょっとカワイソウな人に見える
何で俺がこんなに叩かれるのか不思議に思ってたが。 IDが出ればこんな言い争いもなかったのにな
〜〜〜〜 ここまでスクリプト 〜〜〜〜
>>1 にありもしない回答用のフォームって、誰が作ったんだよ?w
っつか、お前団子か?ダンゴリオンちゃんかーーーい?w
ナンバーサイン野郎w
語尾に「おじゃる」ってついてれば許せそうな気がしてきた
この空気で言い辛いけど
>>148 お願いしますorz
>>203 > まったく同じ
>>198 > 素数間にはタブを居れ、5個区切りで表示するように
異議あり
[1] 授業単元:
C研究
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7133.txt [3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
Microsoft Visual Studio 2008
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C++
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
明日の朝9時
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
お願いします。
>>206 #include <iostream>
#include <ctime>
using namespace std;
class myclass {
int x;
public:
myclass() { x = 0; }
myclass(int n) { x = n; }
myclass(time_t t) { x = t; }
int getx() { return x; }
};
int main()
{
myclass o1(10);
myclass o2;
myclass o3(time(0));
cout << "o1: " << o1.getx() << '\n';
cout << "o2: " << o2.getx() << '\n';
cout << "o3: " << o3.getx() << '\n';
return 0;
}
>>154 迅速なご回答ありがとうございます。どうも急かせてしまったようですみません。
ただ、急用でオフにしており、せっかくのコードを参考にさせて頂くことも出来なかった
ことは残念です。宿題の提出は結局今回は黙殺しました。試験頑張ります。
211 :
206 :2008/06/29(日) 21:31:27
うはwwwwww
>>138 !お前俺と同じ学校じゃね?wwww
213 :
210 :2008/06/29(日) 21:49:58
>>151 です。
規約違反でした。本当はトリップつけなければならなかったんですね。重ね重ねすみませんでした。
214 :
131 :2008/06/29(日) 22:08:16
>>146 教科書のプログラムを使えといわれているので、詳しい内容はよくわかりません。
foursと係数の出力までの部分は教科書のままです。
係数の代入ができないです。
216 :
F :2008/06/29(日) 22:15:51
[1] 授業単元: プログラミング入門 [2] 問題文(含コード&リンク): キーボードからn行n列の行列数を指定し、 次に行列を入力して、それを表示するプログラムを作成せよ。 例: n=4 1 3 2 5 2 1 -5 2 2 1 4 -3 3 -2 1 4 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: borland C++ Compiler 5.5 [3.3] 言語: C言語 [4] 期限: 6/30 昼まで [5] その他の制限:関数呼び出しまで既習です。 C言語初心者です。本当に困ってるのでよろしくお願いします!
困ってる時はトリップ! (これ提出したら必ず怒られるぞ) #include <stdio.h> int main(void){ int i,j,n; double d; scanf("n=%d",&n); for(i=0;i<n;i++) scanf("%d %d %d %d",&d,&d,&d,&d); return 0; }
222 :
デフォルトの名無しさん :2008/06/29(日) 23:12:12
[1] 授業単元: cプログラミング [2] 問題文(含コード&リンク):20円玉、25円玉を加えた通貨体系(500,100,50,25,20,10,5,1)で、与えられたおつりの金額に対して貨幣の総数が最小になるようにそれぞれの貨幣の枚数を計算するプログラムを作成する [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 2008年7月5日24:00まで [5] その他の制限: 特になし お願いします
>>222 #include <string.h>
#define BASE_LEN (sizeof(base) / sizeof(base[0]))
static int base[] = {500, 100, 50, 25, 20, 10, 5, 1};
int *change(unsigned int money){
int i, *ret = (int*)malloc(sizeof(int) * BASE_LEN);
for(i = 0; i < BASE_LEN; i++){
ret[i] = money / base[i];
money -= base[i] * ret[i];
}
return ret;
}
int main(void){
unsigned int input, i, *c;
scanf("%u", &input);
c = change(input);
for(i = 0; i < BASE_LEN; i++){
printf("%d * %d\n", base[i], c[i]);
}
free(c);
}
>>222 作っておいて何だが,
30 とかはどうすればいいんだろうね?
25+5 もだし 20+10 もだし.
>>224 50以下の数に対して25,10,5,1による貨幣系は貪欲法では最適解が見つからない。i.e 40
動的計画法でも使った方がいい。
25,20,10,5,1だな。訂正
>>223 ありがとうございます。
作ってもらっといて悪いんですが、知らない用語(define、static、unsignedなど)がたくさんあります
これも全部c言語なんですか?俺の使ってる教科書には載ってないんですが…
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
>>228 それが載ってない教科書は捨てたほうがいい
探索木伸ばしていくような感じで動的計画法やろうとおもったけど ねむいからねる
この問題だけで考えれば解空間が小さいから、50未満になったところで総当たりしてもいいんだよな。 俺は眠いからやらんが
じゃあオレも寝る
じゃあオレと寝る?
(*'A`*)
>>239 #include<stdio.h>
//(関数のプロトタイプ宣言×3)
double enshu(double);
double menseki(double);
double taiseki(double);
int main(void){
int i,j;
double r;
double (*pM[])(double)={enshu,menseki,taiseki};//(関数ポインタの初期化)
printf("r: 円周 円の面積 球の体積\n");
for(i=1; i<=10; i++){
r=(double)i;
printf("%4.1f:", r);
for(j=0; j<3;j++){
//関数ポインタの呼び出し・表示
printf( "%8.3lf\t", pM[j](r) );
}
printf("\n");
}
return 0;
}
//(以降に3つの関数を作成)
double enshu(double r){ return 2 * 3.14 * r; }
double menseki(double r) { return 3.14 * r * r; }
double taiseki(double r) { return 4.0 * 3.14 * r * r * r / 3.0; }
%f使ってるんだからそっちにあわせろよw
printfには%lfとかないっていうの scanfとごっちゃにしてる
いまはprintfに%lf使えるようになってるからw
C99はな でもこれC89のソースじゃないの?
VC6.0だからC89かな
>>246 #include <stdio.h>
double f( double x )
{
double y;
y=(3*x+2)*x-6;
return (y);
}
main()
{
double x,y;
double i;
double min,max,avg;
avg = 0;
for(i=0; i<=60; i++){
x=0.1*i;
x=x-3.0;
y=f(x);
if(i == 0) {
min = max = y;
} else if(min > y) {
min = y;
} else if(max < y) {
max = y;
}
avg += y;
printf("x=%6.3f, y=%12.3f\n",x,y);
}
printf("min=%12.3f",min);
printf("max=%12.3f",max);
printf("avg=%12.3f",avg/61.0);
}
>また、yの値の最小値・最大値を与えるxの値も同時に求めなさい
あ、よく見てなかった
>>223 static int base1[]={500,100,50,25,20,10,5,1};
static int base2[]={500,100,50,20,10,5,1};
この二つで枚数を数えれば少ない方が最適解になる。
すみません
>>250 ですが、半分だけでも助けてもらえないでしょうか?
>>250 17時に出来てたら回答してあげれるかも。ただあと1時間は手空きじゃないから
期待はしないで。いつもだったら、凄い勢いで誰か書いてくれるんだろうけど
どしたのかな〜
C++だからSTD使ってよいならmap使えばOKだけどね
×:STD ○:STL
258 :
デフォルトの名無しさん :2008/06/30(月) 16:42:47
習ってるって書いてあるんだから map使ってもいいとは思うけど、 問題出した人が返答しないことには・・・。
>>256 ,258
STLもmapも使って大丈夫です
STDでぐぐったら 性行為感染症って出たぞw
261 :
デフォルトの名無しさん :2008/06/30(月) 16:56:23
>>250 良かったな。みんなが助けてくれてるぞ
途中まで書いてしまったが、Cだし、連想配列になってないし
というところで、俺は別の仕事が入ったから抜ける
でも、半分助けないだろうから、残りの30分は地獄だな
265 :
デフォルトの名無しさん :2008/06/30(月) 17:20:18
俺も連想配列で作ってないからな Cでなら簡単なんだが
>>261 了解したとかいいながら、間に合わないとかマジ乙
>>266 大変感謝します!
ありがとうございました
>>262 ,265の方もありがとうございました
>>268 仕事やりながらだったから、中途半端な所でタイムアウトorz
表示さえ出来てれば
索引キーの最大値とか書き換えはそんなに面倒じゃないと思うんで
頑張ってください、遅くなって申し訳ない
[1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):
プログラム
step1: a = x + y;
step2: b = z + 1;
step3: c = a ? b;
step4: w = c + 1;
に関し、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7148.txt を完成させて、
step1とstep2を並列実行させるプログラムを作成せよ。
但し、x,y,zはプロンプトにしたがって入力するとする。
正しく動作したか?結果を考察せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限:7/3 23:00まで
>>269 片手間で仕事してることに対して申し訳なく思うべき!
いいかげんこの手のテンプレ的問題は倉庫かwikiでも作って解答載せた方がよくね?
>>273 後発の回答者にも答えるチャンスを下さい
>>273 ソート、素数、リストなどはテンプレ化するのもありかと
誰が管理編集すんの?w そんな時間あったらみんな自分のコード弄るだろうし 質問者が書くとは思えないし
荒らされるか、誰も管理しないかのいずれかだろな。比較的最近に同じ問題 上げた人いないか検索したくとも過去ログはDAT落ちしやすいし、アップロ ーダー上からも割合とすぐ消えるからできない。 10スレ程度までのQAはZIPして、常時ローダーに置いておくってのが良さそ。 スレが終わったら、HTMLで保存して、そこからローダーのURL拾って、 問題と回答をDLししなおしてマージし、ZIPするツールなんて、ここの回答者 だったら簡単に作れそうだし。
>>274 ???分かりきったことを、やりたいなら自分でやれば?
答えなくても死なないからw
>>274 分かりきったありきたりのパターンのものを参照すりゃ良いし
後発がいなくてもそれなら困らないだろ?
>>271 #include <stdio.h>
#include <ctype.h>
int main(void)
{
char str[256], enc[] = "dliyuwvrjnsqxatgfzbkcmoehp", *p;
fgets(str, sizeof str, stdin);
for(p=str; *p; p++) if(*p=='\n') *p = '\0';
for(p=str; *p; p++) {
if(islower(*p)) *p = enc[*p-'a'];
else if(isupper(*p)) *p = 'A' - 'a' + enc[*p - 'A'];
}
puts(str);
return 0;
}
>>276 少なくともお前が管理しなくても良い。このスレはもともと
決まったメンバーで成り立っているわけでもなく、有志者によるものだから。
しかし、回答者テンプレを他人に押し付けるのとは違い、自発的に
誰かがやれば良いだけの話。誰がやろうと、それは自由かと。
どの道、ありきたりのパターンや手法は分かりきっているんだし。
履歴見てみろよ、だれもやってねーじゃん
なぬっ!?麻呂のクソースをテンプレ化したいとな?ならば(ry
他人のソースパクったようなクソースなんているかよw
お願いします。
[1] 授業単元:Cプログラミング入門
[2] 問題文:elemental.dat(ワードパッドで開けます)↓にアップしました
http://upp.sakura.ne.jp/src/upp18572.zip には
原子番号、元素記号、名前、融点 、電気伝導率、熱伝導率が記されている。
この電気伝導と熱伝導の間には比例関係y=ax+bが見込まれます。
以下の要求にしたがって、この定数a、bを求めるプログラムを作成しなさい。
@全てをmain関数の中で行うことをせず、2つのデータ配列x[N]、y[N]を引数にとり、
a、bを計算する関数linfit(...)を必ず作成しなさい。
Aシェルのリダイレクト入力によりelemental.datを読み込ませる。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: [2008年7月10日hh:mmまで]
[5] その他の制限:構造体の代入までやりました。
elemental.datの内容は以下です
原子番号 元素記号 名前 融点 電気伝導率 熱伝導率
3 Li Lithium 453.69 1.18E7 82
4 Be Beryllium 1551 3.69E7 220
11 Na Sodium 370.96 2.33E7 125
12 Mg Magnesium 921.95 2.54E7 153
13 Al Aluminium 933.52 4.00E7 235
19 K Potassium 336.8 1.55E7 109
20 Ca Calcium 1112 3.25E7 98 22 Ti Titanium 1933 0.24E7 22 24 Cr Chromium 2130 0.83E7 95 26 Fe Iron 1808 1.15E7 83.5 27 Co Cobalt 1768 1.76E7 69.3 28 Ni Nikel 1455 1.61E7 91 29 Cu Copper 1356.55 6.45E7 401 30 Zn Zinc 692.73 1.77E7 119 40 Zr Zirconium 2125 0.24E7 22 41 Nb Niobium 2741 0.74E7 51 42 Mo Molybdenum 2890 2.07E7 135 45 Rh Rhodium 2239 2.29E7 151 46 Pd Palladium 1825 0.97E7 71.4 47 Ag Silver 1235.08 6.80E7 428 48 Cd Cadmium 594.05 1.49E7 98 49 In Indium 429.76 1.25E7 87 50 Sn Tin 505.118 1.00E7 67 51 Sb Antimony 903.89 0.27E7 25.5 73 Ta Tantalum 3269 0.83E7 57 74 W Tungsten 3683 2.04E7 170 77 Ir Iridium 2683 2.15E7 160 78 Pt Platinum 2045 1.04E7 73 79 Au Gold 1337.58 4.98E7 318 80 Hg Mercury 234.28 0.10E7 8 81 Tl Thallium 576.65 0.67E7 47 82 Pb Lead 600.652 0.52E7 35 83 Bi Bismuth 544.45 0.10E7 11
ここが今日の化学スレですか><
回帰直線を求めるだけ
>>294 配列をマップみたいに考えて、始点に表示させた文字を終点まで移動させて経路はすべて表示させろという問題だと思うのですが…。
[1] 授業単元: cプログラミング [2] 問題文(含コード&リンク): 1^1+3^3+5^5+7^7+・・・+103^103+105^105の値を2008で割った余りを求めるプログラム 1^1+3^3-5^5+7^7-・・・-103^103+105^105の値を2008で割った余りを求めるプログラム [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: なし [5] その他の制限: 特になし お願いします!
#include <stdio.h> void main() {
298 :
>>761 :2008/07/01(火) 01:00:08
int ret(int n){ if(n>0){ return ret(n-1)*n; }else{ return 1; } }
問題見て一目で見抜くとはさすが口だけのことはある
303 :
F :2008/07/01(火) 02:17:31
304 :
デフォルトの名無しさん :2008/07/01(火) 02:47:56
メルアドもみたほうがいいみたいだよ! どーみても、目と手でやったほうが早いし
もうちょっと質問者と回答者の間で、ネゴしてから コード作るようにしたらど〜だ?
まる投げするようなヤツと何を話し合えってんだよw
丸投げされないように話し合うんだよ
丸投げされても別に困らないだろ
じゃ丸投げしよ
丸出しするおいちゃんと、ちょっとお話してくれる?
ちっちゃーい
[1] 授業単元:ピラミッドアート [2] 問題文 数値(n>1)を入力し、"* "で作った三角旗を出力する 出力結果 3 (n入力) * ** *** ** * [3] 環境 [3.1] OS:vista [3.3] 言語: C++ [4] 期限: 明日まで [5] その他の制限:アルゴリズム オプション:2~9以外の数字が入力されたらエラーメッセージを出力して再入力する *で星型を作ると評価があがるって偉い人がいってた
>>315 #include <iostream>
using namespace std;
void main()
{
int set;
do{
cin >> set;
if(cin.fail()){
cin.clear();
cin.ignore( 1024, '\n' );
cout << "整数値を入力してください" << endl;
}
}while(set < 2 || set > 9);
for(int i = 0; i < set; i++){
for(int j = 0; j <= i; j++){
cout << "*";
}
cout << endl;
}
for(int i = set-1; i > 0; i--){
for(int j = i; j > 0; j--){
cout <<"*";
}
cout << endl;
}
}
>>315 ちょっと修正(do〜while文内)
do{
cin >> set;
if(cin.fail()){
cin.clear();
cin.ignore( 1024, '\n' );
cout << "整数値を入力してください" << endl;
}
if(set >= 2 && set <= 9){
break;
}
else{
cout << "2〜9までの値を入力してください";
}
}while(1);
よーーーしよし、それじゃ、基本交換法・単純交換法(バブルソート)、 基本選択法、挿入、クイック辺りはもう基本枠組みを決めて 誰かテンプレを作って。素数はエラトステネスの篩い、 単純に奇数を奇数で割っていく、あるいはすでに求めた素数で 割っていくやり方で。リストは単方向、双方向ともに。 あと、循環も。 ↓ってなわけで、おりはこれから寝るんで後よろしく。
319 :
デフォルトの名無しさん :2008/07/01(火) 11:08:50
【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク): 1次元配列sin[4096]に順番に周期関数正弦波の値を代入するプログラムをつくれ 正弦波の周波数を440hzとし、4096個の値で1周期を表す。 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: VS2008 [3.3] 言語: C [4] 期限: 今日 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) お願いします
320 :
デフォルトの名無しさん :2008/07/01(火) 11:16:07
[1] 授業単元: [2] 問題文: ジョーカーを除く52枚のトランプからランダムに3枚引き、何を引いたか表示するプログラムを作成せよ。 (ハートの1ならHA、 スペードの3ならS3、 クローバーの12ならCQ、 ダイヤの5ならD5、 などと表示すること) [3] 環境 [3.1] OS:Windows Vista [3.2] コンパイラ名とバージョン: [3.3] 言語:C++ [4] 期限: 2008年7月2日21:00まで [5] その他の制限: よろしくおねがいしゃす!
>誰かテンプレを作って。 他力本願おつw
自分の学校の宿題が出ててワロタwww 30日締切ということはQクラスかな? 先生にコードとURL添えて報告する。
>>322 だが、実は別の学校であんたが恥をかく、間違いないw
>>320 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
char card[52], *s[] = {"S","H","D","C"}, *num[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
int i, j;
srand(time(NULL));
for(i=0; i<52; i++) card[i] = i;
for(i=0; i<3; i++) {
j = rand() % (52 - i);
printf("%s%s\n", s[card[j]/13], num[card[j]%13]);
card[j] = card[51 - i];
}
return 0;
}
>>326 あってるけど、なんか違和感がw
自分ならこんな感じ
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
int j;
int pullcard[3] = {-1,-1,-1};
char *s[] = {"S","H","D","C"}, *num[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
srand(time(NULL));
for(int i = 0;i < 3;i++) {
do {
j = rand() % 52;
} while((pullcard[0] == j || pullcard[1] == j));
pullcard[i] = j;
printf("%s%s\n",s[j/13],num[j%13]);
}
}
こりゃ・・・やるしかねぇ。 くせぇくせぇ、○ンコの臭いがプソプソしてきそうな クソースだぜ、○物は消毒だ〜〜
>>328 > } while((pullcard[0] == j || pullcard[1] == j));
だからそういうやり方は(ry
これの方が明らかに違和感を感じる人が多いぞw
方法としては直感的だが、糞過ぎて違和感があるのは確かだな
>>320 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, tmp, card[4][13]={0}, alpha[4] = {'H','S','C','D'};
char *num[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
srand((unsigned)time(NULL));
for(i=0;i<3;i++) {
do {
tmp = rand()%52;
} while(card[tmp/13][tmp%13] == 1);
card[tmp/13][tmp%13] = 1;
printf("%c%s\n", alpha[tmp/13], num[tmp%13]);
}
return 0;
}
ケチつける前にソース書けボケ
>>333 ケチつけられて、しかもそれが明らかに糞と指摘された本人乙
ここID表示ないから、誰が誰だかわかりにくいよなぁ
最終的に選ぶのは質問者だしグダグダ言うなボケ
>>333 =
>>328 = 他人に感じる違和感は自分の感覚がおかしいと気づかない
視野の狭い井の中の蛙
こういうタイプは、客観的な意見で批判されても、批判する奴を
叩き潰せば自分が正当化される、認められると勘違いして
間違った方向へ向かうタイプ。少なくとも、乱数発生において
重複しないものを求める場合に、すでに出たものと一致しないものを
求め続けるというのは、効率が悪いのは分かりきっている。
限られた範囲内で通用すりゃ良いだろって考えだろうけど、
数を増やせば、その場合そう多くなくても数を増やすと
明らかに時間が掛かる効率が悪い手法だというのは分かりきっている。
とりあえず、そんなコードを書いて野放しにしているようなら
この業界には向いてないよ。今すぐ進路を変更しな。
適性のない進路をとると、人生そのものを無駄にするよ。
選んじゃったから、まぁとりあえず評価が低くても学校さえ
卒業すりゃって考えなのかもしれないが、社会はそんな
甘いものを認めるほど温くはないし、不適切なものを取り込むと
いずれ重大なミスや、他者からのクレーム、あるいは無視されるよ。
333は俺で328とは別w
>>338 もちろん
>>338 の文章も他人に違和感を感じていることが発端なわけですよね
色々わかります><
ただまあ、この問題の範囲では別に何の問題も無いコードだからな。 線形合同法でknuthも「乱数で最下位ビットなんて大した意味が無いから、それを使うプログラマーが十分注意深ければ最下位ビットの規則性は取り除かなくていい」 とも言ってる。
>>337 =
>>333 あぁ、出たね、必ず 罵倒レス をしないと気がすまない基地外。
人間性も崩れている終わっている奴か。以後放置よろ。
自分が批判されれば、お前のやれ!みたいな圧力、押し付けをするタイプ。
批判されるのが嫌ならあほな行動をとらなきゃ良いよ。
本当にお前は人間社会を知らなさすぎ。謙虚さがない奴は
絶対に成功しない。間違った方向へ突き進んで、誰も止めてくれないだろうね。
せいぜい冷ややかな目で見る奴がいたら、常にそいつを叩いてろ。
お前の成長するチャンスを潰すだけで終わるから。
自己言及のパラドックスとか再帰的定義すると矛盾孕みやすいな
シャッフルして最初の3枚を表示させればいい
>>342 ・道徳主義の誤謬
・多数論証
・脅迫論証
・早まった一般化
・ストローマン
・充填された語
とりあえず詭弁家はどんなに叫んでも詭弁家
>>342 お前がスルーできてない
お前も
>>337 ,333をレスしないと気がすまなかったんですねわかります
>>344 すると全てのカードが一回はシャッフルされるのに平均52*ln(52)/2 回のスワップが必要だが、
これをしたとして十分ランダムと言えるか?
>>347 ランダムかどうかは知らん
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
char card[52], *s[] = {"S","H","D","C"}, *num[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
int temp;
int i, j;
srand(time(NULL));
// 初期化
for(i=0; i<52; i++) card[i] = i;
// シャッフル
for (i = 0; i < 52; i++) {
j = rand() % 52;
temp = card[i];
card[i] = card[j];
card[j] = temp;
}
for(i=0; i<52; i++) {
printf("%s%s\n", s[card[i]/13], num[card[i]%13]);
}
return 0;
}
349 :
デフォルトの名無しさん :2008/07/01(火) 13:09:56
[1] 授業単元: C++ [2] 問題文(含コード&リンク): 大きさ10のint型の配列a[10]を宣言し、以下の処理を順に実行するプログラムを書きなさい。 i番目の要素a[i]にiを格納する(iは0〜9) a[i] = i; 配列要素の内容を出力する i番目の要素a[i]について、1つ前と2つ前の要素の合計とする。(iは2から) a[i] = a[i-1] + a[i-2]; 配列要素の内容を出力する [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C++ [4] 期限: 7月8日 [5] その他の制限: なし
>>329 ,330,331
ではどのようなソースが最適だと考えているのですか?
煽り目的のレスは目障りにしかならん 煽る奴はソース示せ
だな 煽りばかりして糞ソースしか書けない奴とか乙
>>353 だが、348はあまりお勧めではないな
>>326 の方がいいと思うが、質問者が選ぶから
どちらでもいいかもな
>>349 #include <iostream>
using namespace std;
void main()
{
int a[10];
for(int i = 0; i < 10; i++){
a[i] = i;
cout << a[i] << endl;
}
for(int i = 2; i < 10; i++){
a[i] = a[i-1] + a[i-2];
}
for(int i = 0; i < 10; i++){
cout << a[i] << endl;
}
}
356 :
デフォルトの名無しさん :2008/07/01(火) 13:56:02
357 :
デフォルトの名無しさん :2008/07/01(火) 14:00:22
[1] 授業単元: C++ [2] 問題文(含コード&リンク): キーボードから100点満点のテストの点数を入力し(-1で終了)、 10点ごとの人数を int型の配列 count[11]に数えるプログラムを 作成せよ。 テストは100点満点とし、それ以外の入力はエラーとし て無視する。ただし -1 はデータの終了を表すものとする。 点数の 入力が終了したら、度数分布を画面に出力して終了する。出力は人 数と,*(アスタリスク)によるグラフとする。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC [3.3] 言語:C++ [4] 期限: [5] その他の制限:
>>357 #include <stdio.h>
void main()
{
int count[11];
int test,cont=0;
for(int i = 0; i < 11; i++){
count[i] = 0;
}
while(1){
scanf("%d",&test);
if(test == -1){
break;
}
else if(test >= 0 && test <= 100){
count[test/10]++;
cont++;
}
}
printf("点数 人数\n");
for(int i = 0; i < 11; i++){
printf("%3d〜%3d %3d\n",i*10,i*10+9,count[i]);
}
}
>>326 のって、2枚目以降にクローバーのキングが出ることあるの?
あ、ごめんよめてなかった。 納得しました。
ちっちゃくて固いのがいいとか、おっきいが柔らかいのはダメとかは一概に言えないことだ。 適用されるものとの関係で決まること。乱用することを慎めばそれでよし
>>315 ピラミッドアートてwww
マジバロスwww
お前ら笑うなよ、ピラミッドパワーってのはマジですごいんだぜ? お前らも一度やってみろ?お前らのC言語のプログラミング能力が 数段アップするかもしれないぞ?
ピラミッドパワー調べたらすげぇwww 漏れにピラミッドクレw
328:小さい。堅い。正しい。早い。 348:正しい。柔らかい。ちょっと遅い 326:ちょっと怪しいがまぁ早い。それなりに柔らかい。 (柔らかい=思い(出し)つき易い) (堅い=意外に思いつきにくい。)
326を怪しいって言うアホがこのスレでなにやってんだw
しかも348は正しくないしw
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 以下を逆ポーランド記法で答えなさい char a[] = "3245**+"; 関数はスタックのpopとpushを使いなさい [3] 環境 [3.1] OS: Windowsxp [3.2] コンパイラ名とバージョン:VC 6.0 [3.3] 言語:C [4] 期限:7月6日 [5] その他の制限:関数やポインタなどは習いました よろしくお願いします
良問ダ
良門だか○門だか知らんが、ラーメン、イケメン、僕漬け麺ですが何か?
[1] 授業単元:C言語プログラミング [2] 問題文(含コード&リンク): 構造体binarytree_nodeを次のように定義する。 typedef struct binarytree_node{ int value; struct binarytree_node *ltree,*rtree; } *binarytree; このとき、aが本当の木構造である(合流点をもたない)とき1を、 合流点を1つ以上持つ時0を返す関数_Bool t_tree(binarytree a);を定義せよ。 [3] 環境 [3.1] OS: (Windows/Linux/等々) Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 〜7/15 18:00 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 特になし よろしくお願いします。
375 :
デフォルトの名無しさん :2008/07/01(火) 18:59:26
#include<iostream> #include<vector> class stack{ public: void push(int data){ if(m_data.size()<m_datanummax) m_data.push_back(data); } int pop(){ int ret=-1; if(m_data.size()>0){ ret=m_data[m_data.size()-1]; m_data.pop_back(); } return ret; } void display(){ for(unsigned i=0;i<m_data.size();i++) std::cout << m_data[i] << std::endl; } stack(){m_datanummax=10;} stack(int datanummax):m_datanummax(datanummax){}; private: std::vector<int> m_data; unsigned m_datanummax; }; int main(void){ stack a, b(5); for(int i=0;i<20;i++){ a.push(i); b.push(i); } a.display(); std::cout<<"-----"<<std::endl; b.display(); return 0; }
376 :
デフォルトの名無しさん :2008/07/01(火) 19:02:23
上のプログラムを参考にして下さい。 (1) 継承 上のプログラムで作成したスタックを実現するクラスを継承し,スタックの先頭(最後にpushされたデータ)を返す操作(メンバ関数)を追加したクラスを定義せよ. 新たに定義されたクラスの名称はstack2とする. (2) 仮想クラスと多相性 cryという操作(メンバ関数)を持つクラスanimalを定義する. cryは仮想関数(virtual属性をもつ)とする.メンバ変数は不要. 以下のプログラムを用い,animalクラスを継承して,dogクラスとcatクラスを定義せよ.また実行させてその結果をみる.(報告は不要) dogクラスで関数cryを実装し,文字列"bowwow"を表示させる. catクラスで関数cryを実装し,文字列"mew"を表示させる. #include <stdio.h> class animal{ }; class cat { }; class dog { }; void main() { animal *ap; cat *cp; dog *dp; cp = new cat(); dp = new dog; ap = (animal *)cp; ap->cry(); ap = (animal *)dp; ap->cry(); }
[1] 授業単元: [2] 問題文(含コード&リンク):() 下記をグローバル変数を使わず、3つの係数を引数にしたプログラムに書き換えてください。 #include<stdio.h> #include<math.h> float a,b,c; void kai(void) { float a1,a2,d; d=b*b-4.0*a*c; a1=(-b+sqrt(d))/(2.0*a); a2=(-b-sqrt(d))/(2.0*a); printf("解1=%f\n解2=%f\n",a1,a2); } int main(void) { printf("係数aを入力してください"); scanf("%f",&a); printf("係数bを入力してください"); scanf("%f",&b); printf("係数cを入力してください"); scanf("%f",&c); if(b*b-4.0*a*c>0)kai(); else printf("解はありません\n"); } [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:今日 [5] その他の制限:
#include<stdio.h> #include<math.h> void kai(float a, float b, float c) { float a1,a2,d; d=b*b-4.0*a*c; a1=(-b+sqrt(d))/(2.0*a); a2=(-b-sqrt(d))/(2.0*a); printf("解1=%f\n解2=%f\n",a1,a2); } int main(void) { float a,b,c; printf("係数aを入力してください"); scanf("%f",&a); printf("係数bを入力してください"); scanf("%f",&b); printf("係数cを入力してください"); scanf("%f",&c); if(b*b-4.0*a*c>0)kai(a, b, c); else printf("解はありません\n"); }
書き換えただけ コンパイルも実行もしていない #include<stdio.h> #include<math.h> void kai(float a, float b, float c) { float a1,a2,d; d=b*b-4.0*a*c; a1=(-b+sqrt(d))/(2.0*a); a2=(-b-sqrt(d))/(2.0*a); printf("解1=%f\n解2=%f\n",a1,a2); } int main(void) { float a,b,c; printf("係数aを入力してください"); scanf("%f",&a); printf("係数bを入力してください"); scanf("%f",&b); printf("係数cを入力してください"); scanf("%f",&c); if(b*b-4.0*a*c>0)kai(a,b,c); else printf("解はありません\n"); }
[1] 授業単元: cプログラミング [2] 問題文(含コード&リンク):20円玉、25円玉を加えた通貨体系(500,100,50,25,20,10,5,1) で、与えられたおつりの金額に対して貨幣の総数が最小になるように それぞれの貨幣の枚数を計算するプログラムを作成する [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 2008年7月5日24:00まで [5] その他の制限: for,if,ポインタ、構造体あたりまで 少し前に同じ質問をしたんですが、その他の制限を書くのを忘れ 回答が全然理解できませんでした。 勝手ですがもう一度お願いします
分からないならCを勉強するという選択肢が無いのがあれだな。
>>386 制限後つけしたら回答得られる率は0に近い
[1] 授業単元: C言語基礎演習 [2] 問題文(含コード&リンク): n個の文字列を読み込み、読み込んだ文字列を縦に読む プログラムを作成せよ。 (空白、スペースを含む場合は空白、スペースを飛ばして表示) 但し、”ポインタのポインタ”をどこかに用いてプログラムすること。 「プログラムの動作」 何個の文字列を読み込みますか?:3 1番目の文字列:World 2番目の文字列:Cup 3番目の文字列:Soccer 1列目:WCS 2列目:ouo 3列目:rpc 4列目:lc 5列目:de 6列目:r [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cygwin gcc [3.3] 言語: C言語 [4] 期限:7/2 午後5時まで
>>391 i=0;
すべてがNULLになるまでループ {
1番目の文字列のi番目を表示
2番目の文字列のi番目を表示
3番目の文字列のi番目を表示
i++;
}
>>392 先週の水曜日から考えていて、同じ仕様を考えたのですがプログラムの実装が自分には難しい
なにより「”ポインタのポインタ”をどこかに用いて」が使用するところが思いつかないので
そこを含めて丸投げでお願いしています。
>>388 >>390 EXCELで検証した
A=0.000005898958923
B=8.068012926992042
数字は合ってると思う
395 :
デフォルトの名無しさん :2008/07/01(火) 21:50:35
>>391 #include <stdio.h>
#include <stdlib.h>
#define N 5000
void main(){
int n,i,j,k=0;
char **str=NULL;
printf("何個の文字列を読み込みますか?:");
scanf("%d",&n);
str=(char**)malloc(sizeof(char**)*n);
for(i=0;i<n;i++)
{
printf("%d番目の文字列:",i+1);
str[i]=(char*)malloc(sizeof(char*)*N);
scanf("%s",str[i]);
}
for(i=0;;i++)
{
printf("%d列目",i+1);
for(j=0;j<n;j++)
{
if(str[j][i]!=NULL)
printf("%c",str[j][i]);
else
k++;
}
printf("\n");
if(k==n) break;
}
}
文字がnullになった後の処理面倒なんで後よろしく。
397 :
395 :2008/07/01(火) 22:04:10
>>395 に付け加えなんですが前に作ってもらったものだと
盤面が8×8じゃなくて6×6になってしまうのと自分を先手にすると続行できなくなるのですが
その原因をいくら考えてもわからなかったので教えていただきたいです
398 :
デフォルトの名無しさん :2008/07/01(火) 22:04:46
期限過ぎてしまいましたが、もう一度
>>304 お願いします…
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void){ char **p; int *len, max, i, j, n, ch; printf("何個の文字列を読み込みますか?:"); scanf("%d%*c", &n); p = (char**)malloc(sizeof(char*)*n); for(i = 0; i < n; i++){ printf("%d番目の文字列:", i); p[i] = (char*)malloc(sizeof(char)); for(j = 0; (ch = getchar()) != '\n'; j++){ p[i][j] = ch; p[i] = (char*)realloc(p[i],sizeof(char)*(j + 2)); } p[i][j] = '\0'; } len = (int*)malloc(sizeof(int)*n); for(i = 0; i < n; i++) len[i] = strlen(p[i]); max = len[0]; for(i = 1; i < n; i++) if(max < len[i]) max = len[i]; for(i = 0; i < max; i++){ printf("%3d列目", i); for(j = 0; j < n;j++) if(i < len[j]) putchar( p[j][i] ); else putchar( ' ' ); putchar( '\n' ); } for(i = 0; i < n; i++) free( p[i] ); return free(p), free(len), 0; }
>>395 どう考えてもNextTurnがだるいぞ
>>396 >>399 両方ありがとうございます。
しかし、今回は
>>399 のものを使わせていただきます。
完成していて、ポインタの利用がとても良いので。
質問者が回答者の回答を評価するのは何だか一言多いという気がしないでもない。
確かに後半余計だな
すいません
>>401 です
酉忘れましたので今つけます
二問のうち一問でもいいのでどうかよろしくお願いします。
しかし、今回は
>>399 のものを使わせていただきます。
完成していて、ポインタの利用がとても良いので。
これを
>>396 のものは微妙なので今回は使いませんが、
回答していただきありがとうございました。
こうすれば微妙ブームが再燃するかもしれない
その場合「
>>396 のものry」はいらないってなるw
>>402 // 表示だけ
void ShowAll(void)
{
int i, j;
void hogehoge(int*);
putchar(' ');
for(i = 0; i < OX; i++) printf(" %2d", i+1);
printf("\n ┏━┯━┯━┯━┯━┓\n");
for(j = 0; j < OX; j++){
printf("%2d┃", j+1);
for(i = 0; i < OX; i++){
hogehoge( &Data[j][i] );
if(i < OX-1) printf("|");
else printf("┃");
}
if(j < OX-1) printf("\n ┠─┼─┼─┼─┼─┨\n");
else printf("\n ┗━━━━━━━━━┛");
}
}
void hogehoge(int *hoge)
{
switch(*hoge){
case 0: printf(" "); break;
case 1: printf("●"); break;
case 2: printf("○"); break;
case 9: printf("※"); break;
default: break;
}
}
412 :
390 :2008/07/01(火) 23:24:01
さて兄弟よ いまさら気づいたが0除算の可能性をまったく考慮してなかったがどうしようか 1.あきらめる 2.linfit内でエラー吐いてそこで終了 3.a or b に それぞれHUGE_VAL ,mxを返してmainで処理 4.このスレに丸投げ この問題について言えばエラーにはならんから無視してもいいだろうが... 3番っぽいので書いてみたがあんまり自信がないんだよな
>>389 >>386 ですが、すみませんでした。
今回は自分で頑張ってみようと思います。またわからない問題があればよらせていただきます
415 :
325 :2008/07/01(火) 23:55:01
[1] 授業単元:C言語実習 [2] SJISからJISへの変換処理を作成してます。コード変換処理は出来てます。が変換前後の処理がわかりません。変換コード前後に何かコードを付け加えなければいけないのでしょうか? [3] 環境 [3.1] OS: (WindowsXP) [3.2] コンパイラ名とバージョン: (VC2005EX) [3.3] 言語: (C) [4] 期限: なるべく早く [5] unsigned char cSJbuff [256];unsigned char cJbuff [256];unsigned int i = 0;unsigned int iLen = 0; memset(cSJbuff,0,256); memset(cJbuff,0,256); iLen = strlen((const char*)cSJbuff0); for(i = 0; i<iLen; i+=2){ if(cSJbuff[i] >= 0xE0){ cSJbuff[i]=cSJbuff[i]-0x40; } if(cSJbuff[i] >= 0x80){ cSJbuff[i+1]=cSJbuff[i+1]-1; } if(cSJbuff[i+1] >= 0x9E){ cSJbuff[i]=(cSJbuff[i+1]-0x70)*2; cSJbuff[i+1]=(cSJbuff[i+1]-0x70; }else{ cSJbuff[i]=((cSJbuff[i+1]-0x70)*2)-1; cSJbuff[i+1]=cSJbuff[i+1]-0x1F; } } memcpy(cJbuff,cSJbuff,iLen); ここまで出来ています。
416 :
デフォルトの名無しさん :2008/07/01(火) 23:59:47
01乙
>>281 返答ありがとうございます
すいませんがポインタがわからないのでポインタなしのソースを書いてもらえないでしょうか?
421 :
395 :2008/07/02(水) 01:40:45
>>400 確かにそうですね。無理な要求してすいませんでした。自分で頑張ってやってみます
>>397 に書いてある質問はどなたかわかる人いませんか?
>419 知らんけど、こんな感じじゃねーの。 #include <stdio.h> #include <ctype.h> int main(void) { char str[256], enc[] = "dliyuwvrjnsqxatgfzbkcmoehp";int i; fgets(str, sizeof str, stdin); for(i=0;str[i]&&str[i]!='\n'; i++) { if(islower(str[i])) str[i] = enc[str[i]-'a']; else if(isupper(str[i])) str[i] = 'A' - 'a' + enc[str[i] - 'A']; } str[i] = 0; puts(str); return 0; }
425 :
デフォルトの名無しさん :2008/07/02(水) 05:14:29
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 変数の下位16ビット中の1のビット数を数える関数 int bit_count(intx)を作成せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:visual stdio2005 [3.3] 言語:C++ [4] 期限:出来るだけ早くお願いします。
426 :
デフォルトの名無しさん :2008/07/02(水) 05:17:31
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 変数xの下位16ビットを2進数で表示する関数 void bit_print(intx)を作成せよ。 [3] 環境 [3.1] OS: Windows Vista [3.2] コンパイラ名とバージョン:visualstdio2005 [3.3] 言語:C++ [5]その他制限:よろしくお願いします。
int bit_count(int x) { int i, cnt; for(i=cnt=0; i<16; i++) cnt += (x >> i) & 1; return cnt; } void bit_print(int x) { int i; for(i=15; i>=0; i++) printf("%d", (x >> i) & 1); putchar('\n'); }
違った for(i=15; i>=0; i++) → for(i=15; i>=0; i--)
またそれか、おっちょこちょい。だから落ち着いて動作チェックをして うpロダ使っとけって言われるんだよw うpロダ使っときゃ、訂正にしても間違ったものを残さず済むだろ。
間違えた事実を受け止められずにこそこそ消すようなカスが何言ってんだw
>>414 #include <stdio.h>
#include <math.h>
double dist(int x1, int y1, int x2, int y2)
{
return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
int main(void)
{
int i, j, n, *x, *y;
FILE *fp;
if((fp=fopen("dat.txt", "r"))==NULL) return 0;
fscanf(fp, "%d", &n);
x = malloc(sizeof(int)*n);
y = malloc(sizeof(int)*n);
for(i=0; i<n; i++) fscanf(fp, "%d%d", x + i, y + i);
fclose(fp);
for(i=0; i<n; i++) {
for(j=0; j<n; j++) printf("%4.1f ", dist(x[i], y[i], x[j], y[j]));
putchar('\n');
}
free(x);
free(y);
return 0;
}
>>417 T
#include <stdio.h>
int main(void)
{
int n, i, a[8];
do {
printf("0〜255の整数を入力:");
scanf("%d", &n);
}while(n<0||255<n);
for(i=0; i<8; i++) {
a[7-i] = n % 2;
n /= 2;
}
for(i=0; i<8; i++) printf("%d", a[i]);
return 0;
}
>>417 U
#include <stdio.h>
int main(void)
{
int i, n, a[4], sum, mul;
do {
printf("4桁の整数を入力:");
scanf("%d", &n);
}while(n < 1000 || 9999 < n);
for(i=0; i<4; i++) {
a[3-i] = n % 10;
n /= 10;
}
for(i=0, sum=0; i<3; i++) {
printf("%d+", a[i]);
sum += a[i];
}
printf("%d = %d\n", a[i], a[i] + sum);
for(i=0, mul=1; i<3; i++) {
printf("%d*", a[i]);
mul *= a[i];
}
printf("%d = %d\n", a[i], a[i] * mul);
return 0;
}
>>422 問題見られないからユーザ名とパスワード教えろ
>>430 言い訳に聞こえてみっともない。最近必死になっている基地外か?
痛すぎ・・・お前、自分が思ったことを言えば言うほど、周りから
馬鹿だと思われて孤立したタイプだろ・・・負けは負け、認めろって言われるぞ。
間違いは間違い、隠すとかじゃなくて、汚いソースをこのスレに
延々と残すのがうざいだけ。それよりも、質問者に対してわざわざレスしてんだろ?
質問者のことなんてどーでも良い、俺はやりたいからやっているだけというにしても
このスレには他にも回答者がいるから、ちったぁ考えろ、低脳。
それから、指摘された通り、間違っても残さずに済むという点以外にも、
わざわざソースの中からここを訂正という面倒な手間も残る。
だったら修正したのを1つのファイルとして提供した方が楽だろ。
頭が悪い馬鹿は、自分のミスさえも相手に都合よく捉えろだの
都合を図れだの威圧するから干されるんだよw
>>434 ID、パスワードが必要なサービスにおいて、わざわざ第三者に
勝手に使われるようなことをするわけねーじゃん、JK。
だからお前は発言すればするほど身勝手な馬鹿だって思われてんだよw
この罵倒レスをする、新学期から常駐している奴は何歳だ? 何か言われると、何かしら反論というより罵倒してくるな。 しかも、言い訳がみっともない。うpロダ使えといわれて ギャーギャーガーガー必死にわめいていた奴か? このスレがかなり前から存在しているが、お前みたいなKYで 幼稚なソースを書く奴が、必ず新学期を境に新しく参入してくるよな。 まぁ、2ちゃん慣れしていないのもバレバレだし、とりあえず 放置よろ>基地外以外のまともな回答者
以上、基地外の寝言でした。
キチ外は一人だが、彼が噛み付く相手は彼の脳内では一人だが実際には一人じゃないって現実。
444 :
デフォルトの名無しさん :2008/07/02(水) 09:32:29
>>425 >>444 #include <stdio.h>
int bit_count(int);
void main()
{
int a;
scanf("%d",&a);
a = bit_count(a);
printf("%d",a);
}
int bit_count(int x)
{
int count=0;
for(int i = 0; i < 16; i++){
if(x & (1 << i)){
count++;
}
}
return count;
}
448 :
ちゃんぷる :2008/07/02(水) 10:32:31
次のようにキーボードから4桁の10進数の入力を2回受付ける. Input the 1st value > 6479 Input the 2nd value > 1497 但し,4桁の各位の数は必ず互いに異なるものが入力されるとする. 入力された数値に対して,以下に定義する「ヒット数」と「ホームラン数」を求める. ホームラン数: 二つの数字を同じ位ごとに比較した時,何ヶ所の位について一致しているかを表す. ヒット数: 二つの数字を異なる位同士で比較した時,一致している組み合わせの数を表す. 例 1234と1234の場合,0ヒット4ホームラン 1234と4321の場合,4ヒット0ホームラン 6479と1497の場合,2ヒット1ホームラン ヒット数とホームラン数を次のように表示する. 2 hit(s) 1 home run(s) 参考 各位の数を求めるには,剰余を用いたり,整数同士の割り算が切り捨てになることを利用するとよい. ヒット数やホームラン数を数えるやり方は以下を参考にすること. int hits; /* ヒット数を数えるための変数を用意する */ ... hits = 0; /* 変数を0に初期化しておく */ /* if 文を用いて ヒットを満たすような条件を考え,もしこの条件を満たすならば */ hits = hits + 1; /* ヒットのカウントを1つ増やしてやる. */ /* 第6回目で習うが,hits++; (インクリメント演算子と呼ぶ)としても良い. */
>>395 うわ、致命的なバグ残しててすまんです。
NextTurn()呼び出す二重ループ前にlist = NULL; が抜けてるのが原因です。
/* 次に置ける場所を調べる */
memcpy(board, game_board, sizeof(board));
list = NULL; // ←これが抜けてる
for(y = 0; y < OX; y++){
それとマス数変更は#define OX のとこの数字を変えて下さいな。
ところでポインタやsizeof等使わない方は駄目だったのかな?
うpした後見直してないから分からんけど、不具合ありました?
>>448 #include <stdio.h>
int main(void)
{
int i, j, homerun = 0, hits = 0, value1, value2, v1[4], v2[4];
printf("Input the 1st value > ");
scanf("%d", &value1);
printf("Input the 2nd value > ");
scanf("%d", &value2);
for(i=0; i<4; i++) {
v1[i] = value1 % 10;
v2[i] = value2 % 10;
value1 /= 10;
value2 /= 10;
}
for(i=0; i<4; i++) {
for(j=0; j<4; j++) {
if(v1[i] == v2[j]) {
if(i==j) homerun++;
else hits++;
}
}
}
printf("%d hit(s) %d home run(s)\n", hits, homerun);
return 0;
}
451 :
デフォルトの名無しさん :2008/07/02(水) 10:57:39
>>449 いろいろありがとうございますすいません
sizeofやポインタ使ってないファイルうpしていただいたのに貰いわすれてしまいました
どのファイルか教えていただけませんか?
452 :
デフォルトの名無しさん :2008/07/02(水) 11:06:14
>>426 #include <stdio.h>
void bit_print(int);
void main()
{
int a;
scanf("%d",&a);
bit_print(a);
}
void bit_print(int x)
{
char p[17];
x = x & 0x0000ffff;
p[16] = '\0';
for(int i = 0; i < 16; i++){
if(x & (1 << i)){
p[15-i] = '1';
}
else{
p[15-i] = '0';
}
}
printf("%s",p);
}
うpロダ使わないわ、とっくの昔に決着のついた void mainが標準的ではないことは無視するわ やはり新入りだろ?w
うpロダ使わないと邪魔だよな そもそもvoid main使うとかないわ せめてルールぐらい守れやw
>気に入らない質問やその他や発言はスルーの方向で。 ルールを守ってくださいw
直書きの数は一定数いるけどな
>>424 をどなたかお願います。もう自分では手に負えない…
>>459 宿題丸投げスレだと直書きはきついなあ。
インデントはくずれるし、レス数かさむだろうし。
せめてうpロダを使って欲しいね。
丸投げするんだしw
1レスに収まっていればレス数はかわらないし、 インデントを気にするまでもない簡単な宿題なら別にいいんじゃないかな
うpローダー使うと、うpローダーから比較的短い時間で消えてしまうので、それとリンクしてる レスに、どんな問題で、どんな回答をしたのかの情報は残して置いたほうがいいよ。 直書きするのが基本だね。とは言えども、スレの浪費も良くはないに決まっとる。ローダーは 使わざるを得ない。 やはり有志が、ローダーの比較的最近の問題と回答ファイルをマージしてZIPして、 ローダーに常に上げておくのが最善かと。 ちなみにローダーにファイルを上げてすぐ消したりするような行為してるとCTPからマーク される可能性があるのでそのつもりで。(CTP:cyber terrorism police)
うpろだ使えって毎回言ってるアホは、他人のソースをこっそり勉強したいと思ってる初級者だからw
基地外煽るとすげー勢いでファビョるから、質問者に迷惑なんすけどw
じゃあ@wikiにでも場所作ったら? あそこってテキストボックスをそのままwikiページに割り当てれるし 過去の課題も残して置けるし
てかあるし ぜんぜん有効活用されてないじゃん
>>468 すでにある
>>464 有志なんかに頼るな
その結果があのwikiだ
書いたの9割以上俺だ
今度
>>318 あたりがんばってみようと思うが暇があるかな orz
っつか、スレの消費を早くすれば、結局dat落ちして ●を使わんと見られなくなるし。まぁ、ログは保存してあるけどさ。 まぁ、質問者、課題のラッシュ時は適当に活用してちょっ。
476 :
、 :2008/07/02(水) 13:41:08
>>415 どうかよろしくお願いします。JISの固定データの文字連結がうまくいきません。
Wikiもなんだかなぁ 元も子も無くなるぞ
479 :
、 :2008/07/02(水) 13:58:42
>>478 でもアップローダーもだめだし
ソースを直に貼るのも・・・となるとこれくらいしかないような気もするな。
まあ、俺は誰がなんと言おうと直張り続けるけどな。 ファビョってるヤツよりは解ける問題の範囲広いし。
2ch直貼り:コードは半永久?に残る。逆に言えば簡単に消せない。DAT落ちすると 相当の期間無料じゃ見られない。 うpローダー:現状の運用ではコードは比較的すぐ消える。宿題片付けスレなので、流れると同じ問題の 依頼が短い期間に何度も繰り返されたりされやすく、効率が悪杉。コードをうpしてすぐ消すようなこと すると、イケナいモノを取引してるのではないかと疑われたりされかねない。 Wiki:質問者、回答者共に快適だが、管理者に全信頼を託す必要があるというリスクがある。 コードは蓄積していくと社会的責任も発生したりするので個人に託すのはイマイチ心配。
パズルのやつ面白そうではあるんだけどなぁ
パズルは結構難しいかな
485 :
デフォルトの名無しさん :2008/07/02(水) 15:18:46
>>486 main()
{
int i,NMAX;
double h,s1,s2,s,x1,x2;
for(NMAX=2;NMAX<10000;NMAX*=2){
printf("\n[シンプソンの公式による数値積分]\n");
printf("\n数値積分の分割数 NMAX(偶数)=");
// scanf("%d",&NMAX);
h=(B-A)/NMAX;
s1=f(A+h);
s2=0.0;
for(i=2;i<=NMAX-2;i+=2){
x1=A+(i+1)*h;
x2=A+i*h;
s1=s1+f(x1);
s2=s2+f(x2);
}
s=(f(A)+f(B)+4.0*s1+2.0*s2)*h/3.0;
printf("\n積分値=%15.12lf\n",s);
printf("\n円周率=%15.12lf\n",Pi);
}
}
>>453 のプログラムについての質問なのですが、main文での<0.Play Game / 1.Setting>の部分に対人用モードを加えたい場合どのように変更すればいいでしょうか?もし良ければ、どなたかにご教授して頂きたいです。よろしくお願いします。
他力本願でどこまでいけるのか、見ものである
489 :
485 :2008/07/02(水) 16:13:54
>>490 下
int solve(int x)
{
int i;
if(x==N) return 1;
for(i=0; i<N; i++) {
if(check(x, i)) {
board[x][i] = 1;
if(solve(x+1)) return 1;
board[x][i] = 0;
}
}
return 0;
}
>>488 そうですね、他力本願ではいつまで経っても実力はつきませんし……自分で頑張ってみます。
すいません、ポインタが全然分からないのでお願いします。 2問あります。 [1] 授業単元: Cプログラミング演習 [2] 問題文(含コード&リンク) 問1 double型変数a,bとポインタp_aとp_bを宣言する。aのアドレスをp_aに、 bのアドレスをp_bにセットする。scanfで2個の数値を入力して、 値の大きい方の変数の値を表示するプログラムを作成しなさい。 実行結果 a ?123.007 b ?456.009 max = 456.009000 問2 char型変数cとポインタc_pを宣言する。キーボードから1文字入力して、 その次の文字をc_pを使って表示するプログラムを作成しなさい。 実行結果 1モジニュウリョク a b [3] 環境 [3.1] OS: (Windows vista) [3.2] コンパイラ名とバージョン: (visual studio 2005 ) [3.3] 言語: (C言語) [4] 期限:今週いっぱい [5] その他の制限: (わかりやすいプログラムで書くこと、ポインタを必ず使うこと)
>>491 ありがとうございます!
プログラミング苦手なんでほんと尊敬します。
勉強します。
>>401 の上の方もどなたかお願いします。
496 :
、 :2008/07/02(水) 17:37:44
498 :
417 :2008/07/02(水) 18:33:23
>>494 問1
#include <stdio.h>
int main()
{
double a, b;
double *p_a = &a, *p_b = &b;
printf("a ?");
scanf(" %lf", p_a);
printf("b ?");
scanf(" %lf", p_b);
printf("max = %f\n", *p_a > *p_b ? *p_a : *p_b);
return 0;
}
問2
#include <stdio.h>
int main()
{
char c;
char *c_p = &c;
printf("1モジニュウリョク\n");
*c_p = getchar();
printf("%c\n", *c_p + 1);
return 0;
}
入力したアルファベット文字列の大文字を小文字に、小文字を大文字に変換して表示させる。toupperとtolowerは使わないで自分で作る。 例:AbCD→aBcd という問題なのですが教えてください><
Aは0x41 aは0x61 A-Zをもらったらそのコードに0x20をプラス a-Zをもらったらそのコードから0x20マイナス して加工したコードを返してあげればOK
505 :
デフォルトの名無しさん :2008/07/02(水) 18:59:46
>>453 ありがとうございます。参考になりました
>>502 printf("a = %d\n", 'a');
printf("A = %d\n", 'A');
507 :
デフォルトの名無しさん :2008/07/02(水) 20:35:58
VS2008いいなーいいなーー
何かしら一言、言わなきゃ気が済まない一言居士うぜーなー しかもそんなどうでも良い個人的な意見なんて、他人からしてみりゃどーでも良いよ
他人の宿題なんて更にどーでもいいのだよ そこんとこ分かってないと
他人の宿便くらいみたくないものはない
ではなぜこのすれにれすがつくのか?
515 :
507 :2008/07/02(水) 21:06:37
>>513 ありがとうございました<m(__)m>
>>466 必死だぁ・・・間違いを残して恥さらしw
>>466 > 問題文にパスかかってるとかアホかと
無駄口が多い。だったら無視すりゃ良いだろ。
少なくとも、IDを教えろなんて言う方が頭がいかれてる。
ネットワークの世界のルールもろくに知らん奴が、何ほざいてやがる?w
不正アクセス防止法を知ってから出直せ、ガキ。
知らない奴の逮捕者を出すつもりかよ、必死な無知基地外
>>466 ↑うわっ、なんだこいつ、もう罵倒レスをするから明らかに
イカレた基地外だって自分から自己紹介しているようなもんじゃん。
指摘されたことが理解できない、ちょっと世間離れした奴か?
とにかく、自分に意見をするものは何かしら言い返して、相手を威圧
罵倒して自分を正当化しようとする、最近じゃ行き過ぎた態度が目立つ
自己中って奴?モンスターペアレントとか、その子供の世代か?
ちったぁ 周りの目 を考えて言動をしないと、自分がただのアホとしか
周りから見られなくなるぞw
>>515 あ、ごめんなさい文字列関数ってあれか自分で作るんじゃないのか
なら
>>513 は間違えてる
とにかく、何かしら気に入らないと最後に相手に罵声を浴びせたり バカだのアホだの、相手を見下そうと罵倒レスをするような奴は 人間性が壊れた基地外。恐らく、社会でもそう高い地位にはいないか もし高い地位にいても、周りからあまり好まれていないだろうね。 2ちゃんねるの他の板を見ても一目瞭然。干されているが、 中には自意識過剰、自己中な奴らが罵倒の応酬をして、 スレが荒れるケースも。そういう奴が、いかに周りのことを 考えていない行動をしていることか。 自覚症状がないんだろ。そんなんで残りの人生を歩んでも、 ろくな人生にならんぞw ちなみに、指摘されていることは周知、既知のこと。 言い返して発言すればする程、お前が無知、節操の無い 傍若無人な人間だということを露呈しているに過ぎない。
>>431 動作確認して無事に動きました。
遅くなりましたが、本当にありがとうございます。
>>504 何と言えばいいのでしょうか……わざわざ回答して頂き、また有難いアドバイス本当にありがとうございました。はい、他力本願に頼らずに一から書いてみようと思います。
やれやれ、一言居士、必死だなぁ・・・こりゃ放置してレスしない方が良いだろうけど 問題だと思ったら、指摘はするからな。あとIDを晒せなんて普通は言わない。 無知、知ったかの勝手な行動が目立つ時代になったな。
とりあえず、どのレスを言ってるのかくらいは明確にしようぜ みんなで仲良くね!
反論する場合は、気に入らないからといって罵倒せずに 理論的な意見で頼むよ。こっちは前々からある、標準的 あるいは規定されているものを用いて話をしているんで。 それに対して、主観的に 気に入らねぇ なんて言うのは 社会の規律を守っている周りに反して目立とうとしているだけの 厨房にしか見えんよw 大人になって社会に出りゃ、そんな自分だけの都合が 周りに通用しないことなんて、普通に分かるが・・・ まさか、あれ?w
プログラム直書き>>>>>>>>>>糞共の長文
>>522 わーわーうるさいなあ。
> 当該識別符号に係る利用権者の承諾を得てするものを除く。
って書いてあるじゃん。ここはスルーなの?
自己アピールが強いくせに、肝心なところが抜けている奴が しゃしゃり出てくると、場が冷めるよな。KYな奴。 自分が認められなきゃ、認めない奴は叩く。だから人生を失敗するんだよ。 もちっと世の中をグローバルな観点から見直した方が良いよ。 少なくとも、void mainについては決着済み。このスレが何年前から あると思ってんだよ、新学期の新入りさん?
宿題やらせてくださいスレの頃結構見てたなあ
534 :
475 :2008/07/02(水) 22:20:08
どなたか、
>>416 をお願い致します・・・
sageするのを忘れてしまい申し訳ございませんでした。
どうか、宜しくおねがいします。
537 :
530 :2008/07/02(水) 23:18:50
>>535 回答してみました。
課題1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7164.txt に対し、以下の変更をした。
0a1
> #include<stdlib.h>
回答
1-1 ファイルが使用中のため、操作が拒否されたから
1-2 ディレクトリを作るようにできていないから
2 一度に処理するバッファが小さいほど読込→書込回数が増えるから
課題2
問題文中のソースに対し、以下の変更をした。
15c15
<
---
> }
25c25
< printf("child j=%5d\n",j);
---
> printf("j=%5d\n",j);
回答
1 省略。実行して埋めてください。
2 親子双方のプロセスで実行されるから。
3 例えば、printf("pid=%5d, j=%5d\n", getpid(), j);
課題3
問題文中のソースに対し、以下の変更をした。
5a6
> #include <string.h>
回答
1 最初から順に
fd[1] send_msg send_msg send_msg fd[0] receive_msg receive_msg receive_msg
2 プロセス間でのデータ授受機能
>>538 どういたしまして。
1-1 1-2はなんとなくで言ってるので間違えてたらごめんなさい。
>>502 switch( ch ){
case 'a':
ch = 'A';
break;
case 'b':
ch = 'B';
break;
:
:
:
case 'Z':
ch = 'z';
break;
}
まぁ冗談だが
if( ch >= 'a' && ch <='z' ) ch -= 'a' - 'A';
else if( ch >= 'A' && ch <= 'Z' ) ch += 'a' - 'A';
>>540 冗談でもなんでもないよー
学生が上の方式でせっせと書いて作り上げたなら、それはそれでOKだよ
理数系にとって力技は最終手段であり、実現できた、できなかったの判定は合格
if(('a'<=ch && ch<='z')||('A'<=ch && ch<='Z')) ch ^= 32;
switchで個別にアルファベットをすべて書くのが マンドクセッ ('A'<=
545 :
:2008/07/02(水) 23:50:05
546 :
373 :2008/07/02(水) 23:59:04
ログに埋もれてしまった感じですが、
>>373 の方針だけでも結構ですので回答お願いします。
>>546 本当の木構造というのが良く分からないが、リンクが循環していない構造という意味でOK?
550 :
:2008/07/03(木) 00:13:50
流れが変わったのに、指摘された奴が必死に蒸し返す姿は痛々しい。 void mainについては駄目とは言わないが、標準化、可搬性を考慮したら int main以下必要に応じたパラメーターの記述は共通して使える 標準化のものを使ってもなんら問題ない。まぁ、何がどうであれ void mainは無い。それから、他人にIDを教えろという意見は認められない。 もし相手が知らずにIDを書いてしまって、それが原因でトラブルが起こったら どうすんだよ?疑われるのは誰だよ?質問者が至らないからといって 答えてもいないくせに上目線から説教が鬱陶しい。 そこまでするくらいなら、商売で質問受付でもやったら? そっちはそっちで、金が掛かる以上、責任や信頼、信用などといった 社会的責任も付き纏うけどな。
552 :
:2008/07/03(木) 00:17:23
>>550 に追加です。
配列(30文字分)を使用してお願いします。
>>549 自作自演乙。日本語以前に、理解力の無い奴が何を言っても無駄。
言葉を理解したつもりで何必死に抵抗してんだよ?w
お前が反発しているのは、ただの決まりごと。見えない敵なんだよ、
お前が必死に噛み付いて食いついている餌、釣り針はw
相変わらず見えない一人の敵相手にシャドーボクシングがかっこ良すぎw
>>547 aは任意のbinarytree型データだと思います。
なのでもしノードの作成をbinarytree型関数createnode(int value,binarytree ltree,binarytree rtree)でできるとすれば
binarytree a=createnode(6,createnode(2,NULL,NULL),createnode(9,NULL,NULL))みたいに入ってきます。
(上例は根が6、葉が2と9の二分木で、もしこれが入ってくれば1を返してほしい)
>>548 循環してないっていうのはループがないってことですかね…?
とりあえず授業で出てきた「本当の木構造=合流点がない構造」は
2つ以上の辺(リンク)が入ってくる節点がなく、かつループもない構造でした。
(前者について2つ以上の辺が入ってくる節点があればそれが合流点、
後者についてもループで戻ってくる節点があればそれが合流点らしいです)
合流点を持つ構造の例としては、
binarytree a=createnode(1,NULL,NULL)
binarytree b=createnode(3,createnode(2,a,NULL),a)
のような例があります。
>>557 >>557 xに代入するのは3.1なのか3.4なのかどっちだw
#include <stdio.h>
int main(void)
{
float x, y;
x = 3.1;
y = 23.4;
printf("xの値は、%.1fです。\n", x);
printf("yの値は、%.1fです。\n", y);
printf("xの値は、yの値の%.1f%%です。\n", x / y * 100);
return 0;
}
563 :
560 :2008/07/03(木) 00:58:54
戻り値が逆か……まあいいや
>>562 3.4でした。
助かりました。ありがとうございました。
>>551 > void mainについては駄目とは言わないが、(中略)使ってもなんら問題ない。
> まぁ、何がどうであれvoid mainは無い。
あわわ。
570 :
デフォルトの名無しさん :2008/07/03(木) 01:57:24
>>567 (1)
void primenumbers(int n, int div, int chk) {
int cnt = 0;
if(n==1) { putchar('\n'); return; }
while(n % div==0) { cnt++; n /= div; }
if(cnt) {
if(chk==1) putchar('*');
else chk = 1;
if(cnt==1) printf("%d", div);
else printf("%d^%d", div, cnt);}
primenumbers(n, div==2 ? 3 : div + 2, chk);}
(2)
void primenumbers(int n, int div) {
if(n % div == 0) {
n /= div;
if(n==1) { printf("%d", div); return; }
primenumbers(n, div);
printf("*%d", div); }
else primenumbers(n, div==2 ? 3 : div + 2); }
(3)
void primenumbers(int n) {
int i, chk=0;
while(n % 2 == 0) {
if(chk) printf("*2"); else { chk = 1; printf("2");}
n /= 2; }
for(i=3; n!=1;) {
if(n%i==0) { if(chk) printf("*%d", i); else { printf("%d", i); chk = 1; }
n /= i; }
else i += 2; }
putchar('\n');}
>>569 言いたい事、指摘したことがあるなら言えよ。他人が何か言うと
それにお前はバカだの否定するだけで終わっている奴は
たいてい現実社会じゃ、自分が詰まらない存在故に
どこへ行っても否定されているから、そういう態度を
こそこそとムカつくやつにするんだろ?w
ちなみに、int mainはISO準拠で定められているし
これは幅広い環境で通用する可搬性、標準化を考慮されている
記述だから。見えない基準と言う敵と戦っても、自分が単に
それに反しているという事実が出来るだけだよw
>>570 パラメータを一つ増やして、usage変えて、
fclose(fp);の後にfp = fopen(argv[1], "wb");ってやって、
fwriteしてfclose(fp);すればよいのでは?
<<<<ここに各自の処理を実装する>>>>とか書いてるけど、
要望は書き出すだけだよね?
>>573 言いたい事は、void main使っていいよ、と、使っちゃだめ、が混在しててどっちかわからんよってだけ
>>573 ごめん、追加で「ISO準拠で定められている」という言い回しが理解できないんだけど
「ISOに準拠して実装されたコンパイラの仕様として定められている」と読めばよい?
>>575 釣り針が見えてるような餌に食いつくなよ
>>577 いつものパターンだと自分のレスが絶対だと思ってる間はひたすら長文レスがついて
自分のレスが恥ずかしいものだと気づいた時点でレスがなくなるのでおもしろいのです。
そのうち一言居士うざいとかに変わるんでないかと思いつつ
いつもどおり平和に荒れてるな、このスレわww
ちょ、もうレスこなくなったw 今日はいまいちでしたなー
>>575 使っちゃ駄目なんて言ってないが?標準スタイル、可搬性を考慮すると
int mainが望ましいし、そもそも世界的な標準を決める国際標準化機構の
定義にはっきりと記述されているが?この世の、何気ない製造物、製品などは
何かとISOが関与してくるよ?俺らはそういったものを作っているわけではないにしろ
void mainはありえねー
>>580 今日はもうおしまいにしてさっさと寝ろ
これ以上やるなら、うpろだ使え
>>581 駄目じゃないならありえないとか書かないようにしましょう
ISOの定義に準拠するかしないかは自由ですよね。ANSI、RFCもまた然り。
みんなが準拠してればいろいろ楽(ここでは可搬性)になるけど、そもそも
それが目的なので、そうならなければおかしい。
ただ、他とあわせないことを覚悟した上で準拠しない道を選ぶ、世の中には
そういうこともあるんですよ。
>>582 うん。わかたよ。ごはんたべてねるね。
ISOの規格が法律のようなもので、守らなければならないものであると
学生に誤認させたくなかったんだ。
取得した後はもちろん守らなければならないんだけどね。
585 :
デフォルトの名無しさん :2008/07/03(木) 03:14:41
[1] 授業単元:C言語 [2] 問題文 問題はこれです(リンクなくてごめんなさい…)→演習、関数。二つの正整数a, b を引数としてaをbで割った際の余りを返す関数を、演算 子 % も / も使わずに作成し、その動作を確かめなさい。ただし、この関数では再帰的呼び出しを用いること。再帰的呼び出しを用いていないプログラムは×。 [3] 環境 [3.1] OS:Windows [3.2] わからないです [3.3] 言語:C [4] 期限:今日の午後6時までにできたら嬉しいです [5] その他の制限:配列、関数まで授業でおわっています。初心者でいろいろご迷惑おかけしますがよろしくおねがいします
586 :
デフォルトの名無しさん :2008/07/03(木) 03:23:51
324 :可愛い奥様:2008/07/03(木) 02:37:32 ID:NpZ/CAf40
>>287 「誤解」なんていう程度の笑い話レベルではないですよ。
日本人看護婦のアナル相互鑑賞なんて、毎日新聞社の悪意の報道ですからね。
ましてや、日本人は子供を狩るとか、人身売買市場の日本人とか、毎日新聞社が全世界に向けて報道した捏造記事など、日本人は世界中から憎悪されますよ。
ブラジルで、ベビーシッターの女が赤ちゃんを虐待していたのが親にバレて、地元住民達から飛び蹴りされて、殴られて、投石されて、血だらけで半死状態になっていたのを知らないのですか?
(これはニュースにもなって映像があります) 海外は絶対に容赦しません。
毎日新聞社の捏造記事が一人歩きして、日本人は普通に「善意で」殺されますよ。
そこへもってきて、「日本人は淫乱な売女だからレイプしてあげても当然だろw」ですよ。その後は
>>263 のようになります。
海外は、そういう時のプライドとか、カッとなった時の凶暴さは誰しも半端無いですから。ストレートだし、日本人のように遠慮したり熟考したり、手加減など一切しません。
だから、エクアドル子供狩りやベラルーシ奴隷市場などの毎日新聞社の捏造記事は本当に大問題なのです。そして、毎日新聞社はそれを わかってて 狙ってやっているのです。毎日新聞社はとても悪質なのです。
★毎日新聞問題の情報集積wiki
http://www8.atwiki.jp/ mainichi-matome/
★毎日新聞問題の簡単な経緯
http://www8.atwiki.jp/ mainichi-matome/pages/71.html
★毎日新聞捏造記事過去ログ保管ミラー
http:// yondokoronai.hp.infoseek.co.jp/m/#kikon
587 :
デフォルトの名無しさん :2008/07/03(木) 05:22:18
>>585 #include <stdio.h>
int remain(int a, int b)
{
return a >= b ? remain(a-b, b) : a;
}
int main(void)
{
int a, b;
scanf("%d", &a);
scanf("%d", &b);
printf("%dを%dで割った余りは%d\n", a, b, remain(a, b));
return 0;
}
590 :
デフォルトの名無しさん :2008/07/03(木) 13:22:30
>>588 >>585 です。ありがとうございます。質問なんですがremainってなんでしょうか?あと、remainを使わないでプログラム作れますか?もしよければそのプログラムをお願いしたいです…
>>590 わがままだな
ほれ
#include <stdio.h>
int amari(int a, int b)
{
return a >= b ? amari(a-b, b) : a;
}
int main(void)
{
int a, b;
scanf("%d", &a);
scanf("%d", &b);
printf("%dを%dで割った余りは%d\n", a, b, amari(a, b));
return 0;
}
どこまでゆとりなんだよ
>>443 TA暇そうにしてるから授業中に聞いてやれよ
594 :
sage :2008/07/03(木) 15:19:59
1] 授業単元:プログラミング [2] 問題文(含コード&リンク): a1=1, a2=1, an+2 = an+1 + an (n は 1 以上)で定まる数列 an を 求める関数 int fibonacci(int n) を、 再帰を使って作成せよ。 動作確認をするために、20項まで出力する main 関数も作成せよ。 この数列は、Fibonacci(フィボナッチ)数列と呼ばれ、 a1 = 1, a2 = 1, a3 = 2, a4 = 3, a5 = 5, a6 = 8, a7 = 13, ・・・となる。 これは以下の問題が大元. 兎の問題 1つがいの兎は、1年の間に何つがいの兎になるか? 但し、1ヶ月経つと1つがいの兎は1つがいの兎を産み、 産まれた兎は、2ヶ月目には子供を産むものとする [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2008年7月7日 [5] その他の制限:特になし
595 :
デフォルトの名無しさん :2008/07/03(木) 16:08:54
>>595 互除法の使用を禁じられたから手が出ないの?
597 :
デフォルトの名無しさん :2008/07/03(木) 16:22:26
練習問題は解けたんですけど、応用が無理でした。
互除法の意味は判ってないです。
>>596
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): データを昇順ソートされた配列a〜eがある。(データ数はN) これらの配列の値を小さい順に入れていくことにより 昇順ソートされた配列xをつくれ。(データ数は5*N) a〜eのデータは自分で指定してよい。 ただし、a〜eのデータに重複したものはないこととする。 Nについてはdefine文で指定すること。 [3] 環境 [3.1] OS: linux [3.2] gcc [3.3] 言語:C言語 [4] 期限: 7月7日 [5] その他の制限: 配列a〜eを適当に配列xに入れ、xをソートするやり方はダメで 順番にxに入れていくやり方でやれと言われました。 場合分けしてやろうとしたら膨大な量になりそうなので 何かうまい解決策はないでしょうか?
[1] 授業単元: 線形システム特論 [2] 問題文(含コード&リンク): Aを3行3列の行列としたとき 状態遷移行列e^(At)を求めるプログラムを作成せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: borland C++ Compiler 5.5 [3.3] 言語: C言語 [4] 期限: 7/6まで [5] その他の制限:特にないです。 どう手をつけたらいいかわかりません・・・ どなたかわかる方よろしくおねがいいたします。
928 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 14:04:39
>>927 ルンゲ・クッタ法は知らんが、行列Aをジョルダン分解してジョルダンJ行列のexp(Jt)を求め、
それを逆変換すればexp(At)は簡単に求まる。
悪いがCで書くのはだるいのでパス
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7204.txt 課題と資料は上のURLにあります。
[3] 環境
[3.1] OS: (Windows/Linux/等々)
linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
7月7日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
よろしくお願いします
>>601 [1]回答レベル:ヒント
[2]コード:とにかくprint文をあちこちに入れて試行錯誤してください。
[4]コメント:必要な箇所にprint文を入れる事は、デバッガの扱い方を知るまでの間、あなたにとって非常に強力な武器となるでしょう。
>>598 場合分けしましたw
#include<stdio.h>
#include<stdlib.h>
#define N 2
int cmp(const int *a, const int *b){
if(*a<*b) return -1;
if(*a>*b) return 1;
return 0;
}
int main(void){
int a[N], b[N], c[N], d[N], e[N], x[N*5], *y[5], y_index[5]={0};
int i, j, x_index, minimum=0, minimum_index=0, is_first;
y[0]=a; y[1]=b; y[2]=c; y[3]=d; y[4]=e;
for(i=0;i<5;i++){
for(j=0;j<N;j++) y[i][j]=rand();
qsort(y[i], N, sizeof(y[i][0]), (int (*)(const void *, const void *))cmp);
}
for(x_index=0;x_index<N*5;x_index++){
for(i=0,is_first=1;i<5;i++){
if(y_index[i]>=N) continue;
if(is_first || minimum>y[i][y_index[i]]){minimum=y[i][y_index[i]];minimum_index=i;}
is_first=0;
}
x[x_index]=y[minimum_index][y_index[minimum_index]++];
}
for(i=0;i<N*5;i++) printf("%d\n", x[i]);
return 0;
}
>>595 #include<stdio.h>
void swap(int *a, int *b){
int c;c=*a;*a=*b;*b=c;
}
int gcd(int a, int b){
int i;
if(a>b) swap(&a, &b);
for(i=a;i>0;i--) if(a%i==0 && b%i==0) return i;
return 0;
}
int lcm(int a, int b){
int i;
if(a>b) swap(&a, &b);
for(i=b;;i+=b) if(i%a==0) return i;
return 0;
}
int gcd3(int a, int b, int c){
return gcd(a, gcd(b, c));
}
int lcm3(int a, int b, int c){
return lcm(a, lcm(b, c));
}
int main(void){
int a, b;
scanf("%d %d", &a, &b);
printf("答え:(a,b)=%d,{a,b}=%d.\n", gcd(a, b), lcm(a, b));
return 0;
}
>>605 ヒントを受け取って4時間経ったか。
print文いっぱい入れてみた?
>>607 C++???
void n_char(int moji, int n, int is_linefeed){
int i;
for(i=0;i<n;i++) printf("%c ", moji);
if(is_linefeed) printf("\n");
}
void n_asterisk(int n, int is_linefeed){ n_char('*', n, is_linefeed); }
void n_space(int n, int is_linefeed){ n_char(' ', n, is_linefeed); }
void no5(int n){
int i;
for(i=0;i<n;i++){
n_space(n-1-i, 0);
n_asterisk(i*2+1, 1);
}
for(i-=2;i>=0;i--){
n_space(n-1-i, 0);
n_asterisk(i*2+1, 1);
}
}
void no7(int n){ // 例と大きさが違う
int i;
for(i=n-2;i>=0;i--) printf("%*s* %*s* %*s* \n", (n-2-i)*2, "", i*2, "", i*2, "");
n_asterisk(n*2-1, 1);
for(i=0;i<=n-2;i++) printf("%*s* %*s* %*s* \n", (n-2-i)*2, "", i*2, "", i*2, "");
}
void no8(int n){
int i;
n_asterisk(n, 1);
for(i=1;i<n-1;i++) printf("* %*s* \n", (n-2)*2, "");
if(n>1) n_asterisk(n, 1);
}
ここでいう自力とは自力なのでしょうか? 哲学的な問題ですね
>>611 大胆予想なんだが、main関数から各関数を呼び出すようにしていないのではないだろうか。
>>609 入れてみましたが、全く上手く動きません。。
それと、bubblesort関数を修正せよって書いてありますが、mainも修正しなきゃ実効例通りに表示されない気がします。。
ご教授よろしくお願いします
>>613 ありがとうございます!
no5が呼び出す関数だったんですね
とても大変な課題だったのでとても感謝しています。
[1] 授業単元: プログラミング言語 [2] 問題文(含コード&リンク): 問題1 キーボードから打ち込んだ文字列strが回文であるなら1を、回文でなければ0を返す関数 int Distinction(char *str)を作成し、実行例のように動作するプログラムを作成せよ。 <実行例1> 文字列を入力せよ --> AKASAKA AKASAKA は回文である <実行例2> 文字列を入力せよ --> ROPPONGI ROPPONGI は回文でない 問題2 預金額(money),年利(rate),預金期間(year)を入力し、その場合の金利を計算するプログラムを作成せよ。 ただし、金利を計算し、そのポインタを返す関数 double *cal_benefit(int year, double rate, double money)を使用せよ。 <実行例> 預金額(\):10000 年利(%):3.3 預金期間(年):10 金利(\):3830 [3] 環境 [3.1] OS:Linux [3.3] 言語: C [5] その他の制限: 構造体まで習いました。 よろしくお願いします。
どなたか
>>558 お願いします
どうやってもエラーが出てしまって
620 :
:2008/07/03(木) 23:20:44
>>589 とてもわかりやすいご解答ありがとうございました。
感謝しています。
>>616 バブルソートの処理自体は出来ているので、何も修正せずとも動作はしますよ。
実行例のように出力されるようにprint文を入れるという修正が必要です。
>>619 まずこれを。
#define MEM_FREE(x) do{ if(x != NULL){ free(x); x = NULL; }while(0)
↓
#define MEM_FREE(x) do{ if(x != NULL){ free(x); x = NULL; }}while(0)
624 :
デフォルトの名無しさん :2008/07/03(木) 23:56:38
625 :
624 :2008/07/04(金) 00:05:17
626 :
614 :2008/07/04(金) 00:09:08
本日までですので是非よろしくお願いします。
>>626 マリカーwww
C++ C#のどちらかで実装すればよくて、希望はC++ってこと?
>>622 問1問2の(1)まではできているのですが
(2)ははエラーがでてしまいます
630 :
614 :2008/07/04(金) 00:39:19
>>627 どっちでもいいんです><
どちらか得意な方がありましたらお願いします!
631 :
デフォルトの名無しさん :2008/07/04(金) 01:04:29
[1] 授業単元:プログラミング論 [2] 問題文(含コード&リンク):ハフ変換を使って円と線を検出し円の個数をカウントせよ [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語: C [4] 期限: ([2008年07月12日hh:mmまで] または [無期限] のいずれか) [5] その他の制限:円と線は別プログラムでおねがいします よろしくお願いします
どなたか
>>558 の問2の(2)(3)をお願いします
634 :
614 :2008/07/04(金) 01:39:50
もう少し待ってみます。おつかれさまです
>>629 そっかあ。でも問1のソースコードがそのままじゃコンパイルできなかったので
マクロ修正案を出してみたんだけどね。
問1ができているというのであれば、うちでは確認できないので問2も無理です。
ごめんなさい。
>>558 のプログラムというか問題を作った人は、余り信頼できない。
問題文は滅茶苦茶だし、サンプルプログラムのほうも、妙な禁じ手に
近いマクロ作ってコンパイルエラーレベルでのバグ出してるし。
(1)の修正箇所は定数マクロの変更のみ
(2)(3)共に修正箇所は一緒insert関数のreallocのところ
reallocは旧領域を残す。残さない場合は要するに別の領域をmallocして
旧領域のデータを全部複写したあと解放する。これはrealloc のメイン動作
そのもの
>>637 すいません。プログラムお願いできないでしょうか。
(2)(3)が理解できなくて
お願いします
>>638 問題文を書き直してみて。問題文の解釈は宿題された貴方は最低しなきゃならないこと。
>>639 プログラムは問題とは別に作りました
すいません、先に書いておくべきでした
別に作った割には酷似してるなあ。大抵もっと差分が出るはずなんだけど。
問題文中のソースコードをベースにメッセージを日本語化したとかそういうのは、
「作った」とは言わず、「変更した」というわけだけれども。
あと、どうやってもエラーが出るというのであれば、どのようにやってみたかを提示すると、
その考えをベースに作ってもらえると思うけど、どうかな。
>>637 がヒント回答してるから、今後回答が出てくるかどうかは微妙だけどね。
>>642 問題文中のソースコードが問題とは別につくってます
なので問題文中のソースコードにエラーがでてもおかしくないです
>>637 さんを元に試行錯誤してみることにします
みんな頭壊れて来てるw
>>641 貴方が問題を出したのか?
それとも別の人(教師?)が問題を出して、それを元に貴方が
作ったコードを添えてここに貼ったのか?
>>645 問題をだされてコードを作ったんですがわからなくて聞くことにしました
足しになればと思ってプログラム例としてくっつけといたんですが
すいません
>>646 問2のほうの問題文をまず良く呼んで要点を抽出してみよう(なんか国語の授業みたいだw)
Q1問1のプログラムはどのような処理をしていますか?
Q2問2のプログラムはどんな処理をしなければならないでしょうか?特に問1とどのような点が違いますか
Q3問2では何本のプログラムを作らなければならないでしょうか?
実は私も問題文から明確に要求を読み取ることが出来なかった。
上の点を出題者等に確認してから問2を考えても遅くはないと思う。
(
>>637 じゃないが、問題文の書き方悪過ぎだと思う。
>>637 の後半の意味も同じような感じで
意味不明)
>>637 マクロは括弧が1つ足りないが妙でも禁じてもない普通にあるやり方だよ
>>608 すいませんどなたかお願いできませんでしょうか?
使用法を誤ると重大なバグの原因になるマクロ関数の安直な定義はやはりタブー。 学校の宿題とか会社のコードではやらないほうがいい。
>>650 マクロは便利なようではまるよなw
俺も覚えた手で使いまくってたらバグ増産ですぐに却下したよw
下手なマクロしか書かないからだろ。大人しく関数にしとけよw
>>653 そうしてるw
まーC使い出して数ヶ月であれこれやりすぎなんだけどねw
[1] 授業単元: プログラミング言語 [2] 問題文: l,m,n(≦MAX)に正の整数値を、l×m行列aとm×n行列bの各要素に実数値を読み込んで、aとbの積cを表示させるプログラムを作れ。 但しa,b,cは要素型がdoubleで要素数がMAXの配列型を要素型とする、要素数がMAXの配列である。 また、MAXはオブジェクト形成マクロで指定すること [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc ? [3.3] 言語: C [4] 期限: 7月8日 [5] 学習範囲: 柴田望洋「C言語入門編」6章まで おねがいします
> [5] 学習範囲: 柴田望洋「C言語入門編」6章まで BohYohキターー
657 :
614 :2008/07/04(金) 09:20:47
今日の4時までです。よろしくお願いします!
614、2問目画像足りてませんでした
659 :
デフォルトの名無しさん :2008/07/04(金) 10:03:21
>>604 ただ最小公倍数と最大公約数を求めるプログラムじゃなくてそこからの応用ができないんです。
リンク先に問題を載せてます。
よろしくお願いします。
>>660 11:00じゃなかったです。
12:00まででした^^
>>660 #include<stdio.h>
#define NUMBER 100
int main(void){
char moji[NUMBER+1];
int i, count[256]={0};
printf("文字数:");
gets(moji);
for(i=0;moji[i]!='\0';i++) count[(unsigned char)moji[i]]++;
printf("数字の個数:%d\n",
count['0']+count['1']+count['2']+count['3']+count['4']+
count['5']+count['6']+count['7']+count['8']+count['9']);
return 0;
}
>>608 何度もすいません、TREEについてのプログラムなんですがどなたかやっていただけませんでしょうか?
cnt=0; してなかった・・・もし使うならそこんとこ付け足しておいて
>>665 提示のプログラムがコンパイルエラーで動かせないのですが、コンパイル正常終了するものはありませんか?
[1] 授業単元:プログラミング基礎 [2] 問題文:キーボードから実数を10個入力し、その数の最大値、最小値、平均を計算して表示するプログラムを作ること。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gc [3.3] 言語:C [4] 期限:2008年7月5日まで [5] その他の制限:
672 :
デフォルトの名無しさん :2008/07/04(金) 12:05:24
>>670 #include <stdio.h>
int main()
{
int count = 0, i = 0;
float max = 0, min = 0, sum = 0, input = 0;
printf( "入力:" );
scanf( "%f", &input );
sum = max = min = input;
for( i = 1; i < 10; ++i ){
printf( "入力:" );
scanf( "%f", &input );
if( max < input ) max = input;
if( min > input ) min = input;
sum += input;
}
printf( "最大:%f\n", max );
printf( "最小:%f\n", min );
printf( "平均:%f\n", (sum / 10) );
}
>>672 ミスった、countって変数いらねぇや
674 :
670 :2008/07/04(金) 12:08:49
>>659 printf("{(a,b),(b,c),(c,a)}={%d,$d,%d}=%d.", gcd(a,b), gcd(b,c), gcd(c,a), lcm3(gcd(a,b), gcd(b,c), gcd(c,a)));
printf("({a,b},{b,c},{c,a})=(%d,%d,%d)=%d.\n", lcm(a,b), lcm(b,c), lcm(c,a), gcd3(lcm(a,b), lcm(b,c), lcm(c,a)));
>>671 何度もすいません、tree outするための関数を書くみたいで
tree outの中でtree out が呼び出される、先出し呼び出し?らしいです
1時提出なのですがどなたお願いします
677 :
デフォルトの名無しさん :2008/07/04(金) 12:41:15
[1] 授業単元: 情報処理 [2] 問題文(含コード&リンク):将来のカレンダーを作成する。できれば来年と再来年のものがほしいです。 [3] 環境 [3.1] OS: (Windows [3.2] コンパイラ名とバージョン: [3.3] 言語: どちらでも可 [4] 期限: ([2008年07月18日まで] [5] その他の制限:なし。 よろしくお願いします。
>>676 再起呼び出しだと思うが、5行はちょっと無理です。
あと、そもそも他の場所(28行目)でエラーがあります。
680 :
679 :2008/07/04(金) 12:48:05
関数自体はこれでいいと思うけど、5行にしたければ適当に詰めてもらえれば。 void tree_out(NODE *p){ if (!p) return; tree_out(p->lson); printf("%p:%s:%p : %p\n", p, p->key, p->lson, p->rson); tree_out(p->rson); }
ご回答ありがとうございます 詰めるとはどのようにすればいいのでしょうか?
>>676 昔作ったこういうのがあるのですが、28行目のエラーを直せなかったので動くか分かりません。(中間順表示を前順・先行順・前置順に適当に変更したのでそこもあってるかわかりません。)
void tree_out(NODE *p)
{
if(p != NULL)
{
printf("%s\n",p->key);
tree_out(p->lson);
tree_out(p->rson);
}
}
>>681 C言語は文法さえ合っていれば、改行を詰めても動きます。
詰めると読みづらいので改行やインデントを行っているだけです。
セミコロン[;]やカッコ[( )]を消さないように気をつけて適当に詰めてください。
685 :
デフォルトの名無しさん :2008/07/04(金) 13:01:30
授業→C言語 環境→windows
686 :
デフォルトの名無しさん :2008/07/04(金) 13:02:17
続きです。 問題→3次元ベクトルを要素が実数の1次元配列で表すものとする。2つの3次元ベクトルの配列を第1、第2引数として受け取りそれぞれのベクトルの大きさを第3、第4引数に内積を戻り値として返す関数を作成する。
687 :
デフォルトの名無しさん :2008/07/04(金) 13:03:06
また続きです。すいません→ この関数を用い2つのベクトルを入力してそれらの大きさと内積を表示せよ。 早くできればできるほどうれしいです お願いします
689 :
デフォルトの名無しさん :2008/07/04(金) 13:10:31
>>675 これをどのように記載すればいいのですか。
何回もすみません
>>689 掛け算できます
でも2x3は分かりません
こういう人の事をどう思いますか?
>>572 実行してみたところ(1)で
6を入力してるみると
6=*2*3と出て2の前に*がつくのですがどうにかならないですかね?
すいませんが出ないようにしてもらえないでしょうか
>>696 freeをしない方が重いですね
これはoldpAが毎回足されて大きくなったからということでしょうか
>>695 = を =1 にすればいいじゃん
6=1*2*3
>>697 oldpAが毎回足されるって表現がいまんいちピンとこないけど、そういうこと
freeをしないと、oldpAが示す領域が毎回ゴミとして残っていく
1回目の領域拡大 : すでに確保した領域 = oldpA:NIARRAYSIZE
新たに確保する領域 = pA:INIARRAYSIZE*2
2回目の領域拡大 : すでに確保した領域 = (INIARRAYSIZE) + oldpA:INIARRAYSIZE*2
新たに確保する領域 = pA:INIARRAYSIZE*2*2
3回目の領域拡大 : すでに確保した領域 = (INIARRAYSIZE+INIARRAYSIZE*2) + oldpA:INIARRAYSIZE*2*2
新たに確保する領域 = pA:INIARRAYSIZE*2*2*2
()で囲ってあるのはゴミ領域(もうアクセスする方法がないので、解放できない無駄なメモリ領域)
700 :
614 :2008/07/04(金) 16:49:48
>>698 できればそれじゃないのがいいのですが…
別にこだわるところじゃないというのは分かるのですが
一応制御をもう少し学習しときたいのでお願いします
>>701 繕おうとしても無理だ。
> すいませんが出ないようにしてもらえないでしょうか
これはどう見ても学習したい者の意見じゃない。
それに、できればそれじゃない方がよいのではなくて、
それでは題意を満たさないのだという意見をはっきり言うべき。
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7218.txt 上のプログラムを参考にして、
バケットソートにおいて、各要素A[i]がバケットB[A[i]]に格納されていく様子がわかるように、実行例のような出力をするプログラムを作成せよ
実行例
B[0] -> A[ 6] -> A[ 1]
B[1] -> A[ 0]
B[2] -> A[ 8] -> A[ 3]
B[3] -> A[11] -> A[ 2]
B[4]
B[5] -> A[10]
B[6] -> A[ 7] -> A[ 5] -> A[ 4]
B[7] -> A[ 9]
B[8]
B[9]
[3] 環境
[3.1] OS: (Windows/Linux/等々)
linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
7月7日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
よろしくお願いします
>>704 void bucketsort(struct word *A, int *idx, int n, int k)
{
・・・
for(i=0; i<n; i++) insert(A, idx[i], B, k); /* idx[i]をバケットへ */
***** この位置に下記のソースを追加 ******
i=n-1;
for(j=m-1; j>=0; j--) /* バケットからidxへ戻す */
・・・
}
追加ソース
for(i=0; i<m; ++i){
printf("B[%d]", i);
for(p = B[i]; p != NULL; p=p->next) printf(" -> A[%d]", p->index);
putchar('\n');
}
putchar('\n');
[1] 授業単元:Cプログラミング [2] 問題文(含コード&リンク):50!の値を求めよ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:borland C++ Compiler 5.5 [3.3] 言語: C言語 [4] 期限: 2008年7月12日12:30まで [5] その他の制限: 配列まで既習です。 できれば配列を使うやり方が良いです
>>705 ありがとうございます。しかし
B[0] -> A[5]
B[1] -> A[12] -> A[8] -> A[2]
B[2]
B[3]
B[4] -> A[11] -> A[9] -> A[1]
B[5] -> A[10] -> A[0]
B[6] -> A[13] -> A[7] -> A[3]
B[7]
B[8]
B[9] -> A[14] -> A[6] -> A[4]
B[0] -> A[5]
B[1] -> A[12] -> A[8] -> A[2]
B[2]
B[3]
B[4] -> A[11] -> A[9] -> A[1]
B[5] -> A[10] -> A[0]
B[6] -> A[13] -> A[7] -> A[3]
B[7]
B[8]
B[9] -> A[14] -> A[6] -> A[4]
・
・
555 470 173 654 913 050 975 678 159 418 555 470 173 654 913
このようなものが表示されて、実行例通りにいかないのですが・・
>>706 配列使わないけど
#include <stdio.h>
int f( int n)
{
if (n == 0)
return 1;
return n * f(n - 1);
}
int main()
{
printf( "50! = %d\n", f( 50 ) );
}
>>711 だ、か、ら、「十分大きな」だよ。intが64bit以上の処理系があったとしても規格上問題ない。
713 :
706 :2008/07/04(金) 20:53:12
>>708 すいません。「できれば」と書きましたが、学校の課題の縛りで、配列でやらないとだめなんです。
僕も1度はそういうやり方でやってみたんですが、オーバーフローしてしまってできませんでした。
なので、配列とfor文を使って計算結果を一桁ずつ格納して後で表示してやればできそうだと思ったのでそういう方針でやってみたんですが、僕のやり方だと50!の桁数が必要になってしまって、
それの計算ができずに困っていたんです。説明不足ですいません。
じゃあ「出来れば」とか書くなよ。
どうしてdoubleだとだめなのはなぜ?
とりあえず答えだけ置いときますね (50!)=30414093201713378043612608166064768844377641568960512000000000000
>>706 前スレか、前々スレで配列を使って階乗を計算するのがあったな。
ちゃんとした答えが出てたゾ。
0が12個並んでるからあながち嘘ではなさそうだ
>>706 #include<stdio.h>
#define UNIT_NUM 100
#define UNIT_MAX 10000
int main(void){
long data[UNIT_NUM]={1};
int i, j, carry;
for(i=1;i<=50;i++){
carry=0;
for(j=0;j<UNIT_NUM;j++){
data[j]=data[j]*i+carry;
carry=data[j]/UNIT_MAX;
data[j]%=UNIT_MAX;
}
if(carry) printf("\nERROR: Overflow.\n");
}
for(i=UNIT_NUM-1;i>0;i--) if(data[i]) break;
printf("%ld", data[i]);
for(i--;i>=0;i--) printf("%04ld", data[i]);
printf("\n");
return 0;
}
>>715 余裕でオーバーフローする
50! > 31!*(32^19) = 31!*((2^6)^19) = 31!*(2^114)
>>719 計算違ってたw
32^19 = 2^95
>>720 全然しないだろ。50!は高々指数部が10^64
正確な値が得られないだけ
おお。確かにでかいや 誤差でちゃいますねw たかが50、されど50?
>>705 すいません入れる場所を間違えていました。しかし同じく
n = 15
555 470 173 654 913 050 975 678 159 418 555 470 173 654 913
B[0] -> A[11] -> A[5] -> A[1]
B[1]
B[2]
B[3] -> A[14] -> A[12] -> A[4] -> A[2]
B[4] -> A[13] -> A[3]
B[5] -> A[10] -> A[6] -> A[0]
B[6]
B[7]
B[8] -> A[9] -> A[7]
B[9] -> A[8]
・
・
B[0] -> A[5]
B[1] -> A[12] -> A[2] -> A[8]
B[2]
B[3]
B[4] -> A[11] -> A[1] -> A[9]
B[5] -> A[10] -> A[0]
B[6] -> A[7] -> A[13] -> A[3]
B[7]
B[8]
B[9] -> A[6] -> A[14] -> A[4]
050 159 173 173 418 470 470 555 555 654 654 678 913 913 975
と出て、実効例どおりにいきません。。
>>723 実行例は形式だけだと俺は思ったんだけど、そうじゃない?
555 470 173 654 913 050 975 678 159 418 555 470 173 654 913
・・・・
B[0] -> A[5]
B[1] -> A[12] -> A[2] -> A[8]
B[2]
B[3]
B[4] -> A[11] -> A[1] -> A[9]
B[5] -> A[10] -> A[0]
B[6] -> A[7] -> A[13] -> A[3]
B[7]
B[8]
B[9] -> A[6] -> A[14] -> A[4]
050 159 173 173 418 470 470 555 555 654 654 678 913 913 975
3桁目が0になってるのは、A[5]=050
3桁目が1になってるのは、A[8]=159, A[2]=173, A[12]=173
・・・
であってると思うんだけど?
>>724 すいません、とりあえず実効例と全く同じ値が表示されるようにしてみてもらいたいです。。
実行例に使用した入力データは?
>>726 一応例題で
12
1
0
3
2
6
6
0
6
2
7
5
3
というようなデータが載っているのですが、これで実効例通りにいきますでしょうか?
すいませんあまり理解してなくて・・
>>727 それで実行例通りにいかなかったんでしょうか?
>>728 どうやって
>>727 のデータを読み込むのかがわからなくて・・
FILE *fopen(char *filename, char *mode);
こういうのが例に載っているのでこれを使うのかな・・
n=15; for(i=0; i<n; i++) /* データの生成 */ { idx[i]=i; for(h=0; h<K; h++) A[i].letter[h]=(765-i*i+3*h*i)%10; } この辺をベタで設定するように変更してみたら?
>>732 すいませんどうやって設定するのか・・
>>727 のデータをsortdata2として、どなたか実効例の通りに表示されるようにやってもらえないでしょうか?
734 :
デフォルトの名無しさん :2008/07/04(金) 22:22:27
[1] 授業単元:アルゴリズム演習 [2] 問題文(含コード&リンク):自己参 照構造体を使ってなんでもいいのでプログラムを作れ() [3] 環境 [3.1] OS:Linux [3.2] gcc 3.4 [3.3] 言語:C [4] 期限: 2008年07月06日(日)まで [5] その他の制限:あんまり長すぎるプログラムは禁止だそうです よろしくおねがいします。
736 :
デフォルトの名無しさん :2008/07/04(金) 23:09:37
>>735 すみません。C言語の授業に一回も出席していなっかたので理解できませんでしたorz
もっと簡単なやつないですかね??
本当にすいませんorz
>>703 確かにそうですね
マジで分かりません
お願いします
いつもひどいと思っていたが、今日はことさらひどいなw やさしくて気の長い人がいるといいねえ
もっと簡単にとか、結局は 自分に分かりやすく ってことだろ? お前がどこまで知ってんのか、エスパーしろって言われても・・・なぁ?w
授業に一回も出てないんだから構造体分かるわけないじゃん つまり、どんな回答をしても分からないの一点張りをされるよ こちらができるのはコードを押し付けるか、スルーするかのどちらかだ
743 :
デフォルトの名無しさん :2008/07/04(金) 23:54:53
誰かメディアンフィルタのプログラムを作れる人はいますか?
744 :
デフォルトの名無しさん :2008/07/04(金) 23:56:36
>>739 ありがとうございます!
わがまま言ってすいませんでした。orz
>>695 関数の使い方間違ってんだろ
引数chkにちゃんと0を渡してれば*が最初に表示されるなんてことはないはずだが。
746 :
デフォルトの名無しさん :2008/07/05(土) 00:13:49
>>746 問題2
#include <stdio.h>
int main(void)
{
int i, j, ch;
char str[256];
printf("shiritori\n");
ch = 'i';
for(i=0; i<10; i++) {
printf("->");
scanf("%s", str);
if(str[0]!=ch) {
printf("NG!\n");
return 0;
}
for(j=0; str[j]; j++);
ch = str[j-1];
}
printf("clear!");
return 0;
}
ほっほっほ、しばらく席を外していた麻呂が、スパゲッティーミートクソースを 書くでおじゃるよ。
749 :
デフォルトの名無しさん :2008/07/05(土) 00:30:24
>>746 回答レベル:番外ヒント
(1)の方針
3直線が3交点を作らないのはa=c c=e a=eのどれかが成り立つ時。
この条件をみたしている場合は、入力の段階ではじいて計算対象外とする。
3点の交点を求める。y=ax+b,y=cx+dの交点 x=(d-b)/(a-c) y=a(d-b)/(a-c)+b etc
3点の交点がわかったら、それらの距離を求める。(x1,y1)(x2,y2)の距離:√( (x1-x2)^2+(y1-y2)^2 )
これをs1,s2,s3とする。 s1*s2*s3=0となったら、1点で交わる場合だからこれもはじく
あとはヘロンの公式だ
三角形の面積=√ ( ( s1+s2+s3)/2*(s1+s2-s3)/2)*(s1-s2+s3)/2*(-s1+s2+s3)/2)
コード:
麻呂のスパゲッティミートクソースがいずれ出来るから、それを待つのもよかろうが、独力で作ると
なお(健康に)良い。今の時期、変なモノ食べるとすぐに食中毒だから。
752 :
デフォルトの名無しさん :2008/07/05(土) 00:54:59
>>751 ありがとうございます。
多分できると思います。
明日作成する予定なのでソースも載せといてくれるとありがたいです。
[1] 授業単元:C演習 [2] 問題文:関数を使いeのマクローリン展開を小数第60位まで算出せよ [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:bcc5.5 [3.3] 言語:C [4] 期限:7月10日夜まで [5] その他の制限:関数の基本的な構造は学習しました 展開自体は成功したのですが、小数第60位まで表示するにはdouble型ではたりないので 一度整数に直してみようと10の60乗倍したら大きすぎるようでおかしなことになりました。 この二つがだめとなるともう策が浮かびません。これはどう解決すればよいのでしょうか。 どなたかご教授おねがいします。
>>745 cnt と chkの値がごっちゃになってました
自分のタイプミスですすいませんでした
ありがとうございました
助かりました!!
>>753 eにはマクローリン展開など無いが...
exp(x)のx=0の廻りのマクローリン展開は1+x+x^2/2!+x^3/3!+...とか
知られておる。
eそのものの値を精度良く求め小数点以下60桁まで求めろということなのだろうかや?
2.7181828....
って感じ。
こういうのは普通に長桁ライブラリを使わんと無理だろがや
(JavaのBigIntegerかなんか使って10^60を超える適当なnまで1+1/2!+...+1/n!を
計算して有理数に直す。有理数に直したら、10倍して整数部取って表示、それを引いて
同じことをするという計算を繰り返して小数点以下を10進展開を計算する。)
(無理でないにしろ、特殊なアルゴリズムになるんで、アルゴリズムスレにでも
逝って聞いてみると答えてもらえるかもしれない。
C演習でこういう問題を出す教師は講義科目を間違えとる)
>>746 問題1
#include <stdio.h>
#include <math.h>
int main(void)
{
int a, b, c, d, e, f;
double x1, x2, x3, y1, y2, y3, s, l1,l2,l3;
printf("a="); scanf("%d", &a);
printf("b="); scanf("%d", &b);
printf("c="); scanf("%d", &c);
printf("d="); scanf("%d", &d);
printf("e="); scanf("%d", &e);
printf("f="); scanf("%d", &f);
if(a==c || c==e || e==a) return printf("三角形ができません。\n");
if((a-c)*(f-d)==(c-f)*(d-b)) return printf("3直線は一点で交わります。\n");
x1 = (double)(d-b)/(a-c); y1 = (double)(a*d-b*c)/(a-c);
x2 = (double)(f-d)/(c-e); y2 = (double)(c*f-e*d)/(c-e);
x3 = (double)(b-f)/(e-a); y3 = (double)(e*b-a*f)/(e-a);
printf("面積は%fです。\n", fabs((x2-x1)*(y3-y1) - (x3-x1)*(y2-y1)) / 2);
return 0;
}
if((a-c)*(f-d)==(c-f)*(d-b))じゃなくて if((a-c)*(f-d)==(c-e)*(d-b))だ。
01乙
>>753 たとえば50!を求めるプログラムが上の方にあるんだけど、
そういうのを活用して、60桁より多目の配列に格納していくのがいいかも?
nをいくつくらいまでやれば求める精度が出るのかよく知らないんだけどorz
>>760 e/50~=8.9*10^-65
だから50項ほど取れば十分
#include <stdio.h> int main() { int i, c, col, a, v[100]; for (i = 0; i < 100; i++) { v[i] = 1; } for (col = 0; col < 2 * 100; col++) { for (a = 100 + 1, c = i = 0; i < 100; ) { c += v[i] * 10; v[i++] = c % a; c /= a--; } fputc(c + '0', stdout); } fputs("\n", stdout); return 0; }
>>762 貼ってすっきりしたか?
階乗進法を用いた、特殊な場合にしか通用しないような
アルゴリズムはアルゴリズムスレで答えてやって欲しかったな。
なんかすごいのきたこれ
どうなってるのかよくわからないけど答えが出てるw
>>764 は特殊な場合にしか通用しないといってるけど、eの近似値を求めよという
きわめて特化した処理について汎用性を求めるのはなんで?
C言語に限らずALGOL系言語を数学アルゴリズムの 教育用に使うことは不適 (理由:関数という概念がそれぞれ違うので、双方に悪影響を与える)
>>767 数学でもプログラミングでも長桁計算は中心からかなり外れた領域だと思うが...
769 :
767 :2008/07/05(土) 04:49:14
まちがえました。訂正します。
x=0まわりのテイラー展開をマクローリン展開と。
>>768 それは「中心」という言葉の定義によります、というか「中心」ってなんですか?
771 :
デフォルトの名無しさん :2008/07/05(土) 05:53:34
どなたかバブルソートと配列を利用してメディアンフィルタのプログラムを作れる人はいますか?
いますがもう寝かせてくれ
776 :
デフォルトの名無しさん :2008/07/05(土) 11:25:15
>>773 そのページは見たんですが、見ても全くわからなかったんですよ。
778 :
デフォルトの名無しさん :2008/07/05(土) 13:21:34
>>777 ありがとうございます。
試してみます。
>>778 起動するときは、コマンドライン引数を2個つけてね。
たとえば
./a.out 20 10
とか。
>>374 の期限を7/23まで延長します
誰かお願いします・・・
勝手に延長しちゃって構わないの?
延長して、ええんちょ?(良いんしょ?)
>>780 解くときの考え方を羅列しておかないと自分の考えと違う解法が出てくるぜ
本当に宿題なのかどーか、非常にあやしい問題ばかりだな。 パズルの問題にせよ、大まかなデザインパターンはあるが、 その問題に応じた「工夫」(インチキ)がカギだし、 それに嵌ると底無しって奴ばかりだしw
>>762 の解法は偶然を利用したもので、無保証につき鵜呑みしないように。
787 :
デフォルトの名無しさん :2008/07/05(土) 15:54:37
[1] 授業単元:c言語プログラミング [2] 問題文 1.自然数nを与える。このとき、nの約数をすべて書き出し、その総和σ(n)を求めよ。 2.整数a,bを与える。ただしb>0とする。このとき、aをbで割ったときの商qと余りrを求めよ。ただし演算子「/」「%」を使用してはならない。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008年7月7日12時まで [5] その他の制限:標準ライブラリのみを用いること。関数の使用はできません。 よろしくお願いします。
main関数は関数か、関数ではないのか?
当然関数です、JK
>>787 1.
#include <stdio.h>
int main(void)
{
int i, n, s = 0;
scanf("%d", &n);
for(i=1; i<=n; i++) if(n%i==0) { printf("%d ", i); s += i; }
printf("\n%d\n", s);
return 0;
}
2.
#include <stdio.h>
int main(void)
{
int a, b, q;
scanf("%d%d", &a, &b);
for(q=0; a > b; a-=b,q++);
printf("q=%d,r=%d\n", q, a);
return 0;
}
>>786 1.
int i, j, s;
for(i=1,s=0; i<=5; i++) for(j=1; j<=i; j++) s += j;
2.
int i, j, s, ss, f = 1;
for(i=1,s=0; i<=5; i++) {
for(j=1,ss=0; j<=i; j++) ss += i;
s += ss * flag;
flag *= -1;
}
3.
int i, j, s, ss;
for(i=1,s=0; i<=5; i++) {
for(j=1,ss=1; j<=i; j++) ss *= j;
s += s2;
}
4.
int i, j, s, ss;
for(i=1,s=0; i<=5; i++) {
for(j=1,ss=0; j<=i; j++) ss += j;
s += i * ss;
}
5.
int i, s;
for(i=100, s=0; s < 1000; i += 2) s += i;
printf("N=%d", i - 4);
>>783 それもそうですね。
改めて
>>374 の自分的考え方。
・ある数字の書いてあるマスに注目する
・それに隣接するマスに伝播可能かを調べる
・それで一通りに確定する場所はその数字を入れて保存、確定しない場所は入る可能性有りとして次へ
・全ての数字が入っているマスでこの操作を行う
・↑で挙げた可能性を全て満足かつ全てのマスを埋められるパターンを結果として出力
役に立ちそうなデータ構造:リスト、スタック、キュー、木構造、経路探索アルゴリズム
こんな感じで。↑の考え方でダメそうだったら別の方法でも全然構わないです。
以降は単一スレ立ててお願いします。
>>793 なに一つの問題にスレ立てさせようとしてんの?
馬鹿なの?自治厨なの?
[1] 授業単元:プログラム演習 2] 問題文 構造体dataの定義が以下のように与えられている時に,実験用データファイルからデータを読み込んで,リンクドリストの中に取り込み,全てのデータを取り込んだ後に,表示するプログラムを作成せよ. struct data { struct data * next; char *num; /* 学生番号 */ int english; /* 英語 */ int mathematics; /* 数学 */ int physics; /* 物理 */ int sum; /* 合計点 */ }; 循環リストとして構成すること.合計点はファイルに書かれていないので,プログラム中で求めること. データ形式として仮定して良いこと 学生番号は4桁の整数である. (4桁の整数なので0001番などは考慮しなくて良い 学生番号,英語,数学,物理の得点カンマ(,)で区切られて欠けは無い ヒント 一文字毎に読み込む関数int fgetcを使い,一文字毎に期待したデータであるかを判定すると良い. [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 7/6 24:00
>>795 お前もいちいち目くじら立てて反応するなよ。お前こそ自己中 いね 厨だろ?
古文野郎w
>>796 一文字ずつ読み込んだ方がやりにくいと思うんだけどなぁ
バカが勝手に立てたスレを貼って何がしたいんだ?
自治厨いね いね=去ね < 辞書で調べると、出典が古文、あるいは関西弁w
>>801 うわっ、まだそんなことを思い出して、わざわざ書き込むなんて
お前の方が人間性が腐ってね?お前みたいな言動をする奴って
結局引きこもりなんだろ?かなり性格が悪いぞ。
「いね」なんて言葉しらねえよとかさわいでたやつかあ 俺が学生の頃は常識レベルだったんだが、最近は習わないのかなあ、と思ったりしたもんだ。
「いね」なんて言葉しらねえよ
ずいぶん狭い世界で生きてきた大人か、まだ若いかのどちらかなんだろうね
一月は去ぬ、二月は逃げる、三月は去る という言葉も聞いたことなかったりするのかな
問題解決手段のツールとして、それがC言語でなければならないという必然性が 薄い問題は、宿題(C言語の教育用問題)ではなく、研究課題に分類される。 それを言いだしたら、殆どの問題が研究課題となってしまうので、これは 容認度の問題。あまりかけ離れたことをすると、問題にされるかも。
宿題に答える気がないならスルーしておkだぞ? 一個人に回答を強要してないからw
>>798 その辺は「こういうやり方でやれば?」という一例で
あんまり深い意味はないようで、つまり自分で考えろと。
このスレに書いてる時点でアレですがお願いします\(^o^)/
>>807 素直に頭を使って考える問題は解けませんって言えよw
どちらかというとC言語は頭を使って考えるのが嫌な人の思考法のエミュレートが メインストリームですが何か?
意味不明w
>>811 そういう主観や主張で押し切って、言い訳するのやめないか?
そんなことをいちいち言うお前の姿がみっともない。
しかも、それ、お前がそう思っているだけで事実無根だから。
勝手に定義すんじゃねー、お前がそう思うならそうしてろって言われて
職場を追い出された口か、あんた?w
>>811 すげー思い込みだな。自分がこうと思ったら、そうでなきゃ気が済まなくて
いちいち周りに、自分の思ったことを伝えで同意を求めて、相手がそうとは思わず
かといって否定していなくても同意しなかたことに腹を立て切れて
孤立したタイプか?ちょっと落ち着け・・・別にお前一人に課せられている課題でもなければ
このスレは任意、有志者によって勝手に答えられているようなもんだから。
何ひとりで、質問者に答えられなかった責任を負ってみたり
それは出来ないけど、そういうことだからここじゃ受け付けないよみたいな
話になってんだ???落ち着け、おれもなーw
姿の見えない仮想敵を敵と誤解して、姿の見える真の敵を味方と誤解するのは愚
真の敵は自分であることに気づいたかw
>>621 すいませんわからないのでご教授お願いします。。
>>818 (・∀・)ニヤニヤ リンクと冒険しようかい?
>>822 ちょっとレベル高いス
俺まだ素人なので…もっと簡単にできませんか?
#include <string.h>
#include <ctype.h>
とりあえず上の2つは習ってないので使わずにできませんか?
825 :
796 :2008/07/06(日) 07:45:50
>>822 使わなくても大丈夫です、わかりにくかったですねスミマセン。
>>370 あとはpushとpopを定義すれば完成だョ。
int main(void)
{
char a[] = "3245**+", *p = a;
for (; *p; p++) {
switch (*p) {
case '2': case '3': case '4': case '5': push(*p - '0'); break;
case '+': push(pop() + pop()); break;
case '*': push(pop() * pop()); break;
default: return 1;
}
}
printf("%d\n", pop());
return 0;
}
828 :
704 :2008/07/06(日) 14:56:56
829 :
デフォルトの名無しさん :2008/07/06(日) 15:07:50
830 :
829 :2008/07/06(日) 15:23:28
おいおい教材で著作権のある画像使うのかよw
>>828 動作が仕様通りかは知らんが、mainの入力処理がおかしい
1. 配列idxの値が不定値なのに、配列Aの添え字として使ってるからアクセス違反が起きてる
2. fscanfの第三引数がアドレスじゃない
834 :
デフォルトの名無しさん :2008/07/06(日) 16:27:36
time(NULL)
[1] 授業単元: Cプログラミング基礎 [2] 問題文(含コード&リンク): キーボードから4桁の10進数の入力を2回受付ける. 但し,4桁の各位の数は必ず互いに異なるものが入力されるとする. A:二つの数字を同じ位ごとに比較した時,何ヶ所の位について一致しているかを表す. B:二つの数字を異なる位同士で比較した時,一致している組み合わせの数を表す. AとBの数値を最後に表示させる。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:borland c++ 5.5 [3.3] 言語:C [4] 期限: 今日中でお願いします。
>>836 #include <stdio.h>
#define N 4
int A(int *a, int *b, int n)
{
int i, cnt = 0;
for ( i = 0; i < n; i++ )
if ( a[i] == b[i] )
cnt++;
return cnt;
}
int B(int *a, int *b, int n )
{
int i, j, cnt = 0;
for ( i = 0; i < n; i++ )
for ( j = 0; j < n; j++ )
if ( i != j && a[i] == b[j] )
cnt++;
return cnt;
}
int main(void)
{
int i, a[N], b[N];
for ( i = 0; i < N; i++ ) scanf( "%1d", &a[i] );
for ( i = 0; i < N; i++ ) scanf( "%1d", &b[i] );
printf("A=%d\nB=%d\n", A(a, b, N), B(a, b, N));
return 0;
}
どなたか
>>796 お願いします
なんとか\(^o^)/
char *numが気に入らないからやらない。
841 :
822 :2008/07/06(日) 17:56:16
>>839 しばしお待ちを。21:00 にみにきてください。
遅れて申し訳ありません。
>>390 を実行しても何もできないのですが…
自分の質問は
>>388 です。
擦れ違いかもしんないですけど。 %d と %1d ってどういう違いがあるんですか?
スレ違いなんで他に行け
845 :
822 :2008/07/06(日) 20:37:32
>>845 なんでreleaseにダブルポインタを渡すようにしてるのか分からんけど、
void releaseInner(struct data* root, struct data* t) {
release(root->next);
free(root);
}
で良いのでは。
再帰がいやなら
void release(struct data* root) {
struct data* n;
>>846 途中で書き込まれた!!!
void release(struct data* root) {
releaseInner(root, root);
}
void releaseInner(struct data* root, struct data* t) {
if(t->next != root)
releaseInner(root, t->next);
free(t);
}
でどうだろう。
848 :
704 :2008/07/06(日) 20:49:04
849 :
845 :2008/07/06(日) 20:58:32
>>847 なるほど、最初の root の値を覚えとくんですね。期限もまだあることですしちょっとやってみます。
850 :
845 :2008/07/06(日) 21:05:53
851 :
850 :2008/07/06(日) 21:21:20
すみません。
>>850 はぜんぜんfree() してないことが判明しました。やっぱりhelpです。
>>848 配列idxは放置か?
for(i=0; i<n; i++) idx[i] = i;
>>852 うひょっ、既出も既出、ありきたりの探せば見つかる課題だが
↓よろしくーw
continue;
856 :
850 :2008/07/06(日) 21:52:41
バグがまだ取れません。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm にて 143行目の
/* free(p->num); */
をコードに入れると、
Linux 2.6/gcc 3.3.3 では、
$ ./a.out test.txt
readfile:num_malloc=0x804a1d9
readfile:num_malloc=0x804a221
readfile:num_malloc=0x804a269
num:2345, english:80, mathematics:90, physics:100, sum:270
num:1234, english:70, mathematics:80, physics:90, sum:240
num:0123, english:60, mathematics:70, physics:80, sum:210
release:num_malloc=0x804a269
*** glibc detected *** free(): invalid pointer: 0x0804a269 ***
アボートしました
$
とでます。cygwin/WindowsXP でも、segmentation fault が発生します。
malloc() で得た値をfree() に渡しているつもりですが、なぜ問題が発生するのでしょうか?
goto 854;
858 :
850 :2008/07/06(日) 21:53:46
他人のプログラムのバグ取りなんて誰がやるかよ。
860 :
704 :2008/07/06(日) 21:58:17
>>853 for(i=0; i<n; i++)
{
idx[i] = i;
for(h=0; h<K; h++) fscanf(file, "%1d", &A[i].letter[h]);
}
radixsort(A, idx, n);
for(i=0; i<n; i++)
{
for(h=0; h<K; h++) printf("%1d", A[i].letter[h]);
}
printf("\n");
return(0);
こうしてみたのですが、実効例変わらずです。。
>>860 これってファイルからデータの総数を読み込んで、その後に3桁の正の整数を
桁区切りで配列に格納してソートするってプログラムだよね?
sortdata2の中身は大丈夫?
>>858 二点
1.バッファオーバーフローして確保した領域を越えて書き込みをしてる
2.free に渡すアドレスが何故か +1 されてる
863 :
704 :2008/07/06(日) 22:09:54
>>861 中身はこれです。
12
1
0
3
2
6
6
0
6
2
7
5
3
3桁・・大丈夫じゃない気がしますね・・汗
どうしたらいいんでしょうか?
865 :
704 :2008/07/06(日) 22:22:37
>>864 確かに動くようにはなったのですが、課題のデータが
>>863 として与えられているので、
プログラムのほうを書き換える必要がありそうです。。
思ったよりも面倒そうなので、どなたか暇な方が居ればよろしくお願いします。(解りにくくなったので課題を上げなおさせてもらいます)
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7244.txt 課題と資料は上のURLにあります。
[3] 環境
[3.1] OS: (Windows/Linux/等々)
linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
7月7日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
866 :
850 :2008/07/06(日) 22:26:00
そんなミスする奴は初めて見たw
gcc は void* のままで計算できるからね
>>850 何やら自分の理解できる域を超えて色々やってもらったようですが
ありがとうございました。理解するのは後回しで提出させてもらいます\(^o^)/
870 :
850 :2008/07/06(日) 22:41:05
>>869 いい経験をさせてもらいました。とだけ申し上げておきましょう。
遅れてすいません、どなたか
>>388 をお願いします。
>>390 の回答では実行結果が何もでなかったので…
>>871 そのまま提出してもきっと大丈夫。
どうしても動作を確認したかったら
$ ./a.out < element.dat
で。
>>842 あの時回答した者だが
./a.out <element.dat
みたいな感じでリダイレクトして
というかそういうリクエストだったはずだが
あと0除算の例外処理してないから気になるようなら
自分で直してね
874 :
601 :2008/07/06(日) 23:34:51
>>872 ?
実行結果画面で打ち込んでも何も反応が無いのですが…
ちなみに自宅ではgccを使えないのでvisual c++2008でやっています。
>>873 リダイレクトとは実行結果画面で打ち込むことですよね?
>>874 bubblesort関数で、比較回数と交換回数用の変数をそれぞれ宣言して0で初期化する。
比較、交換が行われる度に変数を+1する。
関数の最後で表示する。
ちなみにプログラムだけではなく実行結果も求められているので、何も表示されないのはちょっと困るのです
お願いします
問題文は
>>388 で先日頂いた回答は
>>390 です
880 :
601 :2008/07/06(日) 23:59:26
>>877 ありがとうございました。無事できました。
ロダにあげてくれた方も本当にありがとうございました!
リダイレクトっていうのは簡単に言えば標準入力に手で入力する代わりに ファイルなどを読み込んだりすること visual c++はあんまり使ってないからよくわからんが オプションでリダイレクトできたりするのかもしれない というか学校がgccならcygwinなりなんなりいれた方が幸せになれると思うよ
>>878 実行ファイル(.EXE)が出来ているフォルダーを探す。
それが見つかれば解決したようなもの。
仮に
実行ファイルの名前を7171.EXE
ファイルのあるパスをC:¥Program files¥Visual Studio 2008¥Work¥としよう
「アクセサリ」→「コマンドプロンプト」
CD C:¥Program files¥Visual Studio 2008¥Work¥
start .
これで、そのフォルダーのウィンドウが開くのでelement.datをそこに
D&D
コマンドプロンプトに戻って
7171.exe <element.dat
と入力すればリダイレクト実行できたことになる。
>>885 掘れるのか?ウホッ?やらないカッーーー!
ハノイの塔は n 枚の円盤を移動するのに最低限必要な移動回数は 2^n - 1回だから、1回の移動に1秒掛かるとしたら、32枚で約136年。 誰か、ハノイの塔を攻略した枚数をギネス認定してもらってみては?w
実に面白くないレスだな
889 :
デフォルトの名無しさん :2008/07/07(月) 01:27:00
うわっ、出たよ、自分が面白くないといちいちツマンネとか お前のどうでも良い主観を意思表示する、目立ちたがりや 一言居士w そういうことを言う奴って、場の空気を悪くして 周りから嫌われて孤立したタイプだろ?wwwwwww
888 名前:デフォルトの名無しさん 投稿日:2008/07/07(月) 01:24:04 実に面白くないレスだな 実に面白くないレスだな 実に面白くないレスだな 実に面白くないレスだな 別にお前が評価しなくて良いよ?役に立たない間違い、不適切だらけの ソースを書くバカw おいっ、いつまでキャストを怠るんだよ、ボケが? (char*)忘れてんぞw
>>889 に対して「うわっ、出たよ」って思ってるのが大多数
基地外っていちいち自己主張が強くて、 相手に威圧したり罵倒してくるから分かりやすいよな 性格捻じ曲がってるよw 放置、スルーを知らない奴はどこへ言っても 自分に当り散らす奴には反発し、逆に自分が気に入らないと 場の空気も読まずに自己中で勝手な行動を取るから 周りから干される。分かりやすいよな、人間の言動ってw
894 :
892 :2008/07/07(月) 01:47:06
どうでも良いと思っているレスにレスをする奴こそ、構ってちゃんの どうでも良い奴w 結局自己主張が強いだけ。 別にお前個人がそのレスをどう思ったかなんて、誰も お前一個人を名指しして感想を求めてないけど?w お前が面白くないと思うならそう思ってりゃ良いじゃん。 まさか、お前、自分に対してでもないことで、面白くないことがあれば いちいちその場にいって ツマンネッ とか言いに行く暇人か?w あぁそうか、定年した年金暮らしのお方でしたか? 余生を過ごすための現実世界の友達でも作った方が良いぞw
896 :
892 :2008/07/07(月) 01:53:19
897 :
892 :2008/07/07(月) 01:54:42
何かノーコメントでアンカー+ソースリンクオンリーのレスが出ると荒れるようになったな
予想するに、麻呂は多分全部回答したいんでないの?で、麻呂すげえ!って 言われたいんじゃないの?そのたびに「まだまだでおじゃる」とか言ってるけどさ。 なのに、麻呂が組めない問題だったり、組めるのに誰かに先を越されると顔真っ赤、とか? まあ憶測で何か言うと今ならがっつり食いかかられそうだけれど
誰もお前を指定して面白いかどうかなんて聞いてねーじゃんかよwwww 誰もお前の思想や主観、主張まで聞いてねーってwwwwww いちいち自分に対して聞かれたわけでもないレスに対して 個人の感想なんて書かなくても良いよwwwww 2ちゃん慣れしてねーな、こいつ。それでいて、変な自身を持って ヘタレソースを書いしまって、指摘されるとファビョ〜ンw ここで出されている課題なんざ、とっくに世の中では知られている 既成事実だからw 出来たくらいで天狗の鼻でも伸ばしていらっしゃるのかね? それとも、もうかなり年を取って、常に上から目線の視野の狭い構ってちゃん? あとさ、自分が解けない課題が出ると、別にお前を指定して限定して 質問しているわけでもないのに、妙に必死にそれは自分は出来ませんが 出来ない理由がありますとか言い訳って、だからそんな奴には聞いてねーってw 解けない課題があるならスルーしても誰もお前は責めないっつーか お前がどこの誰だか分からないから無理だってw やっぱ、新学期を境に妙な新入りが紛れ込んだなw このスレ、もうかなり前からあって、今に至るまで 既出問題なんていくらでもあるから、必死にならずに ありきたりのパターンをコピペするだけで良いぞ、そんなに気を張るな、な?
>>900 つまり、すべての問題に対して、既成事実(って言葉おかしくね?)があるので、
回答を提示する必要はないってことでよい?
gdgdお前個人にしたわけでもないレスに反応して必死になってないで 課題に答えたらどうだね、ん?w
>>884 ありがとうございます。
もう一問お願いします。
[1] 授業単元:
C研究
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7254.txt [3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
Microsoft Visual Studio 2008
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C++
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
明日朝9時
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
>>902 いやあ、既成事実がありますので答えるわけには。
void order( int &x, int &y ) { if( x < y ){ int tmp = y; y = x; x = tmp; } }
答えたの?
いや、俺じゃないよ
俺でもないよ
俺じゃないけど不等号逆じゃね?
>>903 ソートの部分でミスってた。mainの中で
for(i=0; i<4; i++)
とあるが、a[3][SIZE] なんで、i<3やな・・・
>>865 >>704 #define K 3 → #define K 1
main 関数内の
---------
n=15;
for(i=0; i<n; i++) /* データの生成 */
{
idx[i]=i;
for(h=0; h<K; h++) A[i].letter[h]=(765-i*i+3*h*i)%10;
}
---------
を以下のソースに変更
---------
FILE *file;
int data, tmp;
file = fopen("sortdata2", "r");
if(file == NULL){ fprintf(stderr, "Can't open sortdata2\n"); return 1; }
fscanf(file, "%d", &n);
if(n > N || n < 1){ fprintf(stderr, "Size Error\n"); fclose(file); return 1; }
for(i=0; i<n; i++){
idx[i]=i;
fscanf(file, "%d", &data);
if(data < 0){ fprintf(stderr, "Data Error\n"); fclose(file); return 1; }
for(tmp=data, h=K-1; h>=0; h--, tmp/=m){ A[i].letter[h] = tmp % m; }
if(tmp > 0){ fprintf(stderr, "Data Error\n"); fclose(file); return 1; }
}
fclose(file);
---------
>>1 >>後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
次から気をつけてください
>既出問題なんていくらでもあるから、必死にならずに >ありきたりのパターンをコピペするだけで良いぞ まさにそれをやってるのが麻呂w 他人が過去にあげた解答のコピペ程度のことしかしてない。
>>914 なんでそこに麻呂を持ち出す???
あれはパクリでもなんでもなく、単なる改悪だから
まずこぴぺではないんだが・・・よっぽどあいつの実力に
差を見せ付けられた自分が、さもそんなのは分かりきったことで
麻呂は特別じゃないとか言いたいんだなw
あれはあれで改悪クソースだから、特別だぞw
>>914 あと、過去にあった課題も何も、今でもそんなのは普通に出てるし
ほとんど改変しなくても使える既出のものはいくらでもあるし。
過去に上げた解答は確かに使えるが、今も1から書いている奴だっているでしょ。
問題点も分かりきっているのに、わざわざ独自の不備を残したやつとかw
いや書いたコードをその直後にほぼコピペで一部だけ変えたのを貼られたことあるしw
例えばgets。未だに質問者からでもこれを使えと 敢えて問題のあるライブラリを使用しろと指定する課題も見かける。 酷い奴なんて、後からその問題点を授業で補足するかもしれんぞ なんて裏づけもないエスパーをしちゃっている奴もいるが、 それはそれでそんなことを言った奴自身が、本当の問題点を 分かってないんだろうね。単にダメといわれている程度にしか受け止めてないようで。 しかし、麻呂はそんな下手なことはしていない。レベルを下げようとしたが 失敗している蛇足なパターン。そういや、補足の指摘に対して蛇足だって 突っ込んだ必死な奴もいたっけなw まぁ、そんなもん。他人から何か言われてケチをつけられると その相手を否定して、指摘された事実関係を無視して 指摘した相手の人格否定までして自分を認めさせようって 間違った道へ進んでしまった、脱落者なのか知らんが 最近はそんなのが紛れ込んでいるから厄介。 ちゃんと問題点が指摘されている資料を提示しても、そんなのは 自分にとって問題はない、問題が起こらない範囲で入力すりゃ良いんだって 帳尻あわせにもならん屁理屈、言い訳、妥協をしているから いつまでも技能が向上しないんだよ。だから、こんな自分より 劣るであろう質問者に答えて、満足してもらって安心しているんだろう。 ここで出される課題のほとんどが、とっくに分かりきったことだというのにw 自分が知らなかったことなんて、世の中いくらでもあるだろ? それを知ってはしゃいでいる内は、まだまだ視野の狭い未熟者さ。 お前よりも何十年も先を生きて、今もなお新しいものの情報を常に 取り込んでいる人なんて、世の中いくらでもいるよ。後はそれを 必要に応じて実用しているかは話は別だがね、ワトソン君。
麻呂はレベルを下げようとしてるわけじゃなくて、もともとレベル低いだけだってw 既出の問題ぐらいしか解答してないし、ちょっと数学的なのものが出ると完全にスルーだしw
っつか、麻呂を目の敵にする点、詰まらんライバル意識だな。 奴のレベルがどの程度か、こんな分かりきった答えの課題のスレで レベルを測ろう、探ろうとしても無駄だろ。むしろ、いちいち 食いつくような粘着はキモイ。 このスレに出されている課題は、とっくの昔から知られている 分かりきった答えのあるものばかりだよ。もちっと グローバルな観点で考察してみなさい。そうすれば、 自分が知っていることが基準ではなく、この世でそんなことは とっくに知られていたことだと、歴史を学べばなおさら理解できますよ?w まぁ、まだあんたは若いんだろ?20代そこその若造が生きた年数なんて たかが知れてるよ。40、50になる頃には、大学生レベルでも 大したことじゃないって思えるから。これだけ情報化社会になって 時代が変わった今じゃ、30代になる前にはそう思えるだろ。 しかし、他人から分かりきった規定を学ぶ立場から脱却していない 未熟者じゃ、まだまだ考察力も、思想も未熟だよ。それに気づくのは 恐らく人間という人間を知ってからになるだろうけどな。 少なくとも、こんな少数の人しか来ない場所で、我こそはなんて 分かりきった課題を答えて満足しているようじゃ、いつまでも 殻に篭った視野の狭い人間で終わるよw
他人みたいに書いてるけど、お前が麻呂だってのはバレバレですからw
あと、麻呂のソースが妙なのは周知のこと。 あれにケチをつけるような、わざとらしさを理解できないKYじゃ、ねぇ。 まさかあんた、意図的とそうでないのと区別がつかないのか? まぁ、例えそうでも、このスレの質問は、もう数年前からあるこのスレの 過去ログに載っているものをそのまま使っても通用するものばかり。 第一、C言語そのものが常に変わっていくわけでもないからな。 どっちかって言うと、C言語を学ぶというよりも、アルゴリズムの方が重要だろ? そのアルゴリズムなんて、20世紀以前、それよりも昔に数学者や科学者が 提唱したものを学んでいるだけなんだよw 近年、新たに発見されたことを学ぶこともあるが、学校で学んでいることなんて 過去に発見された分かりきったことを記述した教科書の暗記程度だぞ?
麻呂にソースを真似される立場なんでライバル意識もクソもないんだがw
>>302 のソースなんて前々スレで俺が書いた奴の真似だし。
あんときもすぐ後に猿真似コード書いてたしなw
>>914 最近C言語とこのスレを知った、世間知らずの視野の狭い
お子ちゃまのあんたが可愛いよ可愛いよ
少なくとも、麻呂のソースはコピペじゃないな
かといって、今後あれをコピペして貼る気にもなれん
>>918 ,920,922
何レスにも分けて長文書くな。うpろだ使え
長文のわりには中身がないんだよな
素数だのフィボナッチだの、素因数分解だの、微積分だの、 俺らが学校で学ぶよりも、さらに戦前よりもむか〜〜〜〜し昔に 今では歴史的に有名にもなっている世界の学者さんが発見して、 学会で提唱され、世界的にも知られている既成事実なんだが、 まぁ人間なんて生まれたときは、誰しも何も知らずに生まれてくるからな。 自分が知ったことで、知らない人がいると、その人に対しては 自分は出来るだの、見下したり、出来なきゃバカにするだのやている奴は 未熟者なんでしょうな。そんなんだから、こんなスレに来て、答えて 自己満足している人生を歩んでいるのかね?詰まらん人生だぞ、そりゃ。 にしても、麻呂のクソースだけは学んではいかん。それを コピペしたものだと言う奴は、明らかに無知だろ・・・このスレの過去ログにおいても。 性帝トーマス氏に笑われて、どこの学校だ?ブラックリストに入れてやるって言われるぞw
麻呂はクソース書いてないでとっとと消えればいいのになw
自分が他人を罵倒するのはOKで、他人に突っ込まれるのはNGってどんだけ甘えん坊なんだよw
930 :
デフォルトの名無しさん :2008/07/07(月) 09:48:59
[1] 授業単元:
数学の公式
[2] 問題文(含コード&リンク):()
次の2つの積分を同時に計算するプログラムを作成してください。
できれば、小数点以下8桁まで一致する答えが出るようにお願いします。
やり方は何でもいいです。
http://freedeai.com/up/src/up8385.jpg [3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] その他の制限
なし
ここに来る奴らだけを見て判断するから悪いんだろ。 高校でも教員にいたとは思うが、大学じゃ かなり年配の方で、偉大な教授もいらっしゃる大学もあるんだが そんな人からしてみりゃ、俺らがやっていることなんて 当たり前じゃん、何をい・ま・さ・ら って思える既知の事実ばかりだぞ??? 所詮、学校で学ぶ既成事実なんて、学歴を得るために 建前、単位取得で決められた範囲内のこと。 そこで得た知識をうまく利用し、己のために利用して 生きていく人生はこれからなんだろ、あんたは。 にしても、反面教師のソースはコピペするなよw あんなもんを商売で使ったら、一気に信用を失って 仕事が入ってこなくなるぞw
ここで知識をせこせこ集めてるヤツが何をいってもなw
>>1 > 気に入らない質問やその他や発言はスルーの方向で。
まぁ、このテンプレもかなり前からあるわけだが、それにすら気づいておらず
やたらと噛み付いてくる奴は、周りが見えないKYな奴なんでしょう。
>>921 麻呂は麻呂でそれは別人でおじゃるが?
妄想はほどほどにするでおじゃるよ。
>>923 うわっ、なんだこいつ、単なる自意識過剰か。
自分は出来る、出来るって言いたいだけかw
それで低レベルだと見下す麻呂をいちいち名指しする意味って何???
あぁ、そうか、自分はレベルが高いんだと思いたいのかw
しつこいようだが、猿真似とか言う以前に、そのソースは
お前が独自に編み出したかのように言っているみたいだが
それも既成事実だよ。しかも、お前が先に書いたんだっけ?
ソースに欠点があって、見事にその部分を改善されてんじゃんw
所詮お前の言っていることは、負け惜しみ。出来ない奴が
自分は先に出来た、みたいなことを言って、次に迫る
新しい世代を恐れているだけだろ。ずいぶん間違った感覚
思想、主義で長いこと生きてしまったんだな。
お前が苦労したことも、今では楽に出来る時代だ。
悔しいだろうが、お前みたいな時代遅れは今後必要とされないよ。
大人しく身を引け、思い上がりが激しい引きこもり。
>>923 うわうわっ、なんだこいつ、結局自分よりできる奴がいても
自分の方ができると思いたいだけか、終わってんな。
お前以外にどんだけこの世に人がいると思ってんだ?
こんな場所でしか強がれない、他に行くとレベルが低いと見下されて
外に出られなくなった負け犬か?もし腕に自身があるなら
それなりの場所で活動すりゃ良いだろ、こんな不特定多数の
誰だかわからん場所で、できの悪い奴を見て安心してないでさぁw
あと、お前だろ、このスレで我先にと必死にこのスレに直接書き込んで
先を急ぐがために、うpロダを使うのが面倒くさいとかゴネてたのは。
書き込めば訂正しようが、間違ったものがそのまま残るからバツが悪いんだろうけど
後で言い訳してしまうくらいなら、うpロダでも使えば良いじゃんw
それから、麻呂なんてしょぼいソースを書く奴をなんで目の敵にする?
そこからして、お前が実は恐れているとしか思えないんだが?
強がってみたレスが、俺が先に書いたのを真似たんだろ?って
それじゃ、このスレに過去ログにもある課題と同じものを書いた奴は
すべて真似事だな、とっくに答えや模範解答が分かりきっているにもかかわらずw
もっとも、お前はこのスレに来て、自分が気づかなかったことに気づかされて
焦ってんだろ。だから未熟だって言われるんだよ、ここにいても。
だるいなぁ・・・
http://pc11.2ch.net/test/read.cgi/tech/1212895856/462 こいつか、直接ここに書き込む奴ってのがどんな奴かよーく分かったよw
しかも、その後、改良が加えられて、そっちが良くて悔しかったんだろうな。
別にこれといった改善でもないが、自分が先に出したんだ、
著作権は俺にあるってかぁ?悪いがこういった手法には
著作権ってのはめったなことが無い限り認められないんだよ。
認めてしまうと、模範回答でさえ他で使えなくなってしまうしな。
あと、こんなの理屈に対しての単なる手法、アルゴリズムに過ぎないから。
それらは当然、学校で学んだことが基本、基礎として応用されているに過ぎないんだよw
悔しかったら、こんな場所でソースなんて晒さずに、独自に企業秘密で開発でもしてたら?
しかし、お前が実用しているものは、ほとんど世に知られているものばかりだろうね。
余程、独自の妙な仕様、あるいはまだ世に知られておらず、研究に研究を重ねて改良し
自分がこの世で新発見をしたものでなきゃな。どんだけ狭い考えをしているか、よーく分かったよ
不特定多数が名乗って、ふざけて真似ていている奴もいる実体のない
文字列に過ぎない 麻呂 を目の敵にするなんてw
俺も 麻呂 は使ったことがあるが、他にも使っている奴がいたんでやめたよ。
だから言っただろ、こんなスレにはお前以外にも回答者はいると。
とりあえず、スレ違いで、麻呂なんか実体のない奴を相手にするのもバカらしいんで
この辺にしとくわ。他の回答者もいるって言っておいて、これじゃ邪魔だしなw
3行くらいが掲示板では限度だと思うが、そのレベルを遙かに超えて言い争ってるのな。珍しい
[1]プログラミングC [2]1,3,5,…,17,19で割り切れる最小の数を求めよ [3]LINUX C [4]今週中 よろしくお願いします
944 :
930 :2008/07/07(月) 12:16:24
945 :
デフォルトの名無しさん :2008/07/07(月) 12:19:21
[1] 授業単元: C言語プログラミング [2] 問題文メモリや実行時間の許容範囲内の、最大完全数、最大友愛数、および最大婚約数を算出プログラムを作成[3] 環境 [3.1] OS: Windows [3.3] C言語・C++ [4] 期限: ([2008年7月8日12:00まで よろしくお願いします。
947 :
930 :2008/07/07(月) 12:23:59
>>922 あー、やっと言語が云々よりもアルゴリズムの方が大事と分かってくれたか。
それならgets使おうがscanf使おうが問題なかろ?
>>942 別に言い争ってないんだよね
歩いてたら目にゴミが入ったとかそういう感じ
>>949 痛い痛いと一人で大騒ぎしてたってとこか
952 :
デフォルトの名無しさん :2008/07/07(月) 13:51:22
>>943 return 19*17*15*13*11*3*7;
953 :
デフォルトの名無しさん :2008/07/07(月) 14:44:27
素数じゃないもの入れたら最小公倍数にならなくね?
って15でよかった。ごめん。
>>913 はい、すいません。ありがとうございます。
しかしbucketsort関数内の処理がおかしいのか、
B[0]
B[1]
・
・
というのが無駄に2回ほど出てくるのですが、どうすればいいんでしょうか?
アルゴリズムというキーワードくらい難しい概念は無い。 仏教とかの「無」の概念と同じ位の難しい宗教用語だ。 気軽に使うわないほうがいいぞw
>>959 してませんでした・・\(^o^)/
ご迷惑おかけしました、本当にありがとうございました!
>>959 すいません少し質問なのですが・・
for(tmp=data, h=K-1; h>=0; h--, tmp/=m){
A[i].letter[h] = tmp % m;
この部分は何をしているのでしょうか?
tmpを用意する意味、A[i].letter[h] = tmp % mになる意味、/=はなんなのか。。
よければご教授お願いします
965 :
デフォルトの名無しさん :2008/07/07(月) 17:46:23
>>964 見た感じ数字をm進数変換して、各桁を文字列に入れているように見えるけどどうなのかな。
問題が流れてるのであってるかどうか不明す。
連続した数字を、各桁ごとに分割してるようですね。 12345 というデータがあれば、配列に 1 2 3 4 5 の5つの要素が入る。 出題時にデータファイルの形式を指定していなかったので回答者が決めた 形式になったんですかね。 扱いやすい形式とは思えないけれど、指定しなかったのならしょうがないかな。
>>968 for(tmp=data, h=K-1; h>=0; h--, tmp/=m){
A[i].letter[h] = tmp % m;
は
for(h=K-1; h>=0; h--, data/=m){
A[i].letter[h] = data % m;
じゃダメなんでしょうか?tmpを用意する意味がいまいち・・
それと/=ってなんなんでしょう?ぐぐっても出てこないのです。。
回答者の方ごめんなさい。データファイルの形式は使いにくくなかったです。
>>969 /= は複合代入演算子といいます。
a /= b は a = a / b と同じです。
その処理の後でdataを使わないことが保証されているのであれば
tmpを使わなくてもいいと思いますよ。
>>969 最初作ったときに、エラーメッセージ用にdataの値がほしかったから、
tmpを用意しました(提示したソースではいらないです)
>>970 無問題
975 :
デフォルトの名無しさん :2008/07/07(月) 19:11:11
>>973 ・2次元配列 calendar を new を使って純粋に2次元配列として動的に確保するようにする
・メモリリークの検査を行う
上記の二つの条件の部分のみ抜粋
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
const int rsize = 6;
const int csize = 7;
int **calender;
try{
calender = new int* [rsize];
for(int i = 0 ; i < rsize; i++)
calender[i] = new int[csize];
}catch(std::bad_alloc){
cerr << "メモリーアロケーションエラー";
exit(EXIT_FAILURE);
}
for(int i = 0; i< rsize; i++)
for(int j = 0; j < csize; j++)
calender[i][j] = 0;
for(int i = 0 ; i < rsize; i++)
delete [] calender[i];
delete [] calender;
return 0;
}
>>374 はもうここにいる人達では無理、でFAですか?
誰一人として考えてくれている気配すらない…
残念ながら、釣りとしか思えないのでね。
979 :
デフォルトの名無しさん :2008/07/07(月) 21:26:35
>>965 モンテカルロ法というものの応用だと思うのですが、どなたかお願いいたします・・・
期限まだ先でしょ?7/23?
981 :
デフォルトの名無しさん :2008/07/07(月) 21:31:31
>>976 #include <stdio.h>
#define N 100
int main()
{
int num[N], input, i, j;
for(i = 0; i < N; i++)
{
scanf("%d",&input);
if(input == 0)break;
for(j = i; j > 0; j--)
{
if(num[j-1] > input)num[j] = num[j-1];
else break;
}
num[j] = input;
}
for(j = 0; j < i; j++)printf("%d\n",num[j]);
return 0;
}
>>977 考えるだけなら。
数字どおりのブロック数が出来てるかの正誤判定作って後は総当り。
>>980 まぁそうなんですが。
あまりにリアクション無いんで、このまま次スレ行ったら風化されそうな気がして…
>>983 ありがとうございます。よろしければコードのうpを…
>>977 この問題を一度も解いたことがない、ただし類似の問題は解いたことがある手練が
効率なども考慮しながら解いたとして、ゆうに1、2時間はかかりそうな問題。
俺は手練じゃないが、10時間みっちりあれば(簡単な枝刈も実装して)解けると思う。
こんな問題が1週間の期限で宿題に出る、そんな授業を受講しているあなたの
レベルはいったいかほど? まろさんより上じゃないのか?
>>987 最初の期限は俺のミスですw
最初からちゃんと猶予は1ヶ月ありました
自分のレベルですが、週2(講義1+実験1)の授業受け初めて3ヶ月のド素人もいいとこです
>987 1〜2時間か。すごい早いね。 俺はもう駄目だ。昨日からずっと考えてるが、全然だ。
>>989 うーん。とりあえず、バックトラックというキーワードで調べてみてはいかが?
>>983 のヒントを実装するための手法だよ
このスレに出されている問題なんて、課題の内容のパターンが変わろうが 結局は過去ログに出たような問題ばかり。それをさも、自分が初めて解いたからって それだけで得意気になっている奴は痛過ぎる。本当に世間知らずなんだろうね。 お前、誰に学校で学んだんだ?w 教員、教授が何もせずにそんな立場に 立っていると思ってんのかよ?過去に抱えた生徒だって、とっくの昔に 習った既知のものばかりだぞw 自分以外に知らない奴がいると、得意気になるやつって 自分が知らないことを知っている奴を見て、気に入らないと煽るタイプだろ。 バレバレなんだよw こっちは何年人間社会で人間という人間を見てきたと思ってんだ。 お前みたいな、目の前に自分基準でムカつく奴がいたら、そいつを徹底的に 罵倒して煽っている奴なんて、現実世界でも何人も見かけたが、そういうやつって 狭い社会、つまり小学校、中学校の数名のクラスの中で偉そうにしていた、 社会全体から見るとお山の大将に過ぎない 可愛いよー 可愛いよー な ちっぽけな強がっているガキにしか見られてないって気づいてねw
そして、みんな共通の事柄を学んでいるのに、自分が先に答えたくらいで 後から答えた奴が、全部自分の真似をしたと思い込む、どんだけ猿並みの 知能なんだよw 予習を忘れた奴でも、授業でさっと覚えて答える優秀な奴も 世の中いくらでもいるぞw
こんだけ長文連投して説得力があるとでも思ってるんだろうか。 図星をつかれて顔真っ赤にしか見えないんだが。
いまから朝までノンストップフィーバータイムだなw
もうそんな時間かよ
ちなみに誰が誰を罵倒してるの?
いつもの長文連投基地外が見えない敵を罵倒してる
自己紹介乙ってことか
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。