10/01/28 23:07:18
>>299
> fp while float else puts gets
>strlen strcpy strcat 以外は使用しないでください。
これだけだと、ファイルに入出力できない。
>>320 タソが言ってる方法もあるが・・・
> 名簿の人数が大体5人と考えてみても無理でしょうか?
人数は関係ないかと。
というか、名簿のフォーマットは決められていないですか?
ファイルの入出力関数について何も習ってないならば、
この問題は解けないと思います。
とりあえず、講義資料とかノートとか読み返して、
fgetsとかfputsとかを習っていないか確認してください。
327:デフォルトの名無しさん
10/01/28 23:15:56
>>324
>上記のプログラミングの他に fp while float else puts gets
>strlen strcpy strcat 以外は使用しないでください。授業で習っていないので…
それ、あなたが勝手に付けた条件だよね?
上記に記載されていない
fopen,fclose,scanf,printf,struct等使ってるけど
それはいいの?
fopenやfcloseは使ってるのに
fprintf,fgets,fputs等のファイル入出力関数は使っちゃダメなの?
・問題文は、出題されたまま全文を書いてください。
328:デフォルトの名無しさん
10/01/28 23:16:59
翻弄された回答者が(´・ω・)カワイソス
329:デフォルトの名無しさん
10/01/28 23:17:22
>>320
>>326
すみません!!見直したところfscanf、fprintf、fputsとfgetsも使ってました。
不注意でご迷惑お掛けしました…
330:デフォルトの名無しさん
10/01/28 23:18:53
>>329
なら308でいいよね?
331:デフォルトの名無しさん
10/01/28 23:29:58
>>330
それがEOFとbreakがつかえないもので…すみません。
332:デフォルトの名無しさん
10/01/28 23:45:17
連投すみません。これ以上書くと私物化も甚だしいので控えます。
頂いたヒントで頑張ります。情報不足でご迷惑お掛けしました。
本当にありがとうございました。
333:デフォルトの名無しさん
10/01/29 04:07:06
下痢便飲みたいのかそうか
334:デフォルトの名無しさん
10/01/29 16:23:54
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境
[3.1] OS:WindouwsXP
[3.2] コンパイラ名とバージョン:Microsoft VisualC++2008 Express Edition
[3.3] 言語:C
[4] 期限: (2010年1月31日17:00まで
[5] その他の制限:特になし
ファイルの入出力について理解したいので、
すみませんが、よろしくお願いします。
335:デフォルトの名無しさん
10/01/29 17:43:11
>>334
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
FILE *fp,*fin;
char s[256]="gomibako";
char fname[256], buff[256];
long pos;
printf("出力するファイル名を入力せよ。\n");
fgets(fname,256,stdin); //スペース入りファイル名なので
fname[strlen(fname)-1]='\0'; //\n → \0
strcat(fname, ".txt");
fp = fopen(fname, "a"); fin = fopen("word.txt","r");//fpは"a"追記モード
if ((fp == NULL)||(fin == NULL)) {
printf("ファイルオープン失敗。\n");
exit(EXIT_FAILURE);
}
fseek(fp,0,SEEK_END); //ファイル名出力は最初の1回目のみのようなので
pos=ftell(fp);
if(pos==0)
fprintf(fp,"%s\n",fname);
while(fscanf(fin,"%s",buff)!=EOF)
if(strcmp(buff,s)!=0)
fprintf(fp,"%s\n",buff);
fclose(fin);
fclose(fp);
printf("読み込み完了/書き込み完了。\n\n");
return 0;
}
336:デフォルトの名無しさん
10/01/29 20:20:50
[1] 授業単元: 情報処理B
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows vista
[3.2] Cygwin
[3.3] 言語: C
[4] 期限:2月9日まで
[5] その他の制限: とりあえずstrcpyは習っています。
課題5以外はプログラム中の省略を補っていただきたいです。多いですがよろしくお願い致します。
337:200
10/01/29 22:56:13
>>200ですがおかげさまでプログラムを完成させられました。
do{
}while(next_permutation(intary.begin(), intary.end()));
を使いました。
ところで>>200ではn!もしくはn!×n!の組み合わせを計算することになりますが
nが10だとn!×n!は1.31681894 × 10^13もの組み合わせになります。
この辺をうまいことごまかす方法ってないものでしょうか。
厳密な解でなくともそこそこの解を短時間で計算できる、みたいな・・・。
338:デフォルトの名無しさん
10/01/29 23:26:09
>>335さん。
詳しい解説助かります。本当にありがとうございました。
339:デフォルトの名無しさん
10/01/30 01:16:49
>>337
「B組の隣にA組を並ばせる」「身長差を最小にする」
の2つを同時に満たす解があるとは限らないので、よくあるのは重みWを利用して
点数=(1-W)×(Bの隣にAがいるか?)+W×(身長差が最小か?)
で並びを評価する。2つの条件のどちらを重視するかでWの値を調節する。
あとは色々とアルゴリズムあると思うけど、ランダム山登り探索でもすればいいんじゃないかね
①今の並びの点数を計算
②ランダムに2つ選んで交換してみる
③交換したあとの点数を計算
④点数が高くなっていたら交換を採用、低くなっていたら元に戻す
を繰り返していって、何回か連続で失敗したら終了。
340:デフォルトの名無しさん
10/01/30 03:04:51
>>336
課題1 URLリンク(codepad.org)
課題2 URLリンク(codepad.org)
課題3 URLリンク(codepad.org)
341:デフォルトの名無しさん
10/01/30 09:16:33
>>339
これは組み合わせ最適化ってカテゴリになるんですかね?
う~ん、なかなか手の込んだことしないといけないっぽいなぁ。
342:デフォルトの名無しさん
10/01/30 11:14:15
>>337
計算途中で、過去の最小を超えたら中止したらいいんじゃね?
少しはラクになるはずw
343:デフォルトの名無しさん
10/01/30 11:19:52
身長順にソートして、
隣の組の子と手を繋がせて、
A組の子を元の順に並べる。
これじゃダメなの?
344:342
10/01/30 11:33:03
あ、中止つうのは、端折って次へ、という意味。
345:デフォルトの名無しさん
10/01/30 12:09:33
>>341
宿題のレベル超えるから最適化アルゴリズムでも調べてくれ
>>342
それをやったとしても計算量のオーダーには寄与しないよ
テクニックとしては重要だが。
>>343
そのやり方だと「AとBが隣り合う」という条件を完全に満たして、
「身長差が小さい」についてはそこそこ、という解が得られる。
そういう解が欲しいときにはその手の方法がベストだと思う。
>>200の問題文を見る限り、その解釈でいいと思う。
346:デフォルトの名無しさん
10/01/30 13:21:56
Microsoft社 Visual Studio C++のソフトウェアを用いて
チャットアプリケーションを作れと言われたのですが、
当方C言語系がとても苦手で困っています;;
システムの仕様は
・1対1の環境でのみ動作。
・サーバ側はポート番号を指定して、クライアントからの接続を待つ。
・クライアント側はサーバのIPアドレスとポート番号を指定して、サーバに接続する。
・この時の通信はTCPで行う。
・クライアントが通信をやめたい場合は"endc"
・サーバ側がやめたい場合は"ends"と入力。
・WinSockを使用してWindowsのコンソールプログラムとして基本的な簡易なチャット
以上の条件でプログラミングしていただけると幸いです。
よろしくお願いします m__)m
347:デフォルトの名無しさん
10/01/30 13:38:34
>>346
>>1
348:200
10/01/30 14:21:39
身長順にソートできれば確かに楽になりそうですね。
ただ>>200の問題はもっと複雑なものの一部分を抜き出したもので、
本当は身長順というよりも2次元平面上で距離が近いもの同士って感じなんです。
そうなると・・・ちょっと安易にはソートできないかな?
なんにしても宿題としては提出してしまっているので自分が気になってるだけです。
最適化アルゴリズムでいろいろ見てみようと思います。
349:デフォルトの名無しさん
10/01/30 14:45:58
Cマガのプログラミング研究会を思い出した。
350:デフォルトの名無しさん
10/01/30 15:26:06
>>345
343じゃないけど、>>343のやり方で、
身長差が最小とならない場合って、どんな場合?
計算してみたら、常に最小になりそうなんだが。
それとも「そこそこ」ってのは
「最小にならない場合がある」って意味ではない?
351:デフォルトの名無しさん
10/01/30 15:29:09
[1] 授業単元:プログラミング演習Ⅱ
[2] 問題文(含コード&リンク):
□1□2□3□4□5□6□7□8□9
の□に四則の演算子(+,-)や空白を入れて100なるような
小町算の全ての解を求めるプログラムを作成すること
例えば
12 + 3 - 4 + 5 + 67 + 8 + 9 = 100
123 - 45 - 67 + 89 = 100
[3] 環境
[3.1] OS: Windows
[3.2] VC3.5SP1
[3.3] 言語: C++
[4] 期限: 本日4時まで
[5] その他の制限: 特にないです
かなり切羽詰まってるのでお願いします…
352:350
10/01/30 15:42:36
と、思ったけど、AとBが隣り合わない場合を考慮すると、
343のやり方では、身長差が最小とならない場合がある、
という意味だったのね。
失礼、読み違えてました。
353:デフォルトの名無しさん
10/01/30 16:14:36
[1] 授業単元:コンピュータグラフィック
[2] 問題文(含コード&リンク):10468.txt
モノクロ画像を読み込み,(319,239) の画素値を 0 とする
画像を関数を使用して読み込み,それを 2 次元配列に格納する関数を作成する.
指定した画素の画素値をセットする.
2 次元配列に格納していた画像を 1 次元配列に再度格納し,関数を使用して画像ファイルとして書き戻す.
[3] 環境
[3.1] OS:WindowsXP
[3.2] VC 05
[3.3] 言語:C
[4] 期限: ([2010年2月1日01:00まで]
[5] その他の:
前スレで24日辺りに回答を頂いた問題なのですが、差し戻されました
自分なりに分かる部分を書き直してみましたが、一向に解決しないので回答をいただけないでしょうか?
354:デフォルトの名無しさん
10/01/30 16:16:35
>>351
31分でコードを作ってもらおうという考えは非常識
355:デフォルトの名無しさん
10/01/30 17:51:17
>>351
前にIPAの試験に出てたので、そのまま作ってみたよ
URLリンク(codepad.org)
356:デフォルトの名無しさん
10/01/30 18:07:34
[1]情報科学特論 (大学院講義レポート課題)
[2]URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] OS:Solaris GNU-C-compiler 4.0 C言語
[4] 2/11迄
[5] 面倒なのでよろしく
357:デフォルトの名無しさん
10/01/30 18:28:17
[1] 授業単元:計算機自論
[2] 問題文(含コード&リンク):
LISPはCと同じで関数型言語ではないということを200文字以内で表現してください
[3] 環境
[3.1] OS: すべて
[3.2] コンパイラ名とバージョン: すべて
[3.3] 言語: 日本語
[4] 期限: 無期限
358:デフォルトの名無しさん
10/01/30 19:15:44
[1] 授業単元:プログラミング演習Ⅱ
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:WindouwsXP
[3.2] コンパイラ名とバージョン:VisualC++2008 Express Edition
[3.3] 言語:C
[4] 期限:2010年2月2日15:00まで
[5] その他の制限:特になし
なんとか途中まで頑張りましたが、今の自分ではこれが限界でした・・・。
問題文リンク先の≪問題と条件≫の全てを満たすソースを、お教え下さい。
お手数かけますが、よろしくお願いします。
359:デフォルトの名無しさん
10/01/30 19:21:19
>>351
なんか変数いっぱい散らかしてもっちゃりしてるけど。
処理もなんかぐねぐねぐねぐねとしてるし。駄目だな。
URLリンク(codepad.org)
>>355さんのを見て勉強しなおしてきます。
360:デフォルトの名無しさん
10/01/30 19:44:31
>>358
#include <stdio.h>
int main(int argc,char *argv[]){
FILE *fp1=NULL,*fp2=NULL;
char buf;
int i=1;
int result=0;
if(argc!=3){
printf("引数が不正\n");
result=-1;
goto EXIT;
}
fp1 = fopen(argv[1],"rb");
fp2 = fopen(argv[2],"w");
if(fp1==NULL || fp2==NULL){
printf("file open error\n");
result=-1;
goto EXIT;
}
while(fread(&buf,1,1,fp1)){
fprintf(fp2,"%02X ",buf);
if(i%16==0)
fprintf(fp2,"\n");
i++;
}
EXIT:
if(fp1) fclose(fp1);
if(fp2) fclose(fp2);
return result;
}
361:デフォルトの名無しさん
10/01/30 20:26:12
360さん。回答ありがとうございます。
早速、このソースでコンパイルしたところ問題なくビルドは出来ました。
しかし、その後の「デバックなし」で実行してみましたが、
「引数が不正」と表示されてしまい、上手く出来ません。
これは何故でしょうか?しょぼい質問ですいません・・・。
362:デフォルトの名無しさん
10/01/30 20:38:24
>>361
≪問題と条件≫
第1引数に指定したファイルからバイナリーモードで1バイトずつファイルを読み込み、
ファイルの内容を16進数で示したものを第2引数に指定したファイルに書き込むプログラムを作成せよ。ただし、16バイトごとに改行を入れること。
(実行)
>free1.exe test.txt test2.txt
でしょ?
363:デフォルトの名無しさん
10/01/30 20:41:50
>>361
横からだけど、
今の場合引数っていうのは、プログラム実行時にプログラム名の後に続けて書くもの
>free1.exe test.txt test2.txt
この場合はtest.txtが第1引数で、test2.txtが第2引数
例えばここを
>free1.exe hoge.txt fuga.txt
にしても、ちゃんとhoge.txtから読み込んでfuta.txtに出力するような
プログラムを作れっていうのが、この課題なんじゃないかな
364:デフォルトの名無しさん
10/01/30 20:45:52
>>362
はい、そうです。
365:デフォルトの名無しさん
10/01/30 20:51:31
>>363
はい、test.txtとhoge.txtは、あらかじめ作成している状態です。
366:デフォルトの名無しさん
10/01/30 20:57:08
分かってねー
367:363
10/01/30 20:59:19
>>365
だったら実行時に指定しないと。
VC++でどうやって指定するか分かんないけど
368:デフォルトの名無しさん
10/01/30 21:11:35
>>365
コマンドライン引数というものが分かってないので
URLリンク(www9.plala.or.jp)
URLリンク(www.geocities.jp)
この辺読みましょう
369:デフォルトの名無しさん
10/01/30 22:28:36
[1] 授業単元: プログラム演習Ⅱ
[2] 問題文(含コード&リンク):
3次元空間において線分が平面を通過しているか判定するプログラムを作りなさい
(線分の座標(x1,y1,z1) (x2,y2,z2)と平面の四隅の座標は入力する)
平面を通過していても平面の四隅の中に交点がない場合は通過していないものとする
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語: C
[4] 期限:2010/2/8
お願いします
370:デフォルトの名無しさん
10/01/30 22:43:05
>>358です。
稚拙ですが、質問をURLにまとめたので、よろしくお願いします。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
371:デフォルトの名無しさん
10/01/30 22:46:23
>>370
>>368を読め。
372:デフォルトの名無しさん
10/01/30 22:58:55
>>370
Cドライブ直下にfreeフォルダを作成します。
C:\free です。
>>360のソースを free1.c などとしコンパイルして free1.exe を作成します。
作成された free1.exe を C:\free フォルダ内にコピーします
C:\free\free1.exe です。
作成済みのデータ test.txt も同様に C:\free フォルダ内にコピーします
C:\free\test.txt です。
C:\free フォルダの中には free1.exe test.txt 2つのファイルがあります。
コマンドプロンプトを起動します。
スタート>ファイル名を指定して実行>cmd.exe OKボタン
コマンドプロンプトが立ち上がりました。
C:\............... >_ (_は点滅状態)
となります。
カレントディレクトリを C:\free に移動します。
C:\............... >cd c:\free
です。
C:\free>_ (_は点滅状態)
になりました。
この状態で
C:\free>free1.exe test.txt test2.txt
を実行します。
C:\freeフォルダの中に test2.txt が作成されました。おしまい。
373:デフォルトの名無しさん
10/01/30 23:03:50
>>340
ありがとうございます!助かりました!
課題4、5については引き続きどなたかよろしくお願い致します。。
374:デフォルトの名無しさん
10/01/30 23:30:33
>>353
ファイルの入出力はファイルポインタを用いたものに変更してます。
(インデントが変な所はタブをスペース4つに換えて下さい)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
375:デフォルトの名無しさん
10/01/31 00:04:17
372さん。回答ありがとうございます。
アドバイス通りにしてみて、実行したのですが、
「Lhaplus slef extractor」というのが
表示されます。展開先のフォルダはC:\free を選べるのですが、
展開されるファイルが何故かfree1.cしか選べません・・・。
何度も見直して実行したのですが、結果は一緒です。
これは、なにか他に原因があるのでしょうか?
376:デフォルトの名無しさん
10/01/31 01:53:57
>>356
には手だすな。
>>357も>>369も
やんないほうがいい
377:デフォルトの名無しさん
10/01/31 02:16:46
>>375
それ以上の質問はスレ違いどころか板違い。
378:デフォルトの名無しさん
10/01/31 02:35:35
乱数は言語学習レベルの人がうかつに手を出すべきものじゃない。
補助的に使うのならともかく
高度に依存するプログラムの生成には高度な専門知識が必要で
専門家”集団”レベルで扱うべきもの。
みだりに使う癖だけは付けないほうが良い
以上自戒を込めて
379:378
10/01/31 02:37:05
誤爆につき謝罪
380:デフォルトの名無しさん
10/01/31 07:42:21
around >>372
URLリンク(www.geocities.jp)
381:デフォルトの名無しさん
10/01/31 07:47:50
[1] 授業単元:プログラミング演習Ⅱ
[2] 問題文(含コード&リンク): 入出力とデータファイルへの保存とその間の処理あるプログラムを作成する
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:2010年2月4日まで
[5] その他の制限:特にありません
自分では手のつけようがなく、非常に困っています。
どなたかよろしくお願いします。
382:デフォルトの名無しさん
10/01/31 14:33:52
漠然としすぎ
383:357
10/01/31 15:40:24
ほとほと困っています。どなたか回答お願いします。
384: ◆QZaw55cn4c
10/01/31 15:41:15
[1] 自主課題:前スレ スレリンク(tech板:776番) 関連
[2] パイプ機能(prog1|prog2|prog3) を有するシェルを作成せよ。
[3.1] WindowsXP/cygwin または Linux(Vine linux 4.2)
[3.2] gcc3
[3.3] C
[4] 特になし
前スレ スレリンク(tech板:776番) を解こうとして挫折しました。
なにとぞ、お手本のプログラムを示していただきたく、お願いいたします。
私のほうでは、
まず、pipe() -> fork() ->read()/write()またはgetchar()/printf() の流れでチャイルドプロセスの鎖の間をパイプでつなごうとしましたがうまくいきません。
プログラムは
URLリンク(codepad.org) です。
#define LOWLEVEL ではパイプが頭からお尻までつながって、 read()/write() 低水準入出力てデータが渡り、最後にプロンプトが表示されます。
ところが、
/* #define LOWLEVEL */ とコメントアウトした場合、FILE stdin, stdout でデータの読み書きを行うのですが、EOF を検出できず
チャイルドプロセスがロックしてしまいます。
ヒントでもかまいませんので、この種のプログラムのやりかたをどうか教えていただきたくよろしくお願いいたします。
385:デフォルトの名無しさん
10/01/31 16:06:44
>>384
> EOF を検出できず
EOFではなく0x0Aを検出したらどうでしょ
386:デフォルトの名無しさん
10/01/31 19:35:06
URLリンク(kansai2channeler.hp.infoseek.co.jp)
どうぞ。
387:デフォルトの名無しさん
10/01/31 19:43:07
息抜きにって下さい。
自分は分からないっす
お客様に「今後の夏のセールには、必ず連絡してほしい」といわれた時
お客様に「もらいもので気に入らないので他の商品と取り替えて欲しい」といわれた時
販売員の正しい行動を。
388:デフォルトの名無しさん
10/01/31 20:49:08
上司に聞け
389:デフォルトの名無しさん
10/01/31 22:26:49
>>384
できたよ
URLリンク(kansai2channeler.hp.infoseek.co.jp)
390:384
10/01/31 23:00:10
>>389
提示されたコードを読ませていただき、私のコードがうまくいかなかった原因がわかりました。
int fd[2];
pipe(fd);
dup2(fd[0], 0);
close(fd[0]);
のあとに、
close(fd[1]);
が必要でした。
その他、いろいろと示唆にとむコードを掲示していただき、ありがとうございました。
391:デフォルトの名無しさん
10/02/01 00:47:15
すいませんが規制されてるので携帯から簡単に
問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
環境:XP、gcc、C言語
期限:今日の午前中
その他制限:なし
構造体とfwrite関数とコマンドライン引数等を使うらしいのですがよく分かりません
よろしくおねがいします
392:デフォルトの名無しさん
10/02/01 00:50:31
>>391
追加ですいません
バイナリファイルです
393:デフォルトの名無しさん
10/02/01 01:44:49
>>391
名前~年齢間のタブ数が一定ではないけどそのルールはどうなってるの?
394:デフォルトの名無しさん
10/02/01 05:48:48
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 住所録の機能を実現するプログラムを作成せよ。
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2月3日 17時まで
[5] その他の制限: 特になし
395:デフォルトの名無しさん
10/02/01 08:23:12
>>384,390
EOFの検出はfeof()でできるよ。
396:デフォルトの名無しさん
10/02/01 09:15:16
>>393
タブ数は共通して一回です
397:デフォルトの名無しさん
10/02/01 10:27:05
>>391
URLリンク(codepad.org)
これじゃダメ?
398:デフォルトの名無しさん
10/02/01 10:28:21
>>391
連投スマソ。
構造体も,fwrite() も使ってなかったorz
忘れて下さい。
399:デフォルトの名無しさん
10/02/01 10:32:02
[1] 授業単元: C++実習
[2] 問題文(含コード&リンク):
●自由にクラスを設計する
設計図を提出 : クラスのデータメンバ、メンバ関数、仕様、
使い方等を詳しく説明したドキュメント 形式自由
(ただし電子化されたものに限る)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VisualStudio2008
[3.3] 言語: C++
[4] 期限: 2010年2月7日まで
プログラム作成ではないのですが、よろしければよろしくお願いします。
400:デフォルトの名無しさん
10/02/01 11:11:23
設計図て。図まで書けと申すか。
401:デフォルトの名無しさん
10/02/01 11:32:51
規制中なので携帯から失礼します
[1] 授業単元:プログラミングI
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows vista
[3.2] コンパイラ名とバージョン:visual studio2008
[3.3] 言語:C++
[4] 期限:2010年02月5日まで
[5] その他の制限:特になし
自分では全然作れませんでした・・・
よろしくお願いします
402:デフォルトの名無しさん
10/02/01 12:47:47
配列の使い方がイヤすぎるw
403:デフォルトの名無しさん
10/02/01 12:48:02
schaffleって英語じゃないよな?何語?
404:デフォルトの名無しさん
10/02/01 12:51:07
シャッフルしてランダムな結果を返すならシャッフル関数は2つもいらない気がする
405:デフォルトの名無しさん
10/02/01 12:55:25
schaffle1(int n, int a[]) {
while(n > 1) {
int i = rand() / (RAND_MAX + 1.0) * n + 1;
int temp = a[n];
a[n--] = a[i];
a[i] = temp;
}}
schaffle2(int n, int a[]) {
int i, j, temp;
for(i=1; i<=n; i++) {
j = rand() / (RAND_MAX + 1.0) * i + 1;
temp = a[j];
a[j] = a[i];
a[i] = temp;
}}
406:デフォルトの名無しさん
10/02/01 14:48:08
[1] 授業単元:プログラミング応用演習
[2] 問題文(含コード&リンク): URLリンク(mikilab.doshisha.ac.jp)
[3] 環境
[3.1] OS: Windows
[3.2] )
[3.3] 言語:C++
[4] 期限: 2010/2/2or3
[5] その他の制限: ライブラリは使わず。問題文のリンク先のプログラム(DIRECT)を組む。
よろしくお願いします。できれば解説を付けてくださると助かります。
407:390
10/02/01 18:25:32
>>395
C 言語というより UNIX/POSIX システムコールの問題でした。
パイプを pipe() で作成した後適切に処理しなければ、パイプが閉じたことにならず、EOF が検出できずに getchar()やread() がブロックされたのでした。
これは fcntl() で NONBLOCK 属性をつけてもうまくいきませんでした。
URLリンク(codepad.org)
408:395
10/02/01 19:13:22
>>407
オレの言いたかったのはget_line()の方。
これじゃコマンドを入力するときのEOFを検出できないと言いたかったの。
409:デフォルトの名無しさん
10/02/01 19:26:11
[1] C言語演習
[2]
int x[10]={-1,2,-3,4,-5,6,-7,8,-9,10}
int y[10]={-5,-4,-3,-2,-1,1,2,3,4,5}
が与えられている。
値x[0]*y[0]+2*x[1]*y[1]+3*x[2]*y[2]+4*x[3]*y[3]+5*x[4]*y[4]+6*x[5]*y[5]
が最大/最小になるようにx,yの各要素を並べ替えたものを出力するプログラム
[3] Windows XP/Borland C++ 5.0/C言語
[4] 2/18迄
[5] 特に無し
410:デフォルトの名無しさん
10/02/01 20:27:14
>>408
拙作のgetline() のほうでしたら、fgets() が NULL を返すのをみて、一行入力の終わりがきたことを検知できます。特に問題はありません。
411:デフォルトの名無しさん
10/02/01 20:36:37
>>410
EOF入力してみた?
412:デフォルトの名無しさん
10/02/01 20:37:07
>>409
6以降はどうすんの?
413:410
10/02/01 20:41:12
>>411
わざわざ Ctrl-Dを入力しなくとも、一行の終わりは検知できていますが、何か?
414:409
10/02/01 20:43:57
すみません。誤りがありましたので訂正させて下さい。
[1] C言語演習
[2]
int x[10]={-1,2,-3,4,-5,6,-7,8,-9,10}
int y[10]={-5,-4,-3,-2,-1,1,2,3,4,5}
が与えられている。
値x[0]*y[0] - 2*x[1]*y[1]+3*x[2]*y[2]- 4*x[3]*y[3]+5*x[4]*y[4]-6*x[5]*y[5]
+7*x[6]*y[6]-8*x[7}*y[7]+9*x[8]}*y[8]-10*x[9]*x[9]
が最大/最小になるようにx,yの各要素を並べ替えたものを出力するプログラム
最大/最小になる時のx[],y[]とその値を出力すること
[3] Windows XP/Borland C++ 5.0/C言語
[4] 2/18迄
[5] 特に無し
415:デフォルトの名無しさん
10/02/01 20:51:49
>>413
入力してみ。
416:デフォルトの名無しさん
10/02/01 21:05:14
>>415
特になにもおこりません。というか fgets() で一行入力できているのですが。
どんな振る舞いが発生して、どうおかしいのか教えていただけないでしょうか?
417:デフォルトの名無しさん
10/02/01 21:21:57
>>416
> >
cannot found
がずっとでたけど。
EOFになったら綺麗に終了したほうがいいよ。
418:デフォルトの名無しさん
10/02/01 21:34:01
[1] C言語プログラミング演習(大学専門課程選択教科期末課題)
[2]URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]
[3-1] Windows Vista
[3-2] Visual C++ 2005
[3-3] C/C++どちらでも可(なるべくC言語)
[4] 2/11迄
[5]SQLがイマイチ理解できないので、指針だけでも
よろしくお願いします
419:デフォルトの名無しさん
10/02/01 21:36:53
>>417
なるほど、bash でも Ctrl-D できれいに終了しますね。
これは改良の余地がありました。アドバイスありがとうございます。
コード中のgetline() (とmain())を書き直しました。
URLリンク(codepad.org)
420:デフォルトの名無しさん
10/02/02 00:56:53
[1] 授業単元:プログラミング実践
[2] 問題文
アフィン変換のプログラムを作成し、下の図の真ん中を座標の中心にして90°回転した結果を出力せよ。
(図)affin.txt
00000
00000
11111
00000
00000
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名: gcc
[3.3] 言語:C++
[4] 期限:2010年2月4日まで
[5] その他の制限:特にありません
色々試しましたが、うまくいきませんでした。
よろしくお願いします。
421:409
10/02/02 00:59:25
すみません。
>>414の問題なんですがこちらの写し間違いみたいですので
結構です。取り敢えず今回はお願いを取り消させてください。
もういちど確かめてお願いするかもしれません。
422:418
10/02/02 14:40:57
>>418
の宿題のほう一部SQLが間違ったようですので
修正しました。まだ間違いがあるかもしれませんが。
注意事項も入れ忘れてましたので、いれました.
改めて依頼させて頂きます。
[1] C言語プログラミング演習(大学専門課程選択教科期末課題)
[2]URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]
[3-1] Windows Vista
[3-2] Visual C++ 2005
[3-3] C/C++どちらでも可(なるべくC言語)
[4] 2/11迄
[5]SQLがイマイチ理解できてないので、指針だけでも
よろしくお願いします
423:デフォルトの名無しさん
10/02/02 15:56:42
[1] 授業単元:DirectX研究
[2] 問題文(含コード&リンク):
サイコロを転がして目を決める。
・テーブルとサイコロを作成する。
・キー操作でサイコロを投げ下ろすように振る。
・落下してきて,1つの目を上にして止まる。
・何度でも遊べる
◎テーブルにサイコロの影がある
◎回転しながら落下してくる
◎自由な方向から見ることができる
◎テーブルの上でサイコロは跳ね,転がる。
◎サイコロとして正しい
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2008
[3.3] 言語:C++
[4] 期限: 2月10日まで
[5] よろしくお願いいたします。
424:デフォルトの名無しさん
10/02/02 16:51:53
>>420
どのように試したの?
>>421
素朴だが10!x10!の組み合わせ最適化問題
この手には一般論は無いだろから、奇麗なCプロ
グラム一つに纏めるという発想が頭にあると困難かと.
(いろいろ「補助手段」を開発しているうちに
別の手段で偶然、解けてしまって目的自体が大
きく喪失してしまう危険性がこの手の問題に
はつきまとう)
てか宿題としてC言語限定というのは不適当
>>422
SQLをわかる奴は少ないとオモ
425:デフォルトの名無しさん
10/02/02 16:59:09
SQL文はわかるが、プログラムに組み込めといわれると・・・
426:デフォルトの名無しさん
10/02/02 17:06:40
>>422
RDBMSには何を使うの?
コネクションを張ってSQL文を投げるのには何のライブラリ使うの?自作するの?
427:デフォルトの名無しさん
10/02/02 17:09:14
SQL文を組み込むんじゃなくて、SQLで書かれた
抽象的な処理仕様に基づいて実装しろってことじゃ?
SQL鯖とかが出てなかった昔は結構この手の奴あった
常識的にこの手の奴ではテーブル配列自体は勝手に
ソート出来なかったり項目を拡張してはならなかったり
とか色々とウルサイし、処理速度向上の為に細かい
最適化が要求されてメンドイんで俺はパス
428:デフォルトの名無しさん
10/02/02 17:15:17
>>427
そういう意味か。それは面倒だ。
429:デフォルトの名無しさん
10/02/02 17:21:16
>>427
問題文の URLリンク(kansai2channeler.hp.infoseek.co.jp)
前半: 固定項で項目の拡張無しの配列
後半:
解釈1) 題中のSQL文を与えたとして得られるであろう結果 と 同じ結果が得られるような関数を実装せよ
(→ 関数実装時 SQL構文を解釈する必要は全く無い。 同じ結果を求めるコードを直接記述してね)
解釈2) 題中のSQL文を渡して結果が得られるような 関数を実装せよ
(→ 関数実装時 SQL構文を解釈する必要が出てくる) ((題中に出てこない SQL文に関してはスルーの方向で))
こう読み取れるっぽいけど… …俺 SQL文わからんのでパス
430:デフォルトの名無しさん
10/02/02 17:40:19
>>429
どこの大学か知らんが、宿題として汎用SQLパーサーを
作れって奴出す教師も、それを真に受ける奴もちょっと
って感じ。
てか市販のRDBMSのSQLパーサーの性能は相当に
高くなってきてるけど、ちょっと大きなデータ+複雑なSQLに
なると手動で作ったCPG+CSVデータにパフォーマンスで
大敗することも多い。
酷いSQLだったり酷い構造のテーブルが多いってことも
多いけど
431:デフォルトの名無しさん
10/02/02 17:57:49
>>429
とても動きそうにないコードだけど、これは 解釈1)の方だね。
スレリンク(tech板:569番)
432:429
10/02/02 18:09:32
>>430
俺はそこらへんの事情を全く知らないんで勘弁して。
問題文の意図が分からなかったんで >>429 と…
433:デフォルトの名無しさん
10/02/02 19:50:16
あんだけgroup byがネストしてたらやる気失う。
434:429
10/02/03 00:28:45
>>431
とりあえずありがとうございます。
がprologではなくあくまでもCの宿題なので、
参考のみにさせて頂きます。
ちなみにそのスレに私は書き込んでいません。
もし誰かが転記したのをやって頂いてここに貼りなおして
下さったというのであれば結果的に相当無駄なお手数を
おかけしたことになります。
構造体をほぼSQLのまま定義しその構造体の配列にデータ
が詰め込まれた状態でlist関数が呼び出されるという前提で、
SQLが記述しているセレクト処理で得られるレコードを
そのままコンソール出力すれば良いと
同輩が言ってたのですがやっぱり皆様が御指摘の
通りめんどうなコードになるんでしょうか?
(ちなみにSQL自体が何をする処理なのか
今ひとつつかめてません。おわかりの方が
いらしゃいましたら教えて頂けると嬉しいです)
DB板というのがあるそうでそちらのほうでも
聞いてみます。
435:デフォルトの名無しさん
10/02/03 00:29:10
どなたか317を作ってもらえませんか?
私の力では手におえません。。。
436:418
10/02/03 00:30:16
レス番号のほう間違えました。
>>418=>>422=>>434でした。
437:デフォルトの名無しさん
10/02/03 00:42:08
配列 int out[3]={1,5,3};
の配列の各要素の大小関係を比べるプログラムをfor文で作りたんですけど
どうすればいいですか?
438:デフォルトの名無しさん
10/02/03 00:42:52
質問は「俺に聞け」スレで
439:デフォルトの名無しさん
10/02/03 00:49:00
>>434
>>431じゃないけどSQLは多少わかる
「テーブルSEISEKIHYOUから、
より人数が多いクラスの5科目平均点
以上の5科目成績の生徒で、より人数が
多いクラスの国語平均点の最高よりは
下の国語成績で、数学が最も成績が
高かった生徒について、その担当教師
と氏名、数学成績、国語成績を
リストする。」
440:デフォルトの名無しさん
10/02/03 00:58:45
420のものです。
ファイル読み込みまではいけたのですが、回転はさっぱりでした。
ご教授ねがいます。
441:デフォルトの名無しさん
10/02/03 01:09:31
>>440
公式を当てがうだけのつまらない問題だね
出来ないのは言語によるものじゃなくて
アフィン変換がどういうものか分かってないだけ。
442:デフォルトの名無しさん
10/02/03 01:13:22
00000
00000
11111
00000
00000
を90度
回転させると
00100
00100
00100
00100
00100
これじゃ駄目?
443:デフォルトの名無しさん
10/02/03 01:14:55
>>435
書こうと思ったけどエラー処理がめんどくさいんだよな
444:デフォルトの名無しさん
10/02/03 17:13:38
>>442
まさにその通りなんですが、それをプログラムでかくことができなかったです・・・
445:デフォルトの名無しさん
10/02/03 18:28:27
自分用のメモ
>>317
446:デフォルトの名無しさん
10/02/03 18:47:37
>>420,440,441,442,444
簡単、簡単、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
447:デフォルトの名無しさん
10/02/03 19:25:39
>>420
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(www.geocities.co.jp)
448:434
10/02/03 19:33:42
DB板で相談したところすんなりとコードを
書いて頂けました。
もちろん許可をとってないのでお見せする
わけにはいかないのですが合計250行にも
なる立派なコードでした。
449:デフォルトの名無しさん
10/02/03 19:43:01
>>446
ご回答ありがとうございます。
試してみたんですが、コンパイルはうまくいきましたが何も表示されませんでした。
何か打ち込まなくては、いけないのですか?
質問ばっかですいません。。。
450:デフォルトの名無しさん
10/02/03 19:54:22
>>448
「立派なコード」を「すんなり」ですか
451:yui ◆zuLLaJzEzk
10/02/03 20:26:20
[1] 授業単元:情報処理入門
[2] 問題文(含コード&リンク):
rep1.ppmとrep2.ppmの2つの画像を加算するプログラムを作成せよ.
プログラム中で加算したデータは,コントラスト強調を行った上で
PPM画像ファイル(h12r.ppm)として保存するようにすること.
Cのソースファイルh12r.cおよび実行することにより作成
される画像ファイルを提出すること.rep1.ppmとrep2.ppmの
サイズはいずれも横124×縦124画素である.h12r.ppmのサイズも同じとする.
rep1.ppm
URLリンク(kansai2channeler.hp.infoseek.co.jp)
rep2.ppm
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc 3.4
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
Cでおねがいします。
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
提出期限2010年2月8日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特にありません。
前回は皆さんに本当にお世話になりました。あらためてお礼を言いたいです。本当にありがとうございました。
今回が最終レポートになるのですがどうか助けていただけないでしょうか?
よろしくお願い致します。
452:デフォルトの名無しさん
10/02/03 21:15:14
>>451
#include <stdio.h>
#define W 124
#define H 124
int main(){
double d,cl = -10.0;
unsigned char data1[H*W*3],data2[H*W*3],data3[H*W*3];
char buff[128];
FILE *fin1,*fin2,*fout;
int i;
if((fin1=fopen("rep1.ppm","rb"))==NULL)goto EXIT;
if((fin2=fopen("rep2.ppm","rb"))==NULL)goto EXIT;
if((fout=fopen("h12r.ppm","wb"))==NULL)goto EXIT;
for(i=0;i<3;i++)fgets(buff,128,fin1);
for(i=0;i<3;i++)fgets(buff,126,fin2);
fread(data1,1,sizeof(data1),fin1);
fread(data2,1,sizeof(data2),fin2);
for(i=0;i<H*W*3;i++){
d=data1[i]+data2[i];
d=d+cl*(d-127.5);
if(d>255)data3[i]=255;
else if(d<0)data3[i]=0;
else data3[i]=(unsigned char)d;
}
fprintf(fout,"P6\n124 124\n255\n");
fwrite(data3,1,H*W*3,fout);
EXIT:
if(fin1)fclose(fin1);
if(fin2)fclose(fin2);
if(fout)fclose(fout);
return 0;
}
453:デフォルトの名無しさん
10/02/03 21:25:30
>>447
ひえーこの場合はこれで正解なのか
偶然だな
454:デフォルトの名無しさん
10/02/03 22:51:55
>>447
ご回答ありがとうございます。
その処理を
00000
00000
11111
00000
00000
でしたいんですが、どうしたらいいですか?
455:デフォルトの名無しさん
10/02/03 23:31:12
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):課題2-2と2-3です。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限: [2010年02月07日23:59まで]
[5] その他の制限:
よろしくお願いします。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
456:デフォルトの名無しさん
10/02/03 23:59:33
[1] 授業単元: データ演習
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C言語
[4] 期限: [2010年02月08日20:00まで]
[5] その他の制限:
努力はするも此方も断念 何方か宜しくお願い致す。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
457:447
10/02/04 01:19:54
>>454
// 入力
for(i=0; i<MAX; ++i)
for(j=0; j<MAX; ++j)
a[i][j] = (i==MAX/2)?1:0;
458:デフォルトの名無しさん
10/02/04 01:28:05
>>457
ありがとうございます。
ちゃんと表示されました。
459:デフォルトの名無しさん
10/02/04 01:35:10
[1] 授業単元:プログラミング実践
[2] 問題文
アフィン変換のプログラムを作成し、下の図の真ん中を座標の中心にして60°回転した結果を出力せよ。
(図)affin.txt
000000000
000010000
000010000
000010000
011111110
000010000
000010000
000010000
000000000
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名: gcc
[3.3] 言語:C++
[4] 期限:2010年2月5日まで
[5] その他の制限:特にありません
420のものです。
度々申し訳ありませんが、よろしくお願いします。
460:デフォルトの名無しさん
10/02/04 02:03:01
>>459
・問題文は、出題されたまま全文を書いてください。
もしそのまま出題されているとするなら糞問題です
添削スレで晒しちゃいましょう
461:デフォルトの名無しさん
10/02/04 02:29:39
良問自作テキスト:熱心な先生だ
悪問自作テキスト:着服しただろこいつ
462:447
10/02/04 02:45:18
URLリンク(kansai2channeler.hp.infoseek.co.jp)
数学なら左回転でいいのでした。
463:デフォルトの名無しさん
10/02/04 03:51:41
>459
アンチエイリアシング
464:デフォルトの名無しさん
10/02/04 05:56:57
>>460
なぜ糞問題と思ったのでしょうか、そこをひとつ。
465:デフォルトの名無しさん
10/02/04 07:29:06
[2] CIP法での1次元の移流計算
[3] 環境
[3.1] OS:Vista
[3.2] コンパイラ名:Microsoft Visual Studio 2008
[3.3] 言語:C++
自分で以下のプログラムを作ったところ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
tの値を増やすにつれてf[n][t]のnの初期のほうの値がなぜかでかい数字が出てしまいます。
自分の計算ではtの値を増やせば、f[n][t]のnの初期のほうの値は0になると思うんですが、一体どこが悪いのか、ご教授をお願いいたします。
466:デフォルトの名無しさん
10/02/04 08:26:07
>>459
これでいいのかな?
URLリンク(kansai2channeler.hp.infoseek.co.jp)
467:デフォルトの名無しさん
10/02/04 08:40:53
>>466
オレなら
if(x>=-4 && x<=4 && y>=-4 && y<=4)
mat2[i][j] = mat1[4 + x][4 + y];
こうするな
はみ出たらカット
468:447
10/02/04 12:23:47
>>462 間違い sqrt(3)/2 だった。
x = i - MAX/2;
y = j - MAX/2;
m = x/2.0 - y*SQRT3/2;
n = x*SQRT3/2 + y/2.0;
x = m + MAX/2;
y = n + MAX/2;
if(x<0 || x>=MAX) continue;
if(y<0 || y>=MAX) continue;
// 左回転
if(b[x][y]==0)
b[x][y] = a[i][j];
469:デフォルトの名無しさん
10/02/04 20:21:37
>>462
>>466
ありがとうございました。
手つかずだったので、ほんと助かりました。。
470:466
10/02/05 16:32:53
要素の計算方法が逆だったのかな?と今考えてるけど。
変換先位置から変換元の要素を求めたんだけど、
画像の変換の問題じゃないんだから、逆の方が良かったかな?
471:デフォルトの名無しさん
10/02/05 19:17:12
>>470
90度回転なら、どちらの方法でも、隙間ができない。
60度回転では、・・・
ってことがポイントになる問題だったのでは?
画像かどうかは関係ないでしょ。
472:デフォルトの名無しさん
10/02/06 15:42:11
>>455
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
どうぞ。
473:デフォルトの名無しさん
10/02/06 16:15:20
どなたか406お願い出来ないでしょうか?
474:っっ
10/02/06 16:26:33
このプログラミングの前まではうまくいっているのですが、この部分がうまくいきません。助けてくださいm(_ _)m
printf("A/Sの式\n");
for(j=1;j<=12;j++){
a[i][j]/s[j];
printf("%3.1f\n",a[i][j]);
}
475:っっ
10/02/06 16:32:18
_. - ._ _
/. --- \ l `i __
// ヽ } ´ ̄ ´ '´ う
|{ /\ ____ j /
( ヽ '.l. ___/ ヽ´ ー-=ニ.¨`7 r '
r─’ `ヽ .ゞ ' ´ '. `丶、 /
(´_ ̄ ヽ / | \ \/
‘ー⊂. \ / , l | |、 ヽ‐-,ヽ
 ̄ ̄\ \. / / ! ∧ ||ヽ__| ∨ `
\ \ / / | / ' ||'´ヽ l l. ', オワタ
\ \l ' | ,ィ´′ ∨ ハ. | Nヽ. |、 i
\ \l. | /|/ / / ', |、ヽ!
\ ヽ、. | i ∨ 三三 ハ. ! \
\. /\ | | xィ彡 ・{ l. ∧ /
/\ / }'ヽ! "´ ,、_, l |∨ ∨
/ / / \ ‘7´ ) .ノ | l
{ / ',\ 、__,. ' ,/ | /
\ / ', ヽ----r ' ´ | | ./
| ー ´ ', ', ヽ | | /
提出期限過ぎてしまった
476:デフォルトの名無しさん
10/02/06 19:00:28
>474
s/\//\/=/
477:デフォルトの名無しさん
10/02/06 20:55:03
>>406
478:デフォルトの名無しさん
10/02/06 20:56:51
>>474
a[i][j]/s[j];
の結果をどうしたいのですか?どこに保存するのですか?
479:デフォルトの名無しさん
10/02/06 23:49:03
>>475
小学校の国語から始めるべきです
C言語はその後で良いでしょう
480:デフォルトの名無しさん
10/02/07 01:25:57
[2] プログラム
環境
[3.1] OS:Linux
[3.2] コンパイラ名:gcc
[3.3] 言語:C++
以下の実行結果はどうなるか
#include<stdio.h>
#define N10
int main(){
int i,wa=0;
for(i=1;i<N;i++){
if((i%2) == 0) continue;
wa+=i;}
printf("%d\n",wa);
return 0;}
よろしくお願いします。
481:デフォルトの名無しさん
10/02/07 01:31:24
>>480
Nが未定義という類のエラーが出るでしょう
482:デフォルトの名無しさん
10/02/07 01:40:50
>>480
URLリンク(codepad.org)
483:デフォルトの名無しさん
10/02/07 03:45:18
[1] C言語プログラミング初歩(専門学校)
[2] int型の配列変数A[64][32]をB[32][64]に代入する.
次の対応があるようにすること
A[0][0] -> A[0][1] -> A[0][31] ->A[1][0] ->....->A[63][31]
B[0][0] -> B[0][1]-> B[0][31] -> B[0][32]->....->B[31][63]
(上の段と下の段が一致)
A[m][n]には値 (m+n) % 31が入っているものとする。
[3] Windows Vista /Visual studio 2008/C言語
[4] 2/15迄
[5] 1月開講です。ポインタはまだ習ってません
484:デフォルトの名無しさん
10/02/07 05:03:38
>>483
こんな感じ?
#include<stdio.h>
int main()
{
static int A[64][32], B[32][64];
int m,n;
for(m=0;m<64;m++)
for(n=0;n<32;n++)
A[m][n]=(m+n)%31;
for(m=0;m<32;m++)
for(n=0;n<64;n++)
B[m][n]=A[2*m+n/32][n%32];
return(0);
}
485:冷やかしです
10/02/07 05:41:31
return(0)はかっこ良すぎ(カッコ付け過ぎ)
return 0;で十分w
てか関数呼び出しと見間違えやすいので付けないほうが吉
486:温めます
10/02/07 09:35:40
int *a = &A[0][0], *b = &B[0][0];
for(m=0;m<32;m++)
for(n=0;n<64;n++)
*b++ = *a++;
487:前スレ639
10/02/07 11:46:40
宿題でなく質問させてもらいます。
スレリンク(tech板:652番)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
上のプログラムについて聞きたいのですが
このプログラムはfor文を2回まわしているので数列の長さをLとしたとき計算量は2LなのでO(L)と言えるのでしょうか?
それと、ソースの下の方にある ? はifの省略記法なのでしょうか?
初心者でよくわからなかったのでお教えください
488:デフォルトの名無しさん
10/02/07 12:08:15
>>487
O(n^2) 実際に適当な値入れて何回実行されるか考えたらいいと思う。
そういう捉え方もできなくもないが別物。
三項演算子とかでググったらいいと思う。
489:前スレ639
10/02/07 12:22:19
>>488
このプログラムを作ったくれた作者さんのレスを載せると
>数列のn[i]について毎回「n[i]の前後にn[i]よりも大きい数と小さい数があるか」を調べる場合、
>計算量は数列の長さをLとして O(L^2)かかる。
>一方、>>646のように、n[i]までの最大値と最小値を先に計算してしまうと計算量はO(L)で済む。
と書いてあり、
自分で考えてみてもl-1回計算するfor文が2個あるので2l-2なので、やはりO(L)といえる気もしますが・・・よくわかりません。
?は条件演算子ですね。分かりました。ありがとうございました。
490:デフォルトの名無しさん
10/02/07 12:23:36
>>487
>計算量は2LなのでO(L)と言えるのでしょうか?
YES。入れ子になってれば積になってO(L^2)だけど、
別々になっているので全体の計算量は多い方(今回は同じ)になる。
?は "c ? a : b" という三項演算子の一部。詳細はぐぐれば分かる。
基本的にはifとは別物だが、非常に限定された場面では代わりに使うこともできる。
491:488
10/02/07 12:30:26
最初の奴はよく見てなかった。
492:デフォルトの名無しさん
10/02/07 12:31:17
しかも、今度は途中送信スマン
493:前スレ639
10/02/07 12:38:12
それでは計算量は作者のとおりO(L)ということで正しいのですね?
ありがとうございます!勉強になりました!
494:デフォルトの名無しさん
10/02/07 13:14:34
【質問テンプレ】
[1] 授業単元:C言語入門
[2] 問題文:
キーボードから英文を1文字ずつ入力し母音の出現数をカウントする。その数だけアスタリスクを表示する。ただし、入力を終了するときはCtrl+Zを押すものとする。(vowel.c)
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2月8日
[5] その他の制限:特にありません。
よろしくお願いします。
495:デフォルトの名無しさん
10/02/07 14:55:13
>>494
URLリンク(kansai2channeler.hp.infoseek.co.jp)
こんな感じでしょうか。
496:デフォルトの名無しさん
10/02/07 15:55:53
>>495
ありがとうございます!
ですがコンパイル出来ませんでした;
制御構造の単元なのですが、While文などを使ってもう少し簡単にしていただくことはできるでしょうか?;
497:495
10/02/07 16:46:58
>>496
エラーメッセージを全部コピペしてもらえます?
498:デフォルトの名無しさん
10/02/07 17:18:05
>>497
vowel.c:
エラー E2140 vowel.c 31: ここでは宣言はできない(関数 countVowel )
エラー E2141 vowel.c 32: 宣言の構文エラー(関数 countVowel )
エラー E2139 vowel.c 70: 宣言に ; がない(関数 countVowel )
エラー E2134 vowel.c 70: 複合文に } がない(関数 countVowel )
*** 4 errors in Compile ***
です。
499:デフォルトの名無しさん
10/02/07 17:24:13
>>497
すみません。
こちら側のミスでエラではなく警告のみでした。
vowel.c:
警告 W8057 vowel.c 68: パラメータ 'argc' は一度も使用されない(関数 main )
警告 W8057 vowel.c 68: パラメータ 'argv' は一度も使用されない(関数 main )
500:デフォルトの名無しさん
10/02/07 17:35:10
>>499
int main (int argc, char* argv[])
を
int main ()
もしくは
int main(void)
に書き換えてみてください。
501:デフォルトの名無しさん
10/02/07 17:58:32
>>500
int main()に書き換えたらコンパイル出来ました!
for文苦手なので本当に助かりました。
ありがとうございました!!
502:デフォルトの名無しさん
10/02/07 18:16:02
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
入力された2つの文字列str1,str2を比較し、str1にstr2の文字列が含まれている場合に1を、含まれていない場合に-1を返す関数、strcmpを作成せよ。
int strcmp( char *str1, char *str2);
ex. str1=”abaabab” , str2=”aab” 1
ex. str1=”abaabab” , str2=”abb” -1
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 出来れば今日中に。急ぎで申し訳ありません。
#include<stdio.h>
#include<string.h>
#define LENGTH 10
int strcmp(char *sp1,char *sp2);
int main(){
char str1[LENGTH+1];
char str2[LENGTH+1];
printf("aとbを使って10文字入力してください。\n");
scanf("%s",str1);
printf("aとbを使って2文字入力してください。\n");
scanf("%s",str2);
printf(結果)
strcmp(&str1[0],&str2[0]);
ここまで作ったのですが(中途半端ですみません)関数に行き詰まり、ネットで調べたところ本来のstrcmpの使い方とこの課題で求められているstrcmpの使い方が異なることが分かりどうすればいいのか混乱してしまいました。
この後、関数strcmpを使い、str1とstr2を比較して・・・をどうのようにすれば良いでしょうか?
503:デフォルトの名無しさん
10/02/07 19:23:30
>>502
URLリンク(kansai2channeler.hp.infoseek.co.jp)
これでいいかな。
「strcmp」という名前で関数を定義できなかたので、別名をつけています。
> ネットで調べたところ本来のstrcmpの使い方とこの課題で求められている
> strcmpの使い方が異なることが分かりどうすればいいのか混乱してしまいました。
その通り。
標準関数のstrcmpは、二つの文字列が一致しているか判定する関数。
課題の出し方が悪いと思う。
(あるいは学生をあえて混乱させようとしているのか・・・)
504:デフォルトの名無しさん
10/02/07 19:47:32
strstrだよね
505:デフォルトの名無しさん
10/02/07 20:54:35
strstrでググったら実装がすぐ見つかっちゃうからじゃないの
strcmpと被せたのは<string.h>使わせないためとか
506:デフォルトの名無しさん
10/02/07 21:00:09
それ以前に今日中という期限設定は常識を疑いたいもの
507:デフォルトの名無しさん
10/02/07 21:02:59
#include<string.h>をはずして関数名strcmpにしてなんとか形になりました。
>>503さん、本当にありがとうございました。
またこのスレにお世話になってしまうかもしれませんが宜しくお願いします。
508:デフォルトの名無しさん
10/02/07 21:20:25
1] 授業単元:プログラミング演習
[2] 問題文:次のプログラムを改造し、定積分の面積を求めるプログラムにせよ
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:無期限
URLリンク(kansai2channeler.hp.infoseek.co.jp)
お願いします
509: ◆QZaw55cn4c
10/02/07 21:49:54
>>456
ちょっと皆さんにご意見をお聞きしたいところです。
二分木で番兵(sentinel) をおく意義がわからない、どんなsentinel をおけばいいかわからないのですが、
どうすればいいのでしょうか。
sentinel をおくことで if 文が減らなければならない、と考えているのですが。
510:デフォルトの名無しさん
10/02/07 21:50:58
URLリンク(ameblo.jp)
ここで解説出てるよ
511:デフォルトの名無しさん
10/02/07 22:02:39
>>510
真に受けた俺が悪うございました。
512:デフォルトの名無しさん
10/02/07 23:32:58
>>509
[1] 授業単元:プログラミングコミュニケーション演習
[2] 問題文:>>456の正解を皆さんに”必ず”知らせてください。
[3] 環境
[3.1] OS:2ch
[3.2] コンパイラ名とバージョン:jd等
[3.3] 言語:無制限
[4] 期限:無期限
513:デフォルトの名無しさん
10/02/08 01:34:32
>>508
単純な台形則による定積分で、関数F(X)のXY座標を、X座標の小さい順に
V[][0], v[][1] に入力と解釈するなら
#include <stdio.h>
double daikei(double xa, double ya, double xb, double yb){
return(ya+yb)*(xb-xa)/2;
}
int main(void){
int n;
int i;
double V[1000][2];
double S,D;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%lf",&V[i][0]);
scanf("%lf",&V[i][1]);
}
S=0.0;
for(i=0;i<n-1;i++)
S+=daikei(V[i][0],V[i][1],V[i+1][0],V[i+1][1]);
printf("\n面積:%f\n",S);
return 0;
}
とか?
514:デフォルトの名無しさん
10/02/08 03:11:53
>>509
NODE sentinel;
NODE *root = &sentinel;
以降、全ての NULL を &sentinel に置き換える。
(malloc の戻り値チェックの NULL はそのまま)
元々 NULL が番兵の役割を果たしていたので、簡単な変更で済む。
NULL が番兵ではないと誤認識させる糞問題でした。
515:デフォルトの名無しさん
10/02/08 04:49:23
【質問テンプレ】
[1] 授業単元:C言語
[2] 問題文:
input.ppm というPPMフォーマットのファイルを読み込み, ヘッダをつけて縦横をそれぞれ 1/2(面積にして1/4) にして出力するプログラムを書きなさい.
input.ppm のサイズは 410x307 である.
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2/8
よろしくお願いします。
516:デフォルトの名無しさん
10/02/08 07:56:54
>515
URLリンク(kansai2channeler.hp.infoseek.co.jp)
517:デフォルトの名無しさん
10/02/08 09:07:12
>>516
丁寧にありがとうございます
ですが難しくてよく分からないです
たぶんもっとシンプルで(いい加減で)良い課題なので、それを参考にもう少し頑張ります
518:デフォルトの名無しさん
10/02/08 12:09:37
>517
論理ミスしていた
diff main.c main.c.bk
75,76c75,76
< rl.x = (x == 0 ? 1 : x*2);
< rl.y = (y == 0 ? 1 : y*2);
---
> rl.x = x*2;
> rl.y = y*2;
縦横1/2の間引きだから、単純に縮小先の画素から見た縮小元の2x2の画素の平均値を新しい画素値にすればいいけど、
1/2の線形補間はになるためあまりきれいに縮小できない
以下疑似コード
x, yは、整数, imageは元画像, new_imageは縮小画像を表す
array(u, v)は、imageの縦u, 横vの値を表す
height, widthは、それぞれ元画像の縦幅と横幅を表す
for y in 0 <= y < height/2
for x in 0 <= x < width/2
new_value <- image(y*2, x*2) + image(y*2, x*2+1) + image(y*2+1, x*2) + image(y*2+1, x*2+1)
new_value <- new_value / 4
new_image(y, x) <- new_value
end
end
実際のコードでは、RGBの値をそれぞれ計算しないといけないけど
519:デフォルトの名無しさん
10/02/08 12:15:31
>518
diff恥ずかしいなぁ、寝不足はいかんね
520:デフォルトの名無しさん
10/02/08 14:01:32
>>515-517
mkr_allocate_3d_array()で行のポインタがheightを一つ越えて
初期化されてしまってますね。バグバグバグ。
521:デフォルトの名無しさん
10/02/08 17:59:07
>>513
台形規則のプログラムではなくて
画像の関数の始点Aから終点Bで囲まれた赤色の面積を求めるような
プログラムが欲しいです・・・
URLリンク(www1.axfc.net)
文章の記述不足すみません
522:デフォルトの名無しさん
10/02/08 18:02:02
台形近似でも面積を求めることに変わりはないと思うんだが・・・
523:デフォルトの名無しさん
10/02/08 18:25:02
>>521
それを求める公式の一つが台形則。
希望があるならそれを明記しないと伝わらんぞ。
524:デフォルトの名無しさん
10/02/08 18:45:13
すみません;;
教科書読んだら台刑則のプログラムで面積を求めることが出来ると書いてありました…
あとプログラムについて質問なのですが
S+=daikei(V[i][0],V[i][1],V[i+1][0],V[i+1][1]);
の部分の+=という演算子はどのような働きがあるのかと
コンパイルしたあとは始点(xa,ya)終点(xb,yb)だけを打ち込めばいいのかわかりません
そこについてもよろしくお願いします
525:デフォルトの名無しさん
10/02/08 18:50:14
a+=bはa=a+bと同義
526:デフォルトの名無しさん
10/02/08 19:43:34
>>524
(1)最初に関数F(x)上の点の数nを入力
(2)F(x)上の点(x,y)を、x座標の小さい順にn回入力。
下図を良~く見れば、そのうち分かってくるはず
URLリンク(upload.wikimedia.org)
527:デフォルトの名無しさん
10/02/08 23:35:10
>520
ありがとうございます
潜在的なバグの原因になり兼ねますね
有効なアドレスを参照しているからメモリチェッカでは検出できていませんでした
修正は簡単だけど、エレガントなコードが浮かばない
もう、ppm.c自体の完成度が低すぎて笑える、即席の使いまわしの接ぎ木
528:至急お願いします。
10/02/09 03:50:53
[1] 授業単元:C言語
[2] 問題文: ガウス分布における数値積分 I=∫f(x)dx,←xmin~xmax f(x)=1/√(2*π*σ)*exp(a) a=-(x-μ)*(x-μ)/(2*σ*σ)
積分区間は[xmin,xmax]=[myuu-2siguma,myuu+2siguma]として計算すること。なおμ=0,σ=1とした場合、I=0.95449と
なるので確認すること。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2/9 正午まで 出来ればすぐにお願いします。
529:デフォルトの名無しさん
10/02/09 03:59:06
>>528
確認しました。
で提出すりゃいいよ。
530:至急お願いします。
10/02/09 04:09:11
追記 528>>関数を使ってください。
531:至急お願いします。
10/02/09 04:10:07
529>>どういうことですか?
532:デフォルトの名無しさん
10/02/09 04:26:05
計算すること
確認すること
参考書のページ数稼ぎによくあるパターンだな
533:デフォルトの名無しさん
10/02/09 05:39:00
>>528
多少誤差があるけど
#include <stdio.h>
#include <math.h>
double f(double sigma, double mu, double x)
{
return 1/sqrt(2*M_PI*sigma) * exp(-(x-mu)*(x-mu)/(2*sigma*sigma));
}
int main(int argc, char *argv[])
{
int i, n = 10000000;
double sigma=1, mu=0;
double xmin = mu-2*sigma, xmax=mu+2*sigma;
double a = f(sigma, mu, xmin), b;
double sum = 0.0;
for(i = 0; i < n; i++){
b = f(sigma, mu, xmin+(xmax-xmin)/n*i);
sum += (a+b)*(xmax-xmin)/n/2;
a = b;
}
printf("%f\n", sum);
return 0;
}
534:デフォルトの名無しさん
10/02/09 07:18:38
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
配列に
Institute of Technology
という文字列を代入し、ポインタを利用して
・各文字が格納されているアドレス
・そのアドレスに格納されている文字
を表示するプログラムを作成せよ。
[3] 環境
[3.1] OS:windows XP
[3.2] コンパイラ名とバージョン:visual studio2008
[3.3] 言語:C
[4] 期限:[2010年2月9日まで]
[5] その他の制限:
お願いします。
535:デフォルトの名無しさん
10/02/09 07:33:03
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
まず次の内容のテキストファイルを準備せよ。
(メモ帳で作成し、test02.txtという名前で保存すること)
abc
123
def
456
ghi
789
jkl
000
次に、作成したテキストファイルから内容を読み出し、
各行の先頭に 01 02 03 というように番号を付加して
画面に出力するプログラムを作成せよ。
[3] 環境
[3.1] OS:windows XP
[3.2] コンパイラ名とバージョン:visual studio2008
[3.3] 言語:C
[4] 期限:[2010年2月10日まで]
[5] その他の制限:
536:デフォルトの名無しさん
10/02/09 09:23:35
>>534
#include <stdio.h>
int main(void)
{
char *pstr,str[30]="Institute of Technology";
pstr = str;
for(;*pstr!='\0';++pstr)
printf("%08x: %c\n",&*pstr,*pstr);
}
537:デフォルトの名無しさん
10/02/09 09:26:13
>>535
#include <stdio.h>
int main(void){
int i=0;
char text[200];
FILE *ifp;
ifp = fopen("test02.txt", "r");
if(!ifp) return 1;
while(fgets(text,200,ifp) != NULL)
printf("%02d %s", ++i, text);
fclose(ifp);
}
538:デフォルトの名無しさん
10/02/09 11:34:00
>>535
#include <stdio.h>
int main(void){
FILE *f;
f=fopen("test02.txt","r");
if(f==NULL) return 0;
fclose(f);
printf("01abc¥n02123¥n03def¥n04456¥n05ghi¥n06789¥n07jkl¥n08000¥n");
return 0;
}
センセーが期待した解答とは異なるだろうがよ
539:至急お願いします。
10/02/09 14:07:26
534>>ありがとうございます。argvの後はなんてかいてあるのですか?
540:デフォルトの名無しさん
10/02/09 14:37:13
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(codepad.org)
上のコードが正しく動かないんです・・・
input.txtとして
1
2
3
4
5
の内容を保存して実行ファイルから読み込ませる
./a input.txt
[3] 環境
[3.1] OS:ubuntu
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:[出来れば今日中で]
[5] その他の制限:
541:デフォルトの名無しさん
10/02/09 15:17:43
>>540
自分が作ったプログラムを理解出来ていないようだ。(笑)
input.txtとして↓を与える。
5
1
2
3
4
5
542:デフォルトの名無しさん
10/02/09 15:32:17
うわ、そんな安易な間違いでしたか・・・
ずっとプログラム睨んでました。
ありがとうございます。
543:デフォルトの名無しさん
10/02/09 16:07:04
バカもん。
> ずっとプログラム睨んでました。
プログラム睨んでたら普通気が付くだろ。
544:デフォルトの名無しさん
10/02/09 16:32:55
コードは鏡、自分自身が見えます。
545:デフォルトの名無しさん
10/02/09 16:36:53
自分で書いてないのがバレバレだなw
546:デフォルトの名無しさん
10/02/09 20:17:21
>>538
死ね
547:デフォルトの名無しさん
10/02/09 22:17:58
[1] 情報処理応用
[2] Fortranで,
階乗 n! を計算する関数を作成し,
順列
n個の異なるものからr個取り出して並べる。
このときの順列の総数をnPrとあらわす。
nPr=n(n-1)(n-2)・・・(n-r+1)
を計算する関数を作成し,
組み合わせ
異なるn個からr個取り出して組を作る。
このときの組合せの総数をnCrとあらわす。
nCr = nPr/r!
を計算するプログラムを作成してください
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語:fortran
[4] 期限: 明日まで。急ぎですみません。
[5] その他の制限: 特にないですが、板を間違えていたらすみません。
548:デフォルトの名無しさん
10/02/09 22:18:01
[1]C言語課題
[2] コマンドラインに与えられた文字列が単数で自然数を表しているとい
下の例ように出力されるプログラムを作れ
入力==>3
132
231
入力==>5
1304
2552
4031
入力==>10
136107
259084
480952
710631
入力==>20
13610150016
25914201711
48131918127
71218191384
11172014952
16001510631
[3] [3-1]Linux [3-2]GNU C++ [3-3]C言語
[4] 2/22日正午迄 それ以降は不可
[5]stdio.h string.h stdlib.hを使用可能
549:デフォルトの名無しさん
10/02/09 22:39:57
[1] 授業単元:プログラミング 1
[2] 問題文(含コード&リンク):
球の体積をもとめよ。またこの問題は間違っているのでそれを書き換えよ
#include<stdio.h>
int main(void)
{
double r,v;
printf("直径を入力して下さい\n");
scanf("%1f",&r);
v=4.0/3.0*3.14159*(r/2.0)*(r/2.0)*(r/2.0);
printf("直径%fの球の体積は%fです。\n",r, v);
}
[3] 環境
[3.1] OS:windows vista
[3.2] コンパイラ名とバージョン:visual studio2008
[3.3] 言語:C
[4] 期限:[2010年2月10日まで]
[5] その他の制限:
550:デフォルトの名無しさん
10/02/09 22:40:50
>>547
とりあえずスレタイをn!回声に出して読んでみようか
551:デフォルトの名無しさん
10/02/09 22:47:32
[1] 授業単元:プログラミング 1
[2] 問題文(含コード&リンク):
二つの数列の和を表示したい。またこの問題は間違っているのでそれを書き換えよ
#include<stdio.h>
main()
{
int suretu1[]={2,4,6,8,10,12,14,16,18,20};
int suretu2[]={1,2,4,8,16,32,64,128,258,512};
int kotae;
int count;
for (count = 0; count <=10; count++ )
printf("%d,", suretu1[count]+suretu2[count]);
{
suretu1[count] = 2 * count +2;
suretu2[count] = count* count;
kotae= suretu1[count] + suretu2[count];
printf("二つのの整列の和によってできる数列は,\n");
printf("%d\t",kotae);
}
}
[3] 環境
[3.1] OS:windows vista
[3.2] コンパイラ名とバージョン:visual studio2008
[3.3] 言語:C
[4] 期限:[2010年2月10日まで]
[5] その他の制限:
552:デフォルトの名無しさん
10/02/09 23:00:56
[1] プログラミング基礎
[2] URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限:2月10日 18時まで
[5] その他の制限: 説明は詳しく書いてくれるととてもありがたいです。
現在とても困っています。皆さんよろしくお願いします。
553:デフォルトの名無しさん
10/02/09 23:15:56
>>548
入力==>15
136101511
259141127
481311384
712114952
111510631
入力==>11
1361011
2590007
4800084
7000952
1110631
入力==>9
13607
25984
48952
70631
入力==>8
1367
2584
4852
7631
入力==>6
1364
2552
4631
入力==>4
134
202
431
554:デフォルトの名無しさん
10/02/09 23:19:47
[1] 授業単元:プログラミング 1
[2] 問題文(含コード&リンク):
/*************************
ある二つの文字列str1,str2 の編集距離はつぎの3つの操作を行うことによりstr1 をstr2 に変換するのに要する操作の最低回数である
・ 1文字挿入する
・ 1文字削除する
・ 1文字を他の1文字に置き換える
たとえば str1="sport" はstr2="sort" に, 文字 'p' を削除することによりstr2 に変換できるため編集距離は 1 である
str_n を文字列str の頭からn 番目までの部分列としm(i,j)をstr i とstr j の編集距離を表すものとする.m(i,j)とm(i+1,j),m(i,j+1),m(i+1,j+1)の間に成り立つ再帰式を記述しなさい
この再帰式に基づき効率良く編集距離を計算するプログラムを2次元配列を利用して作成しなさい.ただし,関数m(i,j)はint型の編集距離を返り値とする.
******************************/
[3] 環境
[3.1] OS:windows vista
[3.2] コンパイラ名とバージョン:visual studio2008
[3.3] 言語:C
[4] 期限:[2010年2月10日まで]
[5] その他の制限:
555:デフォルトの名無しさん
10/02/09 23:20:08
[1]C言語とプログラミング
[2] キーボードから3つの整数を受け取り大きさの小さい順に出力するプログラムを作りなさい。
但しmain関数内ではint変数一つだけが使えるものとします。またmain関数の再帰呼び出しも
出来ません。(main関数の引数、argc,argvをint変数として使用することも勿論禁止します)
main関数のみで構成されるプログラムとして下さい。
入力される数は1から10までの範囲にあることを常にチェックし、それ以外の入力の場合は
再入力を促して下さい。
[3]
[3-1]Windows XP HomeEdition
[3-2]Visual Studio 2008
[3-3]C言語
[4] 2/11迄
[5] 特に無し
556:デフォルトの名無しさん
10/02/09 23:28:36
まぁどれも期日まで時間があるからゆっくりやるべきだ
最近の学生は甘え過ぎ
粘って苦しめてやれというのはウソにせよ
期日ぎりぎりに催促されたら貼ってやる
って感じで
557:デフォルトの名無しさん
10/02/09 23:30:40
>>549
scanf("%1f",&r); の %1f を %lf に修正。※lは小文字のL
main関数が値を返して無いので、最後に return 0; 等を追加。
558:デフォルトの名無しさん
10/02/09 23:32:55
>>556
余計なこと書くなよw
日付変えてくるだろうが
559:デフォルトの名無しさん
10/02/09 23:45:48
>>551
問題の題意がイマイチよく分からんので、適当に解釈
#include<stdio.h>
main()
{
int suretu1[]={2,4,6,8,10,12,14,16,18,20};
int suretu2[]={1,2,4,8,16,32,64,128,258,512};
int kotae=0;
int count;
printf("二つの整列の和によってできる数列は\n");
for (count = 0; count <10; count++ )
{
printf("%d ", suretu1[count]+suretu2[count]);
kotae += suretu1[count] + suretu2[count];
}
printf("\n数列の和は %d\n",kotae);
return 0;
}
560:デフォルトの名無しさん
10/02/09 23:47:16
>>535
#include <stdio.h>
#include <string.h>
int main(void){
#define CONTENTS "01abc¥n02123¥n03def¥n04456¥n05ghi¥n06789¥n07jkl¥n08000¥n"
FILE *f;
int i=0;
char Fgets[256],Strcat[256],Sprintf[256];
f=fopen("test02.txt","r");
if(f==NULL) return 0;
Strcat[0]=0;
for(;;){
if(NULL==fgets(Fgets,256,f))break;
sprintf(Sprintf,"%02d%s",++i,Fgets);
strcat(Strcat,Sprintf);
}
fclose(f);
if(0==strcmp(Strcat,CONTENTS))printf("%s",CONTENTS);
return 0;
}
561:デフォルトの名無しさん
10/02/10 00:01:18
>>552
1.Swapの引数が値渡しなので、Swap関数内で値を変更しても
関数呼び出し元の変数には影響を与えないから。
2.Swap関数内のbuf変数がポインタで定義されていて、その初期化されていないポインタの
示す先を一時保存場所として使用している為、正しく値が交換されない。
3.
void Swap(int *p1, int *p2)
{
int buf;
buf = *p1;
*p1 = *p2;
*p2 = buf;
}
562:デフォルトの名無しさん
10/02/10 00:39:59
>>561
素早い回答ありがとうございます。助かりました。
563:デフォルトの名無しさん
10/02/10 00:57:05
[1] 授業単元: DirectX研究2
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows vista)
[3.2] コンパイラ名とバージョン:visual stdio 2008
[3.3] 言語: C++
[4] 期限: ([2010年2月10日17:00まで]
[5] その他の制限:
564:デフォルトの名無しさん
10/02/10 01:26:05
>>547
スレ違いだけどFortran77で
URLリンク(kansai2channeler.hp.infoseek.co.jp)
565:564
10/02/10 02:17:10
スレ違いのまま失礼… 訂正版
URLリンク(kansai2channeler.hp.infoseek.co.jp)
566:デフォルトの名無しさん
10/02/10 02:19:37
>>548
思ったより難しかった
567:566
10/02/10 02:38:49
入力==>200
1361015212836455566789110512013615317119000000000191
2591420273544546577901041191351521701890000000192172
4813192634435364768910311813415116918800000193173154
7121825334252637588102117133150168187000194174155137
1117243241516274871011161321491671860195175156138121
1623314050617386100115131148166185196176157139122106
2230394960728599114130147165184019717715814012310792
2938485971849811312914616418301981781591411241089379
3747587083971121281451631820199179160142125109948067
4657698296111127144162181020018016114312611095816856
5668819511012614316118020001811621441271119682695746
6780941091251421601791990182163145128112978370584737
7993108124141159178198018316414612911398847159483829
9210712314015817719701841651471301149985726049393022
1061221391571761961851661481311151008673615040312316
1211381561751950186167149132116101877462514132241711
1371551741940001871681501331171028875635242332518127
1541731930000018816915113411810389766453433426191384
1721920000000189170152135119104907765544435272014952
1910000000019017115313612010591786655453628211510631
568:デフォルトの名無しさん
10/02/10 02:42:04
[1]数値計算演習
[2] 極座標で表される曲線 r(t)=sin^2(πt) θ(t)=α sin(πt^2) (0<=t<=1)でαを指定した時
の曲線の長さと囲む面積の近似値を求め、π/4<=α<=πまで変化させる時、
面積/曲線の長さが最大になるαを推定する
曲線上の代表点をとり隣接する点の間の距離の和で曲線の長さを近似。
面積は隣接する代表点と原点が作る三角形の面積の和で近似する。
[3]
[3-1] Mac-OS-X panther
[3-2] XCode
[3-3] C/C++どちらでも可能
[4] 2/18迄
[5] 特に無し
569:デフォルトの名無しさん
10/02/10 02:50:49
>>555
ビット演算の問題と解釈
URLリンク(kansai2channeler.hp.infoseek.co.jp)
570:デフォルトの名無しさん
10/02/10 03:48:14
>>555
タイプミスに苦闘したが5分で打ち込めた
URLリンク(kansai2channeler.hp.infoseek.co.jp)
571:デフォルトの名無しさん
10/02/10 04:05:07
>>568
答えがπになってしまった。間違ってたらごめんね
URLリンク(kansai2channeler.hp.infoseek.co.jp)
572:デフォルトの名無しさん
10/02/10 05:31:38
>>555
好奇心で書いてみた
めちゃ読みづらいけど勘弁
URLリンク(testhp.ddo.jp)
573:デフォルトの名無しさん
10/02/10 07:39:07
>>555
入力数を何でも対応できるように
むりやりキャストしてポインター使ってみた
URLリンク(codepad.org)
574:デフォルトの名無しさん
10/02/10 07:47:33
大きい順と小さい順を勘違いしてた
URLリンク(codepad.org)
575:デフォルトの名無しさん
10/02/10 08:53:50
おまえら必死だな
576:553
10/02/10 09:05:02
>>575
入力==>200
13610152128364555667891105120136153171190
259142027354454657790104119135152170189
48131926344353647689103118134151169188
7121825334252637588102117133150168187
111724324151627487101116132149167186
1623314050617386100115131148166185
2230394960728599114130147165184
29384859718498113129146164183
374758708397112128145163182
4657698296111127144162181
56688195110126143161180200
678094109125142160179199
7993108124141159178198
92107123140158177197
106122139157176196
121138156175195
137155174194
154173193
172192
191
1)文字列を繋いで、1~nまでの三角形を作る(上の図参照)
2)それを1文字ずつに分解して、上下反転、左右反転する
3)1と2で出来た物を左右に並べて、隙間がなくなるまで近づける
4)空いた隙間には0を詰める
577:デフォルトの名無しさん
10/02/10 09:10:09
>>575
問題が魅力的だったからみんなやったんだろうな
578:デフォルトの名無しさん
10/02/10 10:38:11
>>576
数値自身は左右反転じゃないぞ
579:553
10/02/10 12:56:23
#define MAXL 100
main(){
int num, i, j, k, len, maxlen;
char wrk[4], mat1[MAXL][MAXL*2], mat2[MAXL][MAXL*2], tmp[MAXL];
printf("入力==>"); scanf("%d", &num);
for(i=0;i<MAXL;i++) mat1[i][0] = mat2[i][0] = (char)0;
i=1, j=0, k=0;
while(i<=num){
if(k<0) {
k = ++j;
if(j >= MAXL) {puts("ERR"); return 1;} // てきとう
}
sprintf(wrk, "%d", i++);
strcat(mat1[k--], wrk); /* LEFT */
strcpy(tmp, mat2[k+1]); /* RIGHT */
sprintf(mat2[k+1], "%d", i-1);
strcat(mat2[k+1], tmp);
}
maxlen = k = 0;
for(i=0;i<=j;i++){
len = strlen(mat1[i]) + strlen(mat2[j-i]);
if(len > maxlen) maxlen = len, k=i;
}
for(i=0;i<=j;i++){
len = strlen(mat1[i]) + strlen(mat2[j-i]);
for(k=maxlen-len-1;k>=0;k--)
strcat(mat1[i], "0"); // めんどう
strcat(mat1[i], mat2[j-i]);
}
for(i=0;i<=j;i++) puts(mat1[i]);
}
580:デフォルトの名無しさん
10/02/10 13:00:22
>>548
URLリンク(codepad.org)
581:デフォルトの名無しさん
10/02/10 13:12:52
>>548
デバッグ用のprintfがあるので見づらいが、>>580では
1) 上半分の三角形(>>576のような)の各行の長さを求める
2) 出力される配列の長さを決める( (i行目の長さ + (h-1-i)行目の長さ)の最大値 )
3) 出力
という流れ。三角形の(i,j)の位置のにある数字は簡単に計算できるので
メモリには各行の長さだけ記憶すれば十分。
582:デフォルトの名無しさん
10/02/10 13:13:57
[1] 授業単元:なし
[2] 問題文(含コード&リンク):MSPAINTの色の選択(カラーダイヤログ)を表示して、選択した色(RGB)を文字列として取得する秀丸用のDLLを作成してください
[3] 環境
[3.1] OS:Windows XP or Vista
[3.2] コンパイラ名とバージョン: なんでも
[3.3] 言語: CかC++どちらでも可
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: とくになし
DLLの使用などはこちらを参照してください
URLリンク(homepage3.nifty.com)
583:デフォルトの名無しさん
10/02/10 13:19:45
>>582
それ、宿題じゃねーだろ。
584:570
10/02/10 13:32:22
>>555
URLリンク(kansai2channeler.hp.infoseek.co.jp)
多くの部分に間違いがあった。
さすがに700行/分の入力ではミスが起こるわなw
585:570
10/02/10 13:46:27
スマン
まだ一カ所ミスが...
入力チェックをミスってる
#define INPUT()で
でwhileロジックを
while ( (m<1)||(m>10) )
に修正して
586:デフォルトの名無しさん
10/02/10 13:51:16
>>336
課題4と課題5どなたかよろしくお願いします。期日すぎても提出できるので、なんとかならないか必死です。
587:デフォルトの名無しさん
10/02/10 17:24:00
>>586
5番のグラフって何グラフ?
588:デフォルトの名無しさん
10/02/10 17:40:46
入力データの例
1.2 3.7
2.1 4.2
2.9 1.3
4.0 2.5
x,y軸を-や+で表現して、それぞれ座標の点(4つ)を*でプロットする感じです。
589:555
10/02/10 19:03:12
>>572
>>573
>>570
どうもありがとうございました。
>>570さんのコードは非常にわかりやすいです。
3600行を5分で入力とは凄いですね。
タッチタイピング速度はどの位でそれくらいに
なるんでしょうか?自分は1分間に賞味150文字が
精一杯です。(IME変換時間を含む)
他の皆様もいろいろと工夫をされておられ特にビット
操作とかポインタ操作とか裏技的な技法は非常に参考
になると思います。
590:デフォルトの名無しさん
10/02/10 20:45:14
>>570
ひらいてみた。ちょwwww
591:デフォルトの名無しさん
10/02/10 20:52:14
世間では一昔前はコード1行1万が
相場だった時代もあったね。
>>570のコードだといくらになるんだかw
**確認事項**
ここで答えてやっても事後を含め
一切依頼者に報酬を請求出来ない
592:デフォルトの名無しさん
10/02/10 20:54:41
>>591
ここで答えるようなのって単体じゃどうせ金にならなくないか?
593:デフォルトの名無しさん
10/02/10 20:55:23
>>570
>>584
クソワロタ
594:デフォルトの名無しさん
10/02/10 21:15:31
ここで解かれている問題とその回答を
応用してもいいけど事後問題になる可
能性もあるんで(2ちゃんねるから
引用ってw格式ある組織ではそれだけ
で処分対象w)
595:570
10/02/10 22:38:17
>>555
いえいえ。
タッチタイピングの上達のコツは
このスレの他の回答者に聞いてくれ
企業秘密なんで。
この業界では毎分400文字~500文字
(IME入力変換時間を含む)の入力が
生き残りの最低条件なんでw
今回は実にのんびりしたテンポで入力
したよ。
>>590
>>593
何かおもしろいところあるのかい?
596:デフォルトの名無しさん
10/02/10 22:50:17
いやここまで冗長なプログラムは初めて見たもんで
一行いくらならこういう方法でガツガツ稼げるなw
597:デフォルトの名無しさん
10/02/10 23:16:03
冗長?
見た目だろ。
ロジックそのものはこれほど直接的なものはない
コードは常に短く書けばいいというもんでもないと
目から鱗が落ちたような気分
コードを(最初から)短く書くのが偉いとかそういう
奇妙な信仰はかなり弊害もあるんじゃないかと
もっとも一つのint変数しか使えない状況での
プログラミングもかなりナンセンスだと思うが
598:デフォルトの名無しさん
10/02/10 23:16:59
回路に例えるとワイヤードロジックな
普通のプログラムがマイクロプログラムに例える事が出来るかも
599:デフォルトの名無しさん
10/02/10 23:21:30
>>555って__asmでスタックとレジスタ使えばint変数一つでも楽勝なんじゃないのw
600:デフォルトの名無しさん
10/02/11 02:07:11
>>555
逃避したくなったので書いてみた。
URLリンク(codepad.org)
601:デフォルトの名無しさん
10/02/11 11:03:25
勉強になるなぁ。hhdかー。
602:デフォルトの名無しさん
10/02/11 13:05:19
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
#include <stdio.h>
int main(void){
int a=0,k;
for (k=0;k<100;k++){a++;
if(a%5==0&&a%9==0)printf("A\n");
else if(a%5==0)printf("B\n");
else if(a%9==0)printf("C\n");
else printf("%d\n",a);
}return 0;}
この処理のプログラムをスペース、改行を含み140字以内で書き直したい。
[3] 環境
[3.1] OS:Windows XP Pro
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語:C
[4] 期限:
[5] その他の制限:特になし
よろしくお願いします。
603:デフォルトの名無しさん
10/02/11 13:29:10
>>602
#include <stdio.h>
int main(){
int k;
for (k=1;k<=100;k++){
printf(k%5==0&&k%9==0?"A\n":k%5==0?"B\n":k%9==0?"C\n":"%d\n",k);
}}
604: ◆/91kCCQXBo
10/02/11 13:54:38
#include <stdio.h>
int main(void){
int a;
for(a=1;a<=100;a++)
printf(a%45?a%5?a%9?"%d\n":"C\n":"B\n":"A\n",a);
return 0;
}
605:デフォルトの名無しさん
10/02/11 14:04:38
>>602
変な問題ですが無理なのでは166byte
606:デフォルトの名無しさん
10/02/11 14:05:22
602です。
<<603
<<604
の方ありがとうございます。 助かりました。
607:605
10/02/11 14:05:28
失礼3項演算子があったのね
608:デフォルトの名無しさん
10/02/11 14:11:20
>>555
きっと反則技なんだろうけど。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
609:デフォルトの名無しさん
10/02/11 21:34:45
>>602 code golfするの?
a;main(){for(;++a<101;)printf(a%45?a%5?a%9?"%d\n":"C\n":"B\n":"A\n",a);}
610:デフォルトの名無しさん
10/02/11 22:11:13
>>555
int a;
scanf("%ld %ld %ld%*c", (long *)&a, (long *)&argc, (long *)&argv);
じゃだめか
Windows XP HomeEditionって64bitないよね
611:デフォルトの名無しさん
10/02/11 22:54:33
>>610
たった3行の制約条件を見逃すようじゃ、お前マの適性ない。
転職を勧める。
612:デフォルトの名無しさん
10/02/12 01:00:07
>>555
もう需要ないかと思うが、面白そうなのでやってみた。
バブルソートのありがたみを出すため、かつ、4bit余ったため、入力する値を4つに勝手に変更。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
613:デフォルトの名無しさん
10/02/12 01:03:56
>>612
1~10だよ。