C/C++の宿題を片づけます 50代目
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:09:01あなたが解けないC/C++の宿題を片づけます
――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
―――――――――――――――――――――――――――――――
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: Windows/Linux/等々
[3.2] コンパイラ名とバージョン: gcc 2.9 VC 6.0等
[3.3] 言語: C/C++/どちらでも可 のいずれか
[4] 期限: [yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか (「できるだけ早く」は不可)
[5] その他の制限: どこまで習っているか、標準ライブラリは使ってはいけない等々
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【前スレ】
49代目: http://pc8.2ch.net/test/read.cgi/tech/1123661447/
0002名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:10:0147代目: http://pc8.2ch.net/test/read.cgi/tech/1120522752/
46代目: http://pc8.2ch.net/test/read.cgi/tech/1119514274/
45代目: http://pc8.2ch.net/test/read.cgi/tech/1118165596/
0003名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:10:3643代目: http://pc8.2ch.net/test/read.cgi/tech/1115794784/
42代目: http://pc8.2ch.net/test/read.cgi/tech/1113811213/
41代目: http://pc8.2ch.net/test/read.cgi/tech/1109542053/
40代目: http://pc5.2ch.net/test/read.cgi/tech/1107625122/
39代目: http://pc5.2ch.net/test/read.cgi/tech/1106650397/
38代目: http://pc5.2ch.net/test/read.cgi/tech/1105541524/
37代目: http://pc5.2ch.net/test/read.cgi/tech/1103913840/
36代目: http://pc5.2ch.net/test/read.cgi/tech/1102753497/
35代目: http://pc5.2ch.net/test/read.cgi/tech/1101568895/
34代目: http://pc5.2ch.net/test/read.cgi/tech/1100530682/
33代目: http://pc5.2ch.net/test/read.cgi/tech/1097932699/
32代目: http://pc5.2ch.net/test/read.cgi/tech/1097592876/
31代目: http://pc5.2ch.net/test/read.cgi/tech/1095075678/
30代目: http://pc5.2ch.net/test/read.cgi/tech/1091954342/
0004名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:11:4528代目: http://pc5.2ch.net/test/read.cgi/tech/1089974839/
27代目: http://pc5.2ch.net/test/read.cgi/tech/1089448445/
26代目: http://pc5.2ch.net/test/read.cgi/tech/1088860889/
25代目: http://pc5.2ch.net/test/read.cgi/tech/1087929711/
24代目: http://pc5.2ch.net/test/read.cgi/tech/1086612317/
23代目: http://pc5.2ch.net/test/read.cgi/tech/1085149383/
22代目: http://pc5.2ch.net/test/read.cgi/tech/1083050221/
21代目: http://pc5.2ch.net/test/read.cgi/tech/1078157730/
20代目: http://pc5.2ch.net/test/read.cgi/tech/1075217631/
19代目: http://pc5.2ch.net/test/read.cgi/tech/1073566342/
18代目: http://pc5.2ch.net/test/read.cgi/tech/1071407728/
17代目: http://pc5.2ch.net/tech/kako/1070/10704/1070469896.html
16代目: http://pc5.2ch.net/tech/kako/1069/10698/1069837000.html
15代目: http://pc5.2ch.net/tech/kako/1068/10689/1068950713.html
0005名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:12:2913代目: http://pc5.2ch.net/tech/kako/1064/10645/1064541405.html
12代目: http://pc5.2ch.net/tech/kako/1060/10607/1060706382.html
11代目: http://pc5.2ch.net/tech/kako/1058/10582/1058283913.html
10代目: http://pc5.2ch.net/tech/kako/1057/10570/1057070174.html
09代目: http://pc5.2ch.net/tech/kako/1055/10559/1055944101.html
08代目: http://pc5.2ch.net/tech/kako/1055/10550/1055056940.html
07代目: http://pc5.2ch.net/tech/kako/1053/10539/1053963794.html
06代目: http://pc5.2ch.net/tech/kako/1053/10530/1053045530.html
05代目: http://pc5.2ch.net/tech/kako/1051/10515/1051594046.html
04代目: http://pc5.2ch.net/tech/kako/1045/10450/1045074808.html
03代目: http://pc5.2ch.net/tech/kako/1041/10419/1041992392.html
02代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
01代目: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html
0006名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:18:21C言語の宿題で、フローチャートと同じプログラムを組んでこいと
言われたのですが、その中に
「〜コードをキーとして、〜ファイルを読む」というのが□(処理ですよね)
で囲んでありました。
C言語で「」の処理を1文で出来るものがありましたら、教えてください。
自分ではwhileで繰り返す方法以外分かりませんでした。
0007名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:21:580008名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:31:09COBOLみたいな問題だなwwwww
0009名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:34:280010名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:42:331文でやれという宿題じゃないだろ?
0011名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:42:56申し訳ない。
[1] 授業単元: C演習
[2] 問題文(含コード&リンク): ごめんなさい。文は上記の通りです。
渡されたプリントにフローチャートが書いてあって、その通りに作ってこいと。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VC6.0
言語: C
[4] 期限: 今月の12日まで
[5] その他の制限: 特になし。とにかくその通り動けばいいとのこと。
>>9
ごめんなさい。書き方が悪かったです。
出庫先商品別売り上げ月報ファイルというのを作るんですが、
その渡されたフローチャートに
「T_出庫先コードをキーとして、出庫先マスタファイルを読む」と書いてありました。
コードは数字です。
0012名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:48:23whileで繰り返せ。
0013名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:50:500014名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:54:18たぶん1文では無理。
一応↓も1文だけど。
while (fscanf(fp ... ) == ...) if (code == ...) val1 = ... , val2 = ... ;
0015名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:57:34みなさんありがとうございました。
while文を使ってがんばってみようかと思います。
遅くに本当にありがとうございます。
0016名無しさん@そうだ選挙に行こう
2005/09/10(土) 23:24:170017名無しさん@そうだ選挙に行こう
2005/09/11(日) 12:02:23既に何回か話題になっているが。
0018名無しさん@そうだ選挙に行こう
2005/09/11(日) 13:26:370019名無しさん@そうだ選挙に行こう
2005/09/11(日) 13:40:25shell32.dllを書き換える方法がわかりません。
環境は、WindowsXP Home Editionを使用しています。
WFP(システムファイル保護)の為、shell32.dllを書き換える事が出来ません。
この方法さえわかれば、なんとか出来るのですが...
取り敢えず、試した方法として、
レジストリのRunOnceにブチ込んで、起動時に書き換える >> 既に使用中の為失敗
C:/WINDOWS/dllcache/以下を削除してキャッシュを削除後、ファイル入れ替え
>> 入れ替えは成功しますが、"システムファイルに変更がありました""Windows Install CD"をドライブに挿入して下さい、等のメッセージが、つらつらと。
そのダイアログを表示させずに入れ替えてしまう方法は無いものでしょうか。
どうぞ、よろしくお願いします。
0020名無しさん@そうだ選挙に行こう
2005/09/11(日) 13:42:020021名無しさん@そうだ選挙に行こう
2005/09/11(日) 13:48:32これって宿題?
というか、プログラミングの内容じゃないし、激しくスレ違いな予感。
聞くならWindows板へどうぞ。
ここのWindows関連スレや質問スレでも答えてくれるかもしれないけど。
まあ、何にしてもシステムファイルを無闇にいじるものじゃない。
0022名無しさん@そうだ選挙に行こう
2005/09/11(日) 13:51:09>1
乙
002319
2005/09/11(日) 14:01:33そこを、C++を使って、セーフモードで起動しなくとも、
せめて、ダイアログのボタンを押すだけ、その後、再起動一発でシステムファイルを書き換える術を知りたくて。
0024名無しさん@そうだ選挙に行こう
2005/09/11(日) 14:21:59もう一度先生に問題を聞き直した方がいいよ。
0025名無しさん@そうだ選挙に行こう
2005/09/11(日) 14:42:32>>23
C++でやるなら、Win32 APIを使って
・ダイアログのボタンを押す → FindWindow()+PostMessage()
・再起動(ry → ExitWindowEx()
できるかどうかは知らん。
他に思いつくのはキーボードマクロ+バッチファイル(orWSH)くらい。
後は該当スレへどうぞ。ここには来なくていいから。
0026名無しさん@そうだ選挙に行こう
2005/09/11(日) 15:13:59[2] 問題文(含コード&リンク):windowsで動くゲームを作る
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: C++しか知らないでつ
[4] 期限:今日中
[5] その他の制限: テトリスを作るぐらいの知能はあります。
しかし、おいらは【迷路】を作りたいと思っています
スタートからゴールまで適当なキャラが十字キーで
移動できて、時間制限をつくり、最後にランキング的
なものが表示されるような迷路にしたいと思います。
できれば、高クオリティ高品質なものを・・・・
0027名無しさん@そうだ選挙に行こう
2005/09/11(日) 15:15:540028名無しさん@そうだ選挙に行こう
2005/09/11(日) 15:18:15時間無いならテトリスでもいいじゃん。
クオリティ高いのを作りたいって気持ちはわかるが、
それと納期を天秤にかけてよく考えてみ。
つか、GUIを1から作って今日中は無理。
0029名無しさん@そうだ選挙に行こう
2005/09/11(日) 15:21:24今日中って具体的な時間がわからんが、暇なんで朝までにはできる・・・かな。
003026
2005/09/11(日) 15:21:59>>28
そこをなんとかw
0031名無しさん@そうだ選挙に行こう
2005/09/11(日) 15:22:17テトリスも迷路も大差ないんだがな。
0032名無しさん@そうだ選挙に行こう
2005/09/11(日) 15:25:25http://donichi.wizry.com/index.php?page=list&libpage=0&libid=A0015
003326
2005/09/11(日) 15:28:48これをつくるのに1週間ほどかかりました
0035名無しさん@そうだ選挙に行こう
2005/09/11(日) 15:39:33まさかそのソースをそのまま提出する気じゃないよな・・・?w
003626
2005/09/11(日) 15:40:14参考ですよ、あくまでも参考。
0037名無しさん@そうだ選挙に行こう
2005/09/11(日) 15:49:45http://www.nilab.info/wiki/%cc%c2%cf%a9%ba%ee%c0%ae%a5%a2%a5%eb%a5%b4%a5%ea%a5%ba%a5%e0.html
0038名無しさん@そうだ選挙に行こう
2005/09/11(日) 15:55:23あふぉかぶぁかかと。
0040名無しさん@そうだ選挙に行こう
2005/09/11(日) 16:15:04ハァ?自分で頑張るんだろ?
0041名無しさん@そうだ選挙に行こう
2005/09/11(日) 16:17:23ただし、N88-BASIC(86)とかDISK-BASICとか、精々C w/Motif しかないけど。
0043名無しさん@そうだ選挙に行こう
2005/09/11(日) 16:30:14>>41は釣りだからやめとけw
つか、ゆとり世代は2chでのメアド晒しに危機感を感じないのか・・・
004426
2005/09/11(日) 16:31:280045名無しさん@そうだ選挙に行こう
2005/09/11(日) 16:44:04あのな、「GUIかC++か」、っていうお前の一文はな、
「windowsかコンピュータか」、っていうのと同義なの。。
0047名無しさん@そうだ選挙に行こう
2005/09/11(日) 16:54:27質問投げても返答無いし。
>>26
ここに書き込んでる暇があったらソース書けよw
0048名無しさん@そうだ選挙に行こう
2005/09/11(日) 17:01:00いちおう、望んでるレベルが分かったのでなんとか。
Windowに文字を書くだけでいい、ほぼコンソールなプログラムだな。
ハイスコアうんぬんがあるんで、ちょっと手間が・・・ああ・・・メッセージボックスで代用でいいか。
まあ、朝までにやっとくよ。
004949代目952改定版
2005/09/11(日) 18:31:08[2] 問題文(含コード&リンク): 下記に記載
[3] 環境
[3.1] OS: Windows2000
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C言語でお願いします。
[4] 期限: [2005年09月11日23:59ぐらいまで]
[5] その他の制限: C言語2ヶ月ぐらい勉強、下記に記載
出力フォーマットからしたの1回目と2回目を出力してほしいです
選挙は行って来ました!
$以外は固定出力文字。
構造体の変数にはなにかしらの値が入ってます。(可変)
$を構造体のコメント文の変数にあわせて出力してください。
みなさんよろしくお願いします。
0050名無しさん@そうだ選挙に行こう
2005/09/11(日) 18:40:05は?
0051名無しさん@そうだ選挙に行こう
2005/09/11(日) 18:41:36意味わかんない。終了。
0052名無しさん@そうだ選挙に行こう
2005/09/11(日) 18:43:060053名無しさん@そうだ選挙に行こう
2005/09/11(日) 18:49:37952 名前:名無しさん@そうだ選挙に行こう[] 投稿日:2005/09/11(日) 10:09:17
[1] 授業単元: プログラミング宿題
[2] 問題文(含コード&リンク): 下記に記載
[3] 環境
[3.1] OS: Windows2000
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C言語でお願いします。
[4] 期限: [2005年09月11日17:00ぐらいまで]
[5] その他の制限: C言語2ヶ月ぐらい勉強、下記に記載
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/912.txt
963 名前:952[] 投稿日:2005/09/11(日) 12:50:39
みなさんすみません、構造体の変数の中にはなんかしら値がはいり(可変)、
コメント文に$3とか$4とか$5の書いてある変数にあわせて出力する。
あとお約束を知らなくてすみません。今度は返します!!
これでわかりますか?
頼むから前スレの>>967と>>968を読んでくれ
0054名無しさん@そうだ選挙に行こう
2005/09/11(日) 19:16:04選挙にいける年齢なのだから、もうちょっと考えような。
0055名無しさん@そうだ選挙に行こう
2005/09/11(日) 20:32:390056名無しさん@そうだ選挙に行こう
2005/09/11(日) 20:55:40頼むから↓に反応してくれ。
特に968の方。
−−− ここから −−−−−−−−−−−−
967 名前:名無しさん@そうだ選挙に行こう 投稿日:2005/09/11(日) 13:00
>>963
煽りじゃなくってさっぱり分からん
もう時間ないんだろ?もちついて何すればいいのか教えてくれ
課題の問題文丸ごとコピペの方がいいかもな
968 名前:名無しさん@そうだ選挙に行こう 投稿日:2005/09/11(日) 13:08
はぁ・・・俺はESP対策班ではないのだが。
>>963
とりあえずいくつか質問
1) このプログラムは何をするプログラム?
2) 最終的にprintfの羅列に合わせて結果を出力するようにすればOK?
3) $3とか$4とかの内容はどうやって取得or計算する?
4) 中でCSVファイルを読み込むみたいだけど、その内容は?
5) C言語なのに構造体メンバにCString(C++クラス)が入っててもOK?
つか、>>967の言う通り問題をそのまま貼った方が早いかも。
−−− ここまで −−−−−−−−−−−−
0057名無しさん@そうだ選挙に行こう
2005/09/11(日) 20:59:000058662
2005/09/11(日) 21:11:51[2] 問題文(含コード&リンク):文字列と削除文字列を入力し、文字列の中から削除文字列を削除。
使用する標準関数:strncmp()、strcpy()、strlen等。
[3] 環境
[3.1]OS:Windows
[3.2]コンパイラ名とバージョン:BCC
[3.3]言語:C
[4] 期限:明日の午前頃まで。
[5] その他の制限:
お願いします。
0059名無しさん@そうだ選挙に行こう
2005/09/11(日) 21:16:19・インターフェース(関数プロトタイプ)
・文字列"ABCBA"、削除文字列"AB"の時の動作
・文字列"ABABA"、削除文字列"ABA"の時の動作
を教えてくれ。
0060名無しさん@そうだ選挙に行こう
2005/09/11(日) 21:22:09はぁ?
ABCBA から AB 消し -> CBA
だろが?
そんな事より、 >58 よ
ABCBCA から BC を消すとき AA とすんの?
0062名無しさん@そうだ選挙に行こう
2005/09/11(日) 21:27:450063名無しさん@そうだ選挙に行こう
2005/09/11(日) 21:30:03特定の文字を削除ということもあるからな。それかどうか確認したかったわけだ。
文字列とは書いてあるが、えすぱーせにゃならんからな。
0064名無しさん@そうだ選挙に行こう
2005/09/11(日) 21:30:150065名無しさん@そうだ選挙に行こう
2005/09/11(日) 21:31:440066名無しさん@そうだ選挙に行こう
2005/09/11(日) 21:37:580067662
2005/09/11(日) 21:38:50CAAABBBCからABのときはCAABBCとなるようにお願いします。
載っている実行の例です。
文字列:ABCDEFAABCDABC
削除文字列:ABC
結果:DEFAD
0068名無しさん@そうだ選挙に行こう
2005/09/11(日) 21:56:03strncmpを使うってことは文字列の単純比較で検索するってことだろ
でもそうするとstrcpyの使い場所が無いなー
0069名無しさん@そうだ選挙に行こう
2005/09/11(日) 21:56:12例があるなら何故最初から出さない?あぁ?
0070名無しさん@そうだ選挙に行こう
2005/09/11(日) 21:56:380071名無しさん@そうだ選挙に行こう
2005/09/11(日) 21:59:31別に必ず使えというわけではないのではないだろうか。
0072名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:00:24概要だが。
char *from, *to, *skipstr;
size_t len;
while (*from) {
if (strncmp(from, skipstr, len) == ) {
from += len;
} else {
*to++ = *from++;
}
あ、たしかにないな・・・strcpy()
0073名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:01:10#include<string.h>
char*strremove(char*str,char*remove_str){
size_t remove_str_len = strlen(remove_str);
char*i=str,*j=str;
if(remove_str_len)do
while(!strncmp(j,remove_str,remove_str_len))j += remove_str_len;
while(*i++=*j++);
return str;
}
#include<stdio.h>
int main(){
char source[80],remove[80];
printf("文字列:");scanf("%s",source);
printf("削除文字列:");scanf("%s",remove);
printf("結果:%s",strremove(source,remove));
}
0074名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:01:420075名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:02:190076名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:02:54ツメツメなコーディングスタイルだなー
007749代目952改定版
2005/09/11(日) 22:04:511) このプログラムは何をするプログラム?
ただ構造体の変数をつかって$に合わせて表示するだけのプログラムです
2) 最終的にprintfの羅列に合わせて結果を出力するようにすればOK?
OKです
3) $3とか$4とかの内容はどうやって取得or計算する?
$には値が入ってると思ってください。あとで適当に数値を入れます。
4) 中でCSVファイルを読み込むみたいだけど、その内容は?
これも適当に値が入ってます。
5) C言語なのに構造体メンバにCString(C++クラス)が入っててもOK?
Cって言ってたんですけどならべくCでってことなのでC++を使ってもいいです。
007849代目952改定版
2005/09/11(日) 22:09:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/915.txt
よろしくお願いします。
0079名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:10:070080名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:13:58漏れも本物のエスパーに会ってみたい
0081名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:14:47ニーーーート
0082名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:14:570083名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:21:550084デフォルトの名無しさん
2005/09/11(日) 22:24:07#include <stdio.h> #include <stdlib.h> #include <string.h>
struct MJlist {
char name [20]; int homerun;
struct MJlist *pointer; };
int main (void) {
struct MJlist *head = NULL, *tail = NULL, *temp;
char name[256]; int homer;
for (; ; ) {
printf("batter?:"); scanf("%255s", name); if (!strcmp(name, "end")) break;
printf("homer?:"); scanf("%d", &homer);
temp = (struct MJlist*)malloc(sizeof(struct MJlist));
strcpy(temp->name, name);
temp->homerun = homer; temp->pointer = NULL;
if (head != NULL) tail->pointer = temp; else head = temp;
tail = temp; }
temp = head;
while (temp != NULL) {
printf("batter:%s, homer:%d\n", temp->name, temp->homerun);
temp = temp->pointer; }
while (head != NULL) {
temp = head; head = head->pointer;
free(temp); }
return 0; }
0085名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:27:29>>77はESPを利用したプログラミングか何かを研究してる期間のエージェントで
わざとエスパーにしか解けないような出題をして本物がかかってくるのを待ち構えt(うわなにをs
0086名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:31:300087名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:32:093番と4番、適当と答えられても困る。
はっきりさせてこい。
0088名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:33:31#include <stdio.h> #include <stdlib.h> #include <string.h>
struct MJlist {
char name [20]; int homerun;
struct MJlist *pointer;};
int main (void) {
struct MJlist *head = NULL, *temp;
char name[256]; int homer;
for (; ; ) {
printf("batter?:"); scanf("%255s", name); if (!strcmp(name, "end")) break;
printf("homer?:"); scanf("%d", &homer);
temp = (struct MJlist*)malloc(sizeof(struct MJlist));
strcpy(temp->name, name);
temp->homerun = homer; temp->pointer = head;
head = temp;}
temp = head;
while (temp != NULL) {
printf("batter:%s, homer:%d\n", temp->name, temp->homerun);
temp = temp->pointer;}
while (head != NULL) {
temp = head; head = head->pointer;
free(temp);}
return 0; }
008977
2005/09/11(日) 22:42:16に仮の値が書いてます。例があります。
0091名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:55:04SaveQCResult()だけ書いてほしいってことか?
009277
2005/09/11(日) 22:59:59はい。よろしくお願いします。
0093名無しさん@そうだ選挙に行こう
2005/09/11(日) 23:09:35最終的に何でtrue/falseの判定をして値を返すのかとかが
わからなくてもこの手のプログラムって作れるもんなの?
009477
2005/09/11(日) 23:51:41ただ出力ファーマットの出力するプログラムを作って来いって言われました。
自分が考えたのただprintfで固定を作成して、、
あとは変数を$に合わせて出力しようと思いました。。
0095デフォルトの名無しさん
2005/09/12(月) 04:54:19寝ぼけてるんで違ってるかも知れないが、ざっと見た感じじゃ
printfで出力するときに、アロー演算子使って構造体の内容参照して
表示させていけばいいだけじゃないのか?
処理といえるようなのはせいぜいlocaltimeでtime_tから変換するぐらいだとおもうが
0097デフォルトの名無しさん
2005/09/12(月) 06:54:190098デフォルトの名無しさん
2005/09/12(月) 07:41:130099デフォルトの名無しさん
2005/09/12(月) 11:09:55まあ、自業自得だな。
そこそこ技術力があって、なおかつアルゴリズムのヒントが出てるのに
ソースが出てくることを期待して楽をしようとしたのがそもそもの間違い。
・・・と、ここまで書いて気付いたが、
別に>>96はやってないとは書いてないので、
もし、一晩かけて自分でちゃんとプログラム組んでだならエライ。
010077
2005/09/12(月) 12:46:32サンクス
小数点の桁数に構造体の変数って使えるのですか?
0101デフォルトの名無しさん
2005/09/12(月) 13:45:26010277
2005/09/12(月) 14:00:04%5.QCFUNCRESULT.nDarkAveFltPointf
0103デフォルトの名無しさん
2005/09/12(月) 14:23:01('A`)
お前は本当にprintfを使ったことがあるのかと小一時間ほど問い詰めない
0104デフォルトの名無しさん
2005/09/12(月) 14:28:34問い詰めないのか・・・!w
010577
2005/09/12(月) 14:34:240106103
2005/09/12(月) 14:52:352ヶ月の間何を勉強してきたのかわからんな…。
とりあえずprintfの使い方について調べろ。ググれば例が腐るほど出てくる。
で、自分で書式指定子(%9.2f等)をいじって、出力フォーマットに見合うように調整。
このとき、一気に全部やろうとせず、1つずつ確実にやっていくことをオススメする。
>>104
┬┴┬┴|∀゚) フフリ
0107デフォルトの名無しさん
2005/09/12(月) 15:55:30> だた……って言われました
その唯一言われたことを何処にも書かずに
どうやって理解してもらうつもりだったんだよ
0108デフォルトの名無しさん
2005/09/12(月) 16:05:33ワロタw
学校で2ヶ月くらいだと何もしてないのと同じくらいだぞ。
実際、始めは全て書いてあるプログラムを入力して動かすくらいで
書いてある意味まで細かく教えたりしないからなぁ…。
半年は#include <stdio.h> /*←おまじない*/で通すくらいだし。
つい最近になってprintf("Hello World!!");でヒャッホー言ってたってとこだろ
0109デフォルト名無しさん
2005/09/12(月) 16:46:36using namespace std;
int main()
{
cout<<" ∧_∧ "<<endl;
cout<<" (´∀`)< ぬるぽ"<<endl;
return 0;
}
ちょっとギャグでやってみたら、かわいかった・・・
ごめん、昼間からこんな馬鹿なことやって・・。
0110デフォルトの名無しさん
2005/09/12(月) 17:26:26[2] 問題文(含コード&リンク):
引数起動。testという引数以外では終了しtestという引数で正常起動するプログラムと
ボタンを押すとtestという引数で上記のプログラムを起動させるプログラムを作りなさい。
使用する標準関数:規制無し。
[3] 環境
[3.1]OS:Windows
[3.2]コンパイラ名とバージョン:VC++
[3.3]言語:C
[4] 期限:無期限
[5] その他の制限:無し。
引数起動がぐぐっても良く解らないです。
0111デフォルトの名無しさん
2005/09/12(月) 17:29:36その教官は「testという引数」のフレーズが大好きだな
0112デフォルトの名無しさん
2005/09/12(月) 17:32:11[1] C言語講座
[2] 問題文(含コード&リンク
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/916.txt
二分探索木内を検索する関数を作成する
**で囲まれてる部分がわかりません(;∀;)
[3] 環境
[3.1] OS: WindowsXP
[3.2] VC 6.0
[3.3] 言語: C++
[4] 期限: 明日まで
0113デフォルトの名無しさん
2005/09/12(月) 17:47:30if(argc==1){
printf("引数を指定して下さい。\n");
return 0;
}
if(argc==2){
if(strcmp(argv[1],"test")!=0)
return 0;
}
if(argc>=3){
printf("引数が多すぎます。\n");
return 0;
}
}
0114デフォルトの名無しさん
2005/09/12(月) 17:48:43____
/∵∴∵∴\
/∵∴∵∴∵∴\
/∵∴∴,(・)(・)∴|
|∵∵/ ○ \|
|∵ / 三 | 三 | / ̄ ̄ ̄ ̄ ̄
|∵ | __|__ | < うるせー馬鹿!
\| \_/ / \_____
\____/
0115デフォルトの名無しさん
2005/09/12(月) 17:52:59int main(int argc, char **argv)
{
if(argc == 1 || agrv[1] != "test")
{return -1;}
return 0;
}
ごめん上一行しかわかんね・・・
0117デフォルトの名無しさん
2005/09/12(月) 18:01:49上から
p = tree_search(root, data);
if( data == p->data ) break;
if( data < p->data ) p = p->left;
else p = p->right;
return p;
0118デフォルトの名無しさん
2005/09/12(月) 18:03:530119デフォルトの名無しさん
2005/09/12(月) 18:45:230120110
2005/09/12(月) 18:59:40{
if(strcmp(lpCmdLine,"test")!=0){
MessageBox(NULL , lpCmdLine , TEXT("起動エラー") , MB_ICONINFORMATION);
return 0;// 正常起動失敗
}
// 以下、正常動作
}
これでいけました。
後はコマンドラインを指定して起動できるボタンプログラムですが全く分かりませんorz
0121デフォルトの名無しさん
2005/09/12(月) 19:02:56ボタンを配置したダイアログボックスで簡易ランチャーっていうサンプルはけっこうあるはず。
0122デフォルトの名無しさん
2005/09/12(月) 19:03:04[2] 問題1 a=10、b=20とし、a,bの値を入れ替えて表示しなさい。
問題2 文字型配列 m[5][20]を用意し、これを5人分の名字で初期化し、
さらに、文字型配列 n[5][10]を用意し、名前で初期化しそれらを表示しなさい。
問題3 問題2で作成した名字の入った文字型配列 m[5][20]に、名前の入った n[5][10]を
連結コピーして表示しなさい。(strcat()を使用する)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語: C
[4] 期限:明日まで
[5]その他の制限:二次元配列まで習ってます。問題多くてすみません。お願いします
0123デフォルトの名無しさん
2005/09/12(月) 19:10:010124デフォルトの名無しさん
2005/09/12(月) 19:13:19[1]
#include<stdio.h>
int main(){int a=10,b=20;a+=b;b=a-b;a-=b;printf("%d %d",a,b);}
[2]
#include<stdio.h>
int main(){char m[5][20]={"a","b","c","d","e"},n[5][20]={"A","B","C","D","E"};
int i;for(i=0;i<5;++i)printf("%s %s\n",m[i],n[i]);}
[3]
#include<stdio.h>
#include<string.h>
int main(){char m[5][20]={"a","b","c","d","e"},n[5][20]={"A","B","C","D","E"};
int i;for(i=0;i<5;++i)printf("%s\n",strcat(m[i],n[i]));}
0126デフォルトの名無しさん
2005/09/12(月) 19:20:40興味あったので探しているが見つからない。
サンプルURL知っていたら教えてください。
0127デフォルトの名無しさん
2005/09/12(月) 19:22:28全角スペースはいってるから気をつけてね
int main()
{
{
int a = 10; int b = 20; int c;
printf("--- Q1 --------\n");/* Q1 */
printf("a=%d, b=%d\n", a, b);
c = a; a = b; b = c;
printf("a=%d, b=%d\n", a, b);
}
{
char m[5][20] = {"Toyota","Suzuki","Honda","Matsuda","HarddGay" };
char n[5][10] = {"Tarou","Jirou","Saburou","Shirou","Foooooo!" };
int i;
printf("--- Q2 --------\n");/* Q2 */
for(i=0; i<5; i++){ printf("i: %s %s\n", m[i], n[i]); }
printf("--- Q3 --------\n");/* Q3 */
for(i=0; i<5; i++){ strcat(m[i], n[i]); printf("i: %s\n", m[i]);}
}
return 0;
}
0128デフォルトの名無しさん
2005/09/12(月) 19:22:38それは「プログラム」の間違いか?それとも「汚名挽回という言葉」の間違いか?
0129127
2005/09/12(月) 19:23:38リロードして無かったよorz
0130デフォルトの名無しさん
2005/09/12(月) 21:10:03(´・ω・`)9mプギャー
0132デフォルトの名無しさん
2005/09/12(月) 21:34:52適当だけとこんな感じ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/917.c
0133デフォルトの名無しさん
2005/09/12(月) 21:45:030134デフォルトの名無しさん
2005/09/12(月) 21:47:000135デフォルトの名無しさん
2005/09/12(月) 21:50:35俺は誰だ
0136デフォルトの名無しさん
2005/09/12(月) 21:54:54君が僕で・・・えっ!?
ドキドキ
013777
2005/09/13(火) 11:01:19ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/918.txt
0138デフォルトの名無しさん
2005/09/13(火) 11:10:42013977
2005/09/13(火) 11:19:370140デフォルトの名無しさん
2005/09/13(火) 11:24:01の一文だけだと、過去のレスをずーっとチェックして、間違い探しをしないといけないのだけれど・・・。
どこをどう間違って、間違いを正すとどうなるか教えていただけませんか?
014177
2005/09/13(火) 11:39:24間違いがあったらそこについてみなさんに聞いてみます。
0142デフォルトの名無しさん
2005/09/13(火) 11:40:18過去のスレを読んでいた身としては
>>77にはそれを説明する能力は無いと思われます。
0143デフォルトの名無しさん
2005/09/13(火) 13:19:13添削はめんどいので、とりあえずあげとく
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/919.txt
・桁合わせ、整形は自分でやること。
・ビルドできないときはエラーメッセージをちゃんと書くこと。
・その他わからないところは自分で調べてから聞くこと。
以上
0144デフォルトの名無しさん
2005/09/13(火) 16:10:48[2] 問題文: キーボードから数値を読み込み、その数に応じて「+-」のパターン
を表示するプログラムを作成しなさい。(例:7を入力すると、+-+-+-+)
[3] 環境
[3.1] OS:Fedora CORE
[3.2] 判らないですorz
[3.3] 言語:C
[4] 期限:本日17:00頃まで
[5]その他制限:ネスト辺りまで習いました。お願いしますorz
0145デフォルトの名無しさん
2005/09/13(火) 16:11:16つーか>>77はガキじゃねぇんだからそれくらいわかるよ、なっ!
0146デフォルトの名無しさん
2005/09/13(火) 16:27:10#include <stdio.h>
int main()
{
char pm[]="+-";
int i, len;
scanf("%d", &len);
for (i=0 ; i<len ; i++)
{
printf("%c", pm[i%2]);
}
}
0147デフォルトの名無しさん
2005/09/13(火) 16:27:49#include <stdio.h>
int main()
{
int i;
int tmp;
char str[256];
scanf("%d", &tmp);
for(i = 0; i < tmp; i++) str[i] = (i%2)? '-': '+';
str[tmp] = '\0';
printf(str);
return 0;
}
0148デフォルトの名無しさん
2005/09/13(火) 16:28:34助かりますですorz
0150デフォルトの名無しさん
2005/09/13(火) 21:41:42お、おれはカムってなんかない!
0151デフォルトの名無しさん
2005/09/13(火) 22:06:020152デフォルトの名無しさん
2005/09/13(火) 23:47:56[2] 問題文: 縦横100×100で8ビットのBMPファイルを読みこみ、1ピクセルあたりの画素値を
CSVファイルにBMPの画像のように同じ様に書きこめ。
[3] 環境
[3.1] OS: Windows2000
[3.2] コンパイラ名とバージョン: VC++
[3.3] 言語: C言語
[4] 期限: [無期限]
[5] その他の制限: BMPのヘッダーを構造体に入れてから画素値を取り出しなさい。また2次元配列を使いなさい。
問題文が変で説明しづらく、半端ですがfopenからヘッダーを構造体に入れる途中までのソースもあげておきます。
よろしくお願いします。
void main(void){
FILE *fp;
fp = fopen("circle.bmp", "rb");
bmpHead bmpHead1;
// ヘッダー情報を構造体へ
fread(&bmpHead1.bfType, sizeof(bfType), 1, fp);
fread(&bmpHead1.bfSize, sizeof(bfSize), 1, fp);
fread(&bmpHead1.bfReserved1, sizeof(bfReserved1), 1, fp);
fread(&bmpHead1.bfReserved2, sizeof(bfReserved2), 1, fp);
fread(&bmpHead1.bfOffBits, sizeof(bfOffBits), 1, fp);
fread(&bmpHead1.biSize, sizeof(biSize), 1, fp);
fread(&bmpHead1.biWidth, sizeof(biWidth), 1, fp);
fread(&bmpHead1.biHeight, sizeof(biHeight), 1, fp);
fread(&bmpHead1.biPlanes, sizeof(biPlanes), 1, fp);
fread(&bmpHead1.biBitCount, sizeof(biBitCount), 1, fp);
fread(&bmpHead1.biCompression, sizeof(biCompression), 1, fp);
fread(&bmpHead1.biSizeImage, sizeof(biSizeImage), 1, fp);
fread(&bmpHead1.biXPelsPerMeter, sizeof(biXPelsPerMeter), 1, fp);
fread(&bmpHead1.biYPelsPerMeter, sizeof(biYPelsPerMeter), 1, fp);
fread(&bmpHead1.biClrUsed, sizeof(biClrUsed), 1, fp);
fread(&bmpHead1.biClrImportant, sizeof(biClrImportant), 1, fp);
0153デフォルトの名無しさん
2005/09/13(火) 23:53:01用いて処理するプログラムを作成せよ。
(1):科目別の最高点を求める
(2):3教科の平均点を求める
[3] 1.Windows 2.bcc 3.C
Cを勉強しています。2次元配列の使い方がわかりません。
御教授お願いします。
0154デフォルトの名無しさん
2005/09/14(水) 00:08:378ビットビットマップ・・・(遠い目)
BI_RGBとBI_RLE8、トップダウンとボトムアップ・・・1行を4バイトのアライメントに・・・
あ・・・あはは。けっこう時間かかりそうなんでパス。
>153
あ・・・あはは・・・。独学かあ・・・教科書変えるといいかもよー。
0155デフォルトの名無しさん
2005/09/14(水) 00:13:11[2] 問題文(含コード&リンク):配列moji_rを「char moji_r[]="Today I went to church.";
と初期化した場合アルファベット1文字を入力し、moji_rの中にその文字が何回現れるかをカウントし、
表示させるプログラムです。
[3] 環境
[3.1] OS: Windows
[3.2] BorlandFree
[3.3] 言語: C
[4] 期限: [2005年09月15日12:30まで]
最近charを習ったばかりでFor文でリピートさせることはわかるのですがそれ以上がわかりません。
よろしくお願いいたします。
0156デフォルトの名無しさん
2005/09/14(水) 00:19:19char moji_r[]="Today I went to church.";
char *s;
scanf("%c", &c);
for (s = moji_r; *s; s++)
if (*s == c)
count++;
printf("%d\n", count);
0157デフォルトの名無しさん
2005/09/14(水) 00:23:02int main(){
char moji_r[]="Today I went to church.",*s=moji_r,ch;
int count[256]={0};
for(;*s;++s)++count[*s&255];
scanf(" %c",&ch);
printf("%d\n",count[ch&255]);
}
0158デフォルトの名無しさん
2005/09/14(水) 00:25:290159デフォルトの名無しさん
2005/09/14(水) 00:30:56#include <stdio.h>
#include <string.h>
int main()
{
int man, kamoku, tensu[5][3], heikin[5], saikou[3];
char kamokumei[3][5]={"国語","数学","英語"};
memset (saikou, 0, sizeof saikou);
memset (heikin, 0, sizeof heikin);
for (man=0 ; man<5 ; man++)
{
for (kamoku=0 ; kamoku<3 ; kamoku++)
{
printf("%d人目、%s=", man+1, kamokumei[kamoku]);
scanf("%d", &tensu[man][kamoku]);
heikin[man] += tensu[man][kamoku];
if (saikou[kamoku]<tensu[man][kamoku])
{
saikou[kamoku]=tensu[man][kamoku];
}
}
}
for (man=0 ; man<5 ; man++)
{
printf("%d人目の平均点は%d\n", man+1, heikin[man]);
}
for (kamoku=0 ; kamoku<3 ; kamoku++)
{
printf("%sの最高点は%d\n", kamokumei[kamoku], saikou[kamoku]);
}
return 0;
}
0160デフォルトの名無しさん
2005/09/14(水) 00:35:26大変参考になりました。
ありがとうございます!
0161155
2005/09/14(水) 08:48:42ポインタを利用しない方法はありませんでしょうか?
0162デフォルトの名無しさん
2005/09/14(水) 09:36:39ありません
moji_rへの操作がsizeof位しか使えなくなるからです。
0163デフォルトの名無しさん
2005/09/14(水) 10:34:18char *moji_r = "Today I went to church.";
char ch;
int count;
int i;
scanf( "%c", &ch );
for ( i=0, count=0; moji_r[i]; i++ ) if ( moji_r[i] == ch ) count++;
printf( "%d\n", count );
0164デフォルトの名無しさん
2005/09/14(水) 17:15:35もしかして 女子4人の学科ですか?
0165デフォルトの名無しさん
2005/09/14(水) 19:23:35[2]符号無し整数xのposビット目を、1にした値を返す関数set、0にした値を返す関数reset、
反転した値に返す関数inverseを作成せよ。
[3]1.Windows 2.BCC 3.C言語
さっぱりわかりません。どうぞよろしくおねがいします。
0166デフォルトの名無しさん
2005/09/14(水) 19:27:580168デフォルトの名無しさん
2005/09/14(水) 19:36:08unsigned int set(unsigned int x, int pos)
{
return x | 1 << pos;
}
unsigned int reset(unsigned int x, int pos)
{
return x & ~(1 << pos);
}
unsigned int inverse(unsigned int x, int pos)
{
return x ^ 1 << pos;
}
>>167
intは符号無しでない罠。
0169デフォルトの名無しさん
2005/09/14(水) 19:36:270170165
2005/09/14(水) 19:43:11すみません、unsigned int型でした。
わかりやすいコードありがとうございます。
理解できました。
>>169
調べてみましたが構造体?まだ習っていないのでよくわかりませんでした。
精進します。ありがとうございました。
0171デフォルトの名無しさん
2005/09/14(水) 20:52:23そのn個のすべての組み合わせの
配列を返すプログラムってどんなですか?
例えば配列の要素が(1,2,3)なら、「すべての組み合わせ」としては
[1][2][3][1,2][2,3][1,3][1,2,3]です。
アルゴリズムだけでもよいので教えてください。
0172デフォルトの名無しさん
2005/09/14(水) 20:55:05std::uniqueとstd::next_permutationをうまく使って
0173デフォルトの名無しさん
2005/09/14(水) 20:58:27ありがとうございます。参考にします。
0174デフォルトの名無しさん
2005/09/14(水) 21:00:00>>172ですた
0175デフォルトの名無しさん
2005/09/14(水) 21:46:15std::uniqueって必要あるか?
0176デフォルトの名無しさん
2005/09/14(水) 21:48:45#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
void get_combi(std::vector<std::vector<int> > &ans,
std::vector<int> tmp, int *begin, int *end){
int index = tmp.size();
tmp.push_back(0);
for(int *p = begin; p < end ; ++p)
{
tmp[index] = *p;
ans.push_back(tmp);
get_combi(ans, tmp, p + 1, end);
}
}
int main(){
int a[] = {1,2,3,4};
std::vector<std::vector<int> > ans;
get_combi(ans, std::vector<int>(), a, a+4);
for(std::vector<std::vector<int> >::iterator it = ans.begin();
it != ans.end(); ++it)
{
std::copy(it->begin(), it->end(), std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
}
return 0;
}
0177デフォルトの名無しさん
2005/09/14(水) 21:56:470178デフォルトの名無しさん
2005/09/14(水) 22:15:44typedef struct Nd {
int v;
Nd* prev;
} Nd;
void printNd(Nd* nd, int last) {
printf("[%d", last);
while(nd)
printf(",%d", ndー>v);
puts("]");
}
void rec(int* a, int m, int n, Nd* prev) {
Nd nd = {a[m], prev};
printNd(prev, a[m]);
for(m++; m < n; m++)
rec(a, m, n, nd);
}
int main(void) {
int array[] = {...};
int i, ln = sizeof(array) / sizeof(int);
for(int i=0; i < ln; i++)
rec(array, i, ln, NULL);
puts("\n");
return 0;
}
0179デフォルトの名無しさん
2005/09/14(水) 22:20:36なるほど
#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
#include <functional>
typedef std::list<unsigned int> CombList;
CombList all_comb(size_t first, size_t last) {
if (first == last) return CombList(1, 0);
CombList res = all_comb(first + 1, last), res2;
std::transform(res.begin(), res.end(), std::back_inserter(res2), bind2nd(plus<unsigned int>(), 1 << first));
res.merge(res2);
return res;
}
int main() {
int numbers[] = {1, 2, 3, 4};
int length = sizeof(numbers)/sizeof(numbers[0]);
CombList s = all_comb(0, length);
for (CombList::iterator it = s.begin(); it != s.end(); ++it) {
for (int i = 0; i < length; i++)
if (*it & (1<<i))
std::cout << " " << numbers[i];
std::cout << std::endl;
}
}
0180179
2005/09/14(水) 22:30:050181デフォルトの名無しさん
2005/09/14(水) 22:32:28#include <stdio.h>
typedef struct Nd Nd;
typedef struct Nd {
int v;
Nd* prev;
} Nd;
void printNd(Nd* nd, int last) {
printf("[%d", last);
while(nd) {
printf(",%d", nd->v);
nd = nd->prev;
}
puts("]");
}
void rec(int* a, int m, int n, Nd* prev) {
Nd nd = {a[m], prev};
printNd(prev, a[m]);
for(m++; m < n; m++) rec(a, m, n, &nd);
}
void main(void) {
int array[] = {...};
int i, ln = sizeof(array) / sizeof(int);
for(i=0; i < ln; i++) rec(array, i, ln, NULL);
puts("\n");
}
0182デフォルトの名無しさん
2005/09/14(水) 22:44:46int v;
struct _Nd* prev;
} Nd;
こうしたら、通った。
0183デフォルトの名無しさん
2005/09/14(水) 22:56:470184デフォルトの名無しさん
2005/09/14(水) 23:01:26#include <stdio.h>
typedef struct List List;
struct List {
int value;
List *next;
};
void print_list(List * lis) {
for (; lis != NULL; lis = lis->next)
printf(" %d", lis->value);
puts("");
}
void print_combi(int * data, int len, List * tail) {
if (len <= 0) {
print_list(tail);
} else {
List head;
print_combi(data, len - 1, tail);
head.value = data[len-1], head.next = tail;
print_combi(data, len - 1, &head);
}
}
int main(void) {
int data[] = {1,2,3,4};
print_combi(data, sizeof(data)/sizeof(data[0]), NULL);
return 0;
}
0185デフォルトの名無しさん
2005/09/14(水) 23:11:180186デフォルトの名無しさん
2005/09/14(水) 23:35:22逆にGUIとかになると面倒くさくなるし。これぐらいが丁度いい。
0187デフォルトの名無しさん
2005/09/14(水) 23:35:46#include <stdio.h>
#include <stdint.h>
void print(const int a[], const uint8_t size, const uint32_t bits)
{
uint32_t mask, i = 0;
for(mask = 1U << (size-1) ; mask; mask >>= 1, ++i)
if( mask & bits ) printf("%d ", a[i]);
printf("\n");
}
void comb(int a[], uint8_t size, uint32_t mask, uint32_t bits)
{
if( mask == 0) print(a, size, bits);
else
{
comb(a, size, mask >> 1, bits | mask);
comb(a, size, mask >> 1, bits & ~mask);
}
}
main()
{
int a[] = {1,2,3,4,5};
uint32_t size = sizeof(a)/sizeof(*a);
comb(a, size, 1U << (size-1), 0);
}
0188187
2005/09/14(水) 23:48:56void print(const int a[], const uint8_t size, uint32_t bits)
{
if( bits != 0 )
{
uint32_t i;
for(i = 0; i < size && bits; ++i, bits >>= 1)
if(bits & 1U) printf("%d ", a[i]);
printf("\n");
}
}
0189デフォルトの名無しさん
2005/09/14(水) 23:53:55宿題の回答を読んで楽しむ姿が想像できる様だ
0190デフォルトの名無しさん
2005/09/14(水) 23:58:54おもろい出題だわな。
Cだと二次元の長さが一定でない配列をどう表現するか・・・
てな話も入ってくるんでprintだけになってしまうのが残念だが。
0191デフォルトの名無しさん
2005/09/15(木) 01:01:08表示しかしないし順番も滅茶苦茶だが。ビット演算とか知らないから他の人の見てもよくわからんorz
void printlist (int list[], int szlist) {
int i, j, k, temp;
for(k = 0; k < szlist; k++) {
for(i = k; i < szlist; i++) {
for(j = i; j < szlist; j++) {
printf("%d ", list[j]);
}
printf("\n");
}
temp = list[szlist - 1];
list[szlist - 1] = list[k];
list[k] = temp;
}
}
void main() {
int test[] = {1, 2, 3};
printlist(test, sizeof(test) / sizeof(int));
}
0192191
2005/09/15(木) 01:14:51void printlist (int list[], int szlist) {
int i, j, k, temp;
for(k = 0; k < szlist; k++) {
for(i = k; i < szlist; i++) {
for(j = k; j < i + 1; j++) {
printf("%d ", list[j]);
}
printf("\n");
}
temp = list[0];
list[0] = list[k];
list[k] = temp;
}
}
0193デフォルトの名無しさん
2005/09/15(木) 01:18:33もう駄目。回線切ってつってくる(´;ω;`)
0194デフォルトの名無しさん
2005/09/15(木) 03:21:42アルゴリズムだけっていうことで次を参考にして関数に仕上げて下さい。
#include <stdio.h>
#include <stdlib.h>
void power(int *p, char *s){
char *buf;
if(*p==-1){printf("%s\n",s);return;}
power(p+1,s);
buf=(char *)malloc((sizeof(char))*(strlen(s)+2));
sprintf(buf,"%d %s",*p,s);
power(p+1,buf);
}
main(){
int x[]={3,2,1,-1};
power(x,"");
}
0195デフォルトの名無しさん
2005/09/15(木) 20:54:00[2] 問題文(含コード&リンク):ttp://www.ced.is.utsunomiya-u.ac.jp/lecture/2004/prog/p1/kadai4/kadai4_3_2.html
の3.3 台形公式による二重積分のところ穴埋めおながいします。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC .NEET
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: 茄子
0196デフォルトの名無しさん
2005/09/15(木) 20:57:27>そいつはすごい、どこまでも胡散臭くて、安っぽい宝の地図
まで読んだ。
0197デフォルトの名無しさん
2005/09/15(木) 21:22:20>「こいつはすごい財宝のありかなんだ」信じきった彼はとうとうその真偽を
まで読んだ
0198195
2005/09/15(木) 21:27:29二重積分はこんな感じでよいですか?
0199155
2005/09/16(金) 00:59:42あれから自分で考えたのですが
#include<stdio.h>
void main(void)
{
char moji_r[]="Yesterday I went to church,it was a splendid experience.";
char search;
int i,count=0;
printf("調べる文字を半角1文字を入力==>");
scanf("%d",search);
for(i=0;moji_r[i]!='\0';i++){
if(moji_r[i]==search){
count++;
}
}
printf("Yesterday I went to church,it was a splendid experience.の中に\n");
printf("%cは、%d個入っています",search,count);
}
という方法で実行したのですがうまくいきません。
コンパイラはエラーがでないのですが実行すると何を入力しても下記のようになってしまします。
C:\>test
調べる文字を半角1文字を入力==>w
Yesterday I went to church,it was a splendid experience.の中に
は、0個入ってます
となってしまいます。どこが悪いのでしょうか?
0200デフォルトの名無しさん
2005/09/16(金) 01:01:13↓
scanf("%c", search);
な。
0201デフォルトの名無しさん
2005/09/16(金) 01:01:46scanf("%c", &search);
な。
0202デフォルトの名無しさん
2005/09/16(金) 10:27:16char*型の文字列をchar*型の配列に代入して表示させたいのですがどうすればいいんでしょうか
//----------------
int i,len;
char * mojiretu = "hogehoge";
char * mojihairetu[64];
//mojiretuを1文字ずつmojihairetu[]に代入
len = strlen(mojiretu);
for(i=0;i<len;i++){
printf("%s", mojihairetu[i]);
}
//----------------
・出力予想
hogehoge
char型の配列になら代入できたけどchar*型となるとうまくいかないようだ
1ヶ月間やってそこそこ分かってきたぜ、と思ってたらこんなところで引っかかるとは・・・
0203デフォルトの名無しさん
2005/09/16(金) 10:44:53以下は全部同じ
char * mojiretu = "hogehoge";
char mojiretu[] = "hogehoge";
char mojiretu[] = {'h', 'o', 'g', 'e', 'h', 'o', 'g', 'e'};
「char*型の文字列」ではなく「char型の文字列」な。
char * mojihairetu[64] というのはポインタの配列。
この中に入るのchar型のデータを指すポインタ(char*)。
0204203
2005/09/16(金) 10:46:17○ char mojiretu[] = {'h', 'o', 'g', 'e', 'h', 'o', 'g', 'e', '\0'};
だったorz
0205デフォルトの名無しさん
2005/09/16(金) 10:49:51どんな時に使うのかは経験が浅くて分からないが・・・
取りあえず流石にこれは通らなかった mojihairetu = mojiretu;
0206デフォルトの名無しさん
2005/09/16(金) 11:04:33おまいのやりたいことを実現するにはこうするしかない。
for (i = 0; i < len; i ++)
{
mojihairetu[i] = (char *) malloc(2);
mojihairetu[i][0] = mojiretu[i];
mojihairetu[i][1] = '\0';
}
/* freeもしてね */
そしてここは宿題スレなので>>1にしたがってテンプレ使ってください。
0207デフォルトの名無しさん
2005/09/16(金) 11:14:58そして手間を取らせてすまんかった。
この問題は宿題と言うか課題と言うか先輩の命令と言うかだったんだ・・・
0208デフォルトの名無しさん
2005/09/16(金) 11:16:30int i,len;
char * mojiretu = "hogehoge";
char mojihairetu[64];
len = strlen( mojiretu );
for ( i=0; i<len; i++ ) mojihairetu[i] = mojiretu[i];
for ( i=0; i<len; i++ ) printf( "%c", mojihairetu[i] );
文字列末尾のnulコードはターミネーターである
って理解している?
0209デフォルトの名無しさん
2005/09/16(金) 11:17:330210デフォルトの名無しさん
2005/09/16(金) 11:23:330211デフォルトの名無しさん
2005/09/16(金) 11:52:03> 文字列末尾のnulコードはターミネーターである
> って理解している?
といいながら自分は入れてないのなw
ヌル文字入れればprintf(mojihairetu)とかprintf("%s", mojihairetu)で済むよ
0212デフォルトの名無しさん
2005/09/16(金) 12:02:46O(n^2) 未満で解けませんか?
例ですが,
[-10,31,40] から 合計が 15 に最も近い部分列を求める場合
まず部分列は以下の6つになり,
[-10], [31], [40], [-10,31], [31,40], [-10,31,40]
これらの合計の中で最も 15 に近いものは
-10, 31, 40, 21, 71, 61
の中から選択するので
21 つまり,(要素 1〜2) が答えになります.
よろしくおねがいします.
0213デフォルトの名無しさん
2005/09/16(金) 12:07:06>>1を読めないのか?
0214デフォルトの名無しさん
2005/09/16(金) 12:09:44サヨウナラ
0215デフォルトの名無しさん
2005/09/16(金) 12:16:52ごめんなさい
[1] C演習
[2] >>212
[3] 環境
[3.1] OS: Linux
[3.2] gcc 2.9
[3.3] 言語: C
[4] 期限: 2005/09/30
[5] その他の制限: ありません
0216デフォルトの名無しさん
2005/09/16(金) 12:47:28for(int i = 0; i < strlen(mojiretu); i++) {
sprintf(mojihairetu[i], "%c", mojiretu[i]);
}
じゃ駄目なの?試してないから動くかわかんないけど。
0217デフォルトの名無しさん
2005/09/16(金) 12:49:23mojihairetu[i]のポインタに領域が割り当てられていない。
0218デフォルトの名無しさん
2005/09/16(金) 13:08:41C++ならstd::vector <std::string> mojihairetu;
とかで済むのにねぇ。
0219デフォルトの名無しさん
2005/09/16(金) 14:04:23嘘を教えるな
> char * mojiretu = "hogehoge";
は、ポインタ
> char mojiretu[] = "hogehoge";
は、char配列
0220デフォルトの名無しさん
2005/09/16(金) 14:12:260221デフォルトの名無しさん
2005/09/16(金) 14:28:19そのポインタ(配列)を使う時に、実際に何か差があるのですか?
同じ結果を出すための別解と解釈してよいでしょうか
0222デフォルトの名無しさん
2005/09/16(金) 14:30:290223デフォルトの名無しさん
2005/09/16(金) 14:50:58> char * mojiretu = "hogehoge";
こっちはスコープ内に確保される領域はポインタ1つ分で
"hogehoge"はリテラル文字列であり、プログラム起動時から終了時まで寿命がある
外部変数として
char hogehoge[9]={'h','o','g','e','h','o','g','e','\0'};
があり、
char *mojiretu;
mojiretu = hogehoge;
としているようなもの
> char mojiretu[] = "hogehoge";
こっちはスコープ内に確保される領域はchar9つ分でその初期値を設定しているだけ
char mojiretu[9];
mojiretu[0]='h';mojiretu[1]='o';mojiretu[2]='g';mojiretu[3]='e';
mojiretu[4]='h';mojiretu[5]='o';mojiretu[6]='g';mojiretu[7]='e';mojiretu[8]='\0';
としているようなもの
0224デフォルトの名無しさん
2005/09/16(金) 14:54:350225デフォルトの名無しさん
2005/09/16(金) 15:06:060226デフォルトの名無しさん
2005/09/16(金) 15:24:11それってO(n^2)未満にすることも宿題の条件なの?
部分集合は2^n-1個あるのにその条件は無謀な気がするが
0227デフォルトの名無しさん
2005/09/16(金) 15:54:06一旦ソートするとかどう?
0228デフォルトの名無しさん
2005/09/16(金) 16:01:54を求めるのは O(n)で、 i を1 からまで動かすのでO(n^2)
0229デフォルトの名無しさん
2005/09/16(金) 16:29:43やっぱり>>227の言う通り何らかのソートが必要かも。
元の配列の「順番」はキープしつつ、「和」にあたる部分を間接的にソートか・・・難しいな。
たぶんこれ宿題とかじゃないだろw
0231デフォルトの名無しさん
2005/09/16(金) 16:56:43開始位置、終了位置、和のテーブルを作る O(n^2)
テーブルを和をキーにソート O(n log n)
テーブルの和の重複チェック O(n)
2)検索
バイナリサーチ O(log n)
0232デフォルトの名無しさん
2005/09/16(金) 17:18:47間違ってなかったらO(n^2/2)位かな?
void search(int* a, int ln, int t, int startEnd[2]) {
int m, n, M, N;
int unko;
startEnd[0]=startEnd[0]=-1;
for(M=0, N=ln; M < N;) {
int sum;
for(m=M, sum=0; m < N; m++) {
int sAbs;
sum+=a[m];
if(unko > abs((sAbs = (sum - t)))) {
unko = sAbs;
startEnd[0]=M; startEnd[1]=m;
}}
N--;
for(n=N, sum=0; n > M; n--) {
int sAbs;
sum+=a[n];
if(unko > abs((sAbs = (sum - t)))) {
unko = sAbs;
startEnd[0]=N; startEnd[1]=n;
}}
M++;
if(unko == t) break;}}
0233デフォルトの名無しさん
2005/09/16(金) 17:37:54それは O(n^2) という。
0234デフォルトの名無しさん
2005/09/16(金) 17:39:081.左端からi番目の要素までの和からなる列を作る。元が
-10, 31, 40
なら、
0, -10, 21, 61
になる。ここから二数を選んで、右から左を引くと対応する部分列の和になる。O(n)。
2.この列を覚えておいて、ソートしたコピーを作る。O(n log n)。
3.できたコピーを双方向リストと平衡木の二重構造に入れる。O(n)。
この平衡木は、削除O(log n)、探索O(log n)で、「あるキーに最も近い要素」の探索もO(log n)
4.覚えておいた列の左から順にポインタpが動く間、次のことをする。O(n log n)
i: 平衡木から*pを削除。O(log n)
ii: *pとの差が問題の数に最も近くなる要素を平衡木から探索。O(log n)
0235234
2005/09/16(金) 17:50:10もっといいアルゴリズムきぼん。
0236デフォルトの名無しさん
2005/09/16(金) 17:56:08うーん、なんか着眼点よさげかも。
ちょっと後半がよくわからんな。
双方向リストと平衡木の二重構造とやらのノードの構造体だけでも書いてみてよ。
0237デフォルトの名無しさん
2005/09/16(金) 18:04:54struct k
{
int value;
struct k *next; /* 次に大きいノードを指す */
struct k *prev;
struct k *left; /* 左部分木を指す */
struct k *right;
};
0238デフォルトの名無しさん
2005/09/16(金) 18:06:10おお、凄い。確かに実装するのは辛そうだがw
0239デフォルトの名無しさん
2005/09/16(金) 18:33:15素晴らしい。ただ、右から左を引かなければならないので、
そこはうまく工夫して「右のもので最も求める値に近くなるもの」が検索
できないと駄目かも。
ただ、これが O(log n) でできれば、ここの候補を馬鹿サーチしても
O(nlogn)だね。
うまく、「自分より右でかつ値に近い」というのを順序でできれば
解決だね。
0240デフォルトの名無しさん
2005/09/16(金) 18:44:33誤って左と比べないように4-iで順番に削除してるんだが、だめか?
0242デフォルトの名無しさん
2005/09/16(金) 19:17:260243デフォルトの名無しさん
2005/09/16(金) 20:02:26ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/899.c
標準外の機能を使ってるってのが問題だな
//チラシの裏
ちなみにGCがあると2色木の挿入は恐ろしく簡単になる
削除する時は今回は2度と挿入しないんだからrebalanceする必要ないしな
0244デフォルトの名無しさん
2005/09/16(金) 20:52:56ソートしたコピーと双方向リストは何に使うの?
0245234
2005/09/16(金) 20:55:23C++での実装。ご参考まで。
0246234
2005/09/16(金) 21:01:20ソートしたコピーは特に使わない。ソートしながら木を構築できるならそれでもよし。
双方向リストは、「キーにもっとも近い要素」の探索を対数時間でできるようにするための仕組み。
通常の木の探索で「キー以上の値を持つ要素のうち最小のもの」を見つけた後、
リストを一つ前に辿ってそれも検討する。
>>243
>削除する時は今回は2度と挿入しないんだからrebalanceする必要ないしな
気づかなかった…
考えてみればリストは双方向である必要はないし、木は平衡木である必要はないな。
0247デフォルトの名無しさん
2005/09/17(土) 02:36:58> 木は平衡木である必要はないな。
いや、平衡木だからこそlog nで検索できたんでは内科?
まあ何はともあれ、
・和で配列を作る
・平衡木を使う
の2点はカッコヨカッタ
0248デフォルトの名無しさん
2005/09/17(土) 03:02:24はふぅ。
0249215
2005/09/17(土) 06:42:511. 累積させた配列を作成してソートする.
2. その配列を左から順に見ていき(a[i], 1 ≦ i ≦ n),右の残りの配列の中でa[i] との差が最も x に近い値を求める.
2.1 その際に二分探索で求める.
ということでしょうか.
これなら,確かに n * log n です.
これは思いつきません.ソートと二分探索が効いてますね.
二分探索は探索して見付からなかったときに最終位置と
左右どちらかで近い方を選択することでできるのかな..
>>234
累積配列の最初に,0 があるおかげで,a[2] 〜 a[n] じゃなくて a[1] 〜 a[n]
の部分列が求められるのか.こういうの苦手です.
>>245
便利な関数がいっぱいあるのだと勉強になりました.
partial_sum とかそのまんまのがあるんですね.
find_nearest がむずい…(´・ω・ :;.. 頑張ります.
感心してばかりでした.ありがとうございました.
0250デフォルトの名無しさん
2005/09/17(土) 10:43:07レフトポインタとライトポンタが重なったら、その左右の値を調べればいいんじゃないの?
0251デフォルトの名無しさん
2005/09/17(土) 13:23:43使えないのは、二分探索が使えないからだよね。
0252デフォルトの名無しさん
2005/09/17(土) 17:35:07http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/926.c
0253デフォルトの名無しさん
2005/09/17(土) 17:58:36すげー。
ちゃんと赤黒木実装してるし。
search_nearestはエレガントだし。
せっかく書いたから俺もあげとく。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/927.txt
0254234
2005/09/17(土) 18:19:27>1. 累積させた配列を作成してソートする.
>2. その配列を左から順に見ていき(a[i], 1 ≦ i ≦ n),右の残りの配列の中でa[i] との差が最も x に近い値を求める.
>2.1 その際に二分探索で求める.
微妙に違う気がする。左から見ていくのはソートする前の配列ね。
>find_nearest がむずい…(´・ω・ :;.. 頑張ります.
>>245のfind_nearestは間違ってた。
結果は正しいし、計算量も問題ないけど、これだとリストの価値がない。
つまり、そもそもリストは要らなかった。(thx >>252)
ついでに、>>253も俺です。
0255デフォルトの名無しさん
2005/09/17(土) 23:41:31これ配列を1度だけ見ていくだけで求まるロジックがあるので
そいつを応用すればO(n)だと思う
ちょっと探してみるよ
0256デフォルトの名無しさん
2005/09/17(土) 23:54:514要素{A,B,C,D}に対して、
生成される部分列は{A,B,C,D, A+B,B+C,C+D, A+B+C,B+C+D, A+B+C+D}
つまり、n要素に対する部分列の個数はn(n+1)/2である。
A,B,C,Dの何れも正負の符号を取るのならば、
部分列に新たな要素を加算した総和が元に比べ単純増加するとは限らない。
(A+B)>(A+B+C)という可能性もある。
結局、全ての部分列の要素について総和を求める必要がある。
これは数列の要素数nが2以上の場合になりたち、この問題の計算量は最小でもO(n^2)である。
のではまかろーに?
0257256
2005/09/18(日) 00:02:390258256
2005/09/18(日) 00:03:270259デフォルトの名無しさん
2005/09/18(日) 00:10:37漏れもそこ気になった。要素が全て正ならば成り立つけれど、
負も含まれてしまうと問題になる希ガス
0260デフォルトの名無しさん
2005/09/18(日) 00:12:010261デフォルトの名無しさん
2005/09/18(日) 00:12:480262デフォルトの名無しさん
2005/09/18(日) 00:13:40026359
2005/09/18(日) 00:17:06それとも、基本的にはある概念にそって開発するんですか?
0264デフォルトの名無しさん
2005/09/18(日) 00:17:460265デフォルトの名無しさん
2005/09/18(日) 00:20:490266デフォルトの名無しさん
2005/09/18(日) 00:26:02気のせいだ。
木の中には
{ 0, A, A+B, A+B+C, A+B+C, A+B+C+D }...(1)
が小さい方から順に入っている
この木からxに最も近いもの,x+Aに最も近いもの,...,x+A+B+C+Dに最も近いもの
を探している。そうやって擬似的に
{ B, B+C, B+C+D } ...(2)
{ C, C+D }
:
という集合を作り出してその中からxに近いものを探索しているわけだね
(1)からx+Aに近いものを探索するのと(2)からxに近いものを探索するのは同じことだ(ただし>>239-240参照)
また、すべての要素から一定の値が引かれてるから順序関係は変わらない
故に、その探索はそれぞれ O(log n)ですむ(全部調べなくていい)
それをn回やってその中で1番xに近いものはすべての組み合わせの中でもxに一番近い
だからオーダーはO(n log n)だ。と
0267255
2005/09/18(日) 00:43:53int tbl[]={-10,31,40};
#define TBL_SIZE (sizeof(tbl)/sizeof(int))
#define KEY 15
int main(void)
{
int i,max,sum,maxst,maxed,st,ed;
max=sum=tbl[0];
maxst=maxed=st=ed=0;
for(i=1; i<TBL_SIZE; ++i){
if(sum!=0){ sum+=tbl[i]; ed=i;}
else{ sum=tbl[i]; st=ed=i;}
if(abs(sum-KEY)<abs(max-KEY)){ max=sum; maxst=st; maxed=ed;}
}
printf("\n%d <- [%d]-[%d]\n", max,maxst,maxed);
return 0;
}
0268デフォルトの名無しさん
2005/09/18(日) 00:48:41find {x+A+B+C} from sort{0,A,A+B,A+B+C,A+B+C+D}をしてしまったら
AやA+Bが選択される危険性があるような…
0269256
2005/09/18(日) 00:56:27>> { C, C+D }
を生成しているつもりで、
{ -A , 0 , B , B+C , B+C+D}
{ -A-B, -A, 0 , C , C+D} を生成している罠。
しかもソートされているので、不要な要素(0から左)が消せないのでは?
0270256
2005/09/18(日) 01:03:11そうすればO(1)でできそう。
0271デフォルトの名無しさん
2005/09/18(日) 01:05:32やり方を教えてください!
1 1 1 1
2 4 8 16
3 9 27 81
4 16 64 256
宜しくお願いします!
0272デフォルトの名無しさん
2005/09/18(日) 01:06:400273デフォルトの名無しさん
2005/09/18(日) 01:18:12#include <stdio.h>
int main()
{
int i,j,num;
for (i=1 ; i<5 ; i++)
{
num=i;
for (j=0 ; j<4 ; j++)
{
printf("%d ", num);
num*=i;
}
printf("\n");
}
return 0;
}
0274デフォルトの名無しさん
2005/09/18(日) 01:24:18>>267 でいいのか?
O(n)だぞ
0275デフォルトの名無しさん
2005/09/18(日) 01:28:49>>253で
arr={10,30,-5}で15となる組合検索(解- 0 1 2)を実行しても(0 2)が蛙。
0276デフォルトの名無しさん
2005/09/18(日) 01:34:18int tbl[]={-10,40,31};
0277デフォルトの名無しさん
2005/09/18(日) 01:39:54> int data[] = {-10, 31, 40, -30, 8, -9, 3, 10, -67, 45}; /* => 13:[6, 7] */
0278デフォルトの名無しさん
2005/09/18(日) 01:48:36ありがとうございます!
せっかく解いてもらったのに申し訳無いのですが
自力で出来ました。
また、分からない時はぜひお願いします!!
0279デフォルトの名無しさん
2005/09/18(日) 01:59:25最尤系列推定のプログラムおしえてください。
0280デフォルトの名無しさん
2005/09/18(日) 02:03:29それじゃ駄目だろう。
区切られた部分列が解の部分列の一部になっている場合はどうする?
0281デフォルトの名無しさん
2005/09/18(日) 14:21:36[2] 問題文(含コード&リンク):http://www.geocities.jp/kabutomusi1/kadai.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: Cでお願いします。
[4] 期限: [明日]
[5] その他の制限:なるべく簡単に。
宜しくお願いします。
0282デフォルトの名無しさん
2005/09/18(日) 14:33:50配列の要素数、或いは終端条件を提示してください。
0283デフォルトの名無しさん
2005/09/18(日) 14:36:04配列のデータ入力方法も、だな。
コマンドラインから入力するのか、ソースにベタ書きでいいのか。
0284デフォルトの名無しさん
2005/09/18(日) 14:36:30配列の要素数は?
確か先頭へのポインタとして渡された場合、ヌル終端されてるとか
負数があるとかの決まりがないと、関数側じゃ要素数は取得できないと思うが
以下、要素数をnとしたときのソース@脳内コンパイラ
double Average(int *p)
{
unsigned long diff=0;
int i;
for (i=1;i<n;i++)
diff += p[i] - p[i-1];
return (double)p[0] + ((double)diff)/n;
}
0285デフォルトの名無しさん
2005/09/18(日) 14:38:48訂正
誤)diff += p[i] - p[i-1];
正)diff += p[i] - p[0];
0286デフォルトの名無しさん
2005/09/18(日) 14:43:32適当に仕様を想像した結果
#include<stdio.h>
double Average(int *p){
double d=0.0;
int i;
for(i=0;p[i]!=-1;i++){
d+=(double)p[i];
}
if(i==0)return -1.0;
return d/i;
}
int main(){
int a[11],i;
for(i=0;i<10;i++){
printf("整数[%d]==>",i);
scanf("%d",&a[i]);
if(a[i]==-1)break;
}
a[i]=-1;
printf("\n平均:%.1f",Average(a));
return 0;
}
0287デフォルトの名無しさん
2005/09/18(日) 14:46:2310個若しくは要素にー1が現れるまでが条件か・・・?
つーか、問題はちゃんと全部書けと散々言ってるだろう
それで問題全部なら、出題した奴の頭に蛆でも沸いてるんじゃねーの
0288デフォルトの名無しさん
2005/09/18(日) 14:55:50条件はそういうことだと思います。
問題はこれで全部です。
0289デフォルトの名無しさん
2005/09/18(日) 14:59:32配列の[9]には-1が格納されるべき。
0290デフォルトの名無しさん
2005/09/18(日) 15:01:34もし-1が要素の終了条件であるならば、実行画面1の[9]には-1が格納される筈。
ってこと
0291デフォルトの名無しさん
2005/09/18(日) 15:03:46実行例1には[9]にも90と入ってるぞ
とりあえず287に書いた条件で手直ししてみた
例によって相変わらずの脳内gccだから違ってるかも知れない(特にキャスト周辺)
ちゃんと動くか確認してみてくれ
double Average(int *p)
{
unsigned long diff=0;
int i;
for (i=1;i<10 && p[i] != -1;i++)
diff += p[i] - p[i-1];
return (double)p[0] + ((double)diff)/((double)i);
}
0292デフォルトの名無しさん
2005/09/18(日) 17:27:37ダメだと思う
素直にdoubleにしとけよw
0293デフォルトの名無しさん
2005/09/18(日) 18:03:44まぁ減点対象だろうが
0294デフォルトの名無しさん
2005/09/18(日) 19:18:45-1が入ってたら打ち切り、なんだろ?
負数が無いと仮定した方がしぜんジャマイカ
0295デフォルトの名無しさん
2005/09/18(日) 19:55:57ちゃんと>291を読めよ。
負の数を代入する可能性があるのは見えないか?
0296デフォルトの名無しさん
2005/09/18(日) 20:04:20見えない
つーかあったとしても-1だけ例外なのはおかしいし
0297デフォルトの名無しさん
2005/09/18(日) 20:11:23そうではなくて、p[i] - p[i - 1] も見えないのか?
0298デフォルトの名無しさん
2005/09/18(日) 20:40:270299デフォルトの名無しさん
2005/09/19(月) 02:33:52unsignedじゃダメじゃんか・・・longだよlong_| ̄|○
0300デフォルトの名無しさん
2005/09/19(月) 02:34:52もう寝る('A`)ノシ
0301デフォルトの名無しさん
2005/09/19(月) 13:19:56[2]文字列strの中に、文字cが含まれていればその添字を返し、
含まれていなければ-1を返す関数
int str_char(const char str[], int c)
を作成せよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/929.txt
関数部分は合っていると思うのですがエラーが出てしまいます。
添削お願いします。
[3.1]windows[3.2]bcc[3.3]C
0302デフォルトの名無しさん
2005/09/19(月) 13:22:22>>1
>・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
0303デフォルトの名無しさん
2005/09/19(月) 13:39:54printf("文字列を入力してください:");
fgets(st, 100, stdin);
printf("調べたい文字を入力してください:");
ch = getchar();
0304デフォルトの名無しさん
2005/09/19(月) 13:53:17あとは>>303の修正で良いと思う(or scanf("%s ",st))
0305304
2005/09/19(月) 13:56:17×(or scanf("%s ",st))
○(or scanf(" %c",&ch))
0306デフォルトの名無しさん
2005/09/19(月) 14:33:52>{ -A , 0 , B , B+C , B+C+D}
>{ -A-B, -A, 0 , C , C+D} を生成している罠。
実際生成していないんだが、ソース読んでるか?
0307デフォルトの名無しさん
2005/09/19(月) 20:33:270308デフォルトの名無しさん
2005/09/19(月) 23:18:11多分>>303で正解。
0309デフォルトの名無しさん
2005/09/20(火) 00:23:14[2] 問題文: 縦横100×100で8ビット256色のBMPファイルを読みこみ、1ピクセルあたりの画素値を
CSVファイルにBMPの画像のように同じ様に書きこめ。
[3] 環境
[3.1] OS: Windows2000
[3.2] コンパイラ名とバージョン: VC++
[3.3] 言語: C言語
[4] 期限: [無期限]
[5] その他の制限: BMPのヘッダーを構造体に入れてから画素値を取り出しなさい。また2次元配列を使いなさい。
以前同じ質問をしたのですがいまだに解き方がわからないので再度質問させてください。
freadで一行分のピクセルデータから1バイトずつ抜き出していく方法を考えているのですが、これをどう0〜256の
画素値にするのかがわかりません。
ビットマップのピクセルデータをどう扱うか、また1ピクセルごとにどうファイルから読んで二次元配列に入れていくのか
という根本的なところが理解できていないのが解らない原因ですが、どうかご教授ください。
0310デフォルトの名無しさん
2005/09/20(火) 00:32:31ソースを見直してようやく分かった。
sums[i]要素を削除するremove_lt()で処理してるんだな。
まあ、このスレに助け求めている人間があんなコードを渡されても…という感は否めないがw
>>309
そもそも主がどこまでやったかわからん。晒せ。
0311デフォルトの名無しさん
2005/09/20(火) 00:41:18参考になればいいが、
8bitなら2^8=256個、赤、青、緑の色情報を格納する構造体を宣言する。
(構造体でなくとも、long int型でもいい)
画像からカラーパレット情報を読み出したら、上の構造体に保存しておく。
画像からイメージ情報を読み出したら、カラーパレット番号に対する色情報を出力する。
(long int型を使ったら、表示するときに色成分を分ける)
こんな感じか...
とりあえずカラーパレット一覧をCVSにするプログラムを作るのが先か。
0312デフォルトの名無しさん
2005/09/20(火) 00:42:500313309
2005/09/20(火) 00:58:29画像ファイルからのデータの抜き出しという考え方が頭の中でイメージできなくて。
テキストファイルだと一文字や一列づつ読み込むと言うのは解るのですが、ビットマップは1マスずつの扱い方が
どうも理解が出来ないんです。
Cを初めて全然たっていないんですがポインタと配列の関係でもつまづくくらい覚えが悪いんです。
0314デフォルトの名無しさん
2005/09/20(火) 01:36:49[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/931.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/930.txt
[3] 環境
[3.1] OS: /Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: [9/20 17:00]
[5] その他の制限:
931がcommon.inc.cです。930のインクルードに書いてあるcommon.inc.cです。
./a.out 930 common.inc.c -lm
でコンパイルします。
で、common.inc.cの
/* コードブックサイズ */
//#define CODEBOOK_SIZE 256
#define CODEBOOK_SIZE 2048
/* コードブックモード */
//#define CODEBOOK_RGB
#define CODEBOOK_YUV
のところで、#define CODEBOOK_RGBをコメントアウトして#define CODEBOOK_YUV
を有効にしてしまうとエラーが出てしまいます。逆の場合(RGBを有効、YUVをコメントアウト)はでません。
どうか解決をお願いいたします。
0315デフォルトの名無しさん
2005/09/20(火) 01:38:360316デフォルトの名無しさん
2005/09/20(火) 01:39:45ところで・・・・C言語講座じゃないでしょ?
ホントのところは、なんなのさ。
0317デフォルトの名無しさん
2005/09/20(火) 01:41:490318314
2005/09/20(火) 01:49:49In file included from makecodebook.c:8:
common.inc.c: In function `colorrgb2coloryuv':
common.inc.c:188: parse error before `unsigned'
common.inc.c:192: `coloryuv' undeclared (first use in this
function)
common.inc.c:192: (Each undeclared identifier is reported
only once
common.inc.c:192: for each function it appears in.)
よろしくお願いいたします
0319デフォルトの名無しさん
2005/09/20(火) 02:07:55俺はc89でしか書かんが。
0320デフォルトの名無しさん
2005/09/20(火) 02:50:54エラーのあるなしが変わるのはコンパイル前処理で#ifdefが無くなるから。
0321デフォルトの名無しさん
2005/09/20(火) 03:28:55ありがとうございます。
gcc ファイル名 -lm -std=c99
ということでしょうか?
>>320
> 関数冒頭で変数宣言してないからだな。defineのコメントアウトで
> エラーのあるなしが変わるのはコンパイル前処理で#ifdefが無くなるから。
ありがとうございます。
176行目で、
UINT32 coloryuv;
とすればよろしいのでしょうか?
0322デフォルトの名無しさん
2005/09/20(火) 03:48:29宿題の内容とは全く関係ないが、
common.inc.cをインクルードしてるのがちょっとな・・・
実行ファイル名がa.outなのもどうかと。
そろそろMakefile作ってソース構成まとめたほうがいいんでない?
(構成例)
common.h :共通定義
common.c :共通ソース
codebook.c :コードブック作成処理
encode.c :エンコード処理
decode.c :デコード処理
Makefile :以下の実行形式ファイルを生成
→ codebook(コードブック作成)
→ encode(エンコード)
→ decode(デコード)
この辺は人それぞれだから、別に強制するわけではないけどね。
0323デフォルトの名無しさん
2005/09/20(火) 04:06:23>321
すこしは自分でやるとか調べるとかしようよ。
Linuxからでもネットはできるんだからさ。
>gcc ファイル名 -lm -std=c99
>ということでしょうか?
実際にやってみてどうでしたか?
コンパイルオプションを調べましたか?
>176行目で、
>UINT32 coloryuv;
>とすればよろしいのでしょうか?
実際にやってみてどうでしたか?
エラーは出なくなりましたか?
0324デフォルトの名無しさん
2005/09/20(火) 04:13:21ありがとうございます。できればやってみようと思います。
>>323
ありがとうございます。
実際にやってみたのですがだめでした。
コンパイルオプションについて調べてみました。
http://okuyama.mt.tama.hosei.ac.jp/unix/C/slide05-1.html
ここを参考にして身ました。
UINT32 coloryuv.c;
をやってみました。エラーは減ったのですがやはりだめでした。
In file included from makecodebook.c:8:
common.inc.c: In function `colorrgb2coloryuv':
common.inc.c:189: parse error before `unsigned'
170行目で、UINT32 colorrgb ,UINT32 coloryuv
にしてみましたがこれまただめでした。
知り合いの環境だといままでやったことを何もせずともコンパイルが通ったそうです。
0325デフォルトの名無しさん
2005/09/20(火) 04:19:37-mはリンカオプションなんで最後に書くけど、コンパイルオプションは最初に書くべきでしょうね。
参考にしたというページの例でもそうなってますね。
変数の宣言を2回してませんか?
知り合いの環境で動くなら知り合いの環境で組むのがいいでしょうね。
0326デフォルトの名無しさん
2005/09/20(火) 04:24:34ありがとうございます。
ggc -ostd=c99 ファイル名 -lm を実行しましたがだめでした
変数の宣言を二回しています。
ということは170行目で宣言してはいけないということですよね?
知り合いの環境では動きました。ということは新たに加えて宣言してはいけないようなプログラムだと
いうことですか?
知り合いは遠くの人なので何度も実行結果を送ってもらうわけにはいかないので
なんとかしたいです。
0327デフォルトの名無しさん
2005/09/20(火) 04:34:30・知り合いが面倒なので適当に出来たとだけ言っている
・知り合いがなにか修正したり、コンパイル時に何かしてるのに報告してない
・あなたが知り合いをでっち上げている
どれだろうね。
0328314
2005/09/20(火) 04:34:48何か思い当たるようなことはないでしょうか?
どうかよろしくお願いいたします
0329デフォルトの名無しさん
2005/09/20(火) 04:35:580330314
2005/09/20(火) 04:37:28ありがとうございます。
どれもないかとおもいます。というのはRGBの場合だと問題ないのに
YUVだと問題があるということから真ん中は消えます。
(RGBとYUVでコンパイル時に別のことはしていない)
一番上は、実際に処理ファイルを送ってもらったことや、信頼できるやつなので違うと思います
一番下は違います。
0331デフォルトの名無しさん
2005/09/20(火) 04:38:27細かいことは聞いてないのでわかりません(もう寝てしまった・・・)
コンパイル方法は
gcc ファイル名 -lm
です。
0332デフォルトの名無しさん
2005/09/20(火) 04:39:230333デフォルトの名無しさん
2005/09/20(火) 04:40:09gcc -std=c99 ファイル名 -lm
でどんな?
0334デフォルトの名無しさん
2005/09/20(火) 04:44:02ありがとうございます。
gcc -std=c99 makecode.c -lm
をすると -std=c99 を抜かしてコンパイルしたのと同様にしたのようなえらーがでました
In file included from makecodebook.c:8:
common.inc.c: In function `colorrgb2coloryuv':
common.inc.c:188: parse error before `unsigned'
common.inc.c:192: `coloryuv' undeclared (first use in this
function)
common.inc.c:192: (Each undeclared identifier is reported
only once
common.inc.c:192: for each function it appears in.)
0335デフォルトの名無しさん
2005/09/20(火) 05:06:38お礼遅くなってしまって申し訳ありません。
303のやり方で上手くいきました。
ご親切にどうもありがとうございました。
>>302
ご指摘ありがとうございます。
以後気を付けます。
0336デフォルトの名無しさん
2005/09/20(火) 05:53:43upしたり、知人に送ったファイルと、コンパイルしているファイルが違うとかな・・・まさか、そんなオチは嫌だぞ。
検証方法:
・ファイルをダウンロードしてコンパイル
・知り合いをはたき起こして送ったファイルを送り返してもらってコンパイル
検証結果報告待つ
0337デフォルトの名無しさん
2005/09/20(火) 06:44:18ありがとうございます。
今まで私が出来うる限りのことをしていました。
しぐうぃんでやってみるという方法を思いつき、やってみたところ成功いたしました。
linux gcc ではならなかったのですが、自分では原因がどうしてもわかりません。
知人の環境を詳しく聞いてみたいと思います。
0338314
2005/09/20(火) 07:13:40Linuxの場合だとコンパイルが通らなかったという事実からみちびかれるのは
gccのバージョンですか?
最近十分に寝て無くって頭がおかしくなってきて何かいてるかも少しおかしいですが
よろしくお願いします
0339デフォルトの名無しさん
2005/09/20(火) 07:46:530340デフォルトの名無しさん
2005/09/20(火) 14:22:16そうやって気づいたのなら、自分で試してみるといいよ。
0341デフォルトの名無しさん
2005/09/20(火) 22:50:130342デフォルトの名無しさん
2005/09/20(火) 23:12:181)>>338 って何者でしょうか?
2)同僚に彼みたいなのが来たらどうしますか?
0343デフォルトの名無しさん
2005/09/20(火) 23:49:24質問は>>1に従ってやってください。でないと嵐と見なされ放置されます。
0344デフォルトの名無しさん
2005/09/21(水) 00:02:58荒れる上に脱力だねぇ。
0345314
2005/09/21(水) 00:42:32すみません。荒らすつもりはありません。
知人の環境は
OS:KNOPPIX 3.9 コンパイラ:gcc (GCC) 3.3.6 (Debian 1:3.3.6-5) です。
私の環境は OS:Vine Linux 2.6r3 コンパイラ:gcc version 2.95.3 です。
これだとコンパイルが通りませんでした。
しかし、WINDOWSXP、Cygwinのgcc versionは3.4.4(Cygwin special)だと
コンパイルが通りました。
おそらくコンパイラのバージョンが問題だということまではわかったのですが解決方法が
わからず、困っております。
コンパイルオプションに-std=gnu89(gcc 3.3.6でのデフォルトです)をつけてみたりもしたのですが
だめでした。
0346デフォルトの名無しさん
2005/09/21(水) 00:57:26知人の環境を Vine Linux 2.6r3 にバージョンダウンしてもらって、
知人の環境でもコンパイルエラーがでるようにしてもらい、
その上で単なるバージョンが古いと出るエラーに
不毛な対処法を考えてもらい手とり足とり教えてもらうのがベストかなぁ……
0347デフォルトの名無しさん
2005/09/21(水) 01:20:500348デフォルトの名無しさん
2005/09/21(水) 01:32:46まあ・・・素直にC89(C90)で通るソースを書くほーがマシだな。
-ansi -Wallで文句いわれないソースにすればよろしい。
0349デフォルトの名無しさん
2005/09/21(水) 01:39:57ありがとうございます。
さすがにそこまではたのめないので・・・
>>347
RGBだと大丈夫だったのでそれはないかな?と自分では思っております。
>>348
ありがとうございます。
コンパイルオプションに-std=c89をつけて両方の環境(知人と私の環境)でコンパイルが通るようにするべきかなと
言われました。
0350デフォルトの名無しさん
2005/09/21(水) 01:44:39349が何をしたいのか、ここの回答者に何をさせたいのか、さっぱりわからんのですが。
0351デフォルトの名無しさん
2005/09/21(水) 01:50:12Cygwin をインストールするというのはどうだろうか?
0352デフォルトの名無しさん
2005/09/21(水) 01:53:28ありがとうございます。
昨日みなさんに質問し、さまざまなことを試すことである程度の解決を図ることができたので
報告、そしてもっといい解決方法があれば教えていただきたいという意味で書き込みを
させていただいております。
>>351
ありがとうございます。
wineというのがよくわからないのですが、後日その方法についても調べてみます。
0353デフォルトの名無しさん
2005/09/21(水) 01:59:46UINT32 coloryuv;
を入れて188行目(↑の変更前の行数)を
変更前> UINT32 coloryuv = (UINT32) ai << 16
変更後> coloryuv = (UINT32) ai << 16
と変更。多分>>322ではこの変更をしてない。
あとは-Wallを片付けるならメインのファイル(930.txt)の90行目
変更前> fprintf(fp_o," %3d, %08X, %3d\n",i , tmp_hist->coloryuv, tmp_hist->count);
変更後> fprintf(fp_o," %3d, %08lX, %3ld\n",i , tmp_hist->coloryuv, tmp_hist->count);
と変更。
これでこの話題終了。
0354デフォルトの名無しさん
2005/09/21(水) 02:01:010355デフォルトの名無しさん
2005/09/21(水) 02:10:15ありがとうございます。
早速学校に試そうと思います。
直すべきところは
common.inc.cの176行目に
UINT32 coloryuv;
を入れて188行目(↑の変更前の行数)を
変更前> UINT32 coloryuv = (UINT32) ai << 16
変更後> coloryuv = (UINT32) ai << 16
あとは-Wallを片付けるならメインのファイル(930.txt)の90行目
変更前> fprintf(fp_o," %3d, %08X, %3d\n",i , tmp_hist->coloryuv, tmp_hist->count);
変更後> fprintf(fp_o," %3d, %08lX, %3ld\n",i , tmp_hist->coloryuv, tmp_hist->count);
と変更。
とこの二つを変更すればよろしいのでしょうか? -Wallを片付けるならという意味がよくわからなかったもので。
0356デフォルトの名無しさん
2005/09/21(水) 02:17:56日本語が分かりません。
学校「で」試す必要ないでしょーが。
自宅にLinux環境あるんでしょ?
0357デフォルトの名無しさん
2005/09/21(水) 02:25:27エレガントな修正法をおしえてつかーさい。
0358デフォルトの名無しさん
2005/09/21(水) 02:49:31作り直し
0359デフォルトの名無しさん
2005/09/21(水) 02:57:38まあ、いいか。俺のじゃないし、依頼も受けてないから、放置しとこう。
0360デフォルトの名無しさん
2005/09/21(水) 03:07:07学校にいろんなデータをおいてきてしまったので、学校に行かなくてはだめでした
>>359
できれば、エラーがでないように作り直していただきたいなと思います。。。
0361デフォルトの名無しさん
2005/09/21(水) 03:18:00/* RGBαベクトル値からYUVαベクトル値を取得 */
UINT32 colorrgb2coloryuv(
UINT32 colorrgb
)
{
:
0362361
2005/09/21(水) 03:27:50そこじゃよくわからんぞw
>353の指摘ってことだ
0363デフォルトの名無しさん
2005/09/21(水) 03:30:49大丈夫、きっとみんな理解できてない
ソースとレスの端々の単語から推測しているだけさ
そして、詳しい説明を求めても、無駄だということを確信しているんだ
0364デフォルトの名無しさん
2005/09/21(水) 03:31:19ふむふむ>362
0365デフォルトの名無しさん
2005/09/21(水) 03:36:04UINT32 coloryuv;
を入れて188行目(↑の変更前の行数)を
変更前> UINT32 coloryuv = (UINT32) ai << 16
変更後> coloryuv = (UINT32) ai << 16
にすることでエラーがなくなりました。ありがとうございました。
しかし、これはCB作成だけのプログラムで、エンコートのプログラムをコンパイルしたら
これまたエラーが出ました。デコードのプログラムではエラーは出ませんでした。
新たにエンコードのプログラムをアップしてもよろしいでしょうか?
添削していただけないでしょうか?
どうかよろしくお願いいたします。
>>364
ありがとうございます
0366デフォルトの名無しさん
2005/09/21(水) 03:46:32俺としては、やめて欲しいな。
0367デフォルトの名無しさん
2005/09/21(水) 03:46:59[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/931.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/932.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 2.95.3
[3.3] 言語: C
[4] 期限: [2005y年9月21日17:00まで]
[5] その他の制限: 何度もご迷惑をおかけして申し訳ないです。
0368デフォルトの名無しさん
2005/09/21(水) 03:47:48すいません・・・。
コンパイル方法は gcc 932.c -lm
です。
0369367
2005/09/21(水) 03:49:01encode.c: In function `main':
encode.c:102: parse error before `int'
encode.c:117: `found' undeclared (first use in this
function)
encode.c:117: (Each undeclared identifier is reported only
once
encode.c:117: for each function it appears in.)
0370デフォルトの名無しさん
2005/09/21(水) 03:50:120371デフォルトの名無しさん
2005/09/21(水) 03:56:56このエラー英語で書いてあるから辞書とかひけない奴には
絶対理解不能なんじゃないかなぁ……
少なくとも小学生が読めるようなものじゃないと思う。
0372367
2005/09/21(水) 03:57:12の87行目に
int found;
で、
102行目(訂正前)の
int found = FALSE;
を
found = FALSE;
にしたらエラーが消えました。皆様の助言のおかげです。ありがとうございます。
さっそく無事にすべてできるかどうか試してみます
0373デフォルトの名無しさん
2005/09/21(水) 04:01:33そのソースの意図に従ってコンパイルを通すだけでいいなら
・103行目
/* int found = FALSE; */
・118行目
if(1){
ってすればいい。
でもやりたい事は違うと思うけどなw
0374デフォルトの名無しさん
2005/09/21(水) 04:04:12いろんな実行をした結果、Cgwinででたとおりの結果になりました。
ありがとうございます。大変助かりました。
0375デフォルトの名無しさん
2005/09/21(水) 13:32:18VC++を利用しているものですが、
あるボタンを4回クリックして、1回目から2回目クリックまでの時間、
2回目から3回目クリックまでの時間、3回目から4回目クリックまでの時間の
平均時間を計測したいのですが、どのような方法をとればよいのでしょうか。
ご教授お願いします。
0376デフォルトの名無しさん
2005/09/21(水) 13:41:45WM_LBUTTONUPが来た時点でWinProcにstatic宣言でもした変数に
時間入れて、なんらかのフラグセット
2回目のが来たらフラグがあるかどうか見て、あったらその時の時間と
1回目で保存した時間とを比較で間隔出せるんじゃまいか?
0377デフォルトの名無しさん
2005/09/21(水) 13:59:33>>1
つttp://www.orchid.co.jp/computer/cschool/time1.html
これ使えば?
0378デフォルトの名無しさん
2005/09/21(水) 14:13:45�A配列に入ってる整数形のデータのうち、偶数があれば削除して、
前につめる関数、あいた部分には0を入れる
del_gusuu(int data[],int size)を使用。(サイズsizeの配列)
�Bビジュアルスダジオ/c++
�C21日(本日中・・・できるなら今!w)
どなたか助けてください。。。お願いしますm(__)m
0379375
2005/09/21(水) 14:19:36説明不足で申し訳ないのですが、ボタンをタップすることでの音楽のテンポの測定を
したいと考えているので、
秒単位ではなくmsでの計測をしたいです。
0380デフォルトの名無しさん
2005/09/21(水) 14:27:23void del_gusuu(int data[], int size)
{
int *p = data;
for (int i=0; i<size; i++) {
if (data[i] && (data[i] & 1)) {
*p++ = data[i];
}
}
while (p != (data+size))
*p++ = 0;
}
0381380
2005/09/21(水) 14:28:48if (data[i] && (data[i] & 1)) {
↓
if (!data[i] || (data[i] & 1)) {
0382デフォルトの名無しさん
2005/09/21(水) 14:32:52ms単位で時間を取得すればいいだろうに。
GetTickCountでもマルチメディアタイマーでも好きなものを使えばいい
0383デフォルトの名無しさん
2005/09/21(水) 14:39:08if (data[i] & 1)で十分だろ。
0384デフォルトの名無しさん
2005/09/21(水) 14:39:580も偶数扱いになるのを避けてるんじゃない?
0385デフォルトの名無しさん
2005/09/21(水) 14:42:510386デフォルトの名無しさん
2005/09/21(水) 14:43:580387378
2005/09/21(水) 14:45:48えとたしか授業では0も偶数でやってましたです。
0388375
2005/09/21(水) 14:49:330389デフォルトの名無しさん
2005/09/21(水) 14:52:21じゃあ>>380に>>383で。
0390378
2005/09/21(水) 14:54:51まだできませーん。。。
0391デフォルトの名無しさん
2005/09/21(水) 14:57:270392378
2005/09/21(水) 14:58:170393デフォルトの名無しさん
2005/09/21(水) 14:58:48は?
0394デフォルトの名無しさん
2005/09/21(水) 15:00:25関数だけじゃないのかYO
0395378
2005/09/21(水) 15:00:390396デフォルトの名無しさん
2005/09/21(水) 15:02:460397デフォルトの名無しさん
2005/09/21(水) 15:07:53#include <iostream>
#include <iterator>
using namespace std;
// ここに>>380,383
int main()
{
int array[] = {1,2,3,4,5,6,7,8,9,10};
int size = sizeof(array)/sizeof(int);
del_gusuu(array, size);
copy(array, array+size, ostream_iterator<int>(cout, " "));
return 0;
}
0398378
2005/09/21(水) 15:19:51でもビルドすると72件のエラーが。。。
0×40の文字は認識できませんってでるのですが・・・・
いったいどうすればいいんですか??
ばかでもうしわけない。
0399デフォルトの名無しさん
2005/09/21(水) 15:20:22そう来るとは思ってたが・・・
全角スペースを全部半角スペースかタブに置き換えれ。
0400デフォルトの名無しさん
2005/09/21(水) 15:24:24おいおい、そう来ると思ったなら次からは にしようよ。
0401デフォルトの名無しさん
2005/09/21(水) 15:25:35#include <iostream>
#include <iterator>
void del_gusuu(int data[], int size)
{
int *p = data;
for (int i=0; i<size; i++)
if(data[i] & 1) *p++ = data[i];
while (p != (data+size)) *p++ = 0;
}
int main()
{
int array[] = {1,2,3,4,5,6,7,8,9,10}; int size = sizeof(array)/sizeof(int);
del_gusuu(array, size);
std::copy(array, array+size, std::ostream_iterator<int>(cout, " "));return 0;
}
0402378
2005/09/21(水) 15:26:55ほんとうにありがとうございました。
これで宿題提出して帰れます。
ありがとうございました。
0403デフォルトの名無しさん
2005/09/21(水) 15:30:420404デフォルトの名無しさん
2005/09/21(水) 16:35:42そこをいかに突っ込み返すかが大事だ。
0405デフォルトの名無しさん
2005/09/21(水) 16:44:54del_guusuが綺麗すぎるだろw
0406デフォルトの名無しさん
2005/09/21(水) 17:08:24初心者でも、あれ位なら大丈夫だろ。
むしろ こういう関数を書いて反応を見たいw
void del_gusuu(int data[], int size){
std::fill(std::remove_if(data,data+size,std::not1(std::bind2nd(std::modulus<int>(),2))),data+size,0);
}
0407デフォルトの名無しさん
2005/09/21(水) 17:14:36俺はC++まだほとんどやってないが、とりあえずSTLをふんだんに使ってるということは分かった
0408デフォルトの名無しさん
2005/09/21(水) 17:32:49いい読みだな。未経験者の割には、
俺の周りにいる奴ら(俺含む)よりはできるな。やらないか?
0409デフォルトの名無しさん
2005/09/21(水) 17:48:37ウホッ!いい男・・・
まぁ冗談はおいといて、やってないとはいっても独習を関数のオーバーロード辺りまでは
読み進めたし、C++にはSTLという大層便利な物があるってことぐらいは知ってたからな
0410デフォルトの名無しさん
2005/09/21(水) 18:17:10struct pair { int a; int b;};
void f(struct pair **s){ s[1]->a=100; }
main(){
struct pair *A[10];
struct pair B;
B.a=50;
A[1]=&B;
f(A);
printf("%d",A[1]->a);
}
2行目の**は何でしょうか?
ちなみに今、ポインタ等を勉強中です。
*は間接参照演算子というらしいのですが**が解りません。
よろしくお願いします。
0411デフォルトの名無しさん
2005/09/21(水) 18:19:17スレ違い。
が、一応書くと struct pairへのポインタへのポインタ
0412デフォルトの名無しさん
2005/09/21(水) 18:36:32次からはCの質問スレな
んで、アスタリスクの意味を知ってるならそれが2つ重なってるだけ
A→Bという関係なら、*AでBが参照できるわけだが、
A→B→Cとなってるなら、**AでCが見れる
0414デフォルトの名無しさん
2005/09/22(木) 19:36:54[2] 問題文(含コード&リンク):課題:ビット演算子
(1)サブネットマスクを入力し、そのネットワークで使用できるホストの最大数を求めるプログラム。
(2)32ビットのパターンを表示する関数を作成して、それを呼び出して実行するプログラム。
(3)32ビットのデータを指定数だけ左にシフトする関数を作成し、それを呼び出して実行するプログラム。
※(2)で作成した関数によりビットパターンを表示。
左シフトであふれた分は下から入れる。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: 9月23日0:00
教科書等を見たのですが、理解できませんでした。
ご指導お願いします。
0415デフォルトの名無しさん
2005/09/22(木) 21:55:25(2)ビットのパターンを表示って2進数表記ってことでしょうか?
0416デフォルトの名無しさん
2005/09/22(木) 22:01:58int main()
{
unsigned char array[4] = {0, 0, 0, 0};
unsigned long mask = 0;
int i;
printf("サブネットマスクを入力(例 : 255.255.255.0)\n");
printf("->");
scanf("%u.%u.%u.%u", &array[0], &array[1], &array[2], &array[3]);
for(i = 0; i < 4; i++){
mask = mask << 8;
mask = mask | array[i];
}
mask ^= 0xFFFFFFFF;// ノード数
mask -= 2;// 使用不可アドレス
printf("%u", mask);
return 0;
}
0417デフォルトの名無しさん
2005/09/22(木) 22:10:44void showBits(int value){
int index = 32;
do putchar('0'+(value>>--index&1));while(index);
}
unsigned shiftLeft(unsigned value,unsigned shift){
if(shift >= 32)return 0;
else return value << shift;
}
int main(){
showBits(shiftLeft(1,3));
}
0418デフォルトの名無しさん
2005/09/22(木) 22:14:16unsigned shiftLeft(unsigned value,unsigned shift){
return value << shift|value>>32-shift;
}
0419デフォルトの名無しさん
2005/09/22(木) 23:56:25>scanf("%u.%u.%u.%u", &array[0], &array[1], &array[2], &array[3]);
再提出
0421419
2005/09/23(金) 03:00:500422デフォルトの名無しさん
2005/09/23(金) 09:17:57ありゃま
0424デフォルトの名無しさん
2005/09/23(金) 12:24:330425デフォルトの名無しさん
2005/09/23(金) 14:23:39[2] 問題文(含コード&リンク):
問題イ
名前、年齢を持つリストを作成し、その中から指定したkeyを検索し、
その後ろに新たなデータを挿入するプログラムを作成してください。
ただし、指定したkeyが見付からなかった場合は、リストの最後に挿入すること。
問題ロ
名前、年齢を持つリストを作成し、そのリストからあるデータを削除するプログラムを作成してください。
[3] 環境
[3.1] OS: solaris
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C言語
[4] 期限: 9月30日
0426デフォルトの名無しさん
2005/09/23(金) 14:50:52名前なのか年齢なのか。
0428デフォルトの名無しさん
2005/09/23(金) 15:55:17やるだけやったけど、題意とり違えたりしてたら言ってくれ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/935.txt
0429デフォルトの名無しさん
2005/09/24(土) 00:00:44同姓同名以下略
0430ageをあげかとおもたorz
2005/09/24(土) 15:01:17{
struct node * n = (struct node *) malloc(sizeof(struct node));
if (n == NULL)
{
fprintf(stderr, "Memory error.\n");
return NULL;
}
strncpy(n->name, name, sizeof(n->name) - 1);
n->name[sizeof(n->name) - 1] = '\0';
n->age = age;
n->next = next;
return n;
}
0431デフォルトの名無しさん
2005/09/24(土) 15:13:230432デフォルトの名無しさん
2005/09/24(土) 15:51:33あとinsert_nodeには nextがNULLの香具師を見つける get_last_node とかも
0433デフォルトの名無しさん
2005/09/24(土) 19:05:32参加者N人がM人ずつで対戦する大会の日程を再帰を使わず、書け。とのお題。
例えば、N=6、M=2 のとき
1日目 1-2 3-4 5-6
2日目 1-3 2-5 4-6
3日目 1-4 2-6 3-5
4日目 1-5 2-4 3-6
5日目 1-6 2-3 4-5
さっぱりわかんねっす。
0434デフォルトの名無しさん
2005/09/24(土) 19:09:21http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/937.c
0435デフォルトの名無しさん
2005/09/24(土) 19:10:45>>1
0436デフォルトの名無しさん
2005/09/24(土) 19:24:47[1] 授業単元:ありません
[2] 問題文(含コード&リンク): >>433
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: ありません
[3.3] 言語: C
[4] 期限:ありません
[5] その他の制限: 基本情報技術者試験を受けよかな?ぐらいな実力
0437デフォルトの名無しさん
2005/09/24(土) 19:39:160438433です
2005/09/24(土) 20:02:54面白いお題もらったもので、考えたのですが、
自分には難しく、質問した次第です。
スレ違いのようですと、あきらめます。
コンパイラはこだわらないといいますか、違いがよくわかってません。
0439デフォルトの名無しさん
2005/09/24(土) 20:25:36スマートに書くにはどうすればいいんだろ
#include<stdio.h>
unsigned pop(unsigned x){
x -= x>>1&0x55555555;x = (x&0x33333333) + (x>>2 & 0x33333333);
x = x+(x>>4) & 0x0f0f0f0f;x = x + (x>>8);x = x + (x>>16);
return x & 0x3F;
}
unsigned snoob(unsigned x){
unsigned smallest = x & -x,ripple = x + smallest;
return ripple | ~(-1<<(pop(x^ ripple)-2));
}
void show(unsigned N,unsigned M){
unsigned n,bits,i;
for(n=0,bits = (1<<M)-1;bits<(1<<N);bits=snoob(bits)){
printf("%2d日目 %u",++n,pop((bits&-bits)-1)+1);
for(i=bits&bits-1;i;i&=i-1)printf("-%u",pop((i&-i)-1)+1);
printf("\n");
}
}
int main(){show(6,2);}
0440433です
2005/09/24(土) 20:38:13ほんとうれしいっす。
0441デフォルトの名無しさん
2005/09/24(土) 20:54:03[2] 最大10文字のchar型の配列に範囲を指定して文字列を置換していく。
範囲n〜n2以下の文字列の場合は範囲末尾以降を前詰めし、
範囲以上なら後ろにずらしていく。 '\n'は文字に含まず、
'\n'のみ入力があった場合はその範囲内の文字列を削除して前詰めする。
ずらす文字がオーバーフロウする場合は消していく。
[3] 環境
[3.1] WindowsXP
[3.2] BCC
[3.3] C言語
[4] 期限:月曜まで
[5] その他の制限: 無し
削除、前詰めまでは出来たのですが、範囲以上の文字列の場合にずらしていく処理がうまくいきません。
よろしくお願いします。
0442441
2005/09/24(土) 20:55:070443439
2005/09/24(土) 21:08:47いや読んでもいいけどビット演算を平気で多用してるから理解は難しいかとw
一応読むのが非常に困難な場所だけ言っておくと、
popは受け取った整数の立っているbitの数を返す関数
snoobは受け取った整数の立っているbitの数が同じで元の数より大きい最小の数を返す関数
この2個の関数は書籍「ハッカーの楽しみ」のコードがベース
あとはshowで右Nbitの整数からMビット立っている全ての数を列挙して
その組み合わせを表示しているだけ。
#ただ一日に複数の試合が行う方法が思いつかなかったのが少し心残り
0444デフォルトの名無しさん
2005/09/24(土) 21:56:38いや、ほとんど理解できてませんが、なるほどです。
0445デフォルトの名無しさん
2005/09/24(土) 22:32:04[1] C言語特別講座
[2] 問題文
n!を求める関数factorialを再帰を用いて作成
/*nの階乗*/
#include<stdio.h>
intfactorial(int n)
{
if(n==0){
* *;
}
else{
* *;
}
}
void main(void)
{
int n;
printf("n->");
scanf("%d",&n);
printf("%dの階乗=%d\n",n,factorial(n));
}
**で囲まれてる部分がわかりません
[3] 環境
[3.1] OS: WindowsXP
[3.2] VC 6.0
[3.3] 言語: C++
[4] 期限: 明後日まで
0446デフォルトの名無しさん
2005/09/24(土) 22:34:31int factorial(int n)
{
if(n==0){
return 1;
}
else{
return n * factorial(n-1);
}
}
#末尾再帰にしたいなぁ……
0447デフォルトの名無しさん
2005/09/24(土) 23:21:35勉強してくる
0448デフォルトの名無しさん
2005/09/24(土) 23:52:27もちっと具体例キボンヌ
0449433です
2005/09/25(日) 00:44:540450441
2005/09/25(日) 00:48:14範囲指定が2文字の所("CD"の箇所)に4文字の文字列(2文字多い)を置換するので
buffer[11] = "ABWXYZEFGH\0" となってE以降の文字列が2文字ずつズレていく(要素10は常に\0)といった感じです。
0451デフォルトの名無しさん
2005/09/25(日) 01:05:37char temp[11] = {0};
char* p;
char insert[] = "WXYZ";
int n, n2;
if((n2 - n) < strlen(insert)) {
strncpy(temp, buffer, head);
strcat(temp, insert);
p = &buffer[n2];
strncat(temp, buffer, strlen(p));
strcpy(buffer, temp);
}
0452デフォルトの名無しさん
2005/09/25(日) 01:06:53○ strncpy(temp, buffer, n);
0453デフォルトの名無しさん
2005/09/25(日) 01:11:530454デフォルトの名無しさん
2005/09/25(日) 01:16:47sizeof(temp) - strlen(temp) - 1か?
pいらね。もう間違いすぎ。おとなしく寝よう…。
0455433です
2005/09/25(日) 01:18:160456デフォルトの名無しさん
2005/09/25(日) 01:19:04strncat(temp, p, sizeof(temp) - strlen(temp) -1);
0457433です
2005/09/25(日) 01:29:25ヒント頂いたし、thx。
答える側になれるようがんばろっと。
0458デフォルトの名無しさん
2005/09/25(日) 02:17:19その場合、nは2でn2は4ということでいいのかな?
だとしたらこんな感じで。
void trunc(char * buffer, char * insert, unsigned n, unsigned n2)
{
char tmp[11];
strcpy(tmp, buffer);
sprintf(buffer, "%.*s%s%.*s", n, tmp, insert, strlen(tmp) - n - strlen(insert), tmp + n2);
}
0459デフォルトの名無しさん
2005/09/25(日) 13:33:19[2] 問題文
#define N 8
for(i=0; i<N-1; i++)
{
k=0
for(j=0; j<=N-1; j++)
if(a[b]>a[j])k=j;
b[i]=a[k];
a[k]=9999;
}
bが完成したときaにはすべて999が入っている
以上を参考にし単純選択法のプログラムを完成せよ
ただし配列a[ ]にデータを読み込ませる部分は
int a[ ]={8,3,5,9,1,2,4,6};
としてもよい scanfを取り込んでもよい
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 9月27日
[5] その他の制限: 特に無し
よろしくお願いします
0460デフォルトの名無しさん
2005/09/25(日) 13:45:09sprintfってそんな使い方が出来たのか。知らんかった
0461デフォルトの名無しさん
2005/09/25(日) 13:50:39bってint型の配列だよな?
この部分あってる?なんか間違ってたりしない?
if(a[b]>a[j])k=j;
b[i]=a[k];
0462デフォルトの名無しさん
2005/09/25(日) 14:06:55問題文に間違いは無いようです
0463デフォルトの名無しさん
2005/09/25(日) 14:17:11awkのsubstrのようなもん?
0464デフォルトの名無しさん
2005/09/25(日) 15:24:30>aにはすべて999が入っている
>問題文に間違いは無いようです
うそつき
0465デフォルトの名無しさん
2005/09/25(日) 15:31:03a[i]=a[k];
だっとえむおー
toうそつき
0466デフォルトの名無しさん
2005/09/25(日) 16:00:30何か物凄いテクが使われているのかと思った。
0467デフォルトの名無しさん
2005/09/25(日) 16:29:15↑
で、じゃね?
0468441
2005/09/26(月) 00:52:32報告遅れてすいません。参考にさせていただき、完成しました。
ありがとうございました。
0469デフォルトの名無しさん
2005/09/26(月) 01:23:301から99までの奇数の和を求めるプログラムを、for文を用いて作成せよ。
おねがいしますm(__)m
0470デフォルトの名無しさん
2005/09/26(月) 01:27:300471デフォルトの名無しさん
2005/09/26(月) 01:28:39for (i = 1, sum = 0 ; i < 100 ; i += 2) sum += i;
0472デフォルトの名無しさん
2005/09/26(月) 01:42:12[2] 469の問題
[3] C言語
[4] 期限:今日
[5] その他の制限: forだけで・・・
0473デフォルトの名無しさん
2005/09/26(月) 01:43:25>>471
0474472
2005/09/26(月) 01:45:560475デフォルトの名無しさん
2005/09/26(月) 01:46:590476デフォルトの名無しさん
2005/09/26(月) 01:47:060477472
2005/09/26(月) 01:48:460478デフォルトの名無しさん
2005/09/26(月) 01:49:290479472
2005/09/26(月) 01:50:110480デフォルトの名無しさん
2005/09/26(月) 01:51:27ネタであるといいのですが、それで分からないのが本当である場合、深刻です。
非常に易しくしましたのでこれで理解できるはずです。
#include <stdio.h>
int main (void)
{
int i, sum ;
sum = 0 ;
for (i = 1 ; i < 100 ; i = i + 2) sum = sum + i ;
printf ("%d", sum) ;
return 0 ;
}
0481472
2005/09/26(月) 01:52:59ネタじゃないですw
もうだめぽ… 今日テストっていうのに…
0482デフォルトの名無しさん
2005/09/26(月) 01:54:38>480 whileでやってやれよw
0483デフォルトの名無しさん
2005/09/26(月) 01:56:14出題の条件がforだからwhileにしちゃ不味いだろ
0484472
2005/09/26(月) 01:56:38472の制限を見てくださいね笑
0485デフォルトの名無しさん
2005/09/26(月) 01:57:59いやだから説明するのに、って事だよw
解答は471でいいだろ?
0486482
2005/09/26(月) 01:59:49あんただれ>484
0487デフォルトの名無しさん
2005/09/26(月) 02:00:310488472
2005/09/26(月) 02:00:39解答は先生からもらってませんorz
ありがとうございました。
もう2問質問してもいいですか?
0489472
2005/09/26(月) 02:01:070490デフォルトの名無しさん
2005/09/26(月) 02:04:03メンドクサイから2つまとめて書いてくれ
0491デフォルトの名無しさん
2005/09/26(月) 02:04:210492472
2005/09/26(月) 02:09:061問目
キーボードから異なる3つの実数を入力されたとき、それらの中間値を
求めるようなプログラムを作成せよ。
(実行例)
3つの数字を入力して 1 2 3
2.000000
2問目
for文を用いて0から20までの4乗を表示するプログラムを作成せよ。
おねがいします・・・
0493デフォルトの名無しさん
2005/09/26(月) 02:11:342.0から20までの4乗を表示って、0の4乗,1の4乗,...,20の4乗を表示って事?
0494デフォルトの名無しさん
2005/09/26(月) 02:12:26scanf ("%f %f %f", &i, &j, &k) ;
printf ("%f", (i + j + k) / 3.0F) ;
0495デフォルトの名無しさん
2005/09/26(月) 02:15:371.はググったらあったよ情報科の教科書の問題?
#include <stdio.h>
int main(void)
{
int a,b,c;
scanf("%d %d %d", &a, &b, &c);
if((b > a && a > c) || (c > a && a > b))
printf("%d\n", a);
else if((a > b && b > c) || (c > b && b > a))
printf("%d\n", b);
else if((a > c && c > b) || (b > c && c > a))
printf("%d\n", c);
else
printf("中間値は無い。\n");
}
0496472
2005/09/26(月) 02:16:321,違います。3つの数字を比べたときの真ん中の値です。
例 12 4 8 だったら 8 が中間値です
2,そうです
0497デフォルトの名無しさん
2005/09/26(月) 02:18:36for (i = 0 ; i <= 20 ; i++) printf ("%d ", i*i*i*i) ;
0498デフォルトの名無しさん
2005/09/26(月) 02:19:53そーと、使っちゃいけないんだろうか?
問題の制限がよく分からんな
0499デフォルトの名無しさん
2005/09/26(月) 02:21:47"3つ数字aとbとcが有る時にa<b<cとなる数bが中間値"らしい
ソートして2つ目で良いね
0500デフォルトの名無しさん
2005/09/26(月) 02:22:18#include <stdio.h>
int main(void)
{
int n;
for( n = 0 ; n <= 20 ; n++ ) {
printf("%d^4=%d\n", n, n*n*n*n);
}
return 0;
}
0501デフォルトの名無しさん
2005/09/26(月) 02:23:04いや、 >495の情報によると
>printf("中間値は無い。\n");
状況があるそうなんだがw
0502デフォルトの名無しさん
2005/09/26(月) 02:23:24a≤b≤cだね。
0503デフォルトの名無しさん
2005/09/26(月) 02:24:310504デフォルトの名無しさん
2005/09/26(月) 02:24:33a・b・cになっとるぞ
0505デフォルトの名無しさん
2005/09/26(月) 02:24:32メジアンでググれ
0506472
2005/09/26(月) 02:25:12ソートは使わないでくださいです。。。
0507デフォルトの名無しさん
2005/09/26(月) 02:26:36ごめん、>>495も>>499も俺だ
ソートしたあとどれか2つ同じのがあれば中間値なしってやらなきゃいけないから真面目に比較したほうが楽だね
0508デフォルトの名無しさん
2005/09/26(月) 02:31:06#include <set>
int main(void)
{
int a,b,c;
scanf("%d %d %d", &a, &b, &c);
std::set<int> nums;
nums.insert(a);
nums.insert(b);
nums.insert(c);
if(nums.size() != 3){
printf("中間値は無い。\n");
}else{
std::set<int>::iterator itr;
itr = nums.begin();
itr++;
printf("%d\n", (*itr));
}
0509デフォルトの名無しさん
2005/09/26(月) 02:32:18メジアンは中央値だから違うだろ
0511デフォルトの名無しさん
2005/09/26(月) 02:37:48だって
>printf("中間値は無い。\n");
だぜw
0512デフォルトの名無しさん
2005/09/26(月) 02:37:55if (a > b)
tmp = a, a = b, b = tmp;
if (b > c) {
tmp = b, b = c, c = tmp;
if (a > b)
tmp = a, a = b, b = tmp;
}
中央値はb
0513デフォルトの名無しさん
2005/09/26(月) 02:39:55中央値、はそうだねw
0515デフォルトの名無しさん
2005/09/26(月) 02:46:160516472
2005/09/26(月) 02:51:16「異なる3つの実数」なんだなこれが
いいか「異なる」かつ「実数」だ
ちゃんと問題文を見てくださいです。。。
0517デフォルトの名無しさん
2005/09/26(月) 02:52:55ちゅうことは、同値チェックして(浮動小数点ではナンセンスな気もするが)、
同じ値があったら、再入力させんの?
0518デフォルトの名無しさん
2005/09/26(月) 02:53:070519472
2005/09/26(月) 02:53:49自分はまだ初心者で始めたばかりなので495さんのが
シンプルなような気がしてわかりやすいかなと思います。
とても参考になりました。質問してよかったです。ありがとうございました。
0520デフォルトの名無しさん
2005/09/26(月) 02:56:170521495
2005/09/26(月) 03:00:570522デフォルトの名無しさん
2005/09/26(月) 03:03:320523デフォルトの名無しさん
2005/09/26(月) 03:29:53判りやすく俺を騙るなw
0524デフォルトの名無しさん
2005/09/26(月) 03:34:20質問者の偽者はめずらしいな。
0525デフォルトの名無しさん
2005/09/26(月) 04:26:43単発質問スレ立てると2に1の偽者が自己解決しましたって書いたりするよ
0526デフォルトの名無しさん
2005/09/26(月) 05:32:050527デフォルトの名無しさん
2005/09/26(月) 06:01:14a b c d e f g h i
全部で9文字です
最初はa 最後はi
検索? d
dは4文字目
dは1個あります
↑のような出力になるように80文字の配列関数を使って作りなさい
ちょっとうろ覚えだけどこんな問題、?の後は文字入力で
お願いしまーす
0528デフォルトの名無しさん
2005/09/26(月) 06:05:32>>1
テンプレ無視も気になるがなんか言葉遣いからして人に物を頼む態度ではない気がする
まあ中にはルールも礼儀も関係ないって住人もいるんだろうからそのうち回答が来るだろうが
0529デフォルトの名無しさん
2005/09/26(月) 06:16:110530527
2005/09/26(月) 06:17:27ごめんね、気楽な気分で頼んでしまったm(._.)m
よろしくお願いします
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): >>527
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C言語
[4] 期限: 明日まで
[5] その他の制限: 80文字の配列関数を使って
0531デフォルトの名無しさん
2005/09/26(月) 06:17:52strlen, strchr
後は単純なループ
これだけあれば作れるだろ、ちゃんと聞けないなら自力でやれ
0533デフォルトの名無しさん
2005/09/26(月) 06:22:08学校行く前に構成だけでも理解しときたかったの
ギリギリまで頑張ってみる、ありがと
0534デフォルトの名無しさん
2005/09/26(月) 06:41:31void main() {
char a[80];
char b;
char *c;
int i;
printf("入力? ");
fgets(a, 79, stdin);
printf("%s\n全部で%d文字です\n最初は%c 最後は%c\n\n", a, strlen(a), a[0], a[strlen(a) - 1]);
b = getchar();
for(i = 0; (c = strchr(a, b)) != NULL; i++) {
printf("%cは%d文字目\n", b, c - a);
}
printf("%cは%d個あります", b, i);
}
0535デフォルトの名無しさん
2005/09/26(月) 06:45:480536デフォルトの名無しさん
2005/09/26(月) 06:47:42それだと\nの分だけ長くでないか?
確かfgetsは改行文字も読み込んでくれたはずだが
0537デフォルトの名無しさん
2005/09/26(月) 06:57:54ああ、そういえばそうだったorz
それも間違いだな。。。
0538デフォルトの名無しさん
2005/09/26(月) 06:58:07#include <string.h>
int main(void)
{
char str[81], chr = 0, *pstr=str - 1;
int len, i;
printf("入力? ");
while (!fgets(str, 80, stdin));
len = strlen(str) - 1;
str[len] = '\0';
for (i=0;i<len;i++) {
printf("%c ", str[i]);
}
printf("\n全部で%d文字です\n最初は%c 最後は%c\n\n検索? ", len, str[0], str[len-1]);
while (chr = getchar()) {
if (isalpha(chr)) break;
printf("英字を入力してください ");
}
printf("%cは%d文字目\n", chr, strchr(str, chr) ? (strchr(str, chr)-str)/sizeof(char)+1 : 0);
for (i=-1;(pstr=strchr(pstr,chr)) != NULL; i++, pstr++);
printf("%cは%d個あります\n", chr, i);
}
とりあえず作ってみたがバグが隠れてるかも知れん
0539デフォルトの名無しさん
2005/09/26(月) 06:59:58書き忘れたけど、バッファ溢れは考慮してるが
入力文字が80文字を超えた場合の処理はしてない
そこは使用者の良心に任せるw
0540デフォルトの名無しさん
2005/09/26(月) 07:05:33おぉ、ありがとうございます
ためしにやってみたところちょっとバグがありましたが
なんとか自分で治せると思います
ありがとうございました〜
0541デフォルトの名無しさん
2005/09/26(月) 07:08:10#include <stdio.h>
#include <assert.h>
int search(char *input, char *keyword, int pos)
{
assert(pos!=0);
pos--;
while (input[pos] != keyword[0])
{
pos++;
if (!input[pos])
return 0;
}
return pos+1;
}
int count(char *input)
{
int src=input;
while (*(++input));
return input-src-1;
}
int main()
{
char input[80];
char keyword[80];
int pos=0;
int cntkeyword=0;
0542デフォルトの名無しさん
2005/09/26(月) 07:08:42printf("入力?");
fgets(input, 80, stdin);
printf("全部で%d文字です", count(input));
printf("最初は%c 最後は%c\n", input[0], input[count(input)-1]);
printf("検索?");
fgets(keyword, 2, stdin);
printf("%cは", keyword[0]);
if (!(pos=search(input, keyword, pos+1)))
{
printf("ありません\n");
return 0;
}
else
{
printf("%d", pos);
cntkeyword++;
}
while (pos=search(input, keyword, pos+1))
{
printf(",%d", pos);
cntkeyword++;
}
printf("文字目\n");
printf("%cは%d文字あります\n", keyword[0], cntkeyword);
return 0;
}
0543デフォルトの名無しさん
2005/09/26(月) 07:08:59やっぱりあったか・・・どんなバグだった?
whileの所を色々弄ってたからそこじゃないかと思うんだが
0544デフォルトの名無しさん
2005/09/26(月) 07:11:51printf("%cは%d個あります\n", chr, i);
のところで
入力?のところで打ち込んだ文字を入れると
0個
入れてない文字を入れると
-1個とでました
0545デフォルトの名無しさん
2005/09/26(月) 07:17:36おかしいな・・・入力文字列に存在しない文字を入れれば0になるはずだが
使ったデータは?
0546デフォルトの名無しさん
2005/09/26(月) 07:20:33C++ソースファイルで新規作成して
538のをそのままコピーして貼り付けしただけです(´・ω・`)
0547デフォルトの名無しさん
2005/09/26(月) 07:22:02いやそうじゃなくて、入力?と検索?の所でバグが出たときに使った値
0548デフォルトの名無しさん
2005/09/26(月) 07:24:12a b c d e f g
全部で7文字です
最後はa 最後はg
検索 d
dは4文字目
dは0個あります
Press any key to continue
こんな感じです〜
abcdefg以外だと-1になる感じです
0549デフォルトの名無しさん
2005/09/26(月) 07:33:41コンパイラの違いが原因か・・・
gccでは問題なかったが、VS.NET2k3で試してみたらそのバグ確認
forループの初期化式をi=-1からi=0にしといて
0550デフォルトの名無しさん
2005/09/26(月) 07:37:55了解です〜
これで気分よく学校行けます、ありがとうございました〜
0551デフォルトの名無しさん
2005/09/26(月) 12:09:26> char str[81], chr = 0, *pstr=str - 1;
そもそも、なぜpstrを規格外の位置にセットするのか
0552デフォルトの名無しさん
2005/09/26(月) 15:28:41色々弄くってる間に戻すの忘れてた・・・
よくこれで動いてたな
しかもgccで-mno-cygwinのオプション付けてコンパイルし直してみたら
何故か>>548のバグ発生・・・どうなってんだ('A`)
0553デフォルトの名無しさん
2005/09/26(月) 15:42:37規格外のことをやっているんだ。何が起きたって不思議じゃない。
0554デフォルトの名無しさん
2005/09/26(月) 15:43:26#include <stdio.h>
#include <stdlib.h>
#define XOR(a, b) ((a)?!(b):!!(b))
#define MID3(x,y,z,err) (XOR((x)<(y),(x)<(z))?x:XOR((y)<(z),(y)<(x))?y:XOR((z)<(x),(z)<(y))?z:((err),(z)))
#define ERROR(msg) (fprintf(stderr, msg), exit(1))
int main(void)
{
char buf[256];
double a,b,c;
const char *msg = "異なる実数を3つ,スペースで区切って入力してください\n";
printf(msg);
fgets(buf, sizeof(buf), stdin);
if (sscanf(buf, "%lf%lf%lf", &a, &b, &c) != 3)
ERROR(msg);
printf("中間値=> %lf\n", MID3(a, b, c, ERROR(msg)));
return 0;
}
0555デフォルトの名無しさん
2005/09/26(月) 15:48:120556デフォルトの名無しさん
2005/09/26(月) 15:55:12[1] C言語講座
[2] 問題文
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/938.txt
ヒープを作成するプログラムを作成
[3] 環境
[3.1] OS: WindowsXP
[3.2] VC 6.0
[3.3] 言語: C++
[4] 期限: 明後日まで
0557デフォルトの名無しさん
2005/09/26(月) 16:00:32「ヒープソート」でググれば腐るほど例が出てくるというのに・・・。
0558デフォルトの名無しさん
2005/09/26(月) 16:03:33だよな・・・('A`)
正直すまんかった
0559デフォルトの名無しさん
2005/09/26(月) 16:15:37その出題者はヒープソートの意義を理解しとらんのとちゃうか
0560デフォルトの名無しさん
2005/09/26(月) 17:22:190561デフォルトの名無しさん
2005/09/26(月) 17:58:26ソートじゃなくてヒープを作成すればいいのかな?
0562デフォルトの名無しさん
2005/09/26(月) 21:25:34[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/939.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: bcc32(5.5.1.2)
[3.3] 言語: C
[4] 期限: [2005年9月29日23:00まで]
[5] その他の制限: 特にありません。
以上です。どうぞよろしくお願いします。
0563デフォルトの名無しさん
2005/09/26(月) 21:57:26こんな問題出されて、やらなきゃならんとは、最近の学生はかわいそうだな。
数学嫌い増やすのと一緒だなあ。プログラム嫌いが増えちゃうよ。
プログラムって、こんな詰まらんものじゃないぜ〜
0564デフォルトの名無しさん
2005/09/26(月) 22:02:25問題1のほう。コンパイルもしていないけどw
#手抜きじゃ
double calculate_30a_without_account_discount( double used ) {
double base = 780.0;
double b1 = 120.0;
double b2 = 300.0;
double pay;
pay = base;
if ( used <= b1 ){
pay += used * 15.58;
return pay;
}
pay += b1 * 15.58;
if( used <= b2 ){
pay += (used-b1) * 20.67;
return pay;
}
pay += b2 * 20.67 + (used-b2) * 20.43;
return pay;
}
double calculate_30a( double used ) {
return calculate_30a_without_account_discount( used ) -50.0;
}
0565デフォルトの名無しさん
2005/09/26(月) 22:03:32#include <stdio.h>
#define FURIKOMI 1
int main(void)
{
int used, price = 780;
scanf("%d", &used); /*面倒なのでscanf*/
if (used <= 120) {
price += used * 15.58;
} else if (used > 120 && used <= 300) {
price += 1869.6 + 20.67 * (used - 120);
} else {
price += 1869.6 + 3720.6 + 22.43 * (used -420);
}
if (FURIKOMI) price -= 50;
price *= 1.05;
return 0;
}
とりあえず1個目だけ作った@脳内gcc
仕様が曖昧なので勝手に解釈してる所もあるから適当に修正してくれ
曖昧なところ
・口座振り込みの時は50円引きとかいてあるがユーザーに選択させるのか?
(プリプロセッサ文で切り替えるようにしてる)
・消費税分と書いてあるわりに、肝心の例にそれが考慮されてない希ガス
ってか本当につまらない課題だな・・・
まぁ俺も来年、そんなのを作らさせることになると思うが_| ̄|○
0566デフォルトの名無しさん
2005/09/26(月) 22:06:40何間抜けなことしてるんだ俺・・・
なぜか300と120足してるし、肝心の結果表示してないし('A`)
0567556
2005/09/26(月) 22:19:15(;∀;)間際らしくてごめんなさい
0568デフォルトの名無しさん
2005/09/26(月) 22:22:59嫌と言うほど大量に転がってるヒープソートのコードから
ヒープ作成部分だけを抜き出せ
0569562
2005/09/26(月) 22:54:03>>565
>・口座振り込みの時は50円引きとかいてあるがユーザーに選択させるのか?
紛らわしくてすいません。
選択ではなく、必ず50円引きになるようにとのことです。
>>・消費税分と書いてあるわりに、肝心の例にそれが考慮されてない希ガス
> 780+[120*15.58+180*20.67+120*22.43+{0*420}]-50
> =780+[1869.6+3720.6+2691.6+{0}]-50
> =9011
の後に
>消費税額相当 9011*0.05=450.55 よって電気料金は9011+450=9461円
を入れるのを忘れていました。
テンプレの注意点にも書いてあるのに…本当に申し訳ありません。
>本当につまらない課題だな・・・
先生自体は良い人なんですが…。
「ゲームを作りたい!」とか確固たる目標が無い人間が相手なので、
こういう一般的な問題を出すしかないんでしょうね。
私もプログラムに興味あったから授業取ってみたんですけど、
授業の内容じゃ全然プログラムに興味持てないです。
専攻の経済の勉強の方が面白く感じる…
プログラムを始めるなら個人で本とか買ったほうがいいのかな。
0570デフォルトの名無しさん
2005/09/26(月) 23:21:47一般的な問題というか……。
あまりに単純で機械的で、味も素っ気も創意工夫の余地も無ければ
驚きも無い。こりゃあ退屈だろう。
ファイルの入出力さえできれば、別に画像処理だって出来るのにな。
やる気があるんなら自習してみるんだね。ただしいきなりCは薦めないが。
0571デフォルトの名無しさん
2005/09/26(月) 23:27:08パラメータをどう渡すか、というのは一つのテーマだな。
再コンパイルしないで消費税を変更するには?とか
変数名をどうするか・・・とか
整数だけで演算させるとか(金融系はそうなんだろう)
有効桁数は?とか・・・
まあ、この辺は金融系プログラマさんにお出まし願うほーがいいかも。
0572デフォルトの名無しさん
2005/09/26(月) 23:43:34大丈夫、金融系プログラマは消費税率が変わったら徹夜してコーディングしなおすのです。
大丈夫、金融系プログラマは変数名は例えばShouhiZeiのように判りやすい名前を付けるのです。
大丈夫、金融系プログラマは演算は全てDB側で行なうので有効桁数なんて気にしないのです。
0573デフォルトの名無しさん
2005/09/26(月) 23:47:08こんなの作ったら?
MonoView Part1
http://pc7.2ch.net/test/read.cgi/software/1120578352/
0574デフォルトの名無しさん
2005/09/26(月) 23:58:09C#とかだとdecimal型が組み込みなので大変便利だと思いますた。
0575デフォルトの名無しさん
2005/09/27(火) 00:02:33つ COBOL
0576デフォルトの名無しさん
2005/09/27(火) 12:13:58[1] 授業単元: 情報処理概論
[2] 問題文
0が入力されるまで正整数を読み込み、最大値、最後の0を除いた最小値、
全数値の平均(0を含めない)を出力するプログラムをつくれ。
[3] 環境:windows 、言語:C言語
[4] 期限:10月29日(木)14時半
[5] その他の制限: 下に載せたものでだいたいあっているそうなのですが、
うまく動きません。{}の位置関係が怪しいようなのですが、
自分で見るかぎりこれで合っているように思えるのです。
どこが間違っているのか添削していただけると大変嬉しいです。
よろしくおねがいします。
#include<stdio.h>
main()
{
int a[1000],i,j,sum=0,n=0,max,min;
for(i=1,a[0]=-1;a[i-1]!=0;i++){
scanf("%d",&a[i]);}
n=n+1;max=0,min=9999;
for(j=0;j<=i-1;j++){
if(max<a[j]){
max=a[j];}
if(min>a[j]){
min=a[j];}
sum=sum+a[i];
sum*1.00/(n-1);}
printf("max=%d\n",max);
printf("min=%d\n",min);
printf("ave=%d\n",sum);
}
0577デフォルトの名無しさん
2005/09/27(火) 12:24:48sum*1.00/(n-1);}
↑計算してるだけで代入してないし、n=n+1がforループの外にあるから
常にn=1になって計算の意味がない。
n=n+1を入力ループの中に入れ、変数aveを作って、
ave = sum*1.00/(n-1);
とする。これはループの外に出す。
ループカウンタのjも、入力時にi=1から入れてるんだから初期値指定が違う。
j=0→j=1
最後の0は含めない、て書いてあるんだから終了条件も
j<=i-1→j<i-1
合計に追加する配列のインデックスが違う
sum=sum+a[i];→sum=sum+a[j];
平均を入れる変数を作ったから、表示も変える
printf("ave=%d\n",sum);→printf("ave=%d\n",ave);
0578デフォルトの名無しさん
2005/09/27(火) 12:59:43いくつ入力されるか分からないから、線形リストにした方がいいと
無茶なことを言っておく
0579デフォルトの名無しさん
2005/09/27(火) 19:16:420580デフォルトの名無しさん
2005/09/27(火) 22:20:28ID:00581デフォルトの名無しさん
2005/09/27(火) 23:03:53平均は最初5つ程度の平均を出して、それを基準として差の和から出した方がいい希ガス
0582デフォルトの名無しさん
2005/09/28(水) 00:52:09どうせ出力するのは平均なんだし。
0583デフォルトの名無しさん
2005/09/28(水) 00:55:280584デフォルトの名無しさん
2005/09/28(水) 01:02:02どのようにかけばよいのかさっぱりです……
0585デフォルトの名無しさん
2005/09/28(水) 01:06:49十分だろう。てなワケで、こんな感じだな。
#include <stdio.h>
#include <limits.h>
int main()
{
double sum = 0.0;
int n, cnt = 0, max = 0, min = INT_MAX;
while (scanf("%d", &n) == 1 && n > 0) {
sum += n;
if (n < min) min = n;
if (n > max) max = n;
++cnt;
}
if (cnt)
printf("最大値: %d 最小値: %d 平均値: %g\n", max, min, sum/cnt);
return 0;
}
0586デフォルトの名無しさん
2005/09/28(水) 12:36:50doubleを使うのは入力値が正負に大きく振動してる場合はまずいね
この場合は関係ないだろうけど
0587デフォルトの名無しさん
2005/09/28(水) 15:29:47[1] 授業単元: C演習
[2] 問題文(含コード&リンク):y=x×x+2x−3とy=0
で囲まれた面積をモンテカルロ法で求める
[3] 環境
Windows
C言語
[4] 期限: 2005年9月28日12:00まで
[5] その他の制限: 特になし
0588デフォルトの名無しさん
2005/09/28(水) 16:20:23587 名前:デフォルトの名無しさん 本日のレス 投稿日:2005/09/28(水) 15:29:47
【質問テンプレ】
[1] 授業単元: C演習
[2] 問題文(含コード&リンク):y=x×x+2x−3とy=0
で囲まれた面積をモンテカルロ法で求める
[3] 環境
Windows
C言語
[4] 期限: 2005年9月28日12:00まで
[5] その他の制限: 特になし
0589デフォルトの名無しさん
2005/09/28(水) 16:34:44#include <stdlib.h>
#include <math.h>
double rand_range(double x, double y)
{
if (x > y) { double temp = x; x = y; y = temp; }
return (y - x) * rand() / RAND_MAX + x;
}
int main(void)
{
int inner, outer;
for (inner = outer = 0; outer < 1000000 && inner < 1000000;) {
double x = rand_range(-3, 1);
double y = rand_range(-4, 0);
if (y > (x+3)*(x-1)) inner++;
if (y < (x+3)*(x-1)) outer++;
}
printf("%g\n", 16.0 * inner / (inner + outer));
return 0;
}
0590デフォルトの名無しさん
2005/09/28(水) 18:00:58[2] 問題文:再帰関数を用いて1〜10までの階乗を順に表示するプログラムを作成せよ
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン VC 6.0
[3.3] 言語: C
[4] 期限: 金曜日まで
[5] その他の制限: scanfを使わないで再帰関数に直接引数を与える
階乗のプログラムは>>446で分かったのですが、
0!=1
1!=1
2!=2
みたいな感じでwhile文で表示させたいんですがどうすればいいか教えてください
0591デフォルトの名無しさん
2005/09/28(水) 18:06:41問題文を「再帰をもちいて階乗を求める関数を作り、1〜10までの階乗を表示するプログラムを記述せよ」と解釈して宜しいでしょうか?
0592デフォルトの名無しさん
2005/09/28(水) 18:09:04はい
0593デフォルトの名無しさん
2005/09/28(水) 18:13:070594デフォルトの名無しさん
2005/09/28(水) 18:13:37int frac(int x) {
if (x == 0) {
return 1;
} else if (x == 1) {
return 1;
} else {
return frac(x - 1);
}
}
int main() {
int i = 0;
while(i<10) {
printf("%d! = %d\n", (i + 1), frac(i + 1));
i++;
}
return 0;
}
0595デフォルトの名無しさん
2005/09/28(水) 18:22:28ありがとうございました。
while文の勉強不足でした。
0596デフォルトの名無しさん
2005/09/28(水) 18:46:50[1] 授業単元: 演習
[2] Echoサーバを作成しなさい。
[3] 環境
Windows XP SP2で動けばいいと思う
VC++ 6.0
C++言語
[4] 期限: 2005年10月3日まで
[5] その他の制限: 特になし
0597デフォルトの名無しさん
2005/09/28(水) 18:53:59qsortかと。
0598562
2005/09/28(水) 19:10:58>>562で挙げた問題2の方をやってみたのですが、
分からないのでまた質問させて下さい。
[1] 授業単元: プログラミング論
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/941.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: bcc32(5.5.1.2)
[3.3] 言語: C
[4] 期限: [2005年9月29日23:00まで]
[5] その他の制限:特になし
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/942.txt
↑分からないなりにやってみました。
でも、「2ヶ月に一回請求のため、使用料はまず1/2にされ、各月ごとに算出した後合算されます」
の部分をどうしたらいいかが分からないので教えてください。
というか、基本的に間違えまくっていると思うので指導お願いします。
もっと効率的な方法があるんでしょうけど、私のレベルではこれが限界でした。
私のを直すより、他の上手い人が初めから書き直したほうがよさそうな気もしますが…
0600デフォルトの名無しさん
2005/09/28(水) 19:39:20「数字」なのか、「数値」なのかはっきりさせてほしい。
あと、>>1
ついでに言うと、学校の課題なら問題文を全部のせたほうがいい。
0601デフォルトの名無しさん
2005/09/28(水) 19:44:17数値です。
0602デフォルトの名無しさん
2005/09/28(水) 20:06:56いや、だからちゃんと>>1を読めと…
面倒なので答えておくと、
1) qsort関数を使う
2) 自分で配列の要素を比較して昇順に並べ替える
のどちらか。
どちらか好きな方法でやってくれ。
0603デフォルトの名無しさん
2005/09/28(水) 20:14:412月分の使用量を入力させて、まずそれを2等分
んでそれぞれに対して料金計算をしてそれを足し合わせて2ヶ月間の料金をだすんじゃまいか?
0604デフォルトの名無しさん
2005/09/28(水) 20:24:50自分で配列の要素を比較して昇順に並べ替える 方法が分からないんです…。これだけの為に質問テンプレートに書く必要ないと思いまして…。スミマセン!m(_ _)m
0605デフォルトの名無しさん
2005/09/28(水) 20:33:290606デフォルトの名無しさん
2005/09/28(水) 20:37:35ここで回答ほしいならテンプレ書け
そうでないと煽られて終了
0607デフォルトの名無しさん
2005/09/28(水) 20:39:340608デフォルトの名無しさん
2005/09/28(水) 20:41:23授業でどこまで習ったかをちゃんと書いてくれ。
0609デフォルトの名無しさん
2005/09/28(水) 20:44:34どうするも何も、自分に扱える内容なら回答してあげればいいと思う。
手に負えないならROMるなり、他人の回答にツッコミ入れるなりお好きなように。
0610デフォルトの名無しさん
2005/09/28(水) 20:45:40なるなる。
質問者以上回答者未満なレベルなもので。
0611デフォルトの名無しさん
2005/09/28(水) 20:49:360612デフォルトの名無しさん
2005/09/28(水) 21:01:24死ね
0613デフォルトの名無しさん
2005/09/28(水) 21:23:27折角書いたのでうpしとく
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/943.txt
一通りのバグは潰したはずだが、出力のチェックをしようにも
正しい値を出すのが面倒なので例となってる51のみチェック
0614デフォルトの名無しさん
2005/09/28(水) 21:24:34書き忘れたけど、テスト環境はgcc3.3.3@cygwin
-std=c89のオプション付けてのコンパイル確認済み
0615デフォルトの名無しさん
2005/09/28(水) 22:24:55ググれば腐るほど出てくるのに・・・。
void bsort(int* d,int n){int i,j,t;for(i=0;i<n;i++){for(j=n-1;j>i;j--){
if(d[j]<d[j-1]){t=d[j];d[j]=d[j-1];d[j-1]=t;}}}}
0616598
2005/09/28(水) 23:33:33どうもありがとうございます。
>>613
bcc32でコンパイルしてみました。
完璧に動作しました。
ホント、感謝しています。
それにしても、ソースみても全然何をやっているのか分からない…
ちゃんと自分でも勉強しないと駄目だなぁ。
0617デフォルトの名無しさん
2005/09/28(水) 23:35:06手抜きでコメント全く付けなかったからな・・・スマソ
分からない点が合ったら言ってくれれば回答するよ
0618デフォルトの名無しさん
2005/09/29(木) 00:58:39[2] 問題文(含コード&リンク):
1行に1語の英単語が書かれたファイルがある。
英単語は小文字のアルファベットのみから構成させる。
ファイルにかかれている単語を用い、アルファベットのしりとりを、
もっとも長い回数行う順序を1通り出力するプログラムを書け。
余裕があれば日本語のしりとりでも行ってみること(「ん」や日本語コードに気をつけること)
[3] 環境
[3.1] OS: コンソール
[3.2] コンパイラ名とバージョン: 標準C
[3.3] 言語: C
[4] 期限: とくにありません
[5] その他の制限: 標準ライブラリのみ可
0619デフォルトの名無しさん
2005/09/29(木) 01:00:09最大で何行有るんだ?
0620618
2005/09/29(木) 01:05:00実用ではないにせよ・・・辞書の単語数が数万程度だったと思うので、
10万行に対応すれば文句いわれないと思います。
0621デフォルトの名無しさん
2005/09/29(木) 01:08:00ちなみ出された際の期限てどの位?
0622618
2005/09/29(木) 01:11:45データ表現は先頭文字、末尾文字のペアか二次元配列に文字列のリストかスタックでいいと思うんですが、
アルゴリズムが、さっぱりです。
0623デフォルトの名無しさん
2005/09/29(木) 01:17:480624618
2005/09/29(木) 01:22:290625デフォルトの名無しさん
2005/09/29(木) 01:26:41この問題だと答え知ってなきゃ1時間程度じゃ終わらん
0626デフォルトの名無しさん
2005/09/29(木) 01:38:24有向グラフ
最長路問題
0627デフォルトの名無しさん
2005/09/29(木) 01:46:31とき方は見つけた
ttp://al.cs.tuat.ac.jp/~yshinano/shiritori/
0628618
2005/09/29(木) 01:55:05理解しようと努力中であります。
0629616
2005/09/29(木) 02:07:36あ、すいません。
>それにしても、ソースみても全然何をやっているのか分からない…
は単なる独り言のつもりだったんです。
本当は直接、「どういう風になってるか教えてください」と言うべきだったのに、
なんか遠まわしに教えてください、となってしまってすいません。
でも、ちょっと聞きたいことがあるので聞かせてください。
amount[1] = amount[0]/2;
amount[0] -= amount[1];
for (i=0;i<2;i++) price += calc(amount[i]);
int price=KIHON, nRange, over=1, i, j,
addTable[][3] = {
nRange=sizeof(addTable)/sizeof(addTable[0]);
各部分がどのような処理を行っているのか分からないので、
教えていただけないでしょうか。
ここが分かれば、後は自力で理解できると思うのでよろしくお願いします。
0630617ではない
2005/09/29(木) 02:41:37>amount[1] = amount[0]/2;
>amount[0] -= amount[1];
>for (i=0;i<2;i++) price += calc(amount[i]);
「2ヶ月に一回請求のため、使用料はまず1/2にされ」るので
入力した値をammount[0]とammount[1]に半分ずつ分けて、
calcでそれぞれの料金を計算し、その合計をpriceに入れている。
>addTable[][3] = {
>
>nRange=sizeof(addTable)/sizeof(addTable[0]);
addTableは加算額の料金表。
nRange=〜はaddTable[][3]の要素数(1個目の[]に入る数値)の計算。
addTable全体のサイズ(int型24個分)を、1要素のサイズ(int型3個分)で割ることで、
要素数(この場合は8)を取得できる。
0631デフォルトの名無しさん
2005/09/29(木) 02:55:16main()は同じものを仮定する。
↓のバージョンだと、マクロは全部要らない。INT_MAXを使っているので
<limits.h>を#includeすること。
int MiN(int m, int n)
{
return m > n ? n : m;
}
int calc(int amount)
{
static int tbl[][2] = {
{ 8, 75 }, { 15, 80 }, { 20, 90 }, { 30, 100 }, { 50, 120 },
{ 100, 130 }, { 300, 155 }, { 1000, 185 }, { INT_MAX, INT_MAX }
};
int i, price = 500;
for (i = 0; amount > tbl[i][0]; ++i)
price += (MiN(amount, tbl[i+1][0]) - tbl[i][0]) * tbl[i][1];
price *= 1.05;
price -= price % 10;
return price;
}
0632デフォルトの名無しさん
2005/09/29(木) 03:55:52分かりやすい説明ありがとうございます。
お陰さまで後は自分で何とかなりそうです。
>>631
アドバイスありがとうございます。
結構短く出来るものなんですね。
すごいです。
0633デフォルトの名無しさん
2005/09/29(木) 14:09:24617だが完全に寝てた(;´Д`)
説明サンクス
>>631
綺麗なソースだな・・・もっと勉強しないとダメだな_| ̄|○
0634デフォルトの名無しさん
2005/09/29(木) 18:41:40マジで困っています。
こんなの簡単にやってしまえる神様〜教えてください。
課題は下記の構造体を宣言し、mallocを使ってこの構造体100個分のメモリを確保せよ。
さらにこの構造体に適当な値を設定して、コンソール画面に表示するサンプルプログラムを作成せよとの事です。
typedef struct _tagSTTEST{
int iId; //ID番号(0..の数値を入れる)
char szId[32]; //ID番号の値を文字列にして設定する
double dVal; //ID番号/0.1を設定する
}STTEST, *PSTTEST;
0635デフォルトの名無しさん
2005/09/29(木) 18:45:00>>1
0636デフォルトの名無しさん
2005/09/29(木) 18:54:55[1] 授業単元:プログラム課題
[2] 問題文:mallocを使ってこの構造体100個分のメモリを確保せよ。
さらにこの構造体に適当な値を設定して、コンソール画面に表示するサンプルプログラムを作成せよ
[3] 環境
[3.1] OS: WindowsXP SP2?
[3.2] コンパイラ名とバージョン:VC++ 6.0
[3.3] 言語: C
[4]期限:申し訳ないのですが金曜日の12:00まででお願いします。
[5] その他の制限:ありません
よろしくお願いします
0637デフォルトの名無しさん
2005/09/29(木) 20:27:20#include <stdio.h>
#include <stdlib.h>
typedef struct _tagSTTEST{
int iId;
char szId[32];
double dVal;
} STTEST, *PSTTEST;
void setVal(PSTTEST psttest, int id) {
psttest->iId = id;
sprintf(psttest->szId, "%d", id);
psttest->dVal = id / 0.1;
}
void printVal(PSTTEST psttest) {
printf("%d %s %f\n", psttest->iId, psttest->szId, psttest->dVal);
}
int main() {
int i;
PSTTEST psttest, p;
psttest = (PSTTEST)malloc(sizeof(STTEST) * 100);
for (i = 0, p = psttest; i < 100; ++i) setVal(p++, i);
for (i = 0, p = psttest; i < 100; ++i) printVal(p++);
}
0638デフォルトの名無しさん
2005/09/29(木) 20:32:07キモ
お前就職できないわ。
0639デフォルトの名無しさん
2005/09/29(木) 20:32:300640デフォルトの名無しさん
2005/09/29(木) 20:38:46#include <stdlib.h>
typedef struct _tagSTTEST{
int iId; //ID番号(0..の数値を入れる)
char szId[32]; //ID番号の値を文字列にして設定する
double dVal; //ID番号/0.1を設定する
} STTEST;
int main(void)
{
int i;
for (i = 0; i < 100; i++) malloc(sizeof(STTEST));
return 0;
}
0641デフォルトの名無しさん
2005/09/29(木) 20:40:47#include <stdio.h>
#include <stdlib.h>
typedef struct _tagSTTEST{
int iId; //ID番号(0..の数値を入れる)
char szId[32]; //ID番号の値を文字列にして設定する
double dVal; //ID番号/0.1を設定する
} STTEST;
int main(void)
{
int id = 5;
STTEST s;
s.iId = id;
sprintf(s.szId, "%d", id);
s.dVal = id / 0.1;
printf("iId:%d, szId:%s, dVal:%g\n", s.iId, s.szId, s.dVal);
return 0;
}
0642デフォルトの名無しさん
2005/09/29(木) 20:42:460643デフォルトの名無しさん
2005/09/29(木) 20:43:41全ての値を自分で設定することがわかってるなら calloc より高速
0644 ◆UNEZM4vps2
2005/09/29(木) 21:42:31[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: Free BSD
[3.2] コンパイラ名とバージョン: 学校のパソコンなのでコンパイラが
分かりません。すいません!
[3.3] 言語: C言語
[4] 期限: [2005年10月3日17:00まで]
[5] その他の制限: 高専2年程度の知識の範囲内です。
#include<stdio.h>と#include<unistd.h>のみ
使用していいです。
次レスに自分が作ったプログラムを載せます。
そのプログラムを実行すると "Sigmentation何とか(core dumped)"と出ました。
うろ覚えでごめんなさい。
よろしくお願いします。m(__)m
0645デフォルトの名無しさん
2005/09/29(木) 21:44:00{
return 0;
}
0646 ◆UNEZM4vps2
2005/09/29(木) 21:45:24#include<unistd.h>
#define ESC 0x1b
#define GREEN printf("%c[32m",ESC);
#define NON printf("%c[m",ESC);
/*x行,y列への場所の移動*/
void gotoXY(int x,int y){
printf("%c[%d;%dH",ESC,x,y);
}
/*x行y列からn個の文字列を表示*/
void disp(int x,int y,char *p[],int n){
int i;
for(i=0;i<n;i++){
gotoXY(x+i,y);
printf("%s\n",p[i]);
}
}
/*x行からy行をクリア*/
void block_clear(int x,int y){
int i;
for(i=x;i<=y;i++){
printf("%c[%d;1H",ESC,i);
printf("%c[2K",ESC);
}
}
0647 ◆UNEZM4vps2
2005/09/29(木) 21:47:02main(){
int m,i=0;
FILE *fp;
char *pic[300];
printf("%c[2J",ESC);
gotoXY(8,5);
GREEN
printf("______________________________________________________________________________________________________\n");
NON
if((fp=fopen("pic.txt","r"))==NULL){
printf("ファイルが見つかりません\n");
return 1;
}
0648デフォルトの名無しさん
2005/09/29(木) 21:47:19関数だけ作ったの?
0649デフォルトの名無しさん
2005/09/29(木) 21:47:520650 ◆UNEZM4vps2
2005/09/29(木) 21:48:30if(feof(fp)!=0) break;
switch(i)
case 0:sleep(1);
block_clear(5,7);
for(m=0;m<3;m++){
fgets(pic,300,fp);
disp(m+5,2+3*i;pic,1);
}
break;
case 1:sleep(1);
block_clear(5,7);
for(m=0;m<3;m++){
fgets(pic,300,fp);
disp(m+5,2+3*i;pic,1);
}
break;
case 2:sleep(1);
block_clear(5,7);
for(m=0;m<3;m++){
fgets(pic,300,fp);
disp(m+5,2+3*i;pic,1);
}
break;
0651 ◆UNEZM4vps2
2005/09/29(木) 21:49:11block_clear(5,7);
for(m=0;m<3;m++){
fgets(pic,300,fp);
disp(m+5,2+3*i;pic,1);
}
break;
}
i++;
}
}
/*ファイルpara2.txt*/ パラパラのもとです☆
/*
いいか、みんな
(° д°)
(| y |)
故郷の音というものは
郷 ( °д°) 音
\/ | y |\/
心によく響くものだ
( °д°) 響
(\/\/
故郷の家族を大事にな
(°д°)
m9| y |)
*/
0652デフォルトの名無しさん
2005/09/29(木) 21:50:320653デフォルトの名無しさん
2005/09/29(木) 21:56:030654デフォルトの名無しさん
2005/09/29(木) 21:59:40ポインタとstrchrを使ってforした後で制御変数を読む
char str[] = "nullpo", *ptrStr = str;
for (i=0;ptrStr=strchr(ptrStr,chr);i++,ptrStr++) {
if (ptrStr == NULL) break;
}
0655デフォルトの名無しさん
2005/09/29(木) 22:01:31一応picはcharポインタの要素数300の配列先頭のアドレスを持ったポインタだから
コンパイラ的には無問題じゃまいか?
0656デフォルトの名無しさん
2005/09/29(木) 22:06:360657デフォルトの名無しさん
2005/09/29(木) 22:08:19やっぱ多少は自分で作らないとないんですね、わかりました。
どうもです〜^^)
0658デフォルトの名無しさん
2005/09/29(木) 22:08:55スマソ、間違えた・・・
で、試してみたがWarning扱いだからコンパイル自体は完了すると思われ
0660デフォルトの名無しさん
2005/09/29(木) 22:15:06char arr[];
文字型の配列
char *arr[];
文字型のポインタの配列
0661デフォルトの名無しさん
2005/09/29(木) 22:16:17どこに何を入れたいか書いてくれ.書き直したほうが早そうだ.
case 〇:sleep(1);
block_clear(5,7);
for(m=0;m<3;m++){
fgets(pic,300,fp);←ここのpicを*picにするということです
disp(m+5,2+3*i;pic,1);
}
break;
0663デフォルトの名無しさん
2005/09/29(木) 22:21:40それなら警告消えるんじゃまいか?
けどどっちにしても*picが示す領域が何処だよ?って話
0664デフォルトの名無しさん
2005/09/29(木) 22:28:46そこは3回ループまわして何がしたいんだ?
1回学校で試したのですが、
確かに警告は消えましたが、地面を表示するだけにとどまりました泣
case 〇:sleep(1);
block_clear(5,7);
for(m=0;m<3;m++){←この行の下まできちんと動作してました。
fgets(pic,300,fp);←この行でやぱーり駄目なんですね。
disp(m+5,2+3*i;pic,1);
}
break;
コンパイル、書き直ししてくださったみなさん
お手数かけてすみません!
テキストファイルからAAを1行ずつ読み込んでモニタに表示・・・
を3回繰り返すことでひとかたまりのAAを表示したいんです。
0667デフォルトの名無しさん
2005/09/29(木) 22:37:27とりあえずchar *pic[300];をchar pic[300];にしろ
危なすぎる
�dクスです!(^^)
でも理由は何ですか?
0669デフォルトの名無しさん
2005/09/29(木) 22:40:41全然解決になってねえぞwwww
つか、だまされるなwww
0670デフォルトの名無しさん
2005/09/29(木) 22:42:52>>651にはAAが四つあるように見えるのだが…
0671デフォルトの名無しさん
2005/09/29(木) 22:44:052. main の disp(m+5,2+3*i;pic,1); とかのセミコロンをカンマに変更
3. disp を以下のように変更
void disp(int x,int y,char p[],int n){
int i;
for(i=0;i<n;i++){
gotoXY(x+i,y);
printf("%s\n",p);
}
}
で,まあなんとかなるんじゃね? よくしらんけど.
3行で1つのかたまりが
いいか、みんな
(° д°)
(| y |)
↑こんなAAが
4つあるってことです
0673デフォルトの名無しさん
2005/09/29(木) 22:47:00ポインタしか作ってない=実際にデータが書き込まれる領域は不定な状況で
それを利用しようとしてる
メモリ確保するか普通の文字配列にしろ
0674デフォルトの名無しさん
2005/09/29(木) 22:47:53そのAAはそれで1セット
確かヤンマーニ関連の奴だっけか
0675デフォルトの名無しさん
2005/09/29(木) 22:50:400676デフォルトの名無しさん
2005/09/29(木) 22:53:090677デフォルトの名無しさん
2005/09/29(木) 22:59:17#include<stdio.h>
#include<unistd.h>
#define ROW (3)
#define COL (256)
#define PARAPARA (3)
void disp(char buf[][COL], int row) {
int i;
// ここで座標移動
for (i = 0; i < row; ++i) {
puts(buf[i]);
}
}
int main(int argc, char ** argv) {
FILE * f; int i, j; char buf[ROW][COL];
if (argc < 2) return 1;
if ((f = fopen(argv[1], "r")) == NULL) return 1;
for (i = 0; i < PARAPARA; ++i) {
for (j = 0; j < ROW; ++j) {
fgets(buf[j], sizeof(buf)/ROW, f);
}
disp(buf, ROW);
}
fclose(f);
return 0;
}
0678677
2005/09/29(木) 23:00:43低脳ですまそ
でも677さんのプログラムの意味が高度すぎてわかんない・・・・
int main(int argc, char ** argv) {
この行の**←見たことない・・
0682デフォルトの名無しさん
2005/09/29(木) 23:30:25ここは質問スレじゃない
ファイル名ハードコーディングバージョンやるから黙ってね
int main(void) {
FILE * f; int i, j; char buf[ROW][COL];
if ((f = fopen("pic.txt", "r")) == NULL) return 1;
for (i = 0; i < PARAPARA; ++i) {
for (j = 0; j < ROW; ++j) {
fgets(buf[j], sizeof(buf)/ROW, f);
}
disp(buf, ROW);
}
fclose(f);
return 0;
}
0683デフォルトの名無しさん
2005/09/29(木) 23:49:27なに?そのコード。
素直に作れや。
なに慣れないゴマスリしてんの?バカじゃない?
規則破りですいません
そしておとなしくしてます。。
0685デフォルトの名無しさん
2005/09/30(金) 00:58:54自分でいろいろ調べたりしたのですが解らなくて、本当に困っていたんです。
637、640、641で回答していただいた方本当にありがとうございました。
0686デフォルトの名無しさん
2005/09/30(金) 02:26:29{
return 0;
}
何で最近はこういう風に書くバカが多いんだろう。
main(){
return 0;
}
こうだろう。
0687デフォルトの名無しさん
2005/09/30(金) 02:39:39なのは
main(){
return 0;
}
こっち
(Javaとかの影響)
0688デフォルトの名無しさん
2005/09/30(金) 02:47:310689デフォルトの名無しさん
2005/09/30(金) 02:52:01main(){
return 0;
}
昔からこうだぞ
0690デフォルトの名無しさん
2005/09/30(金) 02:53:39main()
{
return 0;
}
0691デフォルトの名無しさん
2005/09/30(金) 02:55:45int main(void)
{
return 0;
}
0692デフォルトの名無しさん
2005/09/30(金) 02:57:20int main(){
return 0;
}
0693デフォルトの名無しさん
2005/09/30(金) 04:05:17int main()
{
return 0;
}
0694デフォルトの名無しさん
2005/09/30(金) 04:19:43int main(){
return 0;
}
0695デフォルトの名無しさん
2005/09/30(金) 04:33:060696デフォルトの名無しさん
2005/09/30(金) 04:36:30int main() {
return 0;
}
0697デフォルトの名無しさん
2005/09/30(金) 07:52:13[2] 問題文(含コード&リンク):ユーザーに3つの整数を入力させ、それらの最大公約数を表示するプログラムを作成しなさい。
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: g++ (?詳しくはわかりません)
[3.3] 言語: C++
[4] 期限:2005年10月3日まで
[5] その他の制限:特になし
よろしくお願いします。
0698デフォルトの名無しさん
2005/09/30(金) 08:32:29#include <iostream>
int gcd(int a, int b) {
while (int r = (a % b)) a = b, b = r;
return b;
}
int main() {
int a, b, c;
std::cin >> a >> b >> c;
std::cout << gcd(gcd(a,b), c) << std::endl;
}
0699デフォルトの名無しさん
2005/09/30(金) 10:58:34[2] 問題文(含コード&リンク):クラスのメンバ変数・メンバ関数をstaticで宣言した場合の
通常のメンバ変数・メンバ関数との違いを示すサンプルプログラムを作成せよ
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VC++ 6.0
[3.3] 言語: C++
[4] 期限:今日中に作成しないといけないんです17時までにどうかお願いします。
[5] その他の制限:特にありません
よろしくお願いします
CSample class : public
{
public:
CSample();
~CSample();
public:
static int iSample;
public:
static int Func( void);
}
0700デフォルトの名無しさん
2005/09/30(金) 12:26:47こんな感じで違いがわかってもらえるかもしれん
#include<iostream>
class CSample {
public:
CSample();
~CSample();
static int iSample;
static int Func( void);
};
int CSample::iSample=0;
CSample::CSample(){
iSample=1;
}
CSample::~CSample(){
iSample=2;
}
int CSample::Func(void){
return iSample;
}
int main(){
std::cout<<CSample::Func()<<std::endl;
{
CSample cs;
std::cout<<CSample::Func()<<std::endl;
}
std::cout<<CSample::Func()<<std::endl;
return 0;
}
0701デフォルトの名無しさん
2005/09/30(金) 13:10:29非常に助かりました、とても感謝です。
0702デフォルトの名無しさん
2005/09/30(金) 13:17:09以下の配列をシェルソートによって小さい順に
並べ替える問題です。
int a[10]={2,6,1,7,3,9,4,8,5,0};
宜しくお願いします!
0703デフォルトの名無しさん
2005/09/30(金) 13:30:07Cでのシェルソート実装なんぞ腐るほどあるんだから探せ
0704デフォルトの名無しさん
2005/09/30(金) 14:07:38>>1
0705デフォルトの名無しさん
2005/09/30(金) 14:40:37探し方が分かりません。
助けてください・・・
0706デフォルトの名無しさん
2005/09/30(金) 14:46:460707デフォルトの名無しさん
2005/09/30(金) 15:42:22出来ました。
サンクスです!
0708デフォルトの名無しさん
2005/09/30(金) 16:08:09プログラムを教えてください!
0709デフォルトの名無しさん
2005/09/30(金) 16:33:46無理。問題、教授に聞きなおせ。あとテンプレ使え。
0710デフォルトの名無しさん
2005/09/30(金) 16:42:370除算になるかと思ったら、階乗だった
0711デフォルトの名無しさん
2005/09/30(金) 17:01:56os : Windows
コンパイラ : borlandC++
C言語
ライブラリは使えません。
int a[3][3] = {{1, 8, -6} , {5, -3, 4 }, {7, 10 ,9} } ;
int b[3][3] = {{2, -9, 4} , {6, -5, 8 }, {1, 15 ,12} } ;
int c[3][3];
とあるときaの行列とbの行列の積をcに入力するプログラムを作りたいのですが
aとbの行列の掛け算がうまくできません。
宿題の条件にwhileやforを使って計算しろとのことなのですが
行列の内積を求めるやりかたが分からないのです。
よろしくお願いします。
0712デフォルトの名無しさん
2005/09/30(金) 17:12:23/* 行列の積の定義: C = A B <=> C_ij = Σ A_ik B_kj */
int i, j, k;
for (i = 0; i < 3; ++i) {
for (j = 0; j < 3; ++j) {
c[i][j] = 0;
for (k = 0; k < 3; ++k)
c[i][j] += a[i][k] * b[k][j];
}
}
0713デフォルトの名無しさん
2005/09/30(金) 17:16:460714713
2005/09/30(金) 17:58:07double fact(int k) {
return k == 0 ? 1 : k * fact(k-1);
}
double e() {
double S = 0;
int k;
for (k = 100; k >= 0; --k) S += 1.0/fact(k);
return S;
}
0715デフォルトの名無しさん
2005/09/30(金) 18:30:37なぜに4桁じゃなきゃいけないんですか?5桁じゃダメなんでしょうか?
0716デフォルトの名無しさん
2005/09/30(金) 18:36:26unsigned intは多くの環境で2^32-1までしか表せない。
9999*9999<2^32-1に対して
99999*99999>2^32-1だから、5桁掛ける5桁は安全に計算できない。
0717716
2005/09/30(金) 18:37:160718デフォルトの名無しさん
2005/09/30(金) 18:41:59古めのアルゴリズム本でshortの配列使って4桁ずつ計算してるやつが
ある。教官はそれでも読んだのでは?
0719デフォルトの名無しさん
2005/09/30(金) 20:31:07【尋ねる前に】C/C++の宿題を片づけます 50代目【>>1を読め】
とかにしないか
0720デフォルトの名無しさん
2005/09/30(金) 20:51:110721デフォルトの名無しさん
2005/09/30(金) 21:19:32#include <stdio.h>
#define L 100 // 長さ(桁数の1/4+1)
#define B 10000
void d(int t[],int k){
int i,r=0,s;for(i=0;i<L;i++){s=t[i]+r*B;t[i]=s/k;r=s%k;}
}
void a(int e[],int t[]){
int i,c=0;for(i=L-1;i>=0;i--){e[i]+=t[i]+c;if(e[i]>=B){c=1;e[i]-=B;}else{c=0;}}
}
void p(int e[]){
int i;printf("%d.\n",e[0]);for(i=1;i<L;i++)printf("%04d ",e[i]);puts("");
}
int main(void){
int k,t[L],e[L];
for(k=0;k<L;k++)t[k]=e[k]=0;//初期化
t[0]=e[0]=1;//e=1.0000...;K=0の分だけ先に足しておく
for(k=1;k<=100;k++){
d(t,k);//t/=k;
a(e,t);//e+=t;
}
p(e);//printf("%.*f",L*4,e);
return 0;
}
0722デフォルトの名無しさん
2005/09/30(金) 21:20:19探してみたら、92年発行の
「C言語による初めてのアルゴリズム入門」にそんなん書いてあるわ
技術評論社/河西朝雄著の青い本でんな
0723デフォルトの名無しさん
2005/09/30(金) 21:27:28今手元にないせいで確認できんが、intじゃなかった?ついでに円周率も書いてるやつでしょ?
0724デフォルトの名無しさん
2005/09/30(金) 21:38:56shortでやってま。なにせ16ビット時代のコンパイラやから。
ほんで、>>716の問題をよけるために途中だけlongでんな
円周率はマチンの公式のサンプルコードが載ってますわ
0725デフォルトの名無しさん
2005/09/30(金) 22:28:38#include <iostream>
#include <functional>
#include <numeric>
using std::partial_sum;
using std::cout;
using std::accumulate;
using std::endl;
int main() {
double data[101] = {1};
cout << accumulate(data, partial_sum(data, partial_sum(data + 1, partial_sum(data,
data + sizeof(data)/sizeof(data[0]), data), data + 1), data, divides<double>()), 0.0) << endl;
}
0726708
2005/10/01(土) 00:02:01答えてくれた優しい方々、ありがとう。
そしてすいません・・・。
0727デフォルトの名無しさん
2005/10/01(土) 00:07:59人生終わらせそうな勢いの書き込みだなおい
0728デフォルトの名無しさん
2005/10/01(土) 00:41:33上記は1次元熱伝導問題を差分法で解くサンプルコードにあった配列なのですが、
どちらがx(位置)で、どちらがt(時間)を表しているのでしょうか?
何故両方ともN+2ではないのでしょうか? (Nは最大分割数)
0729デフォルトの名無しさん
2005/10/01(土) 00:51:29【尋ねる前に】C/C++の宿題を片づけます 50代目【>>1を読め】
0730デフォルトの名無しさん
2005/10/01(土) 01:09:41http://pc8.2ch.net/test/read.cgi/tech/1127737437/209
0731デフォルトの名無しさん
2005/10/01(土) 04:11:200732デフォルトの名無しさん
2005/10/01(土) 08:21:16「尋ねる」はおかしい
「丸投げ」の方が適切
0733デフォルトの名無しさん
2005/10/01(土) 10:04:16本人は疑問を解決しようと尋ねてるつもりなんで、丸投げしてる意識はないんだよ
これもゆとり教育の賜物ですな
0734デフォルトの名無しさん
2005/10/01(土) 10:39:43「なんで教えてくれないの?」
0735デフォルトの名無しさん
2005/10/01(土) 13:46:58知ってるなら、なぜ指摘してくれなかったのですか?
http://pc8.2ch.net/test/read.cgi/unix/1016025117/54-58
0736デフォルトの名無しさん
2005/10/01(土) 13:51:07誘導的な事を言って大事なことを伝えないのは詐欺師の手口
詐欺師大国日本万歳
0737デフォルトの名無しさん
2005/10/01(土) 14:10:41これはまた切り返しが鮮やかな人ですねw
0738デフォルトの名無しさん
2005/10/01(土) 14:15:17触らないでやれよ。多分過去に詐欺で相当ひどい目にあったんだろ。
0739デフォルトの名無しさん
2005/10/01(土) 14:16:49ヒント: 鮮やかな人
0740デフォルトの名無しさん
2005/10/01(土) 14:36:030741デフォルトの名無しさん
2005/10/01(土) 14:42:250742デフォルトの名無しさん
2005/10/01(土) 15:47:400743デフォルトの名無しさん
2005/10/01(土) 16:08:26知ってるなら、なぜ押しててくれなかったのですか?
0744デフォルトの名無しさん
2005/10/02(日) 10:20:14[2] 問題文:
(1)元利合計が元金の2倍を超える年数を算出 (複利計算で。年利率をキーボードから入力) (不定回反復)
(2)発生した乱数の最大最小値探索 (一次元配列)
(3)発生した乱数のソート(同順処理を含む) (一次元配列)
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名:
[3.3] 言語: C
[4] 期限: 2005年10月4日まで
[5] その他の制限: 構造化コーディングに配慮して書け
よろしくお願いしますm(._.)m
0745デフォルトの名無しさん
2005/10/02(日) 11:28:20#include <stdio.h>
int main() {
double x, r;
int k;
while (scanf("%lf", &r) == 1) {
for (x = 1, k = 0; x < 2; x *= r, ++k);
printf("%d\n", k);
}
}
0746デフォルトの名無しさん
2005/10/02(日) 11:37:25#include <stdio.h>
#include <stdlib.h>
#define N 20
int main() {
int k, min, max, a[N];
for (k = 0; k < N; ++k) a[k] = rand();
for (k = 0, min = max = a[0]; k < N; ++k)
min = (min < a[k] ? min : a[k]), max = (max > a[k] ? max : a[k]);
printf("min = %d, max = %d\n", min, max);
}
0747デフォルトの名無しさん
2005/10/02(日) 11:53:54#include <stdio.h>
#include <stdlib.h>
#define N 20
void swap(int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; }
void sort(int *a, int n) {
int i, j;
for (i = 0; i < n; ++i)
for (j = 1; j < n - i; ++j)
if (a[j] < a[j-1]) swap(&a[j], &a[j-1]);
}
int main() {
int k, min, max, a[N];
for (k = 0; k < N; ++k) a[k] = rand();
for (k = 0; k < N; ++k) printf("%d ", a[k]); printf("\n");
sort(a, N);
for (k = 0; k < N; ++k) printf("%d ", a[k]); printf("\n");
}
0749デフォルトの名無しさん
2005/10/02(日) 17:05:27[1] 授業単元: プログラミング宿題
[2] 問題文 : (1)三乗和相等の数字探索 (入れ子)
(2)任意の数字n*nの魔方陣を求める
[3] 環境:windows 、言語:C言語
[4] 期限:明日12時
0750デフォルトの名無しさん
2005/10/02(日) 17:11:07問題文がよくわからん。言葉をちゃんと定義してくれ。
0751デフォルトの名無しさん
2005/10/02(日) 18:38:06#include <stdio.h>
int main()
{
int i,j,k;
for(i=1; i<10; i++)
{
for(j=0; j<10; j++)
{
for(k=0; k<10; k++)
{
if(i*i*i+j*j*j+k*k*k == i*100+j*10+k)
printf("%d\n",i*100+j*10+k);
}
}
}
return 0;
}
0752デフォルトの名無しさん
2005/10/02(日) 18:50:50(1)が3桁の数のうち、各桁の三乗の総和がもとの数に等しい数(153など)を全て見つけて表示するプログラム
(2)が任意の数字nをキーボードから入力してn*nの魔方陣を作成して表示するプログラム
という意味です。わかりにくくてすみません。
>>751
大変参考になりました、ありがとうございます。
0753≠749
2005/10/02(日) 20:00:31偶数のときは半分のますを点対称に動かすんだっけ?
0754デフォルトの名無しさん
2005/10/02(日) 20:22:50奇数のときは(対称性があるがあるが一般的には)最下段中央から
右下に進んで数値の入っているマスにぶつかると
上に1個上がってまた右下に
偶数のときはシンネ
0755デフォルトの名無しさん
2005/10/02(日) 21:06:201000がM, 100がC, 10がX, 1がIであるので、たとえば、123と入力するとCXXIII、1365はMCCCXXXXXXIIIIIと出力できればよい。
<入力例>
Input: 3247
<出力結果>
MMMCCXXXXIIIIIII
お願いします
0756デフォルトの名無しさん
2005/10/02(日) 21:07:15適当なアフィン平面構成してやればよさげ
0757デフォルトの名無しさん
2005/10/02(日) 21:09:22http://briefcase.yahoo.co.jp/light_blue_8671
問題はいってます
0758デフォルトの名無しさん
2005/10/02(日) 21:13:51だから>>1を読めって
0759755
2005/10/02(日) 21:18:50[2]正整数を入力し、それをローマ数字で表示するプログラムを配列を使って作りなさい。
1000がM, 100がC, 10がX, 1がIであるので、たとえば、123と入力するとCXXIII、1365はMCCCXXXXXXIIIIIと出力できればよい。
<入力例>
Input: 3247
<出力結果>
MMMCCXXXXIIIIIII
[3]環境
[3.1] OS: Linux
[3.2]
[3.3] 言語: C/
[4]今日の23時59分まで
です。
0760デフォルトの名無しさん
2005/10/02(日) 21:19:41>>757
お前等マルチすんなや。
http://pc8.2ch.net/test/read.cgi/tech/1126357741/755,757
http://pc8.2ch.net/test/read.cgi/tech/1127501670/676
http://pc8.2ch.net/test/read.cgi/tech/1068359871/488,490
http://pc8.2ch.net/test/read.cgi/tech/1127737437/286,288
http://pc8.2ch.net/test/read.cgi/tech/1087648569/141
0761デフォルトの名無しさん
2005/10/02(日) 21:20:59#include<stdio.h>
#include<string.h>
void print(int n){
char tmp[36];
char*p=tmp+36;
char*t="IXCM";
for(;n;n/=10){
int c = n%10;
memset(p-=c,*t++,c);
}
printf("%.*s\n",36-(p-tmp),p);
}
int main(){
int n;
scanf("%d",&n);
print(n);
}
0762デフォルトの名無しさん
2005/10/02(日) 21:26:56うぁ・・・バレた・・・すまん・・・。
しかし俺の知力ではこれが限界・・・!
#include<stdio.h>
main(){
int i,j,n;
int a[4]{1000,100,10,1};
char b[4]{"M","C","X","I"};
printf("suuji\n");
scanf("%d",&i);
for(n=i;n<1000;n++){
n = n - a[0];
}
}
ぎゃおおおおぉぉぉんんん!!!
0763761
2005/10/02(日) 21:30:16数字が負である場合、入力値が1万以上の場合の考慮、
6のときにIIIIIIで(VIじゃなくて)本当に良いのか?
とかはマルチ相手だからこっちが楽になるように無視したから
0764デフォルトの名無しさん
2005/10/02(日) 21:32:03だれか〜
0765デフォルトの名無しさん
2005/10/02(日) 21:37:39ファイルを読む
入力:ファイル名
出力:Bodyの配列、Bodyの有効個数
データ出力
入力:Bodyの配列、Bodyの有効個数
出力:(なし)
世代別集計
入力:Bodyの配列、Bodyの有効個数、年齢下限、年齢上限
出力:該当世代の平均身長、該当世代の平均体重
平均値出力
入力:各世代の平均身長、各世代の平均体重
出力:(なし)
0766デフォルトの名無しさん
2005/10/02(日) 21:47:06どうするかわからないです(´Д⊂)
0767759
2005/10/02(日) 21:48:13ありがとう。
でも、これ提出したら流石にバレるな・・・。
習ってないことばかり使ってる・・・。
0768472
2005/10/02(日) 21:49:42それから一回あの世に行ってから出直してこい
0770757
2005/10/02(日) 21:56:11[2] ファイル開けたら書いてる
[3]
Linux
Cです
[4] 期限: 明日
[5] 基本は全部習った
0771デフォルトの名無しさん
2005/10/02(日) 22:02:21答えてくれないんですか???
0772757
2005/10/02(日) 22:03:26急いでいるので早くしてくれないでしょうか?
0773デフォルトの名無しさん
2005/10/02(日) 22:04:340774デフォルトの名無しさん
2005/10/02(日) 22:05:450775デフォルトの名無しさん
2005/10/02(日) 22:05:50質問と現行ソースをアップロードしないと、おそらく駄目だよ
0776デフォルトの名無しさん
2005/10/02(日) 22:06:47[2] [課題4]品物の値段とお客の支払った金額を読み込んで、おつりが必要なときには、その額を貨幣の種類と枚数で表示するプログラムを作りなさい。
<入力例>
Input price: 7659
Input payments: 10000
<出力結果>
5000 yen: 0 mai
2000 yen: 1 mai
1000 yen: 0 mai
500 yen: 0 mai
100 yen: 3 mai
50 yen: 0 mai
10 yen: 4 mai
5 yen: 0 mai
1 yen: 1 mai
[3] 環境
[3.1] Linux
[3.2]
[3.3] 言語: C
[4] 期限: 2005-10-03-00:00:00.0
[5] その他の制限: 配列a[i]とかを使って書く。まだ基本のfor,printf,scanf,ifぐらいしか使えない。
あと、>>759が確実に同じ大学の奴な件について・・・。
0777デフォルトの名無しさん
2005/10/02(日) 22:07:37757がsageをできる知能を持ち合わせていないという事実を無視している。
騙るならそのへんを気をつけな
0778757
2005/10/02(日) 22:07:53期待した私がバカでした
0780デフォルトの名無しさん
2005/10/02(日) 22:13:58配列使わないとダメなのかな・・・
0781デフォルトの名無しさん
2005/10/02(日) 22:14:56[2] 問題文(含コード&リンク):
#include<stdlib.h>
#define N (100)
int main(void){
int A[N];
int i;
for(i=0 ; i < N ; i++){
A[i]=i
}
return(EXIT_SUCCESS);
}
この問題について、for文で示される部分を関数を用いて書き改めよ。
ただし、関数名はsetvalueとし、引数として配列と配列のサイズの2つをとるものとする。
[3] 環境
[3.1] OS: Linux Fedora Core 4
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 2005年10月3日 AM1:00
[5] その他の制限: gcc -Wall -ansi ****.cにてコンパイラができるように生成する。
書き換え系統、さっぱりです…。
皆様方、助けてください。お願いいたします…。
0782デフォルトの名無しさん
2005/10/02(日) 22:15:36#include<stdio.h>
int coin[]={5000,2000,1000,500,100,50,10,5,1};
void calc(int coin,int*coins){
for(;coin;coin%=*coins++)printf("%d yen: %d mai\n",*coins,coin/ *coins);
}
int main(){
int price,payments;
printf("Input price: ");scanf("%d",&price);
printf("Input payments: ");scanf("%d",&payments);
calc(payments-price,coin);
}
0783デフォルトの名無しさん
2005/10/02(日) 22:23:53#include<stdlib.h>
#define N (100)
void setvalue(int x[], int sz) {
int i;
for(i=0 ; i < sz ; i++){
x[i]=i;
}
}
int main(void){
int A[N];
setvalue(A, N);
return(EXIT_SUCCESS);
}
0784デフォルトの名無しさん
2005/10/02(日) 22:24:33はい、配列は使わないとダメらしいです。
0785デフォルトの名無しさん
2005/10/02(日) 22:28:14757自分で刺していただきました。
0786デフォルトの名無しさん
2005/10/02(日) 22:29:041の注意点をよく読んだ上でテンプレ埋めないとおそらく誰もやらんよ
それに757の画像も、『出題例』、『解答例』であって問題そのものではないようだし…
0787デフォルトの名無しさん
2005/10/02(日) 22:29:46ありがとうございます。
中身はよくわからない所もありますが、そこは自分で調べていきます。
0788デフォルトの名無しさん
2005/10/02(日) 22:32:49って書いただろが!!先に
0790デフォルトの名無しさん
2005/10/02(日) 22:37:43ポインタとか使ってるけど大丈夫なのかw
0791787
2005/10/02(日) 22:44:39ポインタというのを使わないでプログラムを書くとどんな感じになるんでしょうか?
0792782
2005/10/02(日) 22:48:15少し動作変わるけど、こんな感じ。
#include<stdio.h>
void calc(int coin){
int coins[9] = {5000,2000,1000,500,100,50,10,5,1};
int i = 0;
for(i=0;i<9;++i){
printf("%d yen: %d mai\n",coins[i] , coin / coins[i]);
coin %= coins[i];
}
}
int main(){
int price,payments;
printf("Input price: ");scanf("%d", &price);
printf("Input payments: ");scanf("%d", &payments);
calc(payments - price);
}
0793デフォルトの名無しさん
2005/10/02(日) 22:49:47何をどう関数化するの?
解答例を丸ごとサブパーツ化?入出力と計算の分離? それとももっと他の事? 作成者の裁量?
>・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
とあるように、757は例題でなく問題文全文コピペ汁。テンプレも埋めれ。
0794デフォルトの名無しさん
2005/10/02(日) 23:02:14解答例を丸ごとサブパーツ化!
問題文全文コピペは解りにくいのはごめんなさい(´Д⊂)
0795787
2005/10/02(日) 23:03:06おお!ありがとうございます。さっきのよりも分かります!
自分はまだ、main(){〜〜}の中で全部終わらせるプログラムしか作れないので・・・がんばらないと・・・。
0796782
2005/10/02(日) 23:05:47あー関数習ってないのか
じゃあ、こんな感じで。
#include<stdio.h>
int main(){
int price,payments;
int coins[9] = {5000,2000,1000,500,100,50,10,5,1};
int i = 0;
int coin;
printf("Input price: ");scanf("%d", &price);
printf("Input payments: ");scanf("%d", &payments);
coin = payments - price;
for(i=0;i<9;++i){
printf("%d yen: %d mai\n",coins[i] , coin / coins[i]);
coin %= coins[i];
}
return 0;
}
0797デフォルトの名無しさん
2005/10/02(日) 23:11:140798デフォルトの名無しさん
2005/10/02(日) 23:13:170799デフォルトの名無しさん
2005/10/02(日) 23:13:260801デフォルトの名無しさん
2005/10/02(日) 23:16:500802794
2005/10/02(日) 23:19:390803デフォルトの名無しさん
2005/10/02(日) 23:54:35これはバグってないか?
ループが止まらない気ガス
0805782
2005/10/03(月) 00:02:05誤解を招きやすいコード書いてすまん。
0806デフォルトの名無しさん
2005/10/03(月) 00:03:58素直でいいやつらだな、おまいら。和んだ。
0807802
2005/10/03(月) 00:12:30だいぶ荒らして。。。
0808デフォルトの名無しさん
2005/10/03(月) 00:13:000809デフォルトの名無しさん
2005/10/03(月) 00:13:01日本語からやりなおせ
0810807
2005/10/03(月) 00:21:340811デフォルトの名無しさん
2005/10/03(月) 00:27:53[3]
Linux
Cです
[4] 期限: 明日
[5] 基本は全部習った
>>757 の誰か、ファイルを読む
入力:ファイル名
出力:Bodyの配列、Bodyの有効個数
データ出力
入力:Bodyの配列、Bodyの有効個数
出力:(なし)
世代別集計
入力:Bodyの配列、Bodyの有効個数、年齢下限、年齢上限
出力:該当世代の平均身長、該当世代の平均体重
平均値出力
入力:各世代の平均身長、各世代の平均体重
出力:(なし)
これでやったの、見せて(・ω・)
0812811
2005/10/03(月) 00:29:100813デフォルトの名無しさん
2005/10/03(月) 00:43:29やったのだがソース死んだ
リソース不足で上書き保存失敗なんて人生初だ…
サイズ0になってるし…
鬱だ…
>>757の重たい画像のせいだな…
0814812
2005/10/03(月) 01:03:35明日テストでどうしても必要でね・・・・・
(〃*`Д´)どうしたらいいんだよぉ!!!!
こっちが鬱だ
0815デフォルトの名無しさん
2005/10/03(月) 01:06:15そのままテストにGO
0816デフォルトの名無しさん
2005/10/03(月) 01:06:52すまんが、俺の環境では見れないので、テキストファイルに打ち込んでくれ>814
0817デフォルトの名無しさん
2005/10/03(月) 01:10:090818744
2005/10/03(月) 01:28:39>>747のようなプログラムの形はまだ習っておらず自分にはわからないので
できればmain(){〜〜}の中で全部終わらせるプログラムでお願いしますm(._.)m
0819814
2005/10/03(月) 01:29:550820744
2005/10/03(月) 01:30:030821デフォルトの名無しさん
2005/10/03(月) 01:32:560822デフォルトの名無しさん
2005/10/03(月) 01:33:52関数使うなってことじゃね?習ってないなら説明できんだろ
0823デフォルトの名無しさん
2005/10/03(月) 01:34:290824デフォルトの名無しさん
2005/10/03(月) 01:51:16http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/947.c
バグチェックしてない。
0825811
2005/10/03(月) 02:13:31ありがとう!!!!
そのばにいたら、抱きしめてる(#゜-゜#)
0826デフォルトの名無しさん
2005/10/03(月) 02:17:070827811
2005/10/03(月) 02:21:280828827
2005/10/03(月) 02:25:590829デフォルトの名無しさん
2005/10/03(月) 02:32:110830デフォルトの名無しさん
2005/10/03(月) 02:36:40歳離れてそうだし〜
0832デフォルトの名無しさん
2005/10/03(月) 03:11:59ちょい身長が高いだけだ!!
0833デフォルトの名無しさん
2005/10/03(月) 03:14:510835デフォルトの名無しさん
2005/10/03(月) 03:16:540836832
2005/10/03(月) 03:18:520837824
2005/10/03(月) 03:21:55じゃあお礼の写メちょーだい
[email protected]
0838デフォルトの名無しさん
2005/10/03(月) 03:23:460839デフォルトの名無しさん
2005/10/03(月) 03:24:270840デフォルトの名無しさん
2005/10/03(月) 03:29:150841デフォルトの名無しさん
2005/10/03(月) 03:36:53[2] 問題文(含コード&リンク):
メールを送信するプログラムmysendmailを書け。
mysendmail あて先 サブジェクト 本文ファイル名
として起動する。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:
[5] その他の制限: ネタでつ本気にしないよーに。
0842デフォルトの名無しさん
2005/10/03(月) 03:41:23自力で送信するのか?sendmailなどを使っていいのか
複数のあて先やBCCなど、どう対応させるのか書け
ソケットプログラミングなんて授業あるのか?どこの学校か書いてくれないか
0843デフォルトの名無しさん
2005/10/03(月) 03:42:40はぁ?
0844デフォルトの名無しさん
2005/10/03(月) 03:47:19あぁ?何がはぁ?だよ
言いたいことがあったら言えや
0845デフォルトの名無しさん
2005/10/03(月) 03:48:58自力だろう。sendmailは使わない方針で。
授業の一環として1〜3コマくらいで、やるネタかもしれんな。
とりあえず、1件のToとサブジェクトだけでいーんじゃない?
0846デフォルトの名無しさん
2005/10/03(月) 03:50:46はぁと
0847デフォルトの名無しさん
2005/10/03(月) 03:51:00ありがとう。
感謝する。
なんでPINKちゃんねるなんか見てたのか分からない・・・
0848デフォルトの名無しさん
2005/10/03(月) 03:51:35イタタタ
0849sleepy
2005/10/03(月) 03:52:120850デフォルトの名無しさん
2005/10/03(月) 03:53:20頭ぶっこわれてんじゃねえか?お前
842の内容でなんではぁと、だ?気持ち悪い
病院にでも行って来いや
0851デフォルトの名無しさん
2005/10/03(月) 03:56:200852sleepy
2005/10/03(月) 03:56:54http://img-box.ddo.jp/chinko/img/img20050930081408.jpg
0853デフォルトの名無しさん
2005/10/03(月) 04:08:40よく、足の裏で、なでてあげたけど。
元気そうだね。
0854sleepy
2005/10/03(月) 04:26:33誰か↓の
パソコン初心者総合質問スレッド Vol.1123
http://pc8.2ch.net/test/read.cgi/pcqa/1125129039/
973 :ひよこ名無しさん :2005/08/28(日) 20:09:58 ID:??? >>971. [email protected]. トウキョウミナトク ...
このへんのログ持ってませんか?
OpenJane 本体とログのすべてを削除されてしまったんですが、
なんで自分のメアドさらし、「トウキョウミナトク」なんて書き込みしたのか知りたいんですが。
0856デフォルトの名無しさん
2005/10/03(月) 06:11:470858デフォルトの名無しさん
2005/10/03(月) 08:15:250859デフォルトの名無しさん
2005/10/03(月) 08:23:230860デフォルトの名無しさん
2005/10/03(月) 09:23:59ゆーせーじ
とマジレス
0861デフォルトの名無しさん
2005/10/03(月) 10:47:26ttp://dictionary.goo.ne.jp/search.php?MT=usage&kind=ej
これ見る限り、日本語風に表記すると「ゆーしじゅ(ゆーじじゅ)」になるね。
私が聞く限りもそう聞こえたし、少なくとも>860の言うような「ゆーせーじ」とは聞こえない。
0862デフォルトの名無しさん
2005/10/03(月) 10:51:48俺はゆーぜーじって読んでるがな
0863デフォルトの名無しさん
2005/10/03(月) 11:25:22英語のちゃんとした発音では「〜age」は「〜いっぢゅ」てな感じになることが多いが、日本人としては
advantage → アドバンテージ
language → ランゲージ
のように「〜えーじ」とすることが多く、十分通じるんだから「ユーセージ」は妥当じゃないか?
おまえ、まさか日本人に向かってアドゥヴァーンティッジュとか発音してんの?
つーかどうでもいいネタを掘り下げてすまんかったorz
0864デフォルトの名無しさん
2005/10/03(月) 12:10:590866デフォルトの名無しさん
2005/10/03(月) 15:00:12[2] 問題文(含コード&リンク):
1:配列を使う
n×n(nは奇数)の正方形のマスの中に、1〜n^2までの数字を入れて、
各行・各列・対角線のそれぞれの合計が全て同じになるように並べるプログラムを作成。
2:ポインタを使う
要素数10個の整数配列を用意する。
その要素を昇順に並べ替えるプログラムをシェルソートを使って作成する。
比較幅は1,4,13,40…(前の数字×3+1)という数列の中の数を使用する。
[3] 環境
[3.1] OS: solaris
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2005/10/5
[5] その他の制限: 特にありません。
0867デフォルトの名無しさん
2005/10/03(月) 15:03:55嫌です。
0869866
2005/10/03(月) 15:09:51すみません、よろしくお願いします。
0870デフォルトの名無しさん
2005/10/03(月) 15:11:230871デフォルトの名無しさん
2005/10/03(月) 15:30:210872デフォルトの名無しさん
2005/10/03(月) 15:41:11ネタじゃないなら初めからトリップ付けな
0873866 ◆CH2.riw5Jk
2005/10/03(月) 16:03:26トリップ付けました。
0874デフォルトの名無しさん
2005/10/03(月) 17:03:390875デフォルトの名無しさん
2005/10/03(月) 17:41:31で検索すれば
0876858
2005/10/03(月) 17:49:04>>860
>>861
>>863
皆さんありがとうございます。
usageは、決まった読み方っていうのが無いんですね・・・。
わかりました。私は、『ユース・エッジ』と呼ぼうと思います
皆さんに『ユース・エッジ』と読んでいただけると、ユース・エッジのシェアも広がります
0877デフォルトの名無しさん
2005/10/03(月) 18:02:11うるせー馬鹿
0878デフォルトの名無しさん
2005/10/03(月) 18:17:38[2] ファイルを16進数2桁表示、アスキー表示にダンプし、アドレスを指定すれば編集できるバイナリエディタを作成する。
1ダンプ表示
起動時に指定された、ファイルをオープンし8Byte/ 行、16進数のアスキー表示をすべて表示
アスキー表示は、対応の字がない場合ピリオド表示。
2先頭からの位置指定、その位置データの書き換え
機能1と同時にファイルをオープンし、先頭からのバイト数を指定し、指定された位置のデータを表示後、データ修正値を受け付ける。
ポイント
ファイルをバイト単位でアクセス
ファイルをランダムアクセス
データ型char int 10進数 16進数の理解
[3] 環境
[3.1] OS: Linux
[3.3] 言語: C
[4] 期限:明日
0879デフォルトの名無しさん
2005/10/03(月) 18:17:43[2] 問題文(含コード&リンク):
異なるn個の文字(数字)を辞書順に列挙する
例)
123
132
213
231
312
321
(1344など同じ数を複数個含む例は考えなくてよい)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/948.c
ここまでできたのですが途中からうまくいってません
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4.2
[3.3] 言語: C
[4] 期限:2005年10月07日
[5] その他の制限: どういうことをやっているかを見るため
そのものズバリの関数(もしあるなら)を使うのは無しで
0880デフォルトの名無しさん
2005/10/03(月) 19:03:22つ「魔法陣の作り方」
0881デフォルトの名無しさん
2005/10/03(月) 19:06:520882デフォルトの名無しさん
2005/10/03(月) 19:08:120883デフォルトの名無しさん
2005/10/03(月) 19:53:47成りすましなんかほっとけ
0884デフォルトの名無しさん
2005/10/03(月) 20:23:11next_set() 内の論理がわからなかったので書き替えました。rev() は使ってません。
void uppersort(int *a, int limit)
{ /* バブルソート:手抜き */
for(int c=0; c<=limit; c++) {
for(int b=1; b<=limit; b++) {
if(a[b]>a[b-1])
swp(a+b-1, a+b);
}
}
return;
}
int next_set(int *a,int n){
int maxi;
for(int i=1; i<n; i++) {
if(a[i-1]>a[i]) { /* 昇順になっている最下桁対を見つける */
maxi=-1;
for(int j=0; j<i; j++) { /* 該当部を次の数字に置き換える */
if(a[j]>a[i] && (maxi==-1 || a[j]<a[maxi]))
maxi=j;
}
swp(a+i, a+maxi);
uppersort(a,i-1); /* 該当部より下の桁は昇順に初期化 */
return 0;
}
}
return -1;
}
0885879
2005/10/03(月) 21:15:45なんとか解決できました。ありがとうございます
rev()を使ったのは 15432→21345で
15432から1と2を入れ替えたら25431と「5431」が降順になり
その部分だけひっくり返せば完了。それで「1」「2」にあたる
ものをどうやって見つけるかでつまずいてました。
0886& ◆Ubjjh71Tw.
2005/10/03(月) 23:18:16[2] 問題文(含コード&リンク):2値画像ファイルを読み込んで、その画像ファイルを碁盤の目のような感じでM x Nの小さい正方形たちに区切る。
その正方形ひとつひとつにつき、正方形内に占める黒画素の割合をそれぞれ計算して出力する。出力はグラフでも数値でもよい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C/C++/どちらでも可
[4] 期限: [2005年10月6日まで]
[5] その他の制限: 画像ファイルはpgm形式
0887デフォルトの名無しさん
2005/10/03(月) 23:30:18ばでぃ・らんぐうぃじゅ
0888デフォルトの名無しさん
2005/10/03(月) 23:36:210889744
2005/10/03(月) 23:38:42[2] 問題文:
(1)発生した乱数のソート(同順処理を含む) (一次元配列)
(2)表の二次元処理(二次元配列)
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名:
[3.3] 言語: C
[4] 期限: 2005年10月4日20時まで
[5] その他の制限: 構造化コーディングに配慮して書け
関数は使うな
追加、修正がありましたのでこちらもお願いしますm(._.)m
表の二次元処理は、
教科1 教科2 教科3 …… 平均
001 点数a 点数b 点数c
002 点数d 点数e 点数f
003 点数g 点数h 点数i
…
平均
のように表示するものです。
0890デフォルトの名無しさん
2005/10/03(月) 23:49:56[2]1、繰り返しを用いて、二次元配列のタテとヨコの合計を求めよ
2、アルファベット1文字(大文字)を入力し、それを小文字に変換する関数を作れ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語: C
[4] 期限:明日
[5] その他の制限:
0891デフォルトの名無しさん
2005/10/04(火) 00:30:44ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/951.txt
魔法陣
入力の方は自分で作ってくれ。
途中安全性を端折った。
0892デフォルトの名無しさん
2005/10/04(火) 00:48:340893デフォルトの名無しさん
2005/10/04(火) 14:15:33[2]下のC++ソースをC言語で書き表す。
http://pc8.2ch.net/test/read.cgi/tech/1120974400/67
[3]
[3.1]UNIX/Linux
[3.2]gcc
[3.3]Cのみ
[4]まったりとお願いします。
[5]制限ありません。
0894デフォルトの名無しさん
2005/10/04(火) 15:59:51[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/952.txt[3] 環境
[3.1] OS: Windows2000
[3.2] VC 6.0
[3.3] 言語: C
[4] 期限: [2005年10月04日17:40まで]
[5] その他の制限:ちょっとマルチになってしまうかもしれませんが
教えて頂けないのでこちらの方がよろしいかなと思いまして、投稿させていただきます。
よろしくお願いします。
0895894
2005/10/04(火) 16:02:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/952.txt
0896デフォルトの名無しさん
2005/10/04(火) 16:38:38そのままCコンパイラでも通ると思うけど?
まぁ、どっちみち糞コードなんだが。
0897デフォルトの名無しさん
2005/10/04(火) 17:06:55何をしてほしいのかわからん。
つか、なんで構造体(≠文字列)のコピーにstrcpy使ってるんだよ。
こういう場合は普通memcpy使うだろ。
0898デフォルトの名無しさん
2005/10/04(火) 17:09:02[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/953.txt
[3]Open 環境
[3.1] OS: WindowsXP
[3.2] VC 6.0
[3.3] 言語: C++
[4] 期限: [2005年10月05日13:00まで]
[5] その他の制限:
複素数の扱い方がC++ではどのようにするかが分かりません。
よろしくお願いします<m(__)m>
0899デフォルトの名無しさん
2005/10/04(火) 17:18:30C++で複素数ならstd::complex
つか、ソース見てて頭痛くなってきた・・・。
0900デフォルトの名無しさん
2005/10/04(火) 17:51:060901デフォルトの名無しさん
2005/10/04(火) 17:52:23初めてこの板を除いてみたのですがすごいコーディング力です。
NECに勤務しているSEなのですが、みなさんのような力があれば私は下請けに対してもっと
大きな顔で支持できるのですが・・・。
興味があるんですが仕事でプログラムしてる人たちがやっているとは思えないので
(プログラムは仕事でできるから)趣味でやっているんだと思いますが、あってますか?
0902894
2005/10/04(火) 18:16:06なるほど、memcpyでしたか・・・すんません・・・サンキューです!
0903デフォルトの名無しさん
2005/10/04(火) 18:19:04そりゃぁそうだろう。
・注意力不足
これだけの文章でぱっと見で二箇所も誤変換がある。
・判断力不足
仕事中にここを覗いてプログラムを書いている香具師は何人もいる。
・意思力不足
「……思えないので……思いますが、あってますか?」って、なにこの気弱さ。
下請けに馬鹿にされるのも仕方ないっしょ。
0904デフォルトの名無しさん
2005/10/04(火) 18:22:33多分それどころじゃない間違いがある気がする。
自分が扱っているデータについて、もっと詳しく調べることを勧める。
0905デフォルトの名無しさん
2005/10/04(火) 18:24:07>みなさんのような力があれば私は下請けに対してもっと
>大きな顔で支持できるのですが・・・。
もっと力があれば、もっとまともな設計ができるのに・・・・
ていう意味でしょうか?
>>903
>「……思えないので……思いますが、あってますか?」って、なにこの気弱さ。
いや、いろいろいるでしょ。
なのに全部ひっくるめてしか答えられないような質問の仕方がまずい。
SEとしては致命的だ。
0906デフォルトの名無しさん
2005/10/04(火) 18:54:59…えーと、「支持」->「指示」のつもりじゃあるまいか…
某社SEどころか釣り以下の低脳なので、みなスルーするよろし。
0907デフォルトの名無しさん
2005/10/04(火) 19:03:26指示の間違いでした。自分は気弱で、コーディング力、設計力もないので
だめだめです・・・。最近自信をなくしてきてはじめてここ覗いたらみなさん
すごいなぁとおもったのでちょっと質問してみました。
ちなみに某社SEとは?
0908デフォルトの名無しさん
2005/10/04(火) 19:19:300909デフォルトの名無しさん
2005/10/04(火) 19:25:06ただ要求分析ぐらいはできるようになってくれ
なんで下請けの俺らが要件定義からやらにゃいかんのだ
0910デフォルトの名無しさん
2005/10/04(火) 20:21:13釣り以下なので相手にされない、いやみんなするなよw……
0911namahage
2005/10/04(火) 20:56:580912デフォルトの名無しさん
2005/10/04(火) 21:00:52ここで答えている人ならみんな方針は一瞬でわかって、プログラミングやデバッグ込でも
大抵一時間もかからずに解けてるんじゃないかな?
職業プログラマーに必要なコーディング力ってそんな程度じゃないでしょう。
もっと大規模なものを手際よく書くような力も必要で、
そういう売りものを作るための技術は学校だけではすべて学べないもの。
あと、100行程度のプログラムでは不要なテクニックなんかもあるかも。
0913デフォルトの名無しさん
2005/10/04(火) 21:05:50たまに変な問題が出たりする。OS作れとか
0914デフォルトの名無しさん
2005/10/04(火) 21:06:57double my_sin(double x){
double base = x;
double result=0;
x=-x*x;
int i=1;
while(result != result + base){
result += base;
i+=2;
base *= x;
base /= i*i-i;
}
return result;
}
0915デフォルトの名無しさん
2005/10/04(火) 21:22:581
int main(void)
{
int arr[][4] = {{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15}};
int i, j, result;
int width = sizeof(arr)/sizeof(arr[0]);
int height = sizeof(arr[0])/sizeof(arr[0][0]);
for (i = 0; i < width; i++) {
for (j = 0, result = 0; j < height; j++) result += arr[i][j];
printf("%d列目:%d\n", i, result);
}
for (i = 0; i < height; i++) {
for (j = 0, result = 0; j < width; j++) result += arr[j][i];
printf("%d行目:%d\n", i, result);
}
return 0;
}
0916デフォルトの名無しさん
2005/10/04(火) 21:25:09int to_lower(int upper)
{
static char cnv[256];
static const unsigned char *upper_list = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
static const unsigned char *lower_list = "abcdefghijklmnopqrstuvwxyz";
static int i, j;
for (; i < 256; i++) cnv[i] = i;
for (; upper_list[j] != '\0'; j++) cnv[upper_list[j]] = lower_list[j];
return cnv[(unsigned char)upper];
}
0917デフォルトの名無しさん
2005/10/04(火) 21:38:20char to_lower( char upper ){
return upper+'A'-'a';
}
#仕様自体に「範囲外の値の入力時の対処」が欠落していますね
0918デフォルトの名無しさん
2005/10/04(火) 21:45:110919デフォルトの名無しさん
2005/10/04(火) 21:53:39普通は範囲外は未変換だろうな。
というか、それ、小文字じゃなくて大文字に変換になってる。
char to_lower(char c){
return c+(((unsigned)(c-'A') <= 'Z'-'A')?'a'-'A':0);
}
0920デフォルトの名無しさん
2005/10/04(火) 21:58:520922デフォルトの名無しさん
2005/10/04(火) 22:04:57負の数をunsignedにキャストしたときの動作って決められてるの?
素直に'a' <= c <= 'z'って条件書くと何か問題あり??
0923デフォルトの名無しさん
2005/10/04(火) 22:05:51と書けば比較2回に論理和が1回
(unsigned)(c-'A') <= 'Z'-'A'
と書けば減算1回に比較1回。
僅かだが後者が早い(ことが多い)
ま、そこまでして書く必要があるのか? というのは、もっともだがw
0924デフォルトの名無しさん
2005/10/04(火) 22:06:52だよ
0925デフォルトの名無しさん
2005/10/04(火) 22:08:110926デフォルトの名無しさん
2005/10/04(火) 22:12:06角ベンダが勝手に」作ってるんじゃなかったんだ。
本物にソースみたいんだけどどこにある?
0927デフォルトの名無しさん
2005/10/04(火) 22:12:24unsignedの範囲に入るまでUINT_MAXを足し続ける
>>925
>>916
0928デフォルトの名無しさん
2005/10/04(火) 22:16:15>>916のは毎回テーブルを生成してるから遅すぎて論外だろう。
そのテーブルをあらかじめ計算しておいて、外部に固定で持たしてるのなら話は別だが
0929デフォルトの名無しさん
2005/10/04(火) 22:16:29void tailor_sin(double intercept, double * result, int max_dimension)
{
int sign[] = {1,1,-1,-1};
double (*f[])(double) = {sin, cos, sin, cos};
double denom = 1;
int i;
for (i = 0; i <= max_dimension; i++, denom *= i) {
result[i] = sign[i%4] * f[i%4](intercept) / denom;
}
}
0930デフォルトの名無しさん
2005/10/04(火) 22:17:181度しか生成してないが?
0931デフォルトの名無しさん
2005/10/04(火) 22:19:140932デフォルトの名無しさん
2005/10/04(火) 22:19:47言葉が曖昧で伝わらんかったのか......
for文を関数呼び出しのたびにぶん回してテーブルに値を格納するのは不毛って言いたかっただけ
0933デフォルトの名無しさん
2005/10/04(火) 22:22:14「for文を関数呼び出しのたびにぶん回して」なんかいないんだってば
ちゃんと読め
>>931
スレッドセーフじゃないとかそんなことまで考えないといけませんか
0934デフォルトの名無しさん
2005/10/04(火) 22:25:43あーすまんi,jも静的変数か、見逃してたわ。
0935デフォルトの名無しさん
2005/10/04(火) 22:31:03一例
tolower:
http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/locale/tolower.c
toupper:
http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/locale/toupper.c
0936デフォルトの名無しさん
2005/10/04(火) 22:33:40「ライブラリなら」当然だな。
ま、最初から固定のテーブルで持っておくのがやっぱり普通。
それと仕様的にはlocale依存、かな。実際には。
0937デフォルトの名無しさん
2005/10/04(火) 23:17:38>>アルファベット1文字(大文字)を入力し、それを小文字に変換する関数を作れ
出題者の意図を読めていないので減点。int型である必要性がこのプログラムにはない。
例えば、upperに-1(EOF)が代入されたときの例外フローがあればまだ良かったんだが...
それでも引数がint型であるため、このコードは呼び出されるたびにcharからintへの変換が
必要がある。望ましくない。
>> static int i, j;
仕様として0で初期化されるのかもしれないが、
後から他人がレビューするときに混乱が生じるので不適切。
結論:他人のコードをもっと読んで、もう少し理解しやすいコードを書いて下さい。
と感じたのは、俺だけでいい。
0938デフォルトの名無しさん
2005/10/04(火) 23:36:03EOF=-1って保証されてたっけ?
あくまで処理系定義だった記憶があるんだが・・・
0939デフォルトの名無しさん
2005/10/04(火) 23:37:54確かにお前だけでいい
0940デフォルトの名無しさん
2005/10/04(火) 23:41:32マニュアル読め。ボケ。
0941デフォルトの名無しさん
2005/10/05(水) 00:23:170942デフォルトの名無しさん
2005/10/05(水) 14:43:19[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/954.txt
[3] 環境
[3.1] Windows2000
[3.2] VC 6.0
[3.3] C
[4] 2005年10月05日17:00まで
[5] その他の制限: 特に無いと思います。
0943デフォルトの名無しさん
2005/10/05(水) 14:50:310944デフォルトの名無しさん
2005/10/05(水) 14:57:140945デフォルトの名無しさん
2005/10/05(水) 14:57:24リンクエラー(プログラムを他の部分と接続するときのエラー)なので、
全てのソースを出さないと解決できない。
0946デフォルトの名無しさん
2005/10/05(水) 15:02:180947デフォルトの名無しさん
2005/10/05(水) 15:05:32お前こそ嫁
K&R第二版 p185
>この記号定数EOFは<stdio.h>の中で定義されている。その値は普通-1であるが、
>特定の値に左右されないようにするため(ry
これを読めばEOF=-1なんて血迷い事は言えないはずだが
0948デフォルトの名無しさん
2005/10/05(水) 15:10:37それはいいけど、pNum2が利用されても開放されてもいない希ガス。
0949デフォルトの名無しさん
2005/10/05(水) 15:11:09どうでも良いが、pNum2がものすごい勢いでメモリリークしてる。
あと、ソースをみるとC++だし、FILEを使わずにstd::ofstream使えば?
ファイルを閉じたりメモリを開放したりする後処理を自前で書くのはC++では醜い。
0950デフォルトの名無しさん
2005/10/05(水) 15:11:21「マニュアル読めば分かることを聞くな」ということジャマイカ?
0951デフォルトの名無しさん
2005/10/05(水) 15:14:57>問題文は、解いてもらう方にわかりやすいように全文を書きましょう
何をしてほしいのか、何がわからないのか、
質問出すときに最低限の文章は書けよ・・・
ソースだけ(しかも一部のみ)出されても何をすればいいのかわからんだろ
0952デフォルトの名無しさん
2005/10/05(水) 15:18:010953952
2005/10/05(水) 15:30:30C/C++の宿題を片づけます 51代目
http://pc8.2ch.net/test/read.cgi/tech/1128493272/
0954946,894
2005/10/05(水) 16:14:090955デフォルトの名無しさん
2005/10/05(水) 16:39:51>>951は質問者が意図することを引き出してやれる程の想像力も持たない無能だということだ。
解答者の無能が許されるのは何も発言しないときだけだと思うのだが、どうだろうか。
0956デフォルトの名無しさん
2005/10/05(水) 17:04:560957デフォルトの名無しさん
2005/10/05(水) 18:29:59「神に見捨てられたら、自らの手で運をつかめ。」
0958デフォルトの名無しさん
2005/10/05(水) 18:33:32「紙に見捨てられたら、自らの手でウンコを拭け。」
のほうが便所っぽい
0959デフォルトの名無しさん
2005/10/05(水) 18:44:03お前は価値のある人間かも知れんが、有害無益のカスかも知れん。
自分を大切にしてくれる人を大切にしろよ。
0960デフォルトの名無しさん
2005/10/05(水) 19:08:190961デフォルトの名無しさん
2005/10/05(水) 19:16:520962デフォルトの名無しさん
2005/10/05(水) 22:46:350963デフォルトの名無しさん
2005/10/05(水) 22:53:490964890
2005/10/06(木) 00:04:100965デフォルトの名無しさん
2005/10/06(木) 00:16:160966デフォルトの名無しさん
2005/10/06(木) 00:19:59int main(void){
puts("かけざん");
return 0;
}
これで不満があるなら>>1
0967デフォルトの名無しさん
2005/10/06(木) 13:29:34どんな入門書にも(ry
そ(ry
0968デフォルトの名無しさん
2005/10/06(木) 13:32:490969デフォルトの名無しさん
2005/10/06(木) 13:34:16x*1=x
x*(y+1)=x*y+y
とか出力すればいいのかな?
0970デフォルトの名無しさん
2005/10/06(木) 14:13:44今でも当たり前に多倍長演算はありますぜ。C++だと普通に演算できて便利。
で、落ちるまで未だあと10レスかな。
0971デフォルトの名無しさん
2005/10/06(木) 14:15:130972デフォルトの名無しさん
2005/10/06(木) 14:38:59「今日出来ることを明日に伸ばすな」
でんがな
0973デフォルトの名無しさん
2005/10/06(木) 14:48:23_| ̄|○
0974デフォルトの名無しさん
2005/10/06(木) 16:31:300975デフォルトの名無しさん
2005/10/06(木) 17:00:31以下の仕様を満たす void 型の関数 void sort3(int *x, int *y, int *z) を作り,実行例を示せ:
* sort3(&a, &b, &c); として呼び出すと,変数 a,b,c の値が小さい順に入れ替わる.
例:
-------------------------------------------------
int a = 5;
int b = -1;
int c = 2;
sort3(&a, &b, &c);
printf("a = %d\nb = %d\nc = %d\n", a, b, c,)
-------------------------------------------------
を実行すると
-------------------------------------------------
a = -1
b = 2
c = 5
-------------------------------------------------
と表示される (実際のプログラムでは,変数 a,b,c に最初に代入する値を scanf で標準入力から受け取れるようにし,上の例以外の数値に対しても試すこと).
0976デフォルトの名無しさん
2005/10/06(木) 17:03:00その3つの変数のアドレスを関数に渡して、
関数内でif文使って比較して数値を入れ替えるだけじゃね?
0977デフォルトの名無しさん
2005/10/06(木) 17:04:15#include<stdio.h>
void func1(int x, int y);
int func2;
void func3(int x, int y);
void func4(int *p, int *q);
void func5(int x);
int a = 1, b =2;
main()
{
int a = 3, c = 4;
printf("in main a = %d\n",a);
printf("in main b = %d\n",b);
printf("in main c = %d\n",c);
func1(++c, b);
a = func2();
func3(a,c);
printf("in main2 a = %d\n",a);
printf("in main2 b = %d\n",b);
printf("in main2 c = %d\n",c);
b = func4(&a, &c);
printf("in main3 a = %d\n",a);
printf("in main3 b = %d\n",b);
printf("in main3 c = %d\n",c);
func5(a);
}
0978デフォルトの名無しさん
2005/10/06(木) 17:05:19void func1(int x ,int y)
{
double z;
z = x / y;
printf("in func1 x = %d\n",x);
printf("in func1 y = %d\n",y);
printf("in func1 z = %.3f\n",z);
}
int func2()
{
int b = 5, c = 6;
printf("in func2 a = %d\n",a);
printf("in func2 b = %d\n",b);
printf("in func2 c = %d\n",c);
return(b);
}
void func3(int x, int y)
{
a = x + y;
}
int func4 (int *p. int q)
{
*p = 7;
*q = 8;
return(*p + *q);
}
void func5(int x)
{
printf("in func5 a = %d\n",a);
}
0979デフォルトの名無しさん
2005/10/06(木) 17:08:170980デフォルトの名無しさん
2005/10/06(木) 17:08:17エラーメッセージが教えてくれる以上のことがあるとは思えない。
コンパイルエラーがでるだけなのでは?
0981デフォルトの名無しさん
2005/10/06(木) 17:13:240982デフォルトの名無しさん
2005/10/06(木) 17:55:11#include<stdio.h>
void swap(int *a, int *b) {
int tmp;
tmp = *a; *a = *b; *b = tmp;
}
void sort3(int *x, int *y, int *z) {
if (*x > *y) swap(x, y);
if (*x > *z) swap(x, z);
if (*y > *z) swap(y, z);
}
int input(const char *message) {
int i;
printf("%s", message);
scanf("%d", &i);
return i;
}
int main(int argc, char **argv) {
int a, b, c;
a = input("a=");
b = input("b=");
c = input("c=");
sort3(&a, &b, &c);
printf("a = %d\nb = %d\nc = %d\n", a, b, c);
return 0;
}
0983デフォルトの名無しさん
2005/10/06(木) 19:40:400984デフォルトの名無しさん
2005/10/06(木) 22:36:03printfはCの関数でも難しい部類だぞ
0985デフォルトの名無しさん
2005/10/06(木) 22:38:340986デフォルトの名無しさん
2005/10/06(木) 23:30:03#include <stdio.h>
#include <stdarg.h>
int printf(const char *format, ...)
{
int ret;
va_list ap;
va_start(ap, format);
ret = vprintf(format, ap);
va_end(ap);
return ret;
}
0987デフォルトの名無しさん
2005/10/06(木) 23:41:17コンパイルエラーだな
0988デフォルトの名無しさん
2005/10/07(金) 06:27:050989デフォルトの名無しさん
2005/10/07(金) 07:46:06(ため息)
0990デフォルトの名無しさん
2005/10/07(金) 09:32:50文字列に出力してどうする。
レス数が950を超えています。1000を超えると書き込みができなくなります。