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


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

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



1 名前:デフォルトの名無しさん [2010/11/16(火) 22:14:58 ]
あなたが解けない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++の宿題片付けます 142代目
hibari.2ch.net/test/read.cgi/tech/1288531658/

276 名前:デフォルトの名無しさん [2010/11/21(日) 23:10:03 ]
>>259
ありがとうございました!とても助かりました!

277 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 07:46:51 ]
>>273
問題2だけ。
codepad.org/vx9De2AX

278 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 08:32:07 ]
>>273
問題1もやってみた。
C++でgetcharってこういうことかな?
codepad.org/7LG4EKWZ

279 名前:デフォルトの名無しさん [2010/11/22(月) 12:53:40 ]
>>273ですが言語はCでした;

>>277
>>278
折角やっていただいたのにすみません!;
実行してみましたができませんでした。
普通にgetchar関数を使えと言われたんですが・・・。


280 名前:デフォルトの名無しさん [2010/11/22(月) 13:08:02 ]
1] 授業単元: プログラミング
[2] 問題文
#include <stdio.h>
#include <string.h> /*strlenのため */

void
main( void )
{
char mojis[16]; /* 文字列を入れるための配列 */
int i;
int n; /* 'e'の数 */

printf("文字列:");
scanf("%15s", mojis );
mojis[15] = '\0';


for( i=0, n=0; mojis[i]; i++ ) /* ヌル字まで順に見ていく */
{
if( mojis[i] == 'e' ) /* 文字と文字定数との比較 */
{
n++;
}
}
printf( "文字数 %d のうち'e'は %d個", strlen(mojis ), n );
return; }
このプログラミングを改造
1.strlenを使わずに文字数をカウントする。
[3] 環境
 [3.1] OS:Windows、visual studio2005
 [3.3] 言語:C
[4] 期限:11月22日

281 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 13:16:54 ]
>>280
#include <stdio.h>

int main( void )
{
char mojis[16]; /* 文字列を入れるための配列 */
int i;
int n; /* 'e'の数 */
int len; /* 文字の数 */

printf("文字列:");
scanf("%15s", mojis );
mojis[15] = '\0';


for( i=0, n=0, len=0; mojis[i]; i++ ) /* ヌル字まで順に見ていく */
{
len++ ;
if( mojis[i] == 'e' ) /* 文字と文字定数との比較 */
{
n++;
}
}
printf( "文字数 %d のうち'e'は %d個", len, n );
return 0 ;
}

282 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 13:34:32 ]
iでいいだろうよw

283 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 13:40:41 ]
>>279
書いてくれてるプログラムはC++だけど
入出力以外はCと同じだから
#include <iostream>は#include <stdio.h>
std::getchar()はgetchar()
std::cout〜の行はprintf()
std::cin〜の行はscanf()に置き換えれば動くと思うよ

284 名前:mery [2010/11/22(月) 13:42:18 ]
以前152で
1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):
無限ループを用い、1〜50までの数値を任意に10個入力し、その度数分布を求めよ。但し、度数分布は5等分(例;1〜10に4個, 11〜20に3個, 21〜30・・・41〜50に0個)して表示せよ。
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:11月21日
[5] その他の制限:1〜50以外の数字が入力されたときの処理は考えなくていいそうです
で書き込ませていただいた者なんですが、教えていただいた通り、打ち込んでみたのですが、実行結果がでませんでした。
なぜでしょうか?



285 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 13:47:00 ]
>>282
iだと1引かないといけないのがなんか気持ち悪い

286 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 13:48:32 ]
>>285
え?w

287 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 14:06:22 ]
>>284
>>164 でうまくいきますよ。「実行結果がでませんでした」というのは、どういう状態か、もう少し詳しく教えてください。

288 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 14:09:00 ]
一瞬で終了してるとかってオチか?

289 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 14:11:48 ]
>>288
入力はできてるところをみると可能性はありそう

290 名前:デフォルトの名無しさん [2010/11/22(月) 15:04:40 ]
>>281
ありがとうございました。参考にします。

291 名前: ◆/91kCCQXBo mailto:sage [2010/11/22(月) 15:04:57 ]
>>273
jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/42-43

292 名前:デフォルトの名無しさん [2010/11/22(月) 15:58:58 ]
>>283
わかりました。間違えてすみません;
ありがとうございます!

>>291
わざわざありがとうございます!


293 名前:ごばくすみません mailto:sage [2010/11/22(月) 16:00:49 ]
>>284
>以前152
>で書き込ませていただいた者なんですが、教えていただいた通り、打ち込んでみたのですが、実行結果がでませんでした。
>なぜでしょうか?

7行目>>164
i=0; を
i=0; puts("数値を入力>"); に変えてみようか?

294 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 16:47:17 ]
[1] 授業単元: プログラミング
[2] 問題文:
変数iに100が入っています、

iとは別に、50,75,55,60というように、ランダムな数字の配列があり、
次にくる数字が前の数字(ここでは60)より、5%大きかったら、
iに1を加算するプログラムを作成。

-5%なら-1で、10%なら+2するといった感じです。5%未満なら加算しません。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限:特に無し

よろしくお願いいたします。



295 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 17:07:41 ]
100%なら+20?

296 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 17:11:47 ]
>>294
ランダムな数字の配列に負数とかゼロが出現する可能性はあるのかな?

297 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 17:12:03 ]
>>295
そうです。私の頭じゃさっぱりで・・・if文の乱立しか思い浮かびません。

298 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 17:13:35 ]
>>296
負数やゼロはなしでお願いします。
問題にはありませんが、1〜100あたりの乱数が入ると思っていただければ。

299 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 17:19:56 ]
>>294
#include <stdio.h>

int main(void)
{
int i, j;
int data[]={50, 75, 55, 60, 0};

i=100;
for(j=1;data[j]>0;j++)
{
i+=(data[j]-data[j-1])*20/data[j-1];
}
printf("i=%d\n", i);

return 0;
}

300 名前:299 mailto:sage [2010/11/22(月) 17:54:23 ]
>>294
>>299 の修正
負数の割り算は気持ち悪いので
#include <stdio.h>

int main(void)
{
int i, j;
int data[]={50, 75, 55, 60, 0};

i=100;
for(j=1;data[j]>0;j++)
{
if(data[j]>data[j-1])
i+=(data[j]-data[j-1])*20/data[j-1];
else
i-=(data[j-1]-data[j])*20/data[j-1];
}
printf("i=%d\n", i);

return 0;
}

301 名前:デフォルトの名無しさん mailto:sage [2010/11/22(月) 18:42:03 ]
>>300
ありがとうございます!
こういう式がさっと出てこないんですよね・・・頭悪いのが嫌になる・・・

302 名前:デフォルトの名無しさん [2010/11/23(火) 08:07:57 ]
[1] 授業単元:プログラミングC言語
[2] 問題文:診断メーカー風のプログラムを作成しなさい。
      名前を入力し、その名前に基づき何かしらの情報を出力。
      .txtファイルを読み込み出力できるものにする事。
      (オプション)日替わりで表示結果を変更。複数の組み合わせなど。
[3] 環境
 [3.1] OS:Linux
 [3.3] 言語:C++
[4] 期限:2010年11月23日12:00まで

自分の頭では何をどうしていいのかさっぱりわかりません。
ヒントだけでも良いので、どうかよろしくお願いします。

303 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 08:24:05 ]
>>302
テキストファイルの中に名前が書かれているの?

304 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 09:19:39 ]
>>302
codepad.org/wdclLmtI



305 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 09:29:08 ]
>>302
codepad.org/sgXIaOtZ

306 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 09:31:48 ]
>>302
脳内メーカーみたいな物を作れって事かな?
ならば、先ずは仕様を決めることが必要だ
例えば名前の文字列を1Byteづつ評価し、0〜15なら毒、16〜31なら薬、32〜47なら愛.....等々の評価を与える
最後に全文字が何の評価を与えたかを集計すれば、毒:M%、愛:M%、薬:O%みたいな出力を出せるだろ
txtファイルを読むというのは引数にテキストファイル名が指定された場合にはそのファイルに書かれている
名前を標準入力の変わりに使えと言う事だと思う

参考になれば幸いだ

307 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 09:44:29 ]
>>302
#include <iostream>
#include <string>
#include <cstdlib>
#include <fstream>
unsigned str2number(std::string str){
unsigned ret=7743; // 必要ならここに日付を数値化したものを足す time(NULL)/(60*60*24) みたいに
for(unsigned i=0;i<str.length();i++) ret=ret*37+str[i];
return ret;
}
int main(void){
std::string name, buf;
std::ifstream ifs("data.txt");

std::cout << "名前を入力してください : ";
getline(std::cin, name);
srand(str2number(name));
std::cout << name << " さんの" << std::endl;
while(getline(ifs, buf)){
if(buf[0]=='#'){
std::string theme, result;
theme=buf.substr(1);
for(int i=1;getline(ifs, buf);i++){
if(buf=="") break;
if(rand()%i==0) result=buf;
}
std::cout << theme << " は " << result << " です"<< std::endl;
}
}
return 0;
}

308 名前:307 mailto:sage [2010/11/23(火) 09:45:47 ]
>>307 で使用する data.txt の中身

#運勢
大吉



#ラッキーアイテム
トイレットペーパー
栓抜き
生卵
ブルーアイズホワイトドラゴン

#ラッキーカラー
透明
シルバー


309 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 09:51:16 ]
>>305
argcのチェックを入れるべき。

310 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 14:27:43 ]
[1]プログラミング演習
[2] 問題文:codepad.org/Duo48tj4
[3] 環境
 [3.1] windows
 [3.2] visual studio2010
 [3.3] C言語
[4] 2010/11/26まで
[5]配列、関数、文字列、関数形式マクロ、再帰は習っています。
構造体、ポインタ等は習っていません。
問題文が長く改行が多すぎて書き込めなかったのでcodepaに問題文も書きましたが
問題があったら言ってください。
お願いいたします。

311 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 14:45:14 ]
コードパッドに本文を入れるとは斬新w

312 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 15:44:22 ]
>>310
codepad.org/XoOdAJHA

313 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 15:59:54 ]
>>310です。
>>312
御回答ありがとうございます。
無事できました。有難うございます。
>>311
あ…やっぱり文章を入れる物ではなかったですか…。


314 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 17:34:14 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
2分法により2の平方根を計算して表示するプログラムを作れ。
解の存在範囲|xb-xa|が矛め決めた値より小さくなったら計算を停止(収束判定)するようにせよ。
*注意
(1)f(xa)とf(xb)の符号が反対であるか否かの判定法を考えよ。
(2)f(xa)とf(xb)が共に同符号になるようなxa,xbが入力された場合に対処すること。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:11月24日
[5] その他の制限: なし
よろしくお願いします。



315 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 20:04:09 ]
>>314
hibari.2ch.net/test/read.cgi/tech/1289715349/118

316 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 20:40:27 ]
>>314
codepad.org/OKPlr6yi

317 名前:デフォルトの名無しさん [2010/11/23(火) 21:13:54 ]
配列とファイルの読み込みです。

たとえば、100個の数字が用意されたファイルを用意します。
そのファイルを使って平均値を求めるプログラムを作りたいのですが教えてください。
ファイル名は適当で良いです。

平均値を求める計算は関数部分でお願いします。

318 名前:デフォルトの名無しさん [2010/11/23(火) 21:20:32 ]
>>317
をPerlでお願いします。

319 名前:デフォルトの名無しさん mailto:sage [2010/11/23(火) 21:42:51 ]
int main(void) {
system("cat temp.txt | perl -e \"while(<>){$i+=$_} print $i/100\"");
return 0;
}


320 名前:デフォルトの名無しさん [2010/11/24(水) 00:37:03 ]
[1] 授業単元: プログラミング基礎
[2] 問題文: n 個の整数型データ配列a[i]を、一つの関数に渡して、
      その一つの関数内で平均値と分散値を求め、main関数内で
      平均値と分散値を参照できるプログラムを作成せよ。
      ただし、配列の受渡し、結果の受け渡しにはポインタを利用すること。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:11月25日まで
[5] その他の制限:なし
宜しくお願いします。

321 名前:デフォルトの名無しさん [2010/11/24(水) 00:57:35 ]
>>320
#include <stdio.h>
void func( int n, int* arr, double* heikin, double* bunsan ) {
int i, sum = 0, sum2 = 0;
for( i = 0;i < n; i++ ) {
sum += arr[i];
sum2 += ( arr[i] * arr[i] );
}
*heikin = (double)sum / (double)n;
*bunsan = (double)sum2 / (double)n - *heikin;
}
int main( void ) {
int arr[] = {1,2,3,4,5};
double h, b;
func( 5, arr, &h, &b );
printf( "heikin = %lf, bunsan = %lf\n", h, b );
return 0;
}


322 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:03:21 ]
>>321
*bunsanの式の右辺第二項は*heikinの二乗

323 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:07:57 ]
[1] 授業単元: 数学
[2] 問題文: リーマン予想の解をアルゴリズム化して10^100桁の素数を決定的に因数分解する
   プログラムを作成せよ     
[3] 環境
 [3.1] OS:Windows、Mac
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:1月25日まで
[5] その他の制限:しらみつぶしに因数分解するプログラムは不可
宜しくお願いします。

324 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:08:52 ]
>>322
そうだった
*bunsan = (double)sum2 / (double)n - *heikin * *heikin;
に修正、*が並ぶと気持ち悪いな



325 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:08:59 ]
>>323
おいww

326 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:12:23 ]
>>323
素数を決定的に因数分解するって?

327 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:13:36 ]
>>326
俺もそれ気になってた
素因数分解って言ってないから実数でもいいのか?だとしたら無数に存在するけど


328 名前:320 [2010/11/24(水) 01:16:09 ]
>>321>>322>>324
ありがとうございます!

329 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:29:50 ]
そもそも10^100桁の数値なんてどうやって扱えばいいのか分からない
情報量として (10^100)/2.41 byte分なんてしらみつぶししようとも思わないw

330 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:36:40 ]
始めたばかりで何が何だかわかりません…

[1] 授業単元:メディア基礎
[2] 問題文(含コード&リンク):数式X=[{16/(k*π)^2}^2]がある。
kが整数1〜30の時のXの値をそれぞれ出力するプログラムをCで書きなさい。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日午前十時まで
[5] その他の制限: 特に無いと思います。

よろしくお願いしますorz

331 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:39:43 ]
素因数分解って素数に対してはそれ自身が素因数分解された結果だよな
だとしたら与えられた素数をそのまま出力するだけで終了じゃね?

332 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:47:23 ]
[1] 授業単元: 数学
[2] 問題文: リーマン予想の解をアルゴリズム化して10^100桁の合成数を決定的に因数分解する
   プログラムを作成せよ     
[3] 環境
 [3.1] OS:Windows、Mac
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:1月25日まで
[5] その他の制限:しらみつぶしに因数分解するプログラムは不可
宜しくお願いします。

333 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:56:14 ]
サラリーマンの人、やってみようか?

334 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 01:59:44 ]
>>330

#include <stdio.h>

int main(void)
{
int i, k;
double PI = 3.14159265358979323846;

for(k = 1; k <= 30; k++) {
double t = 4 / (PI * k);
for(i = 0; i < 2; i++) t *= t;
printf("k = %d X = %f\n", k, t);
}

return 0;
}



335 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:01:19 ]
>>330
codepad.org/9BCsk9I2

336 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:05:09 ]
>>332
codepad.org/Lg7TVQgT

337 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:06:41 ]
リーマン予想なんて解明されていないのに、もう解いたのか。
ノーベル科学賞でも受賞できんじゃね?w

338 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:10:26 ]
アンカー見て、誰も返信なかったから貼ったけど。
俺がアンカーミスってたとは・・・

339 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:12:22 ]
>>337
数学にノーベル賞は無い

340 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:13:26 ]
2^100ならいいけど10^100はちょっとやる気しないなぁ

341 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:21:44 ]
>>334
ありがとうございます!
ほんとうに助かりました!

342 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:27:07 ]
>>339
数学が無いことくらい知っているから敢えて 科学 の面で言ってみたんだが・・・

343 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:29:04 ]
科学も 化学 を文字ってネタで言ったまでw

344 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:30:42 ]
>>335
ありがとうございます!
あわせて参考にさせていただきます!



345 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:33:21 ]
数学にノーベル賞は無いっておかしくね?

346 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 02:51:54 ]
>>345
ノーベルが数学が苦手だったからだと
代わりにフィールズ賞がある

347 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 04:03:19 ]
リーマン予想には賞金もかかってるよ

348 名前:デフォルトの名無しさん [2010/11/24(水) 18:55:55 ]
[1] 授業単元: プログラミング
[2] 問題文:たとえば、100個の数字が用意されたファイルを用意します。
そのファイルを使って平均値を求めるプログラムを作りたいのですが教えてください。
ファイル名は適当で良いです。

平均値を求める計算は関数部分でお願いします。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:11月27日まで
[5] その他の制限:なし
お願いします。


349 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 19:13:55 ]
>>348
hibari.2ch.net/test/read.cgi/tech/1289715349/120

350 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 19:21:06 ]
簡単な問題に必死だな
巣にこもってろ出てくるなよ、ゴミが

351 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 19:33:53 ]
>>349
◆QZaw55cn4c
>たとえば、100個の数字が用意された
たとえば付くから、これは例を言っている(可能性ある)から数字の個数の100個は変化する可能性ある
と読み取れない?

352 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:06:55 ]
>>351
1) #define N 100 と#define で記述して、コンパイル時に簡単に変えることができるようにしています。
2) 個数が仮に N より少ないデータだったとしても、正常に動くようにしています。
すなわち #define N 100 とした場合に対して、実際にはデータの個数が 5 であってもOKです。

100 を無視することも可能ではありましたが、平均を求める関数を準備する、という点を優先し、
一次近似として「データ数が100」を尊重いたしました。

>>348
問題があればコメントを下さい。随時変更いたします。

353 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:08:27 ]
いいから出てくるなって

354 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:17:34 ]
こんな入門レベルのものはやりたくないみたいなこと言ってたのになw



355 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:21:13 ]
>>352 ◆QZaw55cn4c
いや、ここのスレでやり取りするなよ、自分のスレでやれ
スレチガイならともかく他所のスレのを無理やり横取りするなよ
お前、道徳的に最低ことしていると認識ないだろ



356 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:32:06 ]
>>355
にちゃんねるで「道徳的」といわれても。

357 名前: ◆EkRIf9bJPo [2010/11/24(水) 20:32:07 ]

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
-------------------
/*hogehoge*/
int main(){/*ggg*/
printf("xxxxxx");
}
int a=c;
-------------------
上記のソース総ステップ数5ステップ、実ステップ数3ステップ、
コメント率40%が求められるステップカウンターを作製せよ。
また、以下の条件を提示する。
1.ディレクトリ単位で読み込めるようにする。
2.Cファイルのみのステップ数を求めるようにする。
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc 4.3.4
 [3.3] 言語: C
[4] 期限: 2010年11月25日9:00
[5] その他の制限: なし
よろしくお願いします。



358 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:37:13 ]
◆QZaw55cn4c
当然、>>357も横取りするんだろ

359 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 20:42:46 ]
>>358
お客様としてお待ちしようかと。
でも期限が厳しいですね。

360 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 21:11:48 ]
>>357
ディレクトリ指定も可能って事はサブディレクトリも再帰的に捜査するんだよね
まぁ500円くらいなら払う価値は有る問題だと思うよ

総ステップは行数だと思うけど実ステップってのは?
if( x ) {
  i = a + b
    + c + d;
}
これは何ステップ?
コメント率は ( "/*", "*/",  "//" を含むコメント文字数 ) / (総文字数) の事?
その場合は改行コードは計算に入れるの?
この辺は詰める必要があるね

361 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 21:21:56 ]
>>357
カンマ演算子の扱いとか、do while とかどうする?

362 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 21:28:43 ]
>>357
実ステップは4行になりそうだけど。

363 名前: ◆EkRIf9bJPo [2010/11/24(水) 21:40:11 ]
>>360

そうです。サブディレクトリを読み込みます。
実ステップは、コメントのみの行、行区切りだけの行をはずした行数です。
なので、例に出されたソースの実ステップは、3ステップになります。

コメント率に関しては、特に条件が記載されてないです…
コメントが記載されている行/全行のことだと解釈しています。
改行コードについても記載がないので、計算には入れることは、考えてないです。

364 名前: ◆EkRIf9bJPo [2010/11/24(水) 21:48:48 ]
>>361

すみません。どうするってどういう意味ですか?

>>362

問題文がそうだったので…



365 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 22:57:27 ]
>>356
2chを楯に自分の糞さから逃げてないか?

366 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:06:24 ]
>>363
判定条件はこうかな
コメント外部にアルファベット、数字、記号({}を除く)が出現したら実ステップ行(*1)
コメントが入っている業はコメント行(*2)
当然、*1 でかつ *2 の行も存在する

例えば#if 0 〜 #endif の間は無効な行だけどこれも実ステップ行扱いで良いんだろうな、さもないと判定が難しすぎる

367 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:07:06 ]
反論してる人もこっちでやってくれんかな。
hibari.2ch.net/test/read.cgi/tech/1289715349/
◆QZaw55cn4cもこのスレでそういう論議しなければ俺はかまわん。
このスレのそういうレスは双方無視の方向で。

368 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:18:41 ]
>>364
たとえば
a++,b++;
は1ステップか、それとも2ステップか
式は一つだから1ステップでいいとはおもうけど

do{
func();
}while();
は2ステップなのか3ステップなのか
doがなんかするわけじゃないから2ステップでいいのか?

あと、;だけの行はステップとして数えるのか?

369 名前: ◆QZaw55cn4c mailto:sage [2010/11/24(水) 23:31:10 ]
>>357
>>363
途中ですが、コードを示します。使い方は、
./a.out Cプログラムファイル
です。

>>357 に例示されたコード例が指定どおりの数字を出す、という点だけで仕様を勝手にきめました。
大方は、>>366 にしたがっています。
これにいろいろ食わせてみて問題があるようであれば指摘ください。
途中ゆえデバッグコードを多数含みますことご容赦を。
codepad.org/ah8s28nT

xmalloc() -> malloc()
xfree() -> free()
xrealloc() -> realloc()
に読み替えてください。

370 名前: ◆1reJfOTbE. [2010/11/24(水) 23:35:18 ]
www.icsd3.tj.chiba-u.jp/~yasukuni/10jikken/
[1] 授業単元:プログラミング実験
[2] ttp://www.icsd3.tj.chiba-u.jp/~yasukuni/10jikken/
  ここの第2回の課題です。
[3] 環境
 [3.1] OS:WindowsXPでコマンドプロンプトやMeadowなどを使っています。
 [3.2] gcc
 [3.3] C
[4] 期限:11/26の18:00
[5] その他の制限:特にないと思います。
第1回に比べて急に難しくなったように思え、困っています。
とりあえず課題が何をどうすればよいかわかりません。
手順を教えていただきたいです。よろしくお願いします。

371 名前: ◆EkRIf9bJPo [2010/11/24(水) 23:36:00 ]
>>363

その判定条件で大丈夫です。
#if0〜#endifも実ステップ行扱いで良いと思います。

>>368

特にカンマ演算子と、do whileについて何も条件が出されてないので、>>663さんが提示した判断条件でお願いします。


372 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:40:32 ]
>>369
printf("xxx/*nocomment*/xxx");

373 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:54:48 ]
>>357
>>372
codepad.org/UuSFtHdy
これ以上複雑になれば、今のコードは捨てて状態遷移(オートマトン)で書き直すことを検討します。限界です。

374 名前:デフォルトの名無しさん mailto:sage [2010/11/24(水) 23:58:24 ]
>>373
問題が結構いい加減だから、都合のいいように解釈すればよいと思う。



375 名前: ◆EkRIf9bJPo [2010/11/24(水) 23:58:29 ]
>>369

ありがとうございます!
早速、デバッグを行なったところ、以下のエラーが表示されました。

1.c:8: error: conflicting types for ‘getline’
/usr/include/sys/stdio.h:37: error: previous declaration of ‘getline’ was here
よろしくお願いします。

376 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 00:00:43 ]
getlineって◆QZaw55cn4cじゃないかw






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

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

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