[表示 : 全て 最新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/

445 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 18:28:27 ]
自分用のメモ
>>317


446 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 18:47:37 ]
>>420,440,441,442,444
簡単、簡単、
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10485.c

447 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 19:25:39 ]
>>420
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10486.c
tp://www.geocities.co.jp/SiliconValley-Bay/4543/Rubic/Mathematics/Mathematics-2.html

448 名前:434 mailto:sage [2010/02/03(水) 19:33:42 ]
DB板で相談したところすんなりとコードを
書いて頂けました。
もちろん許可をとってないのでお見せする
わけにはいかないのですが合計250行にも
なる立派なコードでした。

449 名前:デフォルトの名無しさん [2010/02/03(水) 19:43:01 ]
>>446
ご回答ありがとうございます。
試してみたんですが、コンパイルはうまくいきましたが何も表示されませんでした。
何か打ち込まなくては、いけないのですか?

質問ばっかですいません。。。

450 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 19:54:22 ]
>>448
「立派なコード」を「すんなり」ですか

451 名前:yui ◆zuLLaJzEzk mailto:sage [2010/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
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10487.zip
rep2.ppm
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10488.zip


[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 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 21:25:30 ]
>>447
ひえーこの場合はこれで正解なのか
偶然だな



454 名前:デフォルトの名無しさん [2010/02/03(水) 22:51:55 ]
>>447
ご回答ありがとうございます。

その処理を
00000
00000
11111
00000
00000

でしたいんですが、どうしたらいいですか?

455 名前:デフォルトの名無しさん mailto:sage [2010/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] その他の制限:
よろしくお願いします。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10490.zip

456 名前:デフォルトの名無しさん mailto:sage [2010/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] その他の制限:
努力はするも此方も断念 何方か宜しくお願い致す。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10491.zip


457 名前:447 mailto:sage [2010/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 名前:デフォルトの名無しさん [2010/02/04(木) 01:28:05 ]
>>457
ありがとうございます。
ちゃんと表示されました。

459 名前:デフォルトの名無しさん [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 02:03:01 ]
>>459
・問題文は、出題されたまま全文を書いてください。

もしそのまま出題されているとするなら糞問題です
添削スレで晒しちゃいましょう

461 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 02:29:39 ]
良問自作テキスト:熱心な先生だ
悪問自作テキスト:着服しただろこいつ

462 名前:447 mailto:sage [2010/02/04(木) 02:45:18 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10492.c
数学なら左回転でいいのでした。

463 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 03:51:41 ]
>459
アンチエイリアシング



464 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 05:56:57 ]
>>460
なぜ糞問題と思ったのでしょうか、そこをひとつ。

465 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 07:29:06 ]
[2] CIP法での1次元の移流計算
[3] 環境
[3.1] OS:Vista
[3.2] コンパイラ名:Microsoft Visual Studio 2008  
[3.3] 言語:C++
自分で以下のプログラムを作ったところ。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10493.txt

tの値を増やすにつれてf[n][t]のnの初期のほうの値がなぜかでかい数字が出てしまいます。
自分の計算ではtの値を増やせば、f[n][t]のnの初期のほうの値は0になると思うんですが、一体どこが悪いのか、ご教授をお願いいたします。

466 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 08:26:07 ]
>>459
これでいいのかな?
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10494.c

467 名前:デフォルトの名無しさん mailto:sage [2010/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 mailto:sage [2010/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 名前:デフォルトの名無しさん [2010/02/04(木) 20:21:37 ]
>>462
>>466

ありがとうございました。
手つかずだったので、ほんと助かりました。。

470 名前:466 mailto:sage [2010/02/05(金) 16:32:53 ]
要素の計算方法が逆だったのかな?と今考えてるけど。
変換先位置から変換元の要素を求めたんだけど、
画像の変換の問題じゃないんだから、逆の方が良かったかな?

471 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 19:17:12 ]
>>470
90度回転なら、どちらの方法でも、隙間ができない。
60度回転では、・・・

ってことがポイントになる問題だったのでは?
画像かどうかは関係ないでしょ。


472 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 15:42:11 ]
>>455
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10496.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10497.c
どうぞ。

473 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 16:15:20 ]
どなたか406お願い出来ないでしょうか?



474 名前:っっ [2010/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 名前:っっ [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 19:00:28 ]
>474
s/\//\/=/

477 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:55:03 ]
>>406

478 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:56:51 ]
>>474
a[i][j]/s[j];
の結果をどうしたいのですか?どこに保存するのですか?

479 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 23:49:03 ]
>>475
小学校の国語から始めるべきです
C言語はその後で良いでしょう

480 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 01:31:24 ]
>>480
Nが未定義という類のエラーが出るでしょう

482 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 01:40:50 ]
>>480
codepad.org/721ieWJG

483 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:冷やかしです mailto:sage [2010/02/07(日) 05:41:31 ]
return(0)はかっこ良すぎ(カッコ付け過ぎ)
return 0;で十分w
てか関数呼び出しと見間違えやすいので付けないほうが吉

486 名前:温めます mailto:sage [2010/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 mailto:sage [2010/02/07(日) 11:46:40 ]
宿題でなく質問させてもらいます。
pc12.2ch.net/test/read.cgi/tech/1260532772/652
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10348.txt
上のプログラムについて聞きたいのですが

このプログラムはfor文を2回まわしているので数列の長さをLとしたとき計算量は2LなのでO(L)と言えるのでしょうか?
それと、ソースの下の方にある ? はifの省略記法なのでしょうか?

初心者でよくわからなかったのでお教えください

488 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:08:15 ]
>>487
O(n^2) 実際に適当な値入れて何回実行されるか考えたらいいと思う。

そういう捉え方もできなくもないが別物。
三項演算子とかでググったらいいと思う。

489 名前:前スレ639 mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:23:36 ]
>>487
>計算量は2LなのでO(L)と言えるのでしょうか?
YES。入れ子になってれば積になってO(L^2)だけど、
別々になっているので全体の計算量は多い方(今回は同じ)になる。

?は "c ? a : b" という三項演算子の一部。詳細はぐぐれば分かる。
基本的にはifとは別物だが、非常に限定された場面では代わりに使うこともできる。

491 名前:488 mailto:sage [2010/02/07(日) 12:30:26 ]
最初の奴はよく見てなかった。

492 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:31:17 ]
しかも、今度は途中送信スマン

493 名前:前スレ639 mailto:sage [2010/02/07(日) 12:38:12 ]
それでは計算量は作者のとおりO(L)ということで正しいのですね?
ありがとうございます!勉強になりました!



494 名前:デフォルトの名無しさん [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 14:55:13 ]
>>494
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10499.c
こんな感じでしょうか。

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






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

前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