[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 08/02 19:37 / Filesize : 264 KB / Number-of Response : 786
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2010/01/18(月) 23:25:55 BE:265079647-S★(508111)]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

前スレ
C/C++の宿題片付けます 133代目
pc12.2ch.net/test/read.cgi/tech/1260532772/

496 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:55:53 ]
>>495
ありがとうございます!
ですがコンパイル出来ませんでした;
制御構造の単元なのですが、While文などを使ってもう少し簡単にしていただくことはできるでしょうか?;

497 名前:495 mailto:sage [2010/02/07(日) 16:46:58 ]
>>496
エラーメッセージを全部コピペしてもらえます?

498 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 17:24:13 ]
>>497
すみません。
こちら側のミスでエラではなく警告のみでした。
vowel.c:
警告 W8057 vowel.c 68: パラメータ 'argc' は一度も使用されない(関数 main )
警告 W8057 vowel.c 68: パラメータ 'argv' は一度も使用されない(関数 main )

500 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 17:35:10 ]
>>499
int main (int argc, char* argv[])



int main ()

もしくは

int main(void)

に書き換えてみてください。

501 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 17:58:32 ]
>>500
int main()に書き換えたらコンパイル出来ました!
for文苦手なので本当に助かりました。
ありがとうございました!!

502 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:23:30 ]
>>502
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10500.c
これでいいかな。
「strcmp」という名前で関数を定義できなかたので、別名をつけています。

> ネットで調べたところ本来のstrcmpの使い方とこの課題で求められている
> strcmpの使い方が異なることが分かりどうすればいいのか混乱してしまいました。

その通り。
標準関数のstrcmpは、二つの文字列が一致しているか判定する関数。
課題の出し方が悪いと思う。
(あるいは学生をあえて混乱させようとしているのか・・・)

504 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:47:32 ]
strstrだよね



505 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 20:54:35 ]
strstrでググったら実装がすぐ見つかっちゃうからじゃないの
strcmpと被せたのは<string.h>使わせないためとか

506 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:00:09 ]
それ以前に今日中という期限設定は常識を疑いたいもの

507 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:02:59 ]
#include<string.h>をはずして関数名strcmpにしてなんとか形になりました。
>>503さん、本当にありがとうございました。
またこのスレにお世話になってしまうかもしれませんが宜しくお願いします。

508 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:20:25 ]
1] 授業単元:プログラミング演習
[2] 問題文:次のプログラムを改造し、定積分の面積を求めるプログラムにせよ
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:無期限
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10501.txt

お願いします

509 名前: ◆QZaw55cn4c mailto:sage [2010/02/07(日) 21:49:54 ]
>>456
ちょっと皆さんにご意見をお聞きしたいところです。
二分木で番兵(sentinel) をおく意義がわからない、どんなsentinel をおけばいいかわからないのですが、
どうすればいいのでしょうか。
sentinel をおくことで if 文が減らなければならない、と考えているのですが。

510 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:50:58 ]
ameblo.jp/ruhuraro/image-10357111023-10267569832.html
ここで解説出てるよ

511 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 22:02:39 ]
>>510
真に受けた俺が悪うございました。

512 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 23:32:58 ]
>>509
[1] 授業単元:プログラミングコミュニケーション演習
[2] 問題文:>>456の正解を皆さんに”必ず”知らせてください。
[3] 環境
 [3.1] OS:2ch
 [3.2] コンパイラ名とバージョン:jd等
 [3.3] 言語:無制限
[4] 期限:無期限

513 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 03:11:53 ]
>>509
NODE sentinel;
NODE *root = &sentinel;
以降、全ての NULL を &sentinel に置き換える。
(malloc の戻り値チェックの NULL はそのまま)

元々 NULL が番兵の役割を果たしていたので、簡単な変更で済む。
NULL が番兵ではないと誤認識させる糞問題でした。




515 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 07:56:54 ]
>515
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10502.zip

517 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 09:07:12 ]
>>516
丁寧にありがとうございます
ですが難しくてよく分からないです
たぶんもっとシンプルで(いい加減で)良い課題なので、それを参考にもう少し頑張ります

518 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 12:15:31 ]
>518
diff恥ずかしいなぁ、寝不足はいかんね

520 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 14:01:32 ]
>>515-517
mkr_allocate_3d_array()で行のポインタがheightを一つ越えて
初期化されてしまってますね。バグバグバグ。

521 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 17:59:07 ]
>>513
台形規則のプログラムではなくて
画像の関数の始点Aから終点Bで囲まれた赤色の面積を求めるような
プログラムが欲しいです・・・
www1.axfc.net/uploader/Sc/so/80859

文章の記述不足すみません

522 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:02:02 ]
台形近似でも面積を求めることに変わりはないと思うんだが・・・

523 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:25:02 ]
>>521
それを求める公式の一つが台形則。
希望があるならそれを明記しないと伝わらんぞ。

524 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:50:14 ]
a+=bはa=a+bと同義

526 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 19:43:34 ]
>>524
(1)最初に関数F(x)上の点の数nを入力
(2)F(x)上の点(x,y)を、x座標の小さい順にn回入力。

下図を良〜く見れば、そのうち分かってくるはず
upload.wikimedia.org/wikipedia/commons/thumb/4/42/Composite_trapezoidal_rule_illustration.png/180px-Composite_trapezoidal_rule_illustration.png

527 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 23:35:10 ]
>520
ありがとうございます
潜在的なバグの原因になり兼ねますね

有効なアドレスを参照しているからメモリチェッカでは検出できていませんでした
修正は簡単だけど、エレガントなコードが浮かばない
もう、ppm.c自体の完成度が低すぎて笑える、即席の使いまわしの接ぎ木

528 名前:至急お願いします。 [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 03:59:06 ]
>>528
確認しました。

で提出すりゃいいよ。

530 名前:至急お願いします。 [2010/02/09(火) 04:09:11 ]
追記 528>>関数を使ってください。

531 名前:至急お願いします。 [2010/02/09(火) 04:10:07 ]
529>>どういうことですか?


532 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 04:26:05 ]
計算すること
確認すること

参考書のページ数稼ぎによくあるパターンだな

533 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん [2010/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 名前:デフォルトの名無しさん [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:至急お願いします。 [2010/02/09(火) 14:07:26 ]
534>>ありがとうございます。argvの後はなんてかいてあるのですか?

540 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 14:37:13 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
codepad.org/9ra3PWuv
上のコードが正しく動かないんです・・・
input.txtとして
1
2
3
4
5
の内容を保存して実行ファイルから読み込ませる
./a input.txt
[3] 環境
 [3.1] OS:ubuntu
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:[出来れば今日中で]
[5] その他の制限:

541 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 15:17:43 ]
>>540
自分が作ったプログラムを理解出来ていないようだ。(笑)
input.txtとして↓を与える。
5
1
2
3
4
5

542 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 15:32:17 ]
うわ、そんな安易な間違いでしたか・・・
ずっとプログラム睨んでました。
ありがとうございます。

543 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 16:07:04 ]
バカもん。
> ずっとプログラム睨んでました。

プログラム睨んでたら普通気が付くだろ。

544 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 16:32:55 ]
コードは鏡、自分自身が見えます。



545 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 16:36:53 ]
自分で書いてないのがバレバレだなw

546 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 20:17:21 ]
>>538
死ね

547 名前:デフォルトの名無しさん [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 22:40:50 ]
>>547
とりあえずスレタイをn!回声に出して読んでみようか

551 名前:デフォルトの名無しさん [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:00:56 ]
[1] プログラミング基礎
[2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10503.txt
[3] 環境
 [3.1] OS:Unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限:2月10日 18時まで
[5] その他の制限: 説明は詳しく書いてくれるととてもありがたいです。

現在とても困っています。皆さんよろしくお願いします。

553 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:28:36 ]
まぁどれも期日まで時間があるからゆっくりやるべきだ
最近の学生は甘え過ぎ
粘って苦しめてやれというのはウソにせよ
期日ぎりぎりに催促されたら貼ってやる
って感じで

557 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:30:40 ]
>>549
scanf("%1f",&r); の %1f を %lf に修正。※lは小文字のL
main関数が値を返して無いので、最後に return 0; 等を追加。

558 名前:デフォルトの名無しさん [2010/02/09(火) 23:32:55 ]
>>556
余計なこと書くなよw
日付変えてくるだろうが

559 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:39:59 ]
>>561
素早い回答ありがとうございます。助かりました。


563 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:57:05 ]
[1] 授業単元: DirectX研究2
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10504.txt
[3] 環境
 [3.1] OS: (Windows vista)
 [3.2] コンパイラ名とバージョン:visual stdio 2008
 [3.3] 言語: C++
[4] 期限: ([2010年2月10日17:00まで]
[5] その他の制限:

564 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 01:26:05 ]
>>547
スレ違いだけどFortran77で
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10505.txt



565 名前:564 mailto:sage [2010/02/10(水) 02:17:10 ]
スレ違いのまま失礼… 訂正版
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10506.txt


566 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 02:19:37 ]
>>548
思ったより難しかった

567 名前:566 mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 02:50:49 ]
>>555
ビット演算の問題と解釈
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10507.txt

570 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 03:48:14 ]
>>555
タイプミスに苦闘したが5分で打ち込めた
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10509.zip

571 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 04:05:07 ]
>>568
答えがπになってしまった。間違ってたらごめんね
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10510.txt

572 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 05:31:38 ]
>>555
好奇心で書いてみた
めちゃ読みづらいけど勘弁
testhp.ddo.jp/prog.c

573 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 07:39:07 ]
>>555
入力数を何でも対応できるように
むりやりキャストしてポインター使ってみた
codepad.org/xjtWz8N3

574 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 07:47:33 ]
大きい順と小さい順を勘違いしてた
codepad.org/Z5aQHsCW



575 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 08:53:50 ]
おまえら必死だな

576 名前:553 mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 09:10:09 ]
>>575
問題が魅力的だったからみんなやったんだろうな

578 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 10:38:11 ]
>>576
数値自身は左右反転じゃないぞ

579 名前:553 mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 13:00:22 ]
>>548
codepad.org/nCjDliKG

581 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 13:12:52 ]
>>548
デバッグ用のprintfがあるので見づらいが、>>580では
 1) 上半分の三角形(>>576のような)の各行の長さを求める
 2) 出力される配列の長さを決める( (i行目の長さ + (h-1-i)行目の長さ)の最大値 )
 3) 出力
という流れ。三角形の(i,j)の位置のにある数字は簡単に計算できるので
メモリには各行の長さだけ記憶すれば十分。

582 名前:デフォルトの名無しさん [2010/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の使用などはこちらを参照してください
ttp://homepage3.nifty.com/kons/hidemaru/helpsite/hidemac/html/200_Dll.html

583 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 13:19:45 ]
>>582
それ、宿題じゃねーだろ。

584 名前:570 mailto:sage [2010/02/10(水) 13:32:22 ]
>>555
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10512.zip
多くの部分に間違いがあった。
さすがに700行/分の入力ではミスが起こるわなw



585 名前:570 mailto:sage [2010/02/10(水) 13:46:27 ]
スマン
まだ一カ所ミスが...
入力チェックをミスってる
#define INPUT()で
でwhileロジックを
while ( (m<1)||(m>10) )
に修正して

586 名前:デフォルトの名無しさん [2010/02/10(水) 13:51:16 ]
>>336
課題4と課題5どなたかよろしくお願いします。期日すぎても提出できるので、なんとかならないか必死です。

587 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 17:24:00 ]
>>586
5番のグラフって何グラフ?

588 名前:デフォルトの名無しさん [2010/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 mailto:sage [2010/02/10(水) 19:03:12 ]
>>572
>>573
>>570
どうもありがとうございました。
>>570さんのコードは非常にわかりやすいです。
3600行を5分で入力とは凄いですね。
タッチタイピング速度はどの位でそれくらいに
なるんでしょうか?自分は1分間に賞味150文字が
精一杯です。(IME変換時間を含む)
他の皆様もいろいろと工夫をされておられ特にビット
操作とかポインタ操作とか裏技的な技法は非常に参考
になると思います。

590 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:45:14 ]
>>570
ひらいてみた。ちょwwww

591 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:52:14 ]
世間では一昔前はコード1行1万が
相場だった時代もあったね。
>>570のコードだといくらになるんだかw

**確認事項**
ここで答えてやっても事後を含め
一切依頼者に報酬を請求出来ない

592 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:54:41 ]
>>591
ここで答えるようなのって単体じゃどうせ金にならなくないか?

593 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:55:23 ]
>>570
>>584
クソワロタ

594 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:15:31 ]
ここで解かれている問題とその回答を
応用してもいいけど事後問題になる可
能性もあるんで(2ちゃんねるから
引用ってw格式ある組織ではそれだけ
で処分対象w)



595 名前:570 mailto:sage [2010/02/10(水) 22:38:17 ]
>>555
いえいえ。
タッチタイピングの上達のコツは
このスレの他の回答者に聞いてくれ
企業秘密なんで。
この業界では毎分400文字〜500文字
(IME入力変換時間を含む)の入力が
生き残りの最低条件なんでw
今回は実にのんびりしたテンポで入力
したよ。

>>590
>>593
何かおもしろいところあるのかい?

596 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:50:17 ]
いやここまで冗長なプログラムは初めて見たもんで
一行いくらならこういう方法でガツガツ稼げるなw






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<264KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef