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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

【前スレ】
C/C++の宿題を片付けます 106代目
http://pc11.2ch.net/test/read.cgi/tech/1209810861/
2デフォルトの名無しさん:2008/05/17(土) 21:03:52
さて、未回答の問題はどれだ?
3デフォルトの名無しさん:2008/05/17(土) 21:05:40
[1] 授業単元:オペレーティングシステム論
[2] 問題文
?簡単なシェルを作れ
?fork、exec系、wait系のシステムコール(ライブラリ関数)を利用して作る
?最低限、以下の機能を実現する
1.プロンプトを出力する
2.ユーザに端末からコマンドを入力させる
3.新しくプロセスを生成し、そのプロセスが入力されたコマンドのプログラムを実行する
4.そのコマンドの実行(子プロセス)が終了するまでシェル(親プロセス)は、プロンプトを出さずに待つ
5.1に戻る

[3] 環境
OS:Windows/Linux
コンパイラ:gcc
言語: C
[4] 期限: 2008年5/17
実行結果もお願いします

前スレから未解答っぽいののコピペ
スルーされまくってる奴があるなwww
4デフォルトの名無しさん:2008/05/17(土) 21:13:01
>2次元配列変数sampleの中身を表示し、sampleの4つの値の平均値をresultの1つの値とする
>プログラムを作成せよ。
>
>実行例
>sample
>13 36 18 54 83 12
>25 62 19 78 21 5
>41 93 87 21 87 11
>61 81 68 46 35 98
>
>result
>34 42 30
>69 56 58
>
>この問題みなさんはできるかな?

前スレ862行け
5デフォルトの名無しさん:2008/05/17(土) 21:14:05
前スレ862より

#include<stdio.h>
int main(void)
{ int sample[4][6]={{13, 36, 18, 54, 83, 12},
{25, 62, 19, 78, 21, 5},
{41, 93, 87, 21, 87, 11},
{61, 81, 68, 46, 35, 98} };
int result[2][3]={0}, i, j;
puts("sample");
for(i=0;i<4;i++) {
for(j=0;j<6;j++) {
printf("%d ", sample[i][j]);
}
puts("");
}
result[0][0]=(sample[0][0]+sample[1][0]+sample[2][0]+sample[3][0]) / 4;
result[0][1]=(sample[0][1]+sample[1][1]+sample[2][1]+sample[3][1]) / 4;
result[0][2]=(sample[0][2]+sample[1][2]+sample[2][2]+sample[3][2]) / 4;
result[1][0]=(sample[0][3]+sample[1][3]+sample[2][3]+sample[3][3]) / 4;
result[1][1]=(sample[0][4]+sample[1][4]+sample[2][4]+sample[3][4]) / 4;
result[1][2]=(sample[0][5]+sample[1][5]+sample[2][5]+sample[3][5]) / 4;
puts("\nresult");
for(i=0;i<2;i++) {
for(j=0;j<3;j++) {
printf("%d ", result[i][j]);
}
puts("");
}
return 0;
}
6デフォルトの名無しさん:2008/05/17(土) 21:39:06
Form1.cs(13,17): error CS0118: 'CircleInsidePolygon' は '名前空間' ですが、'型'
のように使用されています。
7デフォルトの名無しさん:2008/05/17(土) 22:11:16
>>6
C#はスレ違い というか宿題ですらないし
8デフォルトの名無しさん:2008/05/17(土) 22:13:19
C#も含めていいんじゃないか?
JavaはダメだがC#はおkでいい。
9デフォルトの名無しさん:2008/05/17(土) 22:13:43
前スレは一応 >>3 以外は終わっているな。
10デフォルトの名無しさん:2008/05/17(土) 22:16:11
>>8
互換性ない言語をまとめるのもどうかなあ。
それに、ウルトラ過疎ってるがC#宿題スレは既にある。
11デフォルトの名無しさん:2008/05/17(土) 22:20:07
C++/CLIならともかくC#はスレ違いだろうな
Javaの方が似てるくらいだし
12デフォルトの名無しさん:2008/05/18(日) 01:55:30
13デフォルトの名無しさん:2008/05/18(日) 02:20:28
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):4×4のパズルを解くプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6587.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 5月20日
[5] その他の制限:
基礎的な部分は一応一通り習ってます。

よろしくおねがいします。
14デフォルトの名無しさん:2008/05/18(日) 03:54:37
$fuga(431)[/home/user0230/]cc -o 6586 6586.c
$fuga(432)[/home/user0230/]./6586
>
(null): not found
Oh NO!!!
segmentation fault core dumped!

$fuga(433)[/home/user0230/]
15デフォルトの名無しさん:2008/05/18(日) 05:00:23
16デフォルトの名無しさん:2008/05/18(日) 12:07:15
[1] 授業単元:情報プログラム
[2] 問題文(含コード&リンク):
4つの点p1,p2,p3,p4とその座標が与えられている。
その時p1とp2を通る直線とp3とp4を通る直線の交点座標を求めるプログラムをつくれ。
2直線が平行なときはその旨を表示せよ。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 今日
[5] その他の制限:


おねがいします。
17デフォルトの名無しさん:2008/05/18(日) 12:57:25
  float p1[2] , p2[2] , p3[2] , p4[2] , p12a , p12b , p34a , p34b , p5[2];
  printf("p1の座標入力\n");
  scanf("%f %f",p1,p1+1);
  printf("p2の座標入力\n");
  scanf("%f %f",p2,p2+1);
  printf("p3の座標入力\n");
  scanf("%f %f",p3,p3+1);
  printf("p4の座標入力\n");
  scanf("%f %f",p4,p4+1);
  
  p12a = (p2[1]-p1[1])/(p2[0]-p1[0]);
  p12b = (0 - p1[0]) * p12a + p1[1];
  p34a = (p4[1]-p3[1])/(p4[0]-p3[0]);
  p34b = (0 - p3[0]) * p34a + p3[1];
  p5[0] = (p34b - p12b)/(p12a - p34a);
  p5[1] = (p5[0] * p12a) + p12b;
  if(p12a==p34a)
  {
    printf("二直線は平行\n");
    return 0;
  }
  printf("二直線の交点の座標\n(%f , %f)\n",p5[0],p5[1]);
18デフォルトの名無しさん:2008/05/18(日) 13:02:25
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
長さが32のビット列を入力し、
このビット列が表す実数値を出力するプログラムを作成せよ。
ただし、この実数表現はIEEE754によるものとする。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 5月19日
[5] その他の制限: pow関数は使用しないこと。
19デフォルトの名無しさん:2008/05/18(日) 13:14:20
20デフォルトの名無しさん:2008/05/18(日) 13:28:24
>>18
実行環境のfloatが32bitのIEEE754形式なら、これでいい。
#include<stdio.h>
int main()
{
char str[33];
unsigned long bits = 0;
int i;
printf("32ビットの2進数を入力してください\n:");
scanf("%32s", str);
for(i = 0; str[i]; i ++)
bits = bits * 2 + str[i] - '0';
for(i = 0; i < 32; i ++)
putchar('0' + ((bits>>(31-i)) & 1));
putchar('\n');
printf("= %g\n", (double)*((float*)&bits));
return 0;
}
2118:2008/05/18(日) 13:40:06
>>20
すいません、問題の注意事項をよく見たら
まず指数部と仮数部を求めてから実数値を求めなきゃいけなかったみたいです…。
22デフォルトの名無しさん:2008/05/18(日) 13:42:10
>>17
どうも

>>19

不正な初期化(16行目)と出てコンパイルできないです
23デフォルトの名無しさん:2008/05/18(日) 13:47:15
どうして最初から平面上の直線だってわかったのかな?
問題文じゃそんなこと書いて無いのに
空間の中の直線だったらどーすんだ?
2419:2008/05/18(日) 13:48:46
25デフォルトの名無しさん:2008/05/18(日) 13:50:11
>>23
その場合、
平行か/交わるか
のほかに、
平行ではなくかつ交わらない(同一平面上にない)
が必要ですね。
26デフォルトの名無しさん:2008/05/18(日) 13:50:37
>>24
大丈夫でした。ありがとうございました
2719:2008/05/18(日) 13:52:43
>>23
・平行には言及しているのに、ねじれの位置関係に言及していないから
・題意を満たすには2次元で十分だから
かな
28デフォルトの名無しさん:2008/05/18(日) 13:53:13
すまん、名前が残ってたw
29デフォルトの名無しさん:2008/05/18(日) 13:57:42
上手いこと揚げ足とったつもりが逆にフルボッコw
30デフォルトの名無しさん:2008/05/18(日) 14:03:05
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6591.zip
[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 5月22日
[5] その他の制限:pdfファイルに細かく手順などが書いてあります

pdfファイルなのでzipで問題文をアップさせていただきました。
pdf文章の課題1,2,3までは終了。課題4,5が分らず困っています。
課題4,5のプログラムを教えて下さい。


31デフォルトの名無しさん:2008/05/18(日) 14:22:26
空間上の4点p1,p2,p3,p4が与えられていても
p1,p2を通る直線とp3,p4が通る直線が
交わるか
平行か(「交わる」場合もあれば、交わらない場合もある)
ねじれ(交わらない)
か、判定出来ないというのでつね(|)
32デフォルトの名無しさん:2008/05/18(日) 14:46:39
バカ?
3320:2008/05/18(日) 15:17:13
3418:2008/05/18(日) 15:43:06
>>33
これなら大丈夫そうです。
本当にありがとうございました!
35デフォルトの名無しさん:2008/05/18(日) 15:43:13
煽り目的の奴はどこにでもいる、スルーでおk
36デフォルトの名無しさん:2008/05/18(日) 15:48:41
23みたいなヤツのことかw
37デフォルトの名無しさん:2008/05/18(日) 16:08:39
>>36
23は煽りじゃないだろ
仕様が曖昧なのに勝手に問題を単純化してすぐにコードにしてしまう
癖はCプログラマに限らずプログラマの悪い癖(自分もそうかも)
しかも公開の場所にあげてしまうし...
今回のは平面だろうが空間だろうが、意匠とか著作権やら絡まないし
ましてや個人情報も含まれるわけでもない単純な数学問題だからいい
かも知れないが、それでは済まされない分野も相手にするのもまた
Cプログラミングの世界。そういったことも伝えるのも大事だと思うな。
3813:2008/05/18(日) 16:28:35
>>15
ありがとうございます。
ですが38行目のあたり
(int solve_sub( int *m0, int *m1, int *m2, int *m3))
でエラーが出てしまいます(__)
39デフォルトの名無しさん:2008/05/18(日) 16:31:02
>>37
おまいが23でないとして...
クソ仕様にはクソコードで速攻応酬するしか自衛手段が無いんだよ。
クソ仕様しか作れないから質問(発注)するわけだからな。
40デフォルトの名無しさん:2008/05/18(日) 16:34:01
>>38
>>1
> ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
41デフォルトの名無しさん:2008/05/18(日) 16:37:30
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):動的計画法によるアライメント
問題文と実行例 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6594.txt
プログラムの枠組み http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6595.c
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] BorlandC++
 [3.3] 言語: C言語
[4] 期限: 5月19日1200まで
[5] その他の制限: 特になし
よろしくおねがいします
42デフォルトの名無しさん:2008/05/18(日) 16:54:28
言い争いなんかするなよ
仕様が曖昧でも、今回は2D or 3Dってレベルだろ
そんなのプログラムで吸収しろw

ほれ3D版だ、2DでやりたきゃZ値を全て0とかで合わせれば言い
>>16
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6597.txt
4313:2008/05/18(日) 17:17:18
>>40
すいませんでした。
エラーメッセージ(?)なのかなぞなんですが
38: non-constant expression
と言う風に出ました。
44デフォルトの名無しさん:2008/05/18(日) 17:24:54
>>43
int dup=0, pos, val=0+1+2+3+4, *m[4], i;
m[0]=m0;
m[1]=m1;
m[2]=m2;
m[3]=m3;

みたいに書いたら?
45デフォルトの名無しさん:2008/05/18(日) 17:46:41
46デフォルトの名無しさん:2008/05/18(日) 18:01:55
>>30
>課題4 まず操作1◦ と操作2◦ のみで,例題1 が正しく解けることを確認
とりあいずここまでできた
#include <stdio.h>
#define X 4
#define Y 3

void view(double a[Y][X])
{
char *kuuhaku;
int i , j;

for(i=0;i<Y;i++){
for(j=0;j<X;j++){
kuuhaku = j==X-1 ? a[i][j]<0 ? " " : " " : "";
printf("%s%7.2lf ",kuuhaku,a[i][j]);
}
printf("\n");
}
printf("\n");
}

47デフォルトの名無しさん:2008/05/18(日) 18:02:21
int main(void)
{
double a[Y][X]=
{{4,6,2,4000},
{2,8,6,5000},
{6,4,4,4200}};
double seki;
int target_gyou;
int i , j , k;

for(i=0;i<Y;i++){
printf("\n\n--------STEP %d--------\n\n",i+1);
for(j=X-1;j>=0;j--){
a[i][j]/=a[i][i];
}
view(a);
for(j=1;j<=Y-1;j++){
target_gyou=(i+j+Y)%Y;
seki=a[target_gyou][i]/a[i][i];
for(k=X-1;k>=0;k--){
a[target_gyou][k]=a[target_gyou][k]-a[i][k]*seki;
}
view(a);
}
}

return 0;
}
4841:2008/05/18(日) 18:06:06
エラー直して実行したら実行例通りにできました
ありがとうござます。
4930:2008/05/18(日) 19:10:51
>>46
面倒な問題なのにありがとうございます。
課題4の前半まで確認できました。
50デフォルトの名無しさん:2008/05/18(日) 19:27:13
[1] 授業単元: C言語〜基礎T〜
[2] 問題文(含コード&リンク):
最初に整数nを入力し、nの数だけ実数x1, x2, ... ,xnを読み込みその値の平均を求める。
(配列ではなくfor分にて読み込み、n回for分を回し、値は順次加算する。for分を抜け次第nの値で割り平均を求める。)

また、入力した実数で大きい方から順次3つ表示する。
(大きいほうから順次3つというのは格納用の3つ変数を用意し大小関係を調べて変数の中身を入れ替える。)

(実行例)
n=5
8
1
2
6
3
平均=4
大きいほうから順に8,6,3です。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 5/20 12:00までにお願いします。
51デフォルトの名無しさん:2008/05/18(日) 19:44:46
>>50
#include<stdio.h>
#include<limits.h>
#define TOP 3
int main()
{
int n, i, j, t, sum = 0, top[TOP] = {INT_MIN, INT_MIN, INT_MIN};
printf("n=");
scanf("%d", &n);
for(i = 0; i < n; i ++) {
scanf("%d", &t);
sum += t;
if(t > top[TOP-1]) {
for(j = TOP-1; j > 0 && t > top[j-1]; j --)
top[j] = top[j-1];
top[j] = t;
}
}
printf("平均=%g\n", (double)sum/n);
printf("大きいほうから順に");
for(i = 0; i < TOP; i ++) {
if(i)
printf(",");
printf("%d", top[i]);
}
printf("です。\n");
return 0;
}
52デフォルトの名無しさん:2008/05/18(日) 19:50:11
>>30

解が無いパターンと途中を0で除算してしまう所の追加
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6599.txt

必ずしも正しいという保証はなし
53デフォルトの名無しさん:2008/05/18(日) 20:33:26
>>51
お早い回答ありがとうございます。

自分は格納用変数3つ作成ってところがよく分からなかったので、大変参考になります。
5430です:2008/05/18(日) 20:46:17
>>52
本当にありがとうございます。質問なんですが、これは課題4の操作3゜まで完了したプログラムでしょうか・・
課題2の数値をこのプログラムに入れて実行した結果は多分正解でした。
55デフォルトの名無しさん:2008/05/18(日) 21:00:25
>>54 >>30
操作3ですよ
完璧に丸ごと問題通りにできているのかは怪しいですね。。
5630です:2008/05/18(日) 21:15:40
丸ごと問題通りじゃなくても大丈夫なんで課題4はokです。
課題5は課題4の操作3゜の部分を書き換えたら完成ですかね?
5743:2008/05/18(日) 22:01:05
>>44
ありがとうございました。エラーは解決しました!

ですが、実行結果が正しい値になりません...
58452:2008/05/18(日) 22:11:23
[1] 授業単元: 情報基礎2
[2] 問題文(含コード&リンク):
物理量xについて、初期値x=0とする。分岐点を設けそこで乱数関数を利用して0-1の値を生成する。
この値が0.5-1の場合はxに1を加え、0-0.5のときは1を引く。
この分岐を100回経たときのxの値を保存する。
これをn回繰り返し、一つのファイルにn個のxの値を書き込む。
そして、、同じxの値が何回現れたかを表示するプログラムを作成せよ。
【実行例】
1回目 -14
2回目 -8
3回目 2



100回目 14
x=0 4回
x=2 5回
x=10 1回



x=20 2回
[3] 環境 
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン:BCC Developer 
 [3.3] 言語:できればC++で
[4] 期限:08年5月19日

n回繰り返してファイルにn個のxの値を書き込むところまでは作成できたのですが、
同じxの値が何度現れたのか表示する部分をどうすればよいのかわかりません。
よろしくお願いします。
5958:2008/05/18(日) 22:13:15
>>58の名前欄はミスです。
回数n=100とした場合の、途中までのプログラムを示します。
#include <iostream.h>
#include <stdlib.h>
int main (void)
{
    int i,j;
    const int N=100;
    double a,n=0,ran;
    double array[N];  
    
    srand((unsigned) time(NULL));
    for(i=0; i<N; i++){
        for(j=0; j<N; j++){
        
            ran =rand()/(float)RAND_MAX;
            a=ran;
            if(a<=0.5)
                n-=1;
            else
                n+=1;
            array[j]=n;       
        } 
        cout <<i<< "=" << array[N-1]<<endl;  
    }
}

行数の関係で空白行を削除しています。よろしくお願いします。
6015:2008/05/18(日) 22:22:10
>>57
> 実行結果が正しい値になりません
入力例を示してもらえますか?
61デフォルトの名無しさん:2008/05/18(日) 22:29:29
[2] 問題文(含コード&リンク):シグモイド関数の値を求めるプログラムを書け。
自分で考えて一応プログラムを作りました。
キーボードで数字を入力すると答えが出るようにしようと思いましたがうまくいきません。
#include<stdio.h>
#include<math.h>
int main(void)
{
double f=0,x=0;
scanf("%f",&x);
f=1.0/(1.0+exp(-x));
printf("%f",f);
}
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005
 [3.3] 言語:どちらでも可
[4] 期限: なるべく早くお願いします。
[5] その他の制限:特に制限はありませんがなるべく簡単というか簡潔にお願いします。
6257:2008/05/18(日) 22:32:52
>>60

各行を数字4文字で入力してください。
数字は1〜4、または0(空欄)です。(例:1034)
1行目:1004
2行目:0200
3行目:0010
4行目:2000
初期状態=
1 0 0 4
0 2 0 0
0 0 1 0
2 0 0 0

不定
1 0 0 4
0 2 0 0
0 0 1 0
2 0 0 0


本当ならば
1 3 2 4
4 2 3 1
3 4 1 2
2 1 4 3
の解が出なければならないのですが・・・
6315:2008/05/18(日) 22:35:49
>>62
今問題を見返して、ようやく問題文の言わんとしているところを理解した。
>>15は頭が悪かった。
作り直すから、ちょっと待ってて。
6457:2008/05/18(日) 22:39:08
すいません、ありがとうございます。
お願いします(__)
65デフォルトの名無しさん:2008/05/18(日) 22:52:23
1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):char 型の配列C[10] に10 個の文字を読み込み、
C[10] に格納された文字の中で英大文字だけを表示させるプロ
グラムを作成せよ
[3] 環境
 [3.1] (Windows xp
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語 C++ borland ver2.31
[4] 期限: (来週の月曜日 5月27日
[5] その他の制限:2次元配列を学び終え,文字列に入ったところです。ポインタはまだ学習しておりません

C[10]の配列に文字を格納した後に、どのようにして大文字小文字を判別しているのかが
理解できません、どうかご教示おねがいします。
66デフォルトの名無しさん:2008/05/18(日) 22:54:45
>>65
つ ctype.h isupper
6715:2008/05/18(日) 22:55:21
>>57
すまんかった。これで解ける。
不定・不能は判定しなくなったので。あしからず。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6601.txt
68デフォルトの名無しさん:2008/05/18(日) 23:03:52
>>66
返答ありがとうございます!
つい先ほどif分の内容を変えてみたところ正常に動作しました。
お手数おかけしてもうしわけありませんでした
}
6957:2008/05/18(日) 23:37:24
>>67
はい!きちんと実行できました。
ほんとうにありがとうございました!
70デフォルトの名無しさん:2008/05/18(日) 23:43:24
>>58-59をお願い致します。
71デフォルトの名無しさん:2008/05/19(月) 00:03:06
>>67
2*2を見る部分ってこれであってる?
多分題意では4*4を4分割した4つの2*2を表現してると思う。

なのでこうかなって。
c[m[(y/2)*2+0][(x/2)*2+0]] = 1; /* 2x2 */
c[m[(y/2)*2+0][(x/2)*2+1]] = 1;
c[m[(y/2)*2+1][(x/2)*2+0]] = 1;
c[m[(y/2)*2+1][(x/2)*2+1]] = 1;
72デフォルトの名無しさん:2008/05/19(月) 00:14:52
>>58
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6602.txt
本当は回数カウンタはmapを使うといいんだけど。
73デフォルトの名無しさん:2008/05/19(月) 00:22:21
高々定数にしかならないことが分かってるから固定長配列のほうが良いのでは?
普通の map だと O(n log n) になってオーダーの意味で悪化するけど
74デフォルトの名無しさん:2008/05/19(月) 00:24:44
そう言われればそうだな。
nが小さくて、BRANCH_NUMが大きいときだけ、mapが有効ということで。
75デフォルトの名無しさん:2008/05/19(月) 00:32:09
getlineでstringに読み込んだ後
partitionでより分けて
不要部分をeraseし
そのままcoutへ。

・・・char型配列使わないから反則負けだ。・3・
76デフォルトの名無しさん:2008/05/19(月) 00:36:45
>>72
まさに望んていた動作です。
  ofstream file("data.txt");
等の命令は私の知識不足でどういったものかわからないのですが、調べてみようと思います。
本当にありがとうございます。
77デフォルトの名無しさん:2008/05/19(月) 00:40:37
>>58 map 使ってみた
#include<cstdio>
#include<cstdlib>
#include<map>

double uniform_rand(void){return (double)rand()/(RAND_MAX+1);} // [0,1) の乱数を返す

int main(void){
std::map<int,int> count;
const int n=100;
FILE *fp;

if(!(fp=fopen("data.txt", "w"))) return 1;

for(int i=0;i<n;i++){
int x=0;
for(int j=0;j<100;j++){
if(uniform_rand()<0.5) x--;
else x++;
}
fprintf(fp, "%d回目 %d\n", i+1, x);
count[x]++;
}

for(std::map<int,int>::const_iterator it=count.begin();it!=count.end();++it){
fprintf(fp, "x=%d %d回\n", it->first, it->second);
}

fclose(fp);

return 0;
}
78デフォルトの名無しさん:2008/05/19(月) 02:05:54
半径が2.2cmの円の円周の長さを求めるプログラムをお願いいたします・・・
π=3.14でお願いします
79デフォルトの名無しさん:2008/05/19(月) 02:13:56
>>78
#include<stdio.h>
int main(void){
float r = 2.2f, pi = 3.14f;
printf("%f", 2*pi*r);
return 0;
}
80デフォルトの名無しさん:2008/05/19(月) 02:16:10
>>79
C習い始めたばかりで困っていました;
ありがとうございます
81デフォルトの名無しさん:2008/05/19(月) 02:19:01
てっきり円周の長さを求められないのかと思った
82デフォルトの名無しさん:2008/05/19(月) 05:53:39
おらっ、どうした、じゃんじゃん宿題を質問しチャイナと
83デフォルトの名無しさん:2008/05/19(月) 06:06:31
俺明日出る宿題全部書くんだ
84デフォルトの名無しさん:2008/05/19(月) 08:13:14
[1] 授業単元:応用プログラミング
[2] 問題文:整数を入力して表示する。(入力/出力関数の作成)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 5月21日
[5] その他の制限:
標準ライブラリ関数printfやputs、scanfやgets等を使用してはいけない!
まるごと作成すること。入出力関数を作成する際にも標準ライブラリ
関数は使用してはいけない。


おまけ:発展課題としてmalloc/calloc関数を自作すること。
こちらの課題はmalloc/calloc関数以外の標準ライブラリ関数を
使用してよい。
85デフォルトの名無しさん:2008/05/19(月) 08:14:36
>>84
それな、C言語を使う意味ないでw
8684:2008/05/19(月) 08:17:29
>>84
○○ nyuuryoku(○○)
{
//全ての標準ライブラリ関数使用禁止
}

○○ print(○○)
{
//全ての標準ライブラリ関数使用禁止
}

int main()
{
int a;

nyuuryoku("%d",&a); //5と入力
print("a=%d\n",a); //a=5表示されればOK

return 0;
}
87デフォルトの名無しさん:2008/05/19(月) 08:22:57
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):()

平面上の凸多角形 P と Q が与えられる。
(それぞれ、頂点の座標が反時計回りの順で与えられる)

このとき、
・P と Q が共通部分をもつとき INTERSECT と表示せよ。
・P と Q が共通部分をもたないとき DISJOINT と表示し、
 さらに P と Q の接線をすべて表示せよ。
 (接線は、接線の方程式 ax+by=c の a,b,c を出力)

なお、P と Q の頂点数はどちらも 10000 以下としてよい。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 4
 [3.3] 言語: どちらでも可
[4] 期限: 2008/05/23
[5] その他の制限: 計算量を考慮すること

よろしくおねがいします
88デフォルトの名無しさん:2008/05/19(月) 08:45:35
>>84
インラインアセンブラで書けってことかな?
アーキテクチャはなんですか?
89デフォルトの名無しさん:2008/05/19(月) 08:46:58
料理するって時に、肉、野菜を1から作ってやれといっているようなものだ。
そうなると、飲食店は菜園、家畜する施設が必要になるな・・・
90デフォルトの名無しさん:2008/05/19(月) 08:51:08
86/87共に専門書読まなきゃ辛い問題で、宿題にでるわきゃない。
91デフォルトの名無しさん:2008/05/19(月) 08:54:33
>>90
専門書読まないと辛いからといって、宿題に出ないとは限らない。
底辺の学校ならそうかもしれんがね。
92デフォルトの名無しさん:2008/05/19(月) 08:55:34
>>88
UNIXの専門書読んでwrite,readなどの低レベル関数使ったり
書式設定文字列を自前で展開しろって奴?
フローチャート書かせたりはありえてもコンパイル可能なコード
にしろというわきゃない。
93デフォルトの名無しさん:2008/05/19(月) 08:58:48
少なくとも>>87は「平面上の二つの凸多角形の接線の式を求めよ」になる
接線の本数で重なるかどうかの判定はできる
94デフォルトの名無しさん:2008/05/19(月) 09:01:40
>>84
API使ってGUIで作ればいいんじゃね。
標準さえ使わなきゃいいんだろ、コンソールに表示しろとも書いてないし。
95デフォルトの名無しさん:2008/05/19(月) 09:03:46
>>92
なるほど、アセンブラまで落とさなくても低レベル関数を使う段がありましたね。

可変個引数や書式文字列の展開を課題で行うのは大変だということで
整数の入出力という制限がついているのかも。
96デフォルトの名無しさん:2008/05/19(月) 09:06:12
>>93
反例もあるよ。それが常に成り立つとは限らない
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6603.lzh
9784:2008/05/19(月) 09:14:55
追記です。

※悪い例
##include <stdio.h>
void nyuuryoku(char *str , int *a){ scanf("%d",a); }
void print(char *str , int *a)
{
int i;
char numlist[10]={'0','1','2','3','4','5','6','7','8','9'};
char string[30];

for(i=0;str[i]!=NULL;i++){ string[i]=str[i]; }
string[i++]=numlist[*a];
while(str[i]!=NULL){ string[i++]=str[i]; }
string[i]='\0';
printf("%s",string);
}
int main()
{
int a;
nyuuryoku("%d",&a); //5と入力
printf("a=%d\n",a); //a=5表示されればOK

return 0;
}malloc/calloc関数自作の方だけでも大丈夫です。
98デフォルトの名無しさん:2008/05/19(月) 09:17:05
>>84
#include <stdlib.h>
#include <string.h>

void *malloc(size_t size)
{
return realloc(NULL,size);
}

void *calloc(size_t nmemb, size_t size)
{
void *p;
if(p=realloc(NULL,nmemb*size))
memset(p,0,nmemb*size);
return p;
}

/* おまけ */
void free(void *ptr)
{
realloc(ptr,0);
}
99デフォルトの名無しさん:2008/05/19(月) 09:19:19
mallocの実装コードなんて、Linuxとかからのソースコードから持ってくる
という強力なワザが取れる以上宿題に出す馬鹿講師はいないよ
100デフォルトの名無しさん:2008/05/19(月) 09:19:27
printfはpucharを使ってなんとか実装できそう?w
101デフォルトの名無しさん:2008/05/19(月) 09:21:43
>>100
おまけ以外は標準ライブラリは使用禁止だそうだ。
102デフォルトの名無しさん:2008/05/19(月) 09:21:48
自分ができない問題に文句たれる人がいますね
1034:2008/05/19(月) 09:35:30
実行してみたんですが、resultの結果が違いました。
もう一度よろしくお願いします。
104デフォルトの名無しさん:2008/05/19(月) 09:35:54
出来るとか以前に、言語をして指定してその標準ライブラリを用いないって
何を勉強してんの?見えない敵と(ryってなるぞw
10584:2008/05/19(月) 09:36:29
>>98 ありがとうございます。
106デフォルトの名無しさん:2008/05/19(月) 09:41:28
どうみても逃亡だな
107デフォルトの名無しさん:2008/05/19(月) 10:07:40
>>103
resultの34を求める具体式を書いてみそ。
(13+25+41+61)/4なら、35だろ。
1084:2008/05/19(月) 10:18:11
>>107
ホントすみません。よく分からないのですが。
具体式をどこに書けば?
109デフォルトの名無しさん:2008/05/19(月) 10:33:55
>>108
107みたいに、ここに書けばいいじゃん。
34、というのは間違いなんじゃないか?って事。
もしかして釣り?
110デフォルトの名無しさん:2008/05/19(月) 10:52:52
for (i=0;i<2;++i){
for(j=0;j<3;++j){
result[i][j]=
( sample[2*i][2*j] + sample[2*i][2*j+1]
+ sample[2*i+1][2*j] + sample[2*i+1][2*j+1] ) /4;
}
}
111デフォルトの名無しさん:2008/05/19(月) 11:00:55
>>107
(13+36+25+62)/4=34だろ
もう少し頭使えよ
112デフォルトの名無しさん:2008/05/19(月) 11:05:09
>>111
一言余計だろ、お前みたいな罵倒レスや上から目線で偉そうにしているカスって
実社会じゃ役に立ってないから、こういう場でしか強がれない小物なんだろ?w
113デフォルトの名無しさん:2008/05/19(月) 11:06:12
for (i=0;i<2;++i){
for(j=0;j<3;++j){
result[i][j]=
( sample[2*i][2*j] + sample[2*i][2*j+1]
+ sample[2*i+1][2*j] + sample[2*i+1][2*j+1] ) /4.0 + 0.5;
}
}

>>110 ヒントありがとう
114デフォルトの名無しさん:2008/05/19(月) 11:06:57
出力フォーマットが奇妙なところで改行されているとは思っていたが。。
なんてこった。
115デフォルトの名無しさん:2008/05/19(月) 11:09:43
>>110 ちょい修正.切り捨てられるから
for (i=0;i<2;++i)
for(j=0;j<3;++j)
result[i][j]=(2+sample[2*i][2*j]+sample[2*i][2*j+1]+sample[2*i+1][2*j]+sample[2*i+1][2*j+1])/4;

116デフォルトの名無しさん:2008/05/19(月) 11:12:26
しかし、6*4が3*2になってるのに縦の平均と思う方が不思議
117デフォルトの名無しさん:2008/05/19(月) 11:24:58
>>112
問題を誤読しといて釣りあつかいする107=109よりはマシだろw
118デフォルトの名無しさん:2008/05/19(月) 11:39:46
>>116
なるほど集計前後の比率を見て、2*2ずつ切り出せばいいと推測する訳か。
まあでもパズルスレじゃないし、出題者が間違う場合もあるから
「4つ」の意味を明記すべきだとは思う。
119デフォルトの名無しさん:2008/05/19(月) 11:47:15
自分で間違っといて出題者のせいにすんなw
120デフォルトの名無しさん:2008/05/19(月) 11:50:22
>>84
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <string.h>
size_t Strlen(char * NumStr)
{
size_t len = 0;
for(len = 0;NumStr[len];len++) return len;
}
void GetNum(char * NumStr,size_t len)
{
size_t i;
for(i=0; i < len; i++) putchar(NumStr[i]);
}
void *Malloc(char *NumStr, size_t size)
{ return realloc(NumStr, size); }
121デフォルトの名無しさん:2008/05/19(月) 11:50:57
続き

void *Memset(char *NumStr,int c, size_t n)
{
char *p = &NumStr[0];
while(n > 0){ *p = c; p++; n--; }
return NumStr;
}
void *Calloc(char *NumStr,size_t nmemb,size_t size)
{
size_t n = nmemb*size;
NumStr = (char *)Malloc(NumStr,n);
Memset(NumStr,'\0',n);
return NumStr;
}
int main()
{
char *NumStr=NULL;
int limits=0,ch=0,rank=1;
size_t len = 0;
int Max = INT_MAX;
for(;Max != 0;){ Max /= 10; rank++; }
NumStr = (char *)Calloc(NumStr,sizeof(char),rank);
for(limits= 0;ch != '\n'&& limits < rank-1;limits++){
ch = getchar();
if(ch != '\n') NumStr[limits] = (char)ch;
}
len = Strlen(NumStr);
GetNum(NumStr,len);
return 0;
}
122デフォルトの名無しさん:2008/05/19(月) 12:00:00
やっちゃったみたいね
123デフォルトの名無しさん:2008/05/19(月) 12:07:11
84みたいな課題ってどんな意味があるんだろうな
124デフォルトの名無しさん:2008/05/19(月) 12:09:23
ttp://ja.wikipedia.org/wiki/%E6%A8%99%E6%BA%96C%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA
標準ライブラリ関数printfやputs、scanfやgets等を使用してはいけない!
まるごと作成すること。入出力関数を作成する際にも標準ライブラリ
関数は使用してはいけない。

これらの条件が分かっていれば、標準ライブラリが何も
入出力に関するものだけではないと分かっているとは思うのだが・・・
要するに、reallocだのgetcharだの、そういったものも当然ダメぽ
125デフォルトの名無しさん:2008/05/19(月) 12:11:39
>>120putchar()使っていいの?
アセンブリでBIOSの機能使って文字表示とかならできるけどそれってCじゃないよな・・・
126デフォルトの名無しさん:2008/05/19(月) 12:36:31
>>18
大学特定した
127デフォルトの名無しさん:2008/05/19(月) 13:13:20
128デフォルトの名無しさん:2008/05/19(月) 13:22:03
>>87
ベクトルの内積で、接触or交差の判定は出来るだろうけど接線が判らんな。
129デフォルトの名無しさん:2008/05/19(月) 13:39:13
C++でstringクラスやvectorクラスを標準ライブラリで作れっていう課題なら。
130デフォルトの名無しさん:2008/05/19(月) 13:51:31
131デフォルトの名無しさん:2008/05/19(月) 13:52:53
>>124
お前、よく読めよ。
おまけの問題では「malloc/calloc関数以外の標準ライブラリ関数を使用してよい。」と書いてあるだろ。
132121:2008/05/19(月) 14:02:40
最後にfree(NumStr)付け加えるの忘れてた
133デフォルトの名無しさん:2008/05/19(月) 15:19:05
宿題丸投げってキモいなw
134121:2008/05/19(月) 15:40:22
>>65
#include <stdio.h>
#define SIZE 10
int main()
{
char str[SIZE] = {'\0'};
int i;
for(i=0;i<SIZE;i++)
str[i] = getchar();
for(i=0;i<SIZE;i++){
if(str[i] >= 'A' && 'Z' >= str[i])
putchar(str[i]);
}
putchar('\n');

return 0;
}
135デフォルトの名無しさん:2008/05/19(月) 16:51:08
[1] プログラム演習
[2] http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6605.zip
[3] 環境
 [3.1] Windows XP
 [3.2] gcc
 [3.3] C
[4] 2008年5月22日
[5] #include<conio.h>が使えません

どうかよろしくお願いします
13692:2008/05/19(月) 16:55:59
>>84
仕事の合間に作ってみました。
参考になればと思います。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6606.txt
13795:2008/05/19(月) 16:57:14
92じゃなくて95ですた。スレ汚しごめんなさい
138121:2008/05/19(月) 17:16:27
>>30
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6607.lzh
4-1は答え出たけど4-2は解けなかった
ちなみに数値は打ち込むのがめんどうだったのでファイルから読み込ませてます。
139デフォルトの名無しさん:2008/05/19(月) 17:21:19
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):

  一般の連立1次方程式の解法プログラムを作成しなさい

[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008/05/20
[5] その他の制限:連立四元一次方程式を解けるプログラムであること
14030:2008/05/19(月) 17:31:46
>>138
途中まででも頑張ってくれてありがとう。
141デフォルトの名無しさん:2008/05/19(月) 17:38:50
>>139
未知数4に対して式が何個あるのかが分からないことには手がつけられん
142デフォルトの名無しさん:2008/05/19(月) 17:48:17
>>139
一般の、と書いてあるから可能な限りたくさんなのかな。
んで、最低でも連立四元一次方程式がとければよい、かな。

n元なら最低でもn式必要なんでしたっけ?すっかり忘れてますが。。
143デフォルトの名無しさん:2008/05/19(月) 17:50:16
>>141
説明不足ですいません。
未知数4の場合は式が4つだと思うんですが、未知数4で式が3だった場合、答えが出るのですか?
数学素人なんで変な事を言ってるかもしれません。
144139:2008/05/19(月) 17:55:52
>>142
可能な限り沢山なのかわかりませんが、連立五元や連立六元などは授業で扱ったことがないので
おそらく一元一次方程式から四元一次方程式まで解ければ問題ないはずです。
145デフォルトの名無しさん:2008/05/19(月) 17:59:08
未知数の数に応じて行列式を計算してクラメルの公式で簡単に解けるけど,
3x3はまだいいとして4x4の行列式の計算をつらつら書くのが面倒くさすぎる
146デフォルトの名無しさん:2008/05/19(月) 18:01:47
>>139,143
式3つ以下だと解が一意に決まらない。
式4つの場合、逆行列があれば解が求まる。
147デフォルトの名無しさん:2008/05/19(月) 18:02:11
>>145
こんな公式があるんですねえ。
適当にループでくるくるしたらどうにかできないかな?
148デフォルトの名無しさん:2008/05/19(月) 18:02:44
反復法でガウスザイデルで解く方が楽かもな
3x3ならwikiにも書いてある
http://ja.wikipedia.org/wiki/%E3%82%AC%E3%82%A6%E3%82%B9%EF%BC%9D%E3%82%B6%E3%82%A4%E3%83%87%E3%83%AB%E6%B3%95
149121:2008/05/19(月) 18:18:03
>>135
手入力するのめんどうなのでファイルからデータよみこませてます
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6608.lzh
150デフォルトの名無しさん:2008/05/19(月) 19:05:18
[1] 授業単元: 多倍長整数の演算
[2] 問題文(含コード&リンク):
    100桁以内の整数を2つ読み込み、その和・差・積・差をそれぞれ
    出力するプログラムを作成せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 5月20日23:55まで
[5] その他の制限:
    ヘッダは<stdio.h>、<math.h>しか習っていません。
    main関数で整数2つを読み込み、和・差・積・商はそれぞれ違う関数内で
    演算しろとの事です。
    また、グローバル変数は極力使うなと言われました。


口頭での説明だった為、問題が曖昧ですいません。
前スレで全く同じ問題を質問した人がいたのですが、解答を見ても内容が
高度過ぎて全く理解できず、重複で申し訳ないと思いつつも質問させて
もらいました。
整数を文字列としてchar型配列に格納し、それを-48してint型に変換(?)
してから4bitずつ25個に振り分けて―
―といった風に教えて貰ったのですが、結局ほとんど意味が分からないという始末…
講師いわく最終的に200行以上になるとの事ですが、もしよろしければよろしくお願いします。
151デフォルトの名無しさん:2008/05/19(月) 19:28:36
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):長いのでこちらに
(http://www.youlost.mine.nu/html999/img/4451.zip)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ gcc
 [3.3] 言語: C
[4] 5月20日火曜日朝8時まで
[5] その他の制限: 特になし
152デフォルトの名無しさん:2008/05/19(月) 19:30:13
153121:2008/05/19(月) 20:30:14
>>152
たぶん答えとしては意味合いが違ってるだろうけどはっとく
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6611.txt
154側近中の側近 ◆0351148456 :2008/05/19(月) 21:18:10
>>145
(っ´▽`)っ
小行列式に分割するってのはどうなの?
再帰を使えばできるような気がするよ
155デフォルトの名無しさん:2008/05/19(月) 21:26:23
>>150
前スレで解答出てるんならそのリンクも張って具体的にどこがどう分からないのかも書けよ
あと、「多倍長」でググレ
156デフォルトの名無しさん:2008/05/19(月) 22:05:52
>>154
期待してる
157側近中の側近 ◆0351148456 :2008/05/19(月) 22:06:37
>>156
(っ´▽`)っ
がんばってる☆
158デフォルトの名無しさん:2008/05/19(月) 22:07:58
[1] コンピュータ言語V
[2] 文字列sを先頭から順に1行に1文字ずつ表示する関数putvを作成せよ。
  void putv(const char*s)
[3]
 [3.1]Windows XP
 [3.3]C++
[4] 期限 5月20日の午後3時まで
[5] 特になし

よろしくお願いします
159デフォルトの名無しさん:2008/05/19(月) 22:21:12
>>158
void putv(const char*s)
{
for(int i = 0 ; s[i] != '\0' ; i++)
{
printf("%c\n",s[i]);
}
}
160デフォルトの名無しさん :2008/05/19(月) 22:22:26
>>158
#include <stdio.h>
#include <string.h>
void putv(const char*s)
{
size_t len = strlen(s);
size_t i;
for(i = 0; i < len; i++){
putchar(s[i]);
putchar('\n');
}
}
161デフォルトの名無しさん:2008/05/19(月) 22:36:01

強烈に難しいです…できた人は神!

内容:
[1] 授業単元: プログラミング概論第二
[2] 問題文(含コード&リンク):
ANNという最近傍探索のアルゴリズムがある。
このアルゴリズムは以下のステップを用いる
1)n次元k個のデータ群からkd木を作成する
2)探したいあるn次元のクエリから、kd木に格納されている点を探す
3)クエリと探し出された点との距離をdとする
4)距離dの超球を書く
5)「超球に触れているすべてのkd木で作成されたbox」内にあるすべての点をリストアップする
6)リストアップされた点を元に最も距離の近い点を探す。
というものです。
1〜4までは作りましたが
5)がよくわかりません…解決できる方どうか助けてください!

[3.1] OS:windows
[3.2] visual studio 2007
[3.3] 言語: C
[4] 期限: 2008年5月20日まで]
[5] なし
162161:2008/05/19(月) 22:40:18
補足です。
(nlogn)の計算量を極力スポイルしないよう、(5)のステップに注意し作成せよ
だそうです。
163デフォルトの名無しさん:2008/05/19(月) 22:54:15
とりあえず1〜4をうp
164側近中の側近 ◆0351148456 :2008/05/19(月) 22:57:25
(っ´▽`)っ

#include <stdio.h>
#include <stdlib.h>

#define  MATRIX_FACT(row, col)    a[(row) * rowLength + (col)]
#define  PART_MATRIX_FACT(row, col)  partMatrix[(row) * (rowLength - 1) + (col)]

double getDeterminant(double *a, int rowLength, int colLength);

int main(void){
  double  a[4][4] = {{1, 2, 3, 0}, {4, 5, 6, 0}, {7, 8, 9, 0}, {2, 4, 6, 8}};
  //double  a[4][4] = {{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}};
  int    rowLength = 4;
  int    colLength = 4;
  //double  a[3][3] = {{0, -2, 0}, {-1, 3, 1}, {4, 2, 1}};
  //int    rowLength = 3;
  //int    colLength = 3;
  double  determinant = (double)0;
  determinant = getDeterminant((double *)a, rowLength, colLength);
  printf("determinant=%f\n", determinant);
  return 0;
}

(続く)
165側近中の側近 ◆0351148456 :2008/05/19(月) 22:58:08
>>164の続き

double getDeterminant(double *a, int rowLength, int colLength)
{
  double  determinant = (double)0;
  double  minorDeterminant = (double)0;
  double  *partMatrix = NULL;
  int    i = 0;
  int    j = 0;
  int    k = 0;
  if(rowLength < 2 || colLength < 2 || rowLength != colLength){
    goto catch;
  }
  if(rowLength == 2){
    determinant = MATRIX_FACT(0, 0) * MATRIX_FACT(1, 1) - MATRIX_FACT(0, 1) * MATRIX_FACT(1, 0);
  }
  else{
    for(i = 0; i < rowLength; i++){
      partMatrix = (double *)malloc(sizeof(a[0]) * (rowLength - 1) * (colLength - 1));
      for(j = 0; j < i; j++){
        for(k = 0; k < colLength - 1; k++){
          PART_MATRIX_FACT(j, k) = MATRIX_FACT(j, k + 1);
        }
      }
      for(j = i; j < rowLength - 1; j++){
        for(k = 0; k < colLength - 1; k++){
          PART_MATRIX_FACT(j, k) = MATRIX_FACT(j + 1, k + 1);
        }
      }

(続く)
166側近中の側近 ◆0351148456 :2008/05/19(月) 22:58:48
>>165の続き

      printf("partMatrix={");
      for(j = 0; j < rowLength - 1; j++){
        printf("{");
        for(k = 0; k < colLength - 1; k++){
          printf("%f,", PART_MATRIX_FACT(j, k));
        }
        printf("\b},");
      }
      printf("\b}\n");
      minorDeterminant = getDeterminant(partMatrix, rowLength - 1, colLength - 1);
      printf("minorDeterminant=%f\n", minorDeterminant);
      free(partMatrix);
      determinant += minorDeterminant * (i % 2 == 0 ? 1 : -1) * MATRIX_FACT(i, 0);
    }
  }
catch:
  return determinant;
}
167側近中の側近 ◆0351148456 :2008/05/19(月) 22:59:56
>>156
(っ´▽`)っ
がんばりました☆
余因子展開により行列式を求める方法です
>>164-166
168デフォルトの名無しさん:2008/05/19(月) 23:29:04
いいかげんうpろだの使い方くらい覚えてくれ
169側近中の側近 ◆0351148456 :2008/05/19(月) 23:35:01
170デフォルトの名無しさん:2008/05/19(月) 23:35:03
ああ、ここまで長くなっていると書き込む前に分かっているなら
不必要にスレが流れるのを考慮して、マナーとして使うべきだろ
171側近中の側近 ◆0351148456 :2008/05/19(月) 23:36:07
>>170
(っ´ω`)っ いきててごめんね
172デフォルトの名無しさん:2008/05/20(火) 00:04:07
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):
  作成した「画像表示」のプログラムを、同じ画像を横に並べて
  表示するように修正せよ(「画像表示」のボタンに対応するプログラムを修正)。
  作成したプログラムはこちらです。
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6615.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: visual studio 6.0
 [3.3] 言語:C++
[4] 期限:20日正午まで
[5] その他の制限:
  「画像表示」のボタンに対応するプログラムは下の通りです。
  CWnd* myPICT=GetDlgItem(IDC_PICT);
  CClientDC myDC(myPICT);
  CRect myRECT;
  my PICT->GetClientRect(myRECT);
  int x,y;
  for(y=0;y<height;y=y+1)
  for(x=0;x<width;x=x;1)
  myDC.SetPixel(x,y,RGB(r[y][x],g[y][x],b[y][x]));


よろしくお願いします。
 
  
173デフォルトの名無しさん:2008/05/20(火) 00:04:21
>>161
質問です。
今、最近傍探索を調べているのですが、意味がよくわからないところがありますので、教えていただけますでしょうか。
1) k次元(ユークリッド)空間R^k 内にデータが n個散らばっている。
2) ここに、点P がある。
3) 点P にもっとも「近い」データを探し出したい。
というのが最近傍探索で、問題のアルゴリズムは、
4) , 3) でもっとも近いデータを探すのに「n 個のデータすべてについて距離を求め、一番距離が小さいものを求める」のは計算量が多くて大変!
5) そこで、とりあえず適当なデータQ と P との距離dを求め、
6) 辺の長さが 2d, 中心がP, 辺は座標軸に平行である k次元立方体 S を考え、
7) 領域探索アルゴリズムにて S 内にあるデータをすべて列挙し、
8) S 内のデータすべてと P との距離をそれぞれ求めて、一番距離小さいものを求める
ということでしょうか。
そうすると、5) の Q をとりあえず探す、というのが、非常に大事で、まかりまちがって P から遠い Q を選んでしまうと計算量を少なくできないですが、Q の選び方はどうすればよろしいのでしょうか?
以上の解釈でいいのでしょうか。
174デフォルトの名無しさん:2008/05/20(火) 00:38:41
>>172
int x,y;
for(y=0;y<height;y=y+1)
for(x=0;x<width;x=x;1)
myDC.SetPixel(x,y,RGB(r[y][x],g[y][x],b[y][x]));

int x,y,x2;
for(y=0,x2=0;y<height;y=y+1)
for(int i=0;i<2;i++)
for(x=0;x<width;x=x+1,x2++)
myDC.SetPixel(x2,y,RGB(r[y][x],g[y][x],b[y][x]));
175デフォルトの名無しさん:2008/05/20(火) 01:13:11
>>158
#include <stdio.h>
#define MAX 11
void putv(const char *s) {
do { putchar(*s++); printf("\n");
}while( *s != NULL && *s!='\n');
}
int main(void) {
char str[MAX];
fgets(str,MAX,stdin);
putv(str);
return 0;
}
176151 ◆rGsyzf.Kp2 :2008/05/20(火) 01:58:21
151ですがまだ終わってないぽいです・・・
やってくれるかたがいればおねがいします。
177デフォルトの名無しさん:2008/05/20(火) 02:12:50
>>174
ありがとうございました。
言い忘れたんですけど画像と画像の間を少し空けて表示させたいんですけど
どうなるでしょうか?
178デフォルトの名無しさん:2008/05/20(火) 02:37:37
>>158のポログラムが簡単そうだったから僕もつくてみたよー。

#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>

using namespace std;

void putv( const char* );

int main()
{
char s[] = "teststring";
putv( s );
}

void putv( const char* s )
{
string str( s );
copy( str.begin(), str.end(), ostream_iterator< char >( cout, "\n" ) );
}

どうすか、この華麗なるSTL。w
179デフォルトの名無しさん:2008/05/20(火) 02:49:07
もはやC++にこだわる意味すらない課題に・・・
180デフォルトの名無しさん:2008/05/20(火) 02:59:13
技巧に走るのは楽しいかもしれんが一人でやっててくれ
181デフォルトの名無しさん:2008/05/20(火) 03:23:57
何やってんだかわかりにくいコードはキモい。
182デフォルトの名無しさん:2008/05/20(火) 03:40:33
それはおまえだけ。
183デフォルトの名無しさん:2008/05/20(火) 03:45:32
短くもなきゃ効率言い訳でもない上見た目も悪くて最悪だろw
184デフォルトの名無しさん:2008/05/20(火) 03:48:49
お主ら、麻呂のクソースはいかがでおじゃる?1ソース100円でどうじゃ?
185デフォルトの名無しさん:2008/05/20(火) 04:00:19
STL を使ったプログラミングはこんなもんだぞ?
たとえばこの板でもおすすめの入門書
Accelareted C++ にもこういう構文が普通にでてくる。
「何やってんだかわかりにくい」ってのは STL の勉強不足だろ単に。
186デフォルトの名無しさん:2008/05/20(火) 04:01:20
いや、だからそれすら必要の無い単純なライブラリの自作で
面倒な、処理時間が掛かるようなことをして何がしたいんだと?
187デフォルトの名無しさん:2008/05/20(火) 04:06:56
Generic programming―STLによる汎用プログラミングでも似たようなコードがあったな。
しかし課題の趣旨にはあわんな。
188デフォルトの名無しさん:2008/05/20(火) 04:10:32
C++の課題に<stdio.h>とか使ってる人のいるスレですから。
Effective C++くらい読もうよ。
189デフォルトの名無しさん:2008/05/20(火) 04:17:28
void putv(const char *s) {
do { printf("%c\n",*s++);}while( *s != NULL); }
と比較したら、倍近く差が出るぞ?
190デフォルトの名無しさん:2008/05/20(火) 04:21:52
/* ここから宗教論争

課題がCではなくあえてC++だってところがミソだな。
Cライクなコードは書くなってことだから
型安全性と拡張性を持たないライブラリ関数は
いくら早くてもNGだろう。

ここまで */
191デフォルトの名無しさん:2008/05/20(火) 04:25:31
// Cライクなコメントを書くな。w
192デフォルトの名無しさん:2008/05/20(火) 04:53:43
どんな技術も使い手がヘボだと何の意味もないということがよくわかるな。
使いどころをわきまえてない。
193デフォルトの名無しさん:2008/05/20(火) 04:55:38
>>190
> いくら早くても
日本語でおk。C++だろうとwhileは特定の言語のものじゃないんで、あしからず。
あと、C++って結局Cの拡張。何か別物と勘違いする奴って笑われるぞw
194側近中の側近 ◆0351148456 :2008/05/20(火) 06:40:30
(っ´▽`)っ
>>169はどう?
195デフォルトの名無しさん:2008/05/20(火) 06:54:36
196デフォルトの名無しさん:2008/05/20(火) 07:01:21
>>194
ちゃんとは見ていませんが、Cプログラムとしては
なかなか良い作品ではないかと思いまつ。
だけど一般次数の行列式の計算なんてC言語のプログラミング実習
の問題の適切な範疇を遥かに超えてしまった課題じゃないかと思います。
C言語の世界はシステム記述が中心で一般論を非常に重視する世界だと思
います。
数値計算は数学の教科書の一般論がなかなか適用できず、問題に応じて
適切な方法を選択(考案)しなければいけない世界です。相当、系統の
違う専門分野だと思います。(一般論は欲しいのですが...)
197デフォルトの名無しさん:2008/05/20(火) 07:29:36
>>196
これは・・・w
198139:2008/05/20(火) 07:43:59
>>164-166 169
早速ありがとうございます。実行して出力した結果がどういうものか分からないんですが、
partMatrixとminorDeterminateがなにを表しているのか教えてください
あとプログラムの使い方も教えてほしいです。
たとえば3x3の行列式
4x+6y+2z=4000,2x+8y+6z=5000,6x+4y+4Z=4200
の場合と4x4の行列式
2w+1x+4y+3z=5,3w+2x+5y+0z=0,4w+3x+2y+1z=3,5w+0x+3y+2z=0
の場合の解を求めるには
このプログラムをどのようにすればいいのでしょうか?




199デフォルトの名無しさん:2008/05/20(火) 07:51:46
>>193
whileの話じゃない。詳しくはEffective C++参照。
200173:2008/05/20(火) 07:56:47
>>161
時間切れです。残念です。
こっそり仕事中にやれるのならやりますので(苦笑)、16:00 以降 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm をチェックしてください。
k-d tree の多次元化ははじめてで、おもしろいのではありますが‥‥‥、こういうおもしろい問題は、もっとはやく投げてほしかったですね。
まだエラーがとれないものを、http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6618.txt においておきます。
眠い。
201デフォルトの名無しさん:2008/05/20(火) 07:58:16
喧嘩すんな。コーディングの仕方なんぞ所詮宗教。
<stdio.h>が<cstdio>になり、<iostream>を使うよう推奨されても
<stdio.h>を使う人間は使い続ける。
202デフォルトの名無しさん:2008/05/20(火) 08:03:41
宗教じゃなくて
流儀
変数の命名の方法とか、所有権とか...
デフォを決めとかないと、コードが大きくなってしまった
場合に急ぎの作業が入ったらキツクなるから
流儀が設定されることもある。
必要悪
203デフォルトの名無しさん:2008/05/20(火) 08:11:43
C++標準で<stdio.h>が<cstdio>になったのは1998年だから
C++プログラムで<stdio.h>を使う人は10年以上前にC++を習得した人。

つまりおっさんPG。
204デフォルトの名無しさん:2008/05/20(火) 08:14:08
Cは1999年にC++標準の中のCとは互換性のないC99に改定されたので
Cに関しても10年以上前に習得した人ってこと。

どう考えてもおっさんPG。
205デフォルトの名無しさん:2008/05/20(火) 08:19:02
keep it simple.
206デフォルトの名無しさん:2008/05/20(火) 08:22:50
新しきを学び、古きを捨てましょう。
「アジャイルプラクティス-達人プログラマに学ぶ現場開発者の習慣」より
207デフォルトの名無しさん:2008/05/20(火) 08:25:28
>>194
C プログラムとしての指摘:
> double a[4][4] = ...
> getDeterminant((double)*a, ...)
これは多くの処理系で動くけれど、
ANSI Cの規格には従っていないことに注意。

アルゴリズムとしての指摘:
余因子展開で行列式を計算するのは O(n!) かかるので、非常に遅い。
ガウスの消去法などを用いると O(n^3) で計算できる。
208デフォルトの名無しさん:2008/05/20(火) 08:26:54
新しい技術を学ぶときには、足を引っ張りかねない古い習慣を捨てなさい。

見出しだけだと誤解を招くよ
209デフォルトの名無しさん:2008/05/20(火) 08:29:37
>>139
「行列式 (determinant)」という言葉を調べてこい。

4x+6y+2z=4000,2x+8y+6z=5000,6x+4y+4Z=4200 みたいなのは
行列式とは言わない。せいぜい 3×3連立方程式。
210デフォルトの名無しさん:2008/05/20(火) 08:33:50
cstdioはしらねーよ iostreamは知ってる
ウェブも本もcstdioはなかなかないのでは
211デフォルトの名無しさん:2008/05/20(火) 08:36:06
それだけ馬鹿が多いと言うことでしょう。
212デフォルトの名無しさん:2008/05/20(火) 08:41:35
それをバカと評価するあんたは何者だよ?w
現代において、自分が知っていることだけがすべてだと思う
思い上がりの方がバカを通り越した井の中の蛙だろ
213デフォルトの名無しさん:2008/05/20(火) 08:46:53
かの相対性理論で有名なアインシュタイン、相対性理論と言えば
光に関しても関わってくる話ではあるが、光速度を知らなかったのだよ、
アインシュタインは。何が重要か?必要に応じて必要なものを
取り込む頭がない奴は、現代のような無駄な生活をしていても
その無駄さえも 必要 という勘違いを始めるから困る。
または、無駄を省かない、省けない。誰かに指摘されるまでそうしている。
214デフォルトの名無しさん:2008/05/20(火) 08:48:14
バカかどうかは別にして。

<cstdio>よりも<iostream>を使うことが推奨されているから
<cstdio>を使っているC++の本は少ないだろうけど
<stdio.h>を使っているC++の本は(多分もう)一冊もないだろうと思う。
古い本でも版を重ねると直しているくらいだし。
少なくともC++の宿題に今<stdio.h>を使ったら
歳の行った人に答えを聞きましたってばれちゃう。
学校でもC++の授業で<stdio.h>は教えないだろうから。
215デフォルトの名無しさん:2008/05/20(火) 08:54:10
>>213
それは間違いだ。
アインシュタインの相対性理論は、光速度一定と言う仮定の上に成り立っている。
と言うことは、実際の速度がどれくらいかは兎も角光速度を知らないということにはならないな。
処で、馬鹿といわれて過剰に反応するのは何故だろう。余程、自覚があるのだろうか。
216デフォルトの名無しさん:2008/05/20(火) 08:59:59
光の速度が時速100kmだろうと1000000kmだろうと一定は一定
217デフォルトの名無しさん:2008/05/20(火) 09:15:16
<stdio.h>なんざincludeしやがったら
チームメンバーから袋だろ。w
名前空間を汚染するなって。
218デフォルトの名無しさん:2008/05/20(火) 09:25:06
>>202
その流儀に宗教が紛れ込みやすい。
というか完全に除去するのは不可能。
宗教は流儀に強い信頼性を与えるから
だろうけど。
修羅場で無くなった状態で、流儀が伝統
になってしまうとそこに潜む宗教という強い
力が全体を緩慢かつ堅固に拘束していくと
やっかい。
219デフォルトの名無しさん:2008/05/20(火) 09:25:39
そんな話じゃないだろ
脱線すんな
220デフォルトの名無しさん:2008/05/20(火) 09:54:27
<stdio.h>が<cstdio>になったのと
C++標準にSTLが組み込まれたのは同時期だから
いまだに<stdio.h>を使う人が
STLを使ったコードを理解できなくても不思議はない。
221デフォルトの名無しさん:2008/05/20(火) 10:02:16
ドッグイヤーどころかマウスイヤーといわれるITの世界で
10年以上前の規格を使い続けるやつなんて存在価値なし。
222デフォルトの名無しさん:2008/05/20(火) 10:02:32
ttp://ja.wikipedia.org/wiki/Standard_Template_Library
さすがに知らないとか理解できないとか、うざい。
あのコードが 無駄 だと気づけw
223デフォルトの名無しさん:2008/05/20(火) 10:08:55
>>178
> どうすか、この華麗なるSTL。w
こいつだろ、さっきっから理解できない奴がいる、自分は知ってるみたいな
華麗とか、マジでそれ 糞 だからw
224デフォルトの名無しさん:2008/05/20(火) 10:14:22
>>178はあきらかに悪質なジョークだろ。
おまえら反応しすぎ。どこまでコンプレックスなんだ。
225デフォルトの名無しさん:2008/05/20(火) 10:17:31
ttp://e-words.jp/w/STL.html
ふぅ〜ん、もう10年以上前ってレベルじゃねーぞっ。んで、知っているからって何?
知らない奴を見つけて楽しんでいるわけ?ケツの穴が小せぇなぁ。性格悪ぅ〜〜。
知っている奴もいるが、何そんなに必死に知らない奴を探してんの?って思われるだけだぞw
226デフォルトの名無しさん:2008/05/20(火) 10:19:58
iostream に printf 相当の書式指定が欲しい
IOマニピュレータ面倒すぎ
227デフォルトの名無しさん:2008/05/20(火) 10:21:44
>>226
過去に(模擬)宿題として出てたような
228デフォルトの名無しさん:2008/05/20(火) 10:25:49
>>224
いつものやつっぽいからそっとしておいてやれ
229デフォルトの名無しさん:2008/05/20(火) 10:26:05
いちいち << とかめんどくさいよな . とかなら1回押すだけで良いのに
230デフォルトの名無しさん:2008/05/20(火) 12:15:45
>>214
うちはC++の講義すら無い件。
Cの講義のみでひたすら<stdio.h>
231デフォルトの名無しさん:2008/05/20(火) 12:46:13
[1] C++
[2] 体重と身長の値から算出される指数の1つに
Body Mass Index(BMI)がある。
体重[kg]を身長[m]の2乗で割って計算し,
標準値は22.0とされている。

【問題】
キーボードから身長と体重を入力すると,
BMIが画面に出力されるプログラムを作成しなさい。
[3] 環境
 [3.1]Windows
 [3.2]VC?(よくわかりません)
 [3.3]C++
[4]5月27日 17時まで
[5]特にありません。

よろしくお願いします!
232デフォルトの名無しさん:2008/05/20(火) 13:19:11
// >>231
// 「キーボードから入力」と「画面に出力」が標準入出力のことじゃないならしらね。
#include <iostream>
int main()
{
int height;
int weight;
std::cin >> height >> weight;
std::cout << weight / (height / 100.0 * height / 100.0);
return 0;
}
233161:2008/05/20(火) 14:45:22
すいません、寝落ちしていました。
えっと、ここにc++版があります。
http://www.cs.umd.edu/~mount/ANN/
力不足なことに、私はc++を全く理解することができません。理解は時間があればできそうですが、時間が足りません(汗

>今、最近傍探索を調べているのですが、意味がよくわからないところがありますので、教えていただけますでしょうか。
>1) k次元(ユークリッド)空間R^k 内にデータが n個散らばっている。
>2) ここに、点P がある。
>3) 点P にもっとも「近い」データを探し出したい。
>というのが最近傍探索で、問題のアルゴリズムは、
>4) , 3) でもっとも近いデータを探すのに「n 個のデータすべてについて距離を求め、一番距離が小さいものを求める」のは計算量が多くて大変!
>5) そこで、とりあえず適当なデータQ と P との距離dを求め、
>6) 辺の長さが 2d, 中心がP, 辺は座標軸に平行である k次元立方体 S を考え、
>7) 領域探索アルゴリズムにて S 内にあるデータをすべて列挙し、
>8) S 内のデータすべてと P との距離をそれぞれ求めて、一番距離小さいものを求める
>ということでしょうか。
最近傍探索の考えはあっています。
ですが
5)まずkd木を探索して、点Pがどの立方体に所属するかどうかをさがし、その立方体の中に入っている点Q と P との距離dを求め超球を書く
6)超球に接している立方体、超球の中にある立方体をすべてリストアップする
7) 領域探索アルゴリズムにて 立方体群内にあるデータをすべて列挙し、
8) 立方体群内のデータすべてと P との距離をそれぞれ求めて、一番距離小さいものを求める
のうち領域探索アルゴリズムがわかりません。
どのようなアルゴリズムを組めば計算量が少なくて済むのか知恵を御借りしたいと考えて質問させていただきました。

234デフォルトの名無しさん:2008/05/20(火) 14:47:52
[1] C++
[2] 以下の処理を順に行うプログラムを作成しなさい。

>232 ありがとうございました!
まだ問題があったのでまたよろしくお願いします!
1. キーボードから整数を入力する。
2. 入力された整数が3の倍数のとき,
画面に「3の倍数です」と表示する。
[3] 環境
 [3.1]Windows
 [3.2]VC
 [3.3]C++
[4]5月27日 17時まで
[5]なし。
235デフォルトの名無しさん:2008/05/20(火) 14:55:48
>>234
if ( 入力 % 3 == 0 )
{
出力 3の倍数です
}

>>232 の内容と組み合わせて作りな
236c言語素人 ◆K0sCe6ES.U :2008/05/20(火) 16:05:08


[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):
各自で、カラー自然画像(出来れば画像中のオブジェクトが豊かな物)をみつけ、
kmeansによって画像中の要素を分類せよ。さらに、分類の数を変えながら、変化を観察せよ。(原文のまま)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限: 2008年5月23日 13:00まで
[5] その他の制限: 制限は特にありません。

ppmフォーマットの画像を読み込んで分類する(クラスター分析?)プログラムと言われたのですが、さっぱりわからないです・・・orz
どうかみなさんご協力おねがいしますm(_ _)m
237161:2008/05/20(火) 16:05:14
>173
ちなみに、233で書いたやつがANNという手法です。

ちなみに
>4) , 3) でもっとも近いデータを探すのに「n 個のデータすべてについて距離を求め、一番距離が小さいものを求める」のは計算量が多くて大変!
>5) そこで、とりあえず適当なデータQ と P との距離dを求め、
>6) 辺の長さが 2d, 中心がP, 辺は座標軸に平行である k次元立方体 S を考え、
>7) 領域探索アルゴリズムにて S 内にあるデータをすべて列挙し、
>8) S 内のデータすべてと P との距離をそれぞれ求めて、一番距離小さいものを求める
にあるように、超球の中にある点すべてについて探索するというのでは、結局全点について距離を比較しないといけなくなるので、
結局n^2の話になってしまいます。
kd木のnlognをスポイルしたくないというのはここに絡んできます。
ANNのこの手法が理解できればいいのですが…
ちなみに期限が延びましてあと2日になりました。
最悪223に書いたサイトからソース引っ張ってきてcで書いた私のソースとc++で書かれているソースをドッキングして性能を確かめることを考えていますが…
238デフォルトの名無しさん:2008/05/20(火) 17:45:01
c++でお願いします。
このtxtに追加して提出するように言われました。
助けてくれる方お願いします。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6619.txt
239デフォルトの名無しさん:2008/05/20(火) 17:54:20
>>238
何その頭の悪そうな日本語もまともに書けていない問題。
おまけに、C++でお願いされる内容がC言語理解度確認って何さ。
挙句の果てに、「文字列変数」ってstd::stringじゃないのかよ。
240デフォルトの名無しさん:2008/05/20(火) 17:55:25
Cには文字列変数はありません
241デフォルトの名無しさん:2008/05/20(火) 17:59:18
正の値である間ループし、負になったらループを抜けるって0になったらどうすんだよw
242デフォルトの名無しさん:2008/05/20(火) 18:23:06
正の0ならループして負の0ならループを抜けるんだろう。
243デフォルトの名無しさん:2008/05/20(火) 19:16:37
244デフォルトの名無しさん:2008/05/20(火) 19:21:41
>>243
you 要修正
245デフォルトの名無しさん:2008/05/20(火) 19:36:23
>>243
問10の回答って再起呼び出し? LISP?
246デフォルトの名無しさん:2008/05/20(火) 19:37:08
[1] 授業単元:C言語2
[2] 問題文int型変数x,yをキーボードから値を入力し、その大小を判定する関数funcを作成せよ
[3] 環境
 [3.1] OS: xp
 [3.2] コンパイラ名とバージョン: VC 6.0だと思います
 [3.3] 言語: C
[4] 期限:今週中
[5] その他の制限: ポインタを使用する
お願いしますm(_ _)m
247デフォルトの名無しさん:2008/05/20(火) 19:40:36
その辺ってさすがに自分でやったほうがよくね?

包丁でたまねぎを半分に切るのはどうすれば?っていう、そんなかんじ。
248デフォルトの名無しさん:2008/05/20(火) 19:52:50
>>245
再帰
249デフォルトの名無しさん:2008/05/20(火) 19:53:55
>>246
int func(int* x, int* y){
if (*x > *y) {
return 1;
} else if (*x < *y) {
return -1;
}
return 0;
}

一応こんな感じで作ってみた。
まぁ>>247の言う通りこの位自分でやるべきだとは思ったけどもね
250デフォルトの名無しさん:2008/05/20(火) 19:55:11
ってかもうマクロの世界だよな

#define MAX_VAL(x,y) return(x>y?x:y)

初めて引数付きマクロ書いた
動くか分からん
251デフォルトの名無しさん:2008/05/20(火) 19:55:44
int func(int* x, int* y){
if (*x > *y) {
return 1;
} else if (*x < *y) {
return -1;
}
return 0;
}
252デフォルトの名無しさん:2008/05/20(火) 21:13:49
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):
入力された数値を\とカンマ区切りに編集する関数YenConvertを作成せよ。

int YenConvert(int kingaku,int mode,char *buffer,int result);

引数1:編集用の数値(4桁以上でかつint型の範囲内の入力のみと仮定)
引数2:編集モード
 1:引数1の先頭に\を付ける(1000→\1000)
 2:引数1の先頭に\を付け、カンマを挿入(1000→\1,000)
引数3:数値編集の格納領域アドレス
引数4:引数3のアドレス先の領域サイズ

戻り値は正常:0 モード誤り:-1 編集用領域不足:-2

[3] 環境
 [3.1] OS:XP(自宅) / Vista(実習室)
 [3.2] コンパイラ名とバージョン:VC6.0
 [3.3] 言語: C言語
[4] 期限:(0時を挟むので)明日 午前2時頃
[5] その他の制限:特にありません。

春季基本情報合格祝いという名目で、ポインタなんて名前しか知らないのに課題が出ました…。
無茶と失礼は承知の上で、寝るまでの期限でお願い致します。
253デフォルトの名無しさん:2008/05/20(火) 21:16:49
度々すいません、>>252です。
記述漏れとミスがあったので訂正します。

int YenConvert(int kingaku,int mode,char *buffer,int bufferlen)

[5] その他の制限:YenConvertでは編集のみ。mainで値から編集した文字列の出力も行なうこと。
254デフォルトの名無しさん:2008/05/20(火) 22:23:17
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):for文を使ってひし形の作成せよ。
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン: 通常使用のPCがないのでわからないです。
 [3.3] 言語:C
[4] 期限: 金曜日まで
[5] その他の制限:配列使用不可

少し考えてみたソースです。
下半分がどうもできません。
#include <stdio.h>
void main(void) {
int dan,j,k;
for (dan=1; dan<=9; dan=dan+2){
for(j=1; j<=9-dan; j=j+2){
printf(" ");
}
for(k=1; k<=dan*2-1; k=k+2){
printf("*");
}
printf("\n");
}
}
255デフォルトの名無しさん:2008/05/20(火) 22:25:29
>>254
#include <stdio.h>
#include <stdlib.h>
#define min(x, y) (x<y)? x : y
int tmp;
#define list(n, s) for( tmp=n; tmp-- >0; ){ printf("%s",s); };

int main(void) {
const int dan=9;
int i;
for( i=0; i<9; i++ ){
list((abs(dan/2-i))," ");
list((min(i,dan-i-1))*2+1,"*");
puts("");
}
return 0;
}
256デフォルトの名無しさん:2008/05/20(火) 22:27:01
>>239みたいなのが日本語も頭も悪そうに見えるんだが・・・
言動には注意した方が良いぞ。
257デフォルトの名無しさん:2008/05/20(火) 22:49:38
>>255
ありがとうございました。
自分の説明不足なのですが、254のレスに書いた感じのソースで下半分作りたいのでそれと同じようなソースでお願いしたいのですが…。
258側近中の側近 ◆0351148456 :2008/05/20(火) 22:54:35
>>196
(っ´▽`)っ サンクス☆(抱

>>198
(っ´▽`)っ
partMatrix:部分行列
minorDeterminate:小行列式
getDeterminantの第1引数に行列のポインタ、第2引数にその行列の行数、第3引数に列数を設定する。
行列式を求めるわけだから、第2引数と第3引数は同じでなければならない。

4x+6y+2z=4000,2x+8y+6z=5000,6x+4y+4Z=4200の解は、クラメルの公式より、
x=({{4000, 6, 2}, {5000, 8, 6}, {4200, 4, 4}}の行列式)/({{4, 6, 2}, {2, 8, 6}, {6, 4, 4}}の行列式)
y=({{4, 4000, 2}, {2, 5000, 6}, {6, 4200, 4}}の行列式)/({{4, 6, 2}, {2, 8, 6}, {6, 4, 4}}の行列式)
z=({{4, 6, 4000}, {2, 8, 5000}, {6, 4, 4200}}の行列式)/({{4, 6, 2}, {2, 8, 6}, {6, 4, 4}}の行列式)

2w+1x+4y+3z=5,3w+2x+5y+0z=0,4w+3x+2y+1z=3,5w+0x+3y+2z=0の解は、クラメルの公式より、
w=({{5, 1, 4, 3}, {0, 2, 5, 0}, {3, 3, 2, 1}, {0, 0, 3, 2}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)
x=({{2, 5, 4, 3}, {3, 0, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)
y=({{2, 1, 5, 3}, {3, 2, 0, 0}, {4, 3, 3, 1}, {5, 0, 0, 2}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)
z=({{2, 1, 4, 5}, {3, 2, 5, 0}, {4, 3, 2, 3}, {5, 0, 3, 0}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)
259側近中の側近 ◆0351148456 :2008/05/20(火) 22:55:19
>>207
(っ´▽`)っ
ほうほう・・・もっと勉強しよっと☆ありがと♥(抱
260デフォルトの名無しさん:2008/05/20(火) 22:56:02
菱形ってことだから、斜めに配置しないでこんなんでいいじゃん。
*********
*********
*********
*********
*********
*********
*********
*********
*********
261139:2008/05/20(火) 23:08:26
>>258
自分の説明不足みたいでごめんなさい。

  一般の連立1次方程式の解法プログラムを作成しなさい

って問題なので、最終的に
2w+1x+4y+3z=5,3w+2x+5y+0z=0,4w+3x+2y+1z=3,5w+0x+3y+2z=0の解は、クラメルの公式より、
w=({{5, 1, 4, 3}, {0, 2, 5, 0}, {3, 3, 2, 1}, {0, 0, 3, 2}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)
x=({{2, 5, 4, 3}, {3, 0, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)
y=({{2, 1, 5, 3}, {3, 2, 0, 0}, {4, 3, 3, 1}, {5, 0, 0, 2}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)
z=({{2, 1, 4, 5}, {3, 2, 5, 0}, {4, 3, 2, 3}, {5, 0, 3, 0}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)

のような行列式を出力を期待しているのではんく、w=1,x=100,y=1000,z=10000などのように出力するのではないでしょうか?
せっかく作ってもらったのに文句言ってすいません。
262デフォルトの名無しさん:2008/05/20(火) 23:16:37
263デフォルトの名無しさん:2008/05/20(火) 23:43:36
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
"end"が入力されるまでキーボードから入力を受付け、入力されたらそれを入力の逆順に表示する。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年5月22日22:00まで
[5] その他の制限:charのポインタを対象としたスタックを使う

よろしくおねがいします。
264デフォルトの名無しさん:2008/05/21(水) 00:04:45
[1] 授業単元:プログラミングT

[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6626.txt
[3] 環境
 [3.1] OS:(WindowsXP)
 [3.2] コンパイラ名とバージョン:VC++2005
 [3.3] 言語:C++
[4] 期限:5月23日
[5] その他の制限:問題文中に記載してあります。


   よろしくお願いしますm(__)m 。
265デフォルトの名無しさん:2008/05/21(水) 00:11:21
>>263
問題がわからん
266デフォルトの名無しさん:2008/05/21(水) 00:16:49
>>264
#include<stdio.h>
#include<math.h>

#define PI 3.14159

int main(void){
int alpha, degree;
double theta;

printf("終了する角度を入力してください ");
scanf("%d", &alpha);

for(degree=0;degree<=alpha;degree+=5){
theta=PI*degree/180;
printf(" 角度θ= %d°sinθ= %.5f cosθ= %.5f\n", degree, sin(theta), cos(theta));
}
return 0;
}
267266:2008/05/21(水) 00:17:29
間違えた。言語指定C++じゃん
268デフォルトの名無しさん:2008/05/21(水) 00:39:00
>>265
入力されたものをプッシュして、
endが入力されたらポップした順番に表示すればいいみたいです。
269デフォルトの名無しさん:2008/05/21(水) 00:42:32
>>268
文字単位、行単位?
270デフォルトの名無しさん:2008/05/21(水) 00:43:31
>>268
行単位です。何度もすみません。
271デフォルトの名無しさん:2008/05/21(水) 00:49:40
>>257
これで良いかな?

#include <stdio.h>
void main(void) {
int dan,j,k;
for (dan=1; dan<=9; dan=dan+2){
for(j=1; j<=9-dan; j=j+2){
printf(" ");
}
for(k=1; k<=dan*2-1; k=k+2){
printf("*");
}
printf("\n");
}

for (dan=7; dan>0; dan=dan-2){
for(j=1; j<=9-dan; j=j+2){
printf(" ");
}
for(k=1; k<=dan*2-1; k=k+2){
printf("*");
}
printf("\n");
}
}
272デフォルトの名無しさん:2008/05/21(水) 00:52:16
>>264
#include <iostream>
#include <iomanip>
#include <cmath>
#define PI 3.14159
using namespace std;
int main(){
double alpha, r=5.0;
cout << "終了する角度を入力してください " ; cin >> alpha;
cout << showpoint << setprecision(5);
for(double i=0; i <= alpha ; i += r)
cout << "角度θ= "<< (int)i << " sinθ= " << sin(i*PI/180) << " cosθ= " << cos(i*PI/180) <<endl;
}
273264:2008/05/21(水) 01:09:19
>>272
>>266

結果確認しました。
ありがとうございましたm(__)m
274デフォルトの名無しさん:2008/05/21(水) 01:14:35
>>252
とりあえずカンマ入れるモードだけ作った。

int YenConvert(int kingaku, int mode, char *buffer, int result)
{
int min_buf_size, tmp, sign, digit;
char *p;

/* */
if (!buffer) return -3;

/* mode check */
if (mode != 1 && mode != 2) return -1;

/** calc required buf size by kingaku **/
/* get sign */
sign = kingaku < 0 ? -1: 1;
/* abs */
kingaku = kingaku < 0 ? -kingaku : kingaku;
/* digit */
tmp = kingaku / 10;
digit = 1;
while(tmp > 0) {
digit++;
tmp /= 10;
}
/* buf size */
min_buf_size = 1; /* nul terminator */
if (sign == -1) min_buf_size++;
min_buf_size += digit + (digit-1)/3;
275デフォルトの名無しさん:2008/05/21(水) 01:15:18
>>274 つづき

/* check buf size */
if (result < min_buf_size) return -1;

p = buffer + min_buf_size;
*(p--) = '\0';
tmp = 0;
while (1) {
*(p--) = (kingaku % 10) + '0';
kingaku /= 10;
digit--;
tmp++;
if (digit <= 0) break;
if ((tmp) % 3 == 0) (*p--) = ',';
};

*(p--) = '\\';
if (sign == -1) *(p--) = '-';
}
276デフォルトの名無しさん:2008/05/21(水) 01:20:46
>>263
#include <stdio.h>
#include <string.h>

#define TRUE 1
int main(void);

int main(){
char s[100][100];
int i=0;
while(TRUE){
fgets(s[i],100,stdin);
if(strcmp(s[i],"end\n")==0){break;}
i++;
}
for(;i>=0;i--){
printf("%s",s[i]);
}
return 0;
}
277デフォルトの名無しさん:2008/05/21(水) 01:26:48
>>263
スタックにつむならこうだろ常識的に考えて

#include <stdio.h>

int func()
{
char s[100];
fgets(s, 100, stdin);
if (strcmp(s, "end\n") == 0) return;
func();
printf("%s", s);
}

int main(void)
{
func();
}
278デフォルトの名無しさん:2008/05/21(水) 01:35:03
>>252
int YenConvert(int kingaku,int mode,char *buffer,int result)
{
char work[20], *p=work;
char *fmt[][2]={{NULL, NULL}, {"%d", "%03d"}, {"%d", ",%03d"}};
int div, kingaku_abs;

if(mode!=1 && mode!=2) return -1;
kingaku_abs=abs(kingaku);
*p++='\\';
for(div=1;kingaku_abs/div>=1000;div*=1000);
p+=sprintf(p, fmt_set[mode][0], kingaku/div);
for(div/=1000;div>0;div/=1000) p+=sprintf(p, fmt[mode][1], (kingaku_abs/div)%1000);

if(strlen(work)+1>result) return -2;
strcpy(buffer, work);

return 0;
}
279デフォルトの名無しさん:2008/05/21(水) 01:39:40
280デフォルトの名無しさん:2008/05/21(水) 01:45:57
>>277
その発想はなかったwww
281デフォルトの名無しさん:2008/05/21(水) 01:51:29
>>252です。
この時間まで足掻いても先頭に\付けるだけで精一杯…。
お答え頂いた>>262 >>274-275 >>278の方々に感謝します。
講師に何を言おうか考えつつ寝ます。遅くまでありがとうございました。
282デフォルトの名無しさん:2008/05/21(水) 01:57:14
>>277
うはwたしかにそうだわww
283デフォルトの名無しさん:2008/05/21(水) 02:07:22
>>252
おっと、時間切れか?
int YenConvert(int kingaku, int mode, char *buffer, int result)
{
char work[30], *p0 = work, *p;
if(mode != 1 && mode != 2 ) return -1;
*p0++ = '\\';
if(kingaku < 0) {
*p0++ = '-';
kingaku = -kingaku;
}
sprintf(p0, "%d", kingaku);
if(mode == 2) {
for(p=p0+strlen(p0); p>p0+3; p-=3) {
memmove(p-2, p-3, strlen(p-3)+1);
p[-3] = ',';
}
}
if(strlen(work)+1 >= result) return -2;
strcpy(buffer, work);
return 0;
}
284デフォルトの名無しさん:2008/05/21(水) 02:16:02
CやC++、PASCALやDelphiとかの構造化プログラミング言語流の
スタックアーキテクチャーにあんまし慣れすぎないほうがいいと思うぞ
特に10代からCとかやってた奴は。5年はプログラムから離れて
適当に忘れたほうがいい。

(本来は30・40代から始めても遅くないというか、むしろ相応しい
ものなんだけどね==>C言語)
285デフォルトの名無しさん:2008/05/21(水) 02:38:48
>>284
なぜそう思うのか教えていただきたいです。
286デフォルトの名無しさん:2008/05/21(水) 02:50:09
宿題に関係ないから出てけ
287デフォルトの名無しさん:2008/05/21(水) 02:55:52
オブジェクト指向でコードが書けなくなっちゃうから、とか言い出しそうな
雰囲気だな。
288デフォルトの名無しさん:2008/05/21(水) 02:57:08
>>284
頭大丈夫?
289デフォルトの名無しさん:2008/05/21(水) 05:23:10
>>288みたいな人を>>284は心配しているのだと思う
290デフォルトの名無しさん:2008/05/21(水) 05:28:43
あぁ、まぁ人それぞれだ。主観でモノを言っても話にならないんで
具体的にどういうことなのか?そんなのは扱ってみりゃ分かる
291デフォルトの名無しさん:2008/05/21(水) 06:31:18
使えてれば何の問題もないと思うんだが。

それよりも他に気にすることはあるだろ。
292デフォルトの名無しさん:2008/05/21(水) 06:35:44
     i:::::::::::::i:::::::;:::::::::::::::::::::::::/i:::::/ i::::::::::::::::::::::|
     |::::::::::::|:::::/::::::::::;:::::::::/ /:::/  i::::::i:::::::::::::i たとえば『地球温暖化』だ。
     |:::::::::::|:::::i:::::::/::::/  /:::/   |::::|:::::::::::/ CO2排出量増加による地球温暖化は常識だね?
     ∨:::::::|::::|:::::イ:::/   /:::/    |::::|:::::::::/ そう、常識だ。いや、常識だと多くの人々が思っている。
      ∨:::::|:::| ̄ナナ=、  /::Zz=='"T:T|:::::::/  だが、実はCO2が地球温暖化の原因だという証拠は無いんだよ。  
      ∨:::|::|::ャ代戌ナ= // 弋戌テT:ァi::::::/   そもそも地球温暖化という現象は仮説に過ぎない。 
       ∨:::i:i/ i/     /      i/./:::::/,_,, そう主張する人も少なくない。
       rヤ::::|i. !    /       /i::::::ハ Y  ふっ、どうも私は口下手で困るよ。
      ,,イrヤ::::|ゝ.      i     / ,イ::::< .〉 .ト、 つまり常識を疑えということだ。
    rイ! レヤ:::|i .ゝ.   _ _     .イ.|:::/ ソ  ! ト‐、
>ー''フ/''|  | ヤi::| i .|\      // |::/ /    ト、 `ー、
   / i   i ャヤi j  > 、  //./  |:i /    | Y
293デフォルトの名無しさん:2008/05/21(水) 06:43:23
そーゆー問題じゃなくて、Webアプリケーション化の流れは
速度は遅いが着実にそちらの方向に流れてるということだ。
294デフォルトの名無しさん:2008/05/21(水) 06:53:18
ナイナイ
295デフォルトの名無しさん:2008/05/21(水) 07:19:50
[1] 授業単元:プログラミング
[2] 問題文ライフゲームを作成せよ
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: (
[4] 期限: 今週中(できるだけ早めでお願いします)
[5] その他の制限:特になし
296デフォルトの名無しさん:2008/05/21(水) 07:20:51
↑言語はCでお願いします
297デフォルトの名無しさん:2008/05/21(水) 07:23:47
地球おんかんばは天文学的な話にもなるかもしれん。まぁ、何が原因かはともかく
過去の気象データと比較して、平均気温が上がった場所、局地的に熱くなった
あるいは寒くなった場所、今まで冬を越さなかった生き物が長々と生息して
生態系が変わるとか、色々とありますからね・・・何が自然か?まぁ俺の戯言はこの辺でw
298デフォルトの名無しさん:2008/05/21(水) 07:24:28
>>295
ライフゲームって、人生ゲームみたいなテーブルゲームを文字ばかりで作れと?
299デフォルトの名無しさん:2008/05/21(水) 07:26:42
Conway'sLifeGameだろ。JK
300デフォルトの名無しさん:2008/05/21(水) 07:30:15
訂正。Conway's Game of Life だった。
301デフォルトの名無しさん:2008/05/21(水) 08:30:53
>>295
仕様があいまいすぎwww
もっと担当者と要求仕様詰めてから出直せwwww
302デフォルトの名無しさん:2008/05/21(水) 09:16:47
#include<stdio.h>
#define JUMYOU 82
int main(void){
int age=0;
char ch='\0';
printf("年齢%d歳:出生",age);
age++;
getchar(&ch);
while(age<JUMYOU){
printf("現在の年齢%d歳",age);
getchar(&ch);
age++;
}
printf("年齢%d歳:ご臨終",age);
puts("あなたは寿命を全うしました。");
return(0);
}
303デフォルトの名無しさん:2008/05/21(水) 12:09:04
[1] 授業単元: C言語 for文
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6629.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: CygnusVer.2.02.1
 [3.3] 言語: C
[4] 期限: ([2008年5月22日17:00まで]
[5] その他の制限:for文使用。

よろしくお願いします!
304デフォルトの名無しさん:2008/05/21(水) 12:13:59
>>303
#include <stdio.h>

int main(void){
int i, j, n;

printf("段数を入力してください:");
scanf("%d", &n);

for(i=0;i<n;i++){
for(j=0;j<n-1-i;j++) printf(" ");
for(j=0;j<i*2+1;j++) printf("*");
printf("\n");
}
return 0;
}
305デフォルトの名無しさん:2008/05/21(水) 12:24:06
>>304
ありがとうございます!!
306デフォルトの名無しさん:2008/05/21(水) 12:26:26
>>303
左右が対象には見えないw
307デフォルトの名無しさん:2008/05/21(水) 12:50:50
お願いしますm(._.)m
携帯からなので後ほど途中まで自分でやったものアップします。

[1] 授業単元:ファイルの入出力
[2] 問題文:
in.txtに入力された文をout.txtに番号をつけて出力する

〜例〜
(in.txtの内容)
気になっていることがあるとなかなか眠れない
小さなことでイライラする

根に持つタイプだ

(out.txt)
0001:気になっていることがあるとなかなか眠れない
0002:小さなことでイライラする
0003:
0004:根に持つタイプだ


[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C++
[4] 期限:2008年5月21日23:00まで
[5] その他の制限:
308デフォルトの名無しさん:2008/05/21(水) 12:58:01
309デフォルトの名無しさん:2008/05/21(水) 13:08:30
1〜N(入力した任意の数)まで数を数えるとき、3の倍数のときに気持ちよく
5の倍数で激しくなる(ry
310デフォルトの名無しさん:2008/05/21(水) 13:13:32
>>307
#include <stdio.h>

int main(void)
{
FILE *in, *out;
char buff[256];
int i;

if((in=fopen("in.txt", "r"))==NULL) return 0;
if((out=fopen("out.txt", "w"))==NULL) return 0;

for(i=0; fgets(buff, sizeof buff, in); i++) fprintf(out, "%04d:%s", i, buff);

fclose(in);
fclose(out);

return 0;
}
311デフォルトの名無しさん:2008/05/21(水) 14:04:28
[1] 授業単元:コンピュータ言語
[2] 問題文:
  ある文章を入力して、その中に含まれる「数字の個数」を求め、
  戻り値で返す関数と、その関数を呼び出して下記のように表示する
  プログラムを作成せよ。
  例えば、
  aiueo12kakikukeko34
と打ち込むと、「数字の数:4」と表示する。
  関数は、 int count(char*s) とする。

[3] 環境
 [3.1] OS:WindowsXP
 [3.3] 言語:C++
[4] 期限:5月22日の午後4時まで

よろしくお願いします
312311:2008/05/21(水) 14:06:01
追記として、

#include<cctype>
#include<iostream>
using namespace std;
int strch_cnt(const char* s,char c)
{
int i=0;
while (*s)
{
if(*s == c) i++;
s++;
}
return i;
}
int main()
{
char s[40];
char c;
cout << "文字列:";
cin >> s;
cout << "\n";
cout << "カウントする文字:";
cin >> c;
cout <<"\n";
cout << "文字数は:"<< strch_cnt(s,c) << "\n";
return 0;
}

↑のプログラムを参考に作ればいいとのことですが、
どうやって数字の個数のみを求め、表示させればいいのかが分かりません
313デフォルトの名無しさん:2008/05/21(水) 14:07:05
世の中のたいていのテクニック本には
charよりもstringを使え
ポインタ渡しではなく参照渡しできないかどうかもう一度考えろ
って書いてあるのに
どうして学校の授業はchar*とか普通に使いたがるのだ。
314デフォルトの名無しさん:2008/05/21(水) 14:36:27
世に出ているテクニック本の怪しさときたら....
プログラミングの経験を積めば積む程そう感じるものなのだが....
315デフォルトの名無しさん:2008/05/21(水) 14:41:37
>>311
#include <cctype>
#include <iostream>
using namespace std;

int count(char *s)
{
int i = 0;
while(*s)
{
if(isdigit(*s)) i++;
s++;
}
return i;
}
int main()
{
char s[40];
cout << "文字列:";
cin >> s;
cout << "\n";
cout << "数字の数:" << count(s) << "\n";
return 0;
}
316デフォルトの名無しさん:2008/05/21(水) 14:56:03
>>314
・3・) エェー セックスとデートのハウツー本は役にたつよな?
317デフォルトの名無しさん:2008/05/21(水) 14:56:42
cin >> s;

のところで1000文字くらい打ち込んでみようかな。
318デフォルトの名無しさん:2008/05/21(水) 15:10:44
>>312を参考にしろって言った出題者に文句言ってくれ
319デフォルトの名無しさん:2008/05/21(水) 15:24:24
[1] 授業単元:プログラミング演習U
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6631.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C++
[4] 期限:2008/05/23
[5] その他の制限:適切な制御構造を用い,読み直した時に理解しやすいプログラムにする.
よろしくお願いします.
320デフォルトの名無しさん:2008/05/21(水) 15:26:30
こうか?
std::cin.getline(s, sizeof(s));
321デフォルトの名無しさん:2008/05/21(水) 15:35:02
>>135で依頼した者です。

>>149のかた迅速な解答ありがとうございます。
実際に学校のPCで動作を確認したところ
セグメンテーション違反というエラーがでてしまいました。

どのようにすればよいでしょうか?
322デフォルトの名無しさん:2008/05/21(水) 16:06:52
>>319
a,b,cをint型変数としてscanfでコンソール等から取得
( (a>0)&&(b>0)&&(c>0) )をチェック 満たされてない場合は
再取得するか、プログラムを終了しろ
( (a+b>c)&&(a+c>b)&&(c+b>a) )
これを満たしてないと三角形にはならないので、その旨表示して終了
((a==b)&&(b==c))
これが真の場合は正三角形だから正三角形と表示
((a==b)||(c==b)||(a==c))
これが真の場合は二等辺三角形だから二等辺三角形と表示
(正三角形と判定された場合、この条件の判定はしない)
( (a*a+b*b==c*c)||(a*a+c*c=b*b)||(c*c+b*b==a*a) )
これが真の場合は直角三角形だから直角三角形と表示
(直角二等辺三角形と表示したい場合はあと一工夫いる)
( ( a*a+b*b>c*c ) && (a*a+c*c>b*b) &&(b*b+c*c>a*a) )
これが真の場合は、鋭角のみで構成された三角形だから鋭角三角形と表示
これが真でない場合は、鈍角を持った三角形と表示する。

これをヒントに後は自分で書け
323デフォルトの名無しさん:2008/05/21(水) 16:16:23
>>319
#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

int main(void){
int a[3], chk;
string s1, s2;

cin >> a[0] >> a[1] >> a[2];
sort(&a[0], &a[2+1]);

if(a[0]<=0 || a[2]>=a[0]+a[1]){
cout << "三角形として不可能な3辺の長さです" << endl;
return 0;
}

chk=a[2]*a[2]-(a[0]*a[0]+a[1]*a[1]);
if(chk==0) s1="直角";
else if(chk<0) s1="鋭角";
else s1="鈍角";

if(a[0]==a[2]) s2="正", s1="";
else if(a[0]==a[1] || a[1]==a[2]) s2="二等辺";
else s2="不等辺";

cout << s1 << s2 << "三角形" << endl;

return 0;
}
324307:2008/05/21(水) 16:43:06
>>310
ありがとうございます!!

ヒントで配られたプリントを参考にして作ってみましたのですが
ファイルを入力するところまでこれで合ってますか?
(10は行数で256は文字数です)

#include<fstream.h>

main()
{
char line[10][256];

ifstream fin("in.txt", ios::in);

if(!fin){
cerr << "error" << endl;
exit(1);
}
for(int i=0;i<10 ; i++){
while(!fin.eof()){
fin.getline(line[i], 256);
}
}
fin.close();
325デフォルトの名無しさん:2008/05/21(水) 16:46:37
>>324
ふざけすぎだろ?
326デフォルトの名無しさん:2008/05/21(水) 16:53:43
>>322
ヒントと回答をありがとうございました.
ヒントのおかげでだいたいの形は完成しました.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6632.txt
しかし,直角二等辺三角形と表示するための一工夫だけがどうしてもわからないので,教えてはいただけないでしょうか?
お願いします!
>>323
また,回答ありがとうございました.
しかし,かなり難しくて理解ができません・・・・わざわざしてもらったのにすみません.
327デフォルトの名無しさん:2008/05/21(水) 16:54:33
3PB2GBX エクスプレス \94,224 Inspiron Desktop 530s インテル(R) Core(TM) 2 Duo プロセッサー E6750(4MB L2 キャッシュ 2.66GHz 1333MHz FSB)
Windows XP Pro Service Pack 2/OfficeProfessional 2007 4GB(1GBx4) 500GB DVD+/-RW ATI(R) RADEON(R) X1300 Pro 256MB DDR(DVI/TV-Out付) On Board Dell マウス(USB,オプティカル,2ボタン,ホイール付,ブラック)/19メディア対応カードリーダー/ライター

3YS2GBX エクスプレス \74,839 XPS Desktop 420 スタンダードシャーシ インテル(R) Core(TM) 2 Quad プロセッサー Q6600(8MB L2 キャッシュ 2.40GHz 1066MHz FSB)
Windows Vista Home Premium 2GB(1GBx2) 500GB DVD+/-RW NVIDIA(R) GeForce(R) 8600 GTS 256MB DDR(DVIx2/TV-out付) On Board Dell プレミアムマウス(USB,オプティカル,4ボタン,ホイール付)

5YS2GBX エクスプレス \122,995 XPS Desktop 420 スタンダードシャーシ インテル(R) Core(TM) 2 Quad プロセッサー Q6600(8MB L2 キャッシュ 2.40GHz 1066MHz FSB)
Windows Vista Home Premium/Office(Personal & PowerPoint) 2007 4GB(1GBx4) 500GB DVD+/-RW NVIDIA(R) GeForce(R) 8800 GT 512MB DDR(DVIx2/TV-out付) Sound Blaster(R) X-Fi Xtreme Music(D) PCIサウンドカード Dell プレミアムマウス(USB,オプティカル,4ボタン,ホイール付)

6VR2GBX エクスプレス \63,053 Vostro Desktop 200 スリムタワー インテル(R) Core(TM) 2 Duo プロセッサー E4500(2MB L2 キャッシュ 2.20GHz 800MHz FSB)
Windows Vista Business 32ビット/OfficePersonal 2007 2GB(1GBx2) 250GB DVD/CD-RWコンボドライブ ATI(R) RADEON(R) HD 2400 Pro 256MB HyperMemory(TM)(DVI/TV-out付) On Board Dell マウス(USB,オプティカル,2ボタン,ホイール付,ブラック)/19メディア対応カードリーダー/ライター

9NG4GBX エクスプレス \134,611 XPS Desktop 420 スタンダードシャーシ インテル(R) Core(TM) 2 Quad プロセッサー Q6600(8MB L2 キャッシュ 2.40GHz 1066MHz FSB)
Windows Vista Home Premium/OfficePersonal 2007 4GB(1GBx4) 500GB ブルーレイディスクドライブ NVIDIA(R) GeForce(R) 8800 GT 512MB DDR(DVIx2/TV-out付) On Board Dell プレミアムマウス(USB,オプティカル,4ボタン,ホイール付)

CD85GBX エクスプレス \83,532 Vostro Desktop 200 スリムタワー インテル(R) Core(TM) 2 Duo プロセッサー E6550(4MB L2 キャッシュ 2.33GHz 1333MHz FSB)
Windows Vista Ultimate 32ビット/OfficePersonal 2007 4GB(1GBx4) 160GB DVD+/-RW ATI(R) RADEON(R) XT 2400 256MB HyperMemory(TM)(DVI/TV-out付) On Board Dell マウス(USB,オプティカル,2ボタン,ホイール付,ブラック)
328307:2008/05/21(水) 16:54:54
>>325
やはり間違ってますか?
僕もこれで実行してみたけど出来ませんでした…。
プリントの変数など変えただけなんですが
329デフォルトの名無しさん:2008/05/21(水) 17:13:52
>>327
うぉぉぉ Q6600 が安いぜぇぇぇぇ!
って、すでにQ6600を持ってるけどさ・・・。

DELLエクスプレスは安いけど
めったにディスコティップのいいのはでないのと
あらかじめ現金用意しとかないといけないのが難点だな。
330デフォルトの名無しさん:2008/05/21(水) 17:38:05
>>307
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>

using namespace std;

int main(void){
ifstream in("in.txt");
ofstream out("out.txt");
string s;
int i;

for(i=1;;i++){
getline(in, s);
if(in.fail()) break;
out << setw(4) << setfill('0') << i << ":";
out << s << endl;
}

return 0;
}
331デフォルトの名無しさん:2008/05/21(水) 17:58:02
>>326
直角でかつ二等辺三角形が直角二等辺三角形だよね。
がんばれー
332307:2008/05/21(水) 17:59:43
>>330

ありがとうございます
すごく参考になりますた。
333デフォルトの名無しさん:2008/05/21(水) 18:03:29
>>332
ぜってえ理解してねえwww
参考になってないだろwww
334デフォルトの名無しさん:2008/05/21(水) 18:10:46
>>331
アドバイスありがとうございます!こんな感じでいいんでしょうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6633.txt
335デフォルトの名無しさん:2008/05/21(水) 18:12:11
>>334
C++じゃないの?
336307:2008/05/21(水) 18:13:31
>>333
正直stringとかusing namespace とか習ってないす。爆
けど0001:の表示の仕方とかわかっただけでも充分です!
337デフォルトの名無しさん:2008/05/21(水) 18:16:25
>>335
今使用してるのが「Visual C++ 6.0」なので
C++だとおもっていたんですが・・・・
もしかしてCだったんですかね?
勘違いさせてすみません.
338デフォルトの名無しさん:2008/05/21(水) 18:28:49
人を刺しておいて手に持っているのが包丁だったので調理だと思ってましたと言ってるようなものだ
339デフォルトの名無しさん:2008/05/21(水) 18:37:35
Visual C++ 6.0は
for文内で定義したインデックス変数のスコープがfor文の外になっちゃったり
maxやminのような一部ライブラリが使えなかったり
標準C++への準拠度が低いから
すぐにでもVisual C++ 2008に移行したほうがいいよ。
どう考えてもそのレベルじゃMFCは使わないだろうか
無料のExpressエディションで十分だろうし。

あと、Cを勉強するのにC++は使わないほうがいい。
Cは現在第2版になっていて、C++とは互換性ないから。
340デフォルトの名無しさん:2008/05/21(水) 18:46:34
>>334
ずいぶんと方針を変えたねw
いろんな入力を試して、望ましい結果が出てるならOKだとおもうよ。
あとは無駄なロジックを見つけて、省けるようになれば十分かな。

>>336
とりあえず得るものはあったのかw
ならおkww
341デフォルトの名無しさん:2008/05/21(水) 18:49:43
>>323

sort(&a[0], &a[2+1]);

の一文がスマートだね。
あらかじめソートしておけば条件が探しやすい。
342ケータイから:2008/05/21(水) 18:54:30
>>311
#include<iostream>
#include<string>
using namespace std;
int iGetNumInString(string str);
int main()
{
string str='\0';
//なんかstring型に文字列入力させるコードがあるのでそれ呼んで↓
//getline(cin,str);
int num=iGetNumInString(str);
cout << num << endl;
return(0);
}
int iGetNumInString(string str)
{
int num=0;
for(int i=0;str.c_str()[i]!='\0';i++){
if(str.c_str()[i]>='0'&&str.c_str()[i]<='9'){
num++;
}
}
return(num);
}
343ケータイから:2008/05/21(水) 18:56:18
string型の初期化ミスった
自重する

344デフォルトの名無しさん:2008/05/21(水) 20:14:42
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
nまでの自然数の平方の和の公式は, 1*1 + 2*2 + ... + n*n = n(n+1)(2n+1)/6である.
まず, 要素が101の配列a[0],a[1], ..., a[100]のそれぞれに,各配列の添え字までの自然数の平方の和を計算し,
代入する. (a[1] = 1, a[2] = 5, ...などとする(a[0] = 0とする).
次に, 自然数mを1つ読込み, その平方の和がはじめてmを超えるような自然数x, すなわち, a[x]>mとなるような最小の自然数xと,
その次の行にa[x]を出力するプログラムを作成しなさい.(自然数が入力されない場合は想定する必要はない.)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C言語
[4] 期限:2008年05月22日18:00まで
[5] その他の制限:配列・文字列まで習ってます。
345デフォルトの名無しさん:2008/05/21(水) 20:39:59
>>344
#include <stdio.h>

int main(){
int a[101];
int i,num;

a[0] = 0;
for(i = 0;i < sizeof(a)/sizeof(a[0]);i++){
a[i+1] = a[i] + (i+1)*(i+1);
}

printf("m > ");
scanf("%d",&num);

for(i = 0;num >= a[i];i++){}

printf("%d\n%d",i,a[i]);

return 0;
}
346デフォルトの名無しさん:2008/05/21(水) 20:43:23
[1] 授業単元:情報処理
[2] 問題文:以下のプログラム(一部)における内部仕様を作成せよ
http://www.toel.sytes.net/~toel/cgi-bin/upload/stored/up2711.txt
機能概要
モジュールインタフェース(引数、戻り値)
内部変数
処理の流れ
上記4項目についてお願いします
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限: ([2008年05月24日23:59まで] または [無期限] のいずれか)
[5] その他の制限:特になし


347デフォルトの名無しさん:2008/05/21(水) 21:00:18
[1] 授業単元:関係演算子
[2] 問題文(含コード&リンク):
関係演算子を使って5つの整数の最大値と最小値を求めよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: c
[4] 期限: 2008/5/23

超初歩的な問題なんですが、かなり頭悪くて解けません。よろしくお願いします。
348347:2008/05/21(水) 21:00:54
あ、条件演算子でした
349デフォルトの名無しさん:2008/05/21(水) 21:04:42
>>347書き直し
5つの整数はどのように与えられるのか
最大値、最小値を求めたら表示などをするのか
350デフォルトの名無しさん:2008/05/21(水) 21:05:02
>>347
#include<stdio.h>

int main(void){
int data[]={4,7,2,1,9};
int i, maximum, minimum;

maximum=minimum=data[0];
for(i=1;i<sizeof(data)/sizeof(data[0]);i++){
maximum=data[i]>maximum?data[i]:maximum;
minimum=data[i]<minimum?data[i]:minimum;
}
printf("max:%d min:%d\n", maximum, minimum);

return 0;
}
351デフォルトの名無しさん:2008/05/21(水) 21:07:26
>>346
Cは関数の途中で変数宣言できないんじゃないのかな?
352デフォルトの名無しさん:2008/05/21(水) 21:08:42
[1] 授業単元:プログラミング実習

[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6635.txt
[3] 環境
 [3.1] OS:(WindowsXP)
 [3.2] コンパイラ名とバージョン:VC++2005
 [3.3] 言語:C++
[4] 期限:5月24日
[5] その他の制限:問題文中に記載してあります。


   よろしくお願いしますm(__)m 。
353デフォルトの名無しさん:2008/05/21(水) 21:12:22
gets();
puts("");
354デフォルトの名無しさん:2008/05/21(水) 21:15:02
>>349
5つの整数はscanfで読み取る形で、最大値と最小値は表示します。

>>350
for文は習っていません…。
355デフォルトの名無しさん:2008/05/21(水) 21:26:35
>>352
#include<iostream>
#include<string>

using namespace std;

int main(void){
string str, str_new;

cout << "文字列を入力してください. ";
getline(cin, str);
cout << "文字列の長さは " << str.size() << " です." << endl;

for(int i=0;i<str.size();i++){
if(isupper(str[i])) str_new+=tolower(str[i]);
else if(islower(str[i])) str_new+=toupper(str[i]);
else if(isdigit(str[i])) str_new+=str[i];
}
cout << "変換された文字列: " << str_new << endl;
return 0;
}
356デフォルトの名無しさん:2008/05/21(水) 21:40:37
357デフォルトの名無しさん:2008/05/21(水) 21:46:46
>>351
関数の先頭ではなく、ブロックの先頭で宣言可能
358347:2008/05/21(水) 21:46:50
書き直しました。もう一度お願いします。

[1] 授業単元:プログラミング実習

[2] 問題文:if文の条件演算子(? , :)を使って、
scanfで読み取る5つの整数の最大値と最小値を表示せよ。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2]gcc
 [3.3] 言語:c
[4] 期限:5月23日
[5]if文まで習いました。

359デフォルトの名無しさん:2008/05/21(水) 21:48:48
>>311
#include <iostream>
#include <string>
using namespace std;

int iCountNum( string str );

int main()
{
string str = "\0";
cout << "文字列入力" << ends;
getline( cin, str );

int num = iCountNum( str );

cout << "数字の数:" << num << endl;

return( 0 );
}

int iCountNum( string str )
{
int count = 0;
for( int i = 0; str[ i ] != '\0'; i++ ){
if( str[ i ] >= '0' && str[ i ] <= '9' ){
count++;
}
}

return( count );
}
360デフォルトの名無しさん:2008/05/21(水) 21:50:21
>>346
インデントをはずす関数だと思う
361360:2008/05/21(水) 21:51:33
はずすじゃなくてタブによるインデントをスペースによるインデントに
変更する、ですね。
viにおけるexpandtab
362デフォルトの名無しさん:2008/05/21(水) 21:53:30
>>346
コード読みにくいから読みやすくして
363デフォルトの名無しさん:2008/05/21(水) 21:55:10
>>358
>[2] 問題文:if文の条件演算子(? , :)を使って、
三項演算子じゃね?        ~~~~
364347:2008/05/21(水) 21:57:21
>>363
入門書に3項の演算子と記してあるのでたぶんそうだと思います。
365デフォルトの名無しさん:2008/05/21(水) 21:58:47
366デフォルトの名無しさん:2008/05/21(水) 22:03:59
>>347,358
int a,b,c,d,e;
/* 適当にabcdeを読み込む */
printf("max %d min %d\n",
(((a>=b?a:b)>=(c>=d?c:d)?(a>=b?a:b):(c>=d?c:d))>=e)?
((a>=b?a:b)>=(c>=d?c:d)?(a>=b?a:b):(c>=d?c:d)):e,
(((a<=b?a:b)<=(c<=d?c:d)?(a<=b?a:b):(c<=d?c:d))<=e)?
((a<=b?a:b)<=(c<=d?c:d)?(a<=b?a:b):(c<=d?c:d)):e
);

こういうことじゃなくて?
367デフォルトの名無しさん:2008/05/21(水) 22:09:09
int max;
max = a>=b?a:b;
max = max>=c?max:c;
max = max>=d?max:d;
max = max>=e?max:e;
printf( "%d",max);
これでいいんじゃない?
if文無いけど
368デフォルトの名無しさん:2008/05/21(水) 22:12:03
>>365
コードの読みやすさなんて人それぞれだからもういいけどさ('A`)

for文を抜ける条件が見つからない><
ぎぶあっぷ
369デフォルトの名無しさん:2008/05/21(水) 22:13:30
GNUスタイルで書かれてるしほんとにvimのソースなのかも?
370デフォルトの名無しさん:2008/05/21(水) 22:14:37
>>368
return してるよ。
371デフォルトの名無しさん:2008/05/21(水) 22:15:31
あとタブサイズを8にすればインデント的には見やすく。
細切れ連投スマヌ
372347:2008/05/21(水) 22:16:11
>>366-367
どちらも正解でした。ありがとうございます。

>>367さんのコードは読みやすいですね
373352:2008/05/21(水) 22:20:32
>>355-356

実行結果確認しました。

ありがとうございましたm(__)m

374デフォルトの名無しさん:2008/05/21(水) 22:24:23
2次方程式ax^2+bx+c=0のabcを入力すると答えをだすプログラムを作成せよ
って問題です。

実数の時は出来たのですが重解と虚数のときが上手くいきません。
どこがおかしいでしょうか。
375デフォルトの名無しさん:2008/05/21(水) 22:25:06
>>374の自分で作ってみたプログラミングは↓です
#include <stdio.h>
#include <math.h>

main(){
double a,b,c,D,x1,x2,x3,x4,x5;

printf("a=");
scanf("%lf",&a);
printf("b=");
scanf("%lf",&b);
printf("c=");
scanf("%lf",&c);

D=b*b-4*a*c;
printf("判別式=%lf\n",D);

if(D>0){
x1=(-b+sqrt(D))/2*a;
x2=(-b-sqrt(D))/2*a;
printf("実根:x=%lf,%lf\n",x1,x2);
}
else if(D=0){
x3=-b/2*a;
printf("重根:x=%lf\n",x3);
}
else{
x4=-b/2*a;
x5=sqrt(-D)/2*a;
printf("虚根:x=%lf+%lfi,x=%lf-%lfi\n",x4,x5,x4,x5);
}
}
376デフォルトの名無しさん:2008/05/21(水) 22:26:18
>>375
else if(D=0)
これを
else if(D==0)
にすると?
377デフォルトの名無しさん:2008/05/21(水) 22:27:42
a=3
b=1
c=3
と打つと
D=-35

虚根:x=-1.5+-0.00000i,x=-1.5--0.00000i
と出てきます。
378デフォルトの名無しさん:2008/05/21(水) 22:29:45
b/2*a
こういうのを
b/2/a もしくは b/(2*a)
にしてみては?
379375:2008/05/21(水) 22:31:06
>>376
ああああああああああああああああああああああ
初心者がしやすい間違いとか言う奴ですねw
重解のときは正解しましたw
380375:2008/05/21(水) 22:38:33
>>378
直したら虚根のときも出来るようになりました。

x5=sqrt(-D)/2*a
これは
どうやって計算してるんですか?

√D÷2×aとも違うような気がするんですが
381デフォルトの名無しさん:2008/05/21(水) 22:40:35
382デフォルトの名無しさん:2008/05/21(水) 22:43:56
>>380
hogeを2×aで割りたいのなら、
 hogeを2で割った結果をさらにaで割る → hoge/2/a
か、
 2×aを先に計算して、それで割る → hoge/(2*a)
という方法になる。

解の公式的には後者のほうが見やすいかも。

非常に惜しいところまでいっていたよw
383375:2008/05/21(水) 22:48:46
>>382
ありがとうございます。

ついでにaの場合を考慮しないとダメな時はどうやって付け加えれば良いのですか?
384375:2008/05/21(水) 22:54:22
これで良いんですかね?
if(a==0){
x6=-c/b;
printf("x=%lf\n",x6);
}

if(a!=0){


if(D>0){
x1=(-b+sqrt(D))/(2*a);
x2=(-b-sqrt(D))/(2*a);
printf("実根:x=%lf,%lf\n",x1,x2);
}
else if(D==0){
x3=-b/(2*a);
printf("重根:x=%lf\n",x3);
}
else{
x4=-b/(2*a);
x5=sqrt(-D)/(2*a);
printf("虚根:x=%lf+%lfi,x=%lf-%lfi\n",x4,x5,x4,x5);
}
}
}
385デフォルトの名無しさん:2008/05/21(水) 22:55:30
>>383
if(a == 0){
x = c/ b;
printf("----");
}else{
//>>375の中身
}

あと、演算子には優先順位ってのがあって*/は同じ優先順位で左から右へ順に計算される。
だから、a/b*cはa/bしたものにcをかけるって意味になる。
つ 参考に
演算子の優先順位
http://c-production.com/special/04092101.html

386デフォルトの名無しさん:2008/05/21(水) 23:02:41
>>271

私が考えたやり方と同じように作りなおして下さってありがとうございました。
今、環境がないので確認できませんがやってみます。
助かりました。
387382とか:2008/05/21(水) 23:06:06
>>384
そう、それでいいよw
ここまで自力でできたのに何でできないんだろう?って思ってたw

あとはif(a!=0)をelseにしてもいいし、いろいろ書く事ができるんです。
人によっていろんな書き方があるので、丸写ししてる生徒が
いれば先生にはバレバレということです。

ちなみに解用の変数はx1x2の2個だけでもできるので、
そのように変えてみなさい、という宿題を出しときます。

>>385
フォローアップサンクス
388375:2008/05/21(水) 23:08:07
>>385
>>387
elseやifのなかにelseやifを入れても良いのですね
初心者すぎて知りませんでした><
389346:2008/05/21(水) 23:42:09
タブをスペースに変換してるのはなんとなく分かるのですが、
具体的な条件分岐が分からないのでだいたいでもいいのでよろしくお願いします
390デフォルトの名無しさん:2008/05/21(水) 23:42:49
>>381
無理に transform して 2 pass になってるな。ぜんぜん華麗じゃない。
391デフォルトの名無しさん:2008/05/21(水) 23:51:40
>>355の方法は早いがメモリが2倍必要になる。
>>356は間違ってる。
>>381は2passで遅い。

しかし1passでやろうとすると各要素の操作と要素の削除が同時に発生する。
stringは要素の削除に時間がかかるから微妙なところだな。
392デフォルトの名無しさん:2008/05/21(水) 23:52:05
[1] 授業単元
C言語
[2] 問題文
int array[]={30,29,69,-1454,22224,-23.65.23.66,77}をバブルソートを使って昇順しなさい
[3] 環境
OS:XP 使用テテキストエディタ:MicrosoftVisualC++ 使用言語:C
[4] 期限: 金曜日まで
[5] その他の制限
プログラム中に
#define FLAG_NUM 10
#define FLAG_OFF 0
#define FLAG_ON 1
を使う

393デフォルトの名無しさん:2008/05/21(水) 23:53:37
ちなみに途中まで教えてもらったソースが
#define DATA 10
#define FLAG_OFF 0
#define FLAG_ON 1
int array[]={30,29,69,-1454,22224,-23.65.23.66,77};
#include<stdio.h>
int main(void)
{
int t,i=0,w=0,j=0.c=0
char flg;
for(i=0;i<DATA-1;i++)
{
flg=FLAG_OFF;
for(j=0;)j<DATA-1;j++)
{
までです。このFLAG_OFFとかを使う意味がよく分かりません
正解を少しみしてもらって記憶しているif(flg|=FLAF_ON)を使う意味とか
if(flg|=FLAF_ON){
break;
}
の「break」が何をやっているのかがさっぱりです
どうか教えてください;;
394デフォルトの名無しさん:2008/05/21(水) 23:55:01
「FLAG_NUM」が「DATA」になってました
すいません
395デフォルトの名無しさん:2008/05/21(水) 23:56:11
[1] 授業単元: C++実習1
[2] 問題文(含コード&リンク):
#include <windows.h>
#include <stdio.h>

int main()
{
RECT rc;
SetRect(&rc, 0, 0, 640, 480);
printf_s("(%d, %d) - (%d, %d)\n", rc.left, rc.top, rc.right, rc.bottom);
SetRectEmpty(&rc);
printf_s("(%d, %d) - (%d, %d)\n", rc.left, rc.top, rc.right, rc.bottom);
return 0;
}
上記のプログラムを、以下の説明にしたがって変更せよ。
クラスの名前は Rect に。
Rect クラスのメンバ変数 left、top、right、bottom は public で int 型に。
SetRect 関数と SetRectEmpty 関数は Rect クラスの public メンバ関数に。
上記メンバ関数の戻り値は void に。
上記メンバ関数の引数はメンバ関数として適切なものになるようにする。
作成したクラスをテストする main 関数を作成する。
これは RECT 構造体をテストした main 関数を同程度のもので良い。
入出力は IO ストリームを使う。windows.h と stdio.h のインクルードは無し
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C++
[4] 期限: なし
[5] その他の制限:なし

よろしくお願いします
396デフォルトの名無しさん:2008/05/22(木) 00:17:14
>>395
#include<iostream>
class Rect{
public:
int left,top,right,bottom;
void Rect::SetRect(int left,int top,int right,int bottom){
this->left = left;
this->top = top;
this->right = right;
this->bottom = bottom;
}
void Rect::SetRectEmpty(void){
left = top = right = bottom = 0;
}
};
int main(void){
Rect rc;
rc.SetRect( 0, 0, 640, 480);
std::cout << "(" << rc.left << ", " << rc.top << ") - (" << rc.right << ", " << rc.bottom << ")" << std::endl;
rc.SetRectEmpty();
std::cout << "(" << rc.left << ", " << rc.top << ") - (" << rc.right << ", " << rc.bottom << ")" << std::endl;
return 0;
}
397デフォルトの名無しさん:2008/05/22(木) 00:18:01
>>393
if(flg|=FLAF_ON){
break;
}
このコード毎回実行されると思うんだけど。つまり無意味な条件だと思うんだけど。
398デフォルトの名無しさん:2008/05/22(木) 00:23:02
>>396
途中で移動させたから不要な「Rect::」がついてる orz
「void SetRect(」「void SetRectEmpty(」でおk
399デフォルトの名無しさん:2008/05/22(木) 00:26:35
[1] 授業単元: C言語実習
[2] 問題文(含コード&リンク):
#include <stdio.h>
int main(void)
{
int age[10],cnt[5];
int i;
//年齢データ
age[0]=40; age[1]=41; age[2]=40; age[3]=43; age[4]=39;
age[5]=43; age[6]=40; age[7]=41; age[8]=39; age[10]=43;
cnt[0]=0; cnt[1]=0; cnt[2]=0;
cnt[3]=0; cnt[4]=0;
//ここからを変更
for(i=0;i<10;i++){
}
//ここまでを変更
for(i=0;i<5;i++){
printf("%d歳の人数:%d人\n",i+39,cnt[i]);
}
return 0;
}

問題文:ここから変更〜ここまで変更の中身を書いて各年齢の人数をカウントするプログラムを完成せよ。
[3] 環境
 [3.1] OS: WindowsXP 言語:C
[4] 期限: 5月23日まで

どうかよろしくお願いします。

400デフォルトの名無しさん:2008/05/22(木) 00:30:39
各年代じゃなくて?
401デフォルトの名無しさん:2008/05/22(木) 00:33:32
>>400
各年齢らしいです
39歳が二人、40歳が三人…みたいに表示させるプログラムを組めとの事でした
402デフォルトの名無しさん:2008/05/22(木) 00:36:49
>>399
//ここからを変更
for(i=0;i<10;i++){
cnt[age[i]-39]++;
}
//ここまでを変更

あと、age[10]=43; → age[9]=43;
しかしひどいプログラムだ。
403デフォルトの名無しさん:2008/05/22(木) 00:44:13
>>402
>あと、age[10]=43; → age[9]=43;
あ、本当ですね…申し訳ないです

正常に動作したのを確認しました
迅速な解答有難うございます
404デフォルトの名無しさん:2008/05/22(木) 00:48:17
【質問テンプレ】
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6638.txt

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2008年5月22日22:00まで
[5] その他の制限:特になし

木構造やスタックやポインタやらで何が何だか分からなく混乱してしまいます…。
よろしくお願いします。
405デフォルトの名無しさん:2008/05/22(木) 00:53:08
>>391
もう質問者的には解決してるっぽいけど、1passでメモリ食わないように書いてみた。
速いかどうかは分からない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6639.cpp
(UTF-8にしないと化ける…)
406デフォルトの名無しさん:2008/05/22(木) 00:57:45
>>392
バブルソートってのが何なのかはわかるんだよね?
普通はこんな風にフラグなんか使わずに終わると思うんだ。
#include <iostream>
using namespace std;
int main()
{
int array[]={ 30, 29, 69, -1454, 22224, -23, 65, 23, 66, 77 };
int size = sizeof( array ) / sizeof( int );
for( int i = 0; i < size; i++ ){
cout << array[ i ] << "," << ends;
}
cout << endl;
for( int i = size; i >= 0; i-- ){
for( int k = i - 1; k >= 0; k-- ){
if( array[ i ] < array[ k ] ){
int temp = array[ i ];
array[ i ] = array[ k ];
array[ k ] = temp;
}
}
}
for( int i = 0; i < size; i++ ){
cout << array[ i ] << "," << ends;
}
return( 0 );
}
407393:2008/05/22(木) 01:04:20
#define DATA_NUM 10
#define FLAG_OFF 0
#define FLAG_ON 1

int array[]={30,29,69,-1454,22224,-23.65.23.66,77};
#include<stdio.h>
int main(void)
{
int tmp,i=0,w=0,j=0,counter=0;
char chgflg;
for(i=0;i<DATA_NUM-1;i++)
{
chgflg=FLAG_OFF;
for(j=0;j<DATA_NUM-1;j++)
{
if(array[i]>array[i+1])
{
tmp=array[i];
array[i]=array[i+1];
array[i+1]=tmp;
chgflg=FLAG_ON;
}
}
if(chgflg != FLAG_ON)
{
break;
}
}
408デフォルトの名無しさん:2008/05/22(木) 01:06:31
C言語だったので書き直し
#include <stdio.h>
int main( void )
{
    int i = 0, temp = 0;
    int firstKey = 0, secondKey = 0;
    int array[]={ 30, 29, 69, -1454, 22224, -23, 65, 23, 66, 77 };
    int size = sizeof( array ) / sizeof( int );
    for( i = 0; i < size; i++ ){
        printf( "%d, ",array[ i ] );
    }
    puts("");
    for( firstKey = size; firstKey >= 0; firstKey-- ){
        for( int secondKey = firstKey - 1; secondKey >= 0; secondKey-- ){
            if( array[ firstKey ] < array[ secondKey ] ){
                temp = array[ firstKey ];
                array[ firstKey ] = array[ secondKey ];
                array[ secondKey ] = temp;
            }
        }
    }
    for( i = 0; i < size; i++ ){
        printf( "%d, ",array[ i ] );
    }
    return( 0 );
}
409393:2008/05/22(木) 01:07:31
ミスりましたごめ
410デフォルトの名無しさん:2008/05/22(木) 01:08:48
>>407
せめて出題者なら自分でコンパイルしてよ
「小数点が多すぎる」ではじかれるでしょうよそれ
411デフォルトの名無しさん:2008/05/22(木) 01:10:35
>>405
ぐっジョブ。理想的アルゴリズム。
消費メモリは少なく速度も速くstringの弱点も回避。
412デフォルトの名無しさん:2008/05/22(木) 01:12:39
>>391
>>356って何が間違ってるの?
413デフォルトの名無しさん:2008/05/22(木) 01:14:07
【質問テンプレ】
[1] 授業:プログラム演習
[2] 問題文:

while文、do〜while文、for文をそれぞれ用いて、
1からnまでの偶数と奇数の合計をそれぞれ求めるプログラムを3通り作成せよ。

<実行例>
整数を入力してください。
10
偶数の合計:30
奇数の合計:25


[3] 環境
 [3.1] Windows XP
 [3.2] gcc
 [3.3] C

[4] 期限:2008年5月22日22:00まで
[5] その他の制限:特になし


よろしくお願いします。

414デフォルトの名無しさん:2008/05/22(木) 01:17:06
>>236ってどうやるんだ?
415デフォルトの名無しさん:2008/05/22(木) 01:17:18
>>412
実際にコンパイルして質問の例どおりに入力して味噌汁。
416デフォルトの名無しさん:2008/05/22(木) 01:17:23
>>408
昇順できましたッ
本当にありがとうございました!!
417デフォルトの名無しさん:2008/05/22(木) 01:18:46
>>412
「・その他ならば削除.」の仕様を満たしていない。
個人的にはstringの宣言も微妙。
418デフォルトの名無しさん:2008/05/22(木) 01:31:36
>>416
フラグ使ってないよ

>>417
ああ、削除してないのね

>>413
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6640.c
419デフォルトの名無しさん:2008/05/22(木) 01:35:24
>>418
ありがとうございました
420デフォルトの名無しさん:2008/05/22(木) 03:10:44

【質問テンプレ】
[1] 授業単元: プログラミング基礎
[2] 問題文:
問題1実行すると大吉、吉、凶、大凶のどれかを表示するおみくじプログラムを作れ。
ただし、大凶があまり多いと精神衛生に悪いので、大凶の確率は5%とせよ。
問題2コンピュータが乱数で決めた数字(0から99までの間)を人間が当てるゲームを作れ。
人間が推測した数字を入れると、コンピュータはそれより大きいか小さいか答える。
例)% a.out
数字を当ててください? 50
それより大きいです。
数字を当ててください? 75
それより小さいです。
数字を当ててください? 62
当たりです。
問題3逆に人間が決めた数字(0から99までの間)をコンピュータが当てるゲームを作れ。
なるべく少ない回数で当てるようにすること。
大きいか小さいか当たりかは1, -1, 0を入力することで伝える。
例)% a.out
その数字は50ですか? 1
その数字は75ですか? -1
その数字は62ですか? 0
当たった!
[3] 環境
 [3.1] OS: (mac)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C++)
[4] 期限: 明日まで(5/23、21時まで)

本当に初心者で勉強してるのですが、さっぱりわからず、
しかしながら単位はとらないと留年しそうなので
本当によろしくおねがいいたします。
421デフォルトの名無しさん:2008/05/22(木) 04:28:27
>>420
まだ出来ませんか。
422173:2008/05/22(木) 04:56:55
>>161,233,237
遅くなりましたが、k-d tree による領域探索部分だけが完成いたしました。
5次元まで確認しています。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6641.txt

これは、領域探索のテストプログラムとなっています。データを発生させて、直接チェックした結果と k-d tree を使用して探索した結果の両方を出力します。
#define K で次元をかえることができます。
main() の min, max で各座標軸の探索範囲を指定しています。
#define MAX はデータ数です。
動かしてみた感じでは、k-d tree の構築が重たいです。教科書によると、上に示した方法では、計算量はο(n log^2 n) のオーダーとのことです。

引き続き、作業いたします。
眠たい。
423デフォルトの名無しさん:2008/05/22(木) 05:33:03
神降臨か?
424デフォルトの名無しさん:2008/05/22(木) 05:45:32
>>420
ヒントね。
(1)
乱数を生成させてその値が0.05以下である確率は5%だ(建前は)
だからその値が0.05以下の時に大凶を出す。
残りの95%の3分の1の確率で大吉・吉・凶を出せばいいんだね。
ということは、その値が0.05より大きく0.95/3+0.05以下である時に
大吉、0.05+0.95/3より大きく0.05+0.95*2/3以下の時に吉
それ以外の時に凶を出せばいいんだ。
(2)
これは簡単だから自分でやれ。出来るまで留年しろ
(3)
2分探索でぐぐるんだ。
コンピュータが2分探索をする際に値を比較するが
その値を人間に答えさせるようにコードを改造するんだ。
425デフォルトの名無しさん:2008/05/22(木) 05:46:50
なんか最近、妙な香具師が紛れこんでるな・・・
スレタイ、スレの趣旨が分かってない奴。
ソースで答える気がないならレスしなくて良いよ。
お前一人の存在なんて無くても問題ないから。
426デフォルトの名無しさん:2008/05/22(木) 07:12:54
気に入らない質問やレスはスルーの方向で
それなりの動作確認テストと冗長性を最適化したソースを
伴わないレスはご遠慮下さい
427デフォルトの名無しさん:2008/05/22(木) 07:13:05
428デフォルトの名無しさん:2008/05/22(木) 07:14:00
>>426
気に入る入らない以前にスレの趣旨に沿ってないから
ヒントなんて書かないで結構。丸投げで質問した奴が自分でやるかよw
429側近中の側近 ◆0351148456 :2008/05/22(木) 07:16:20
>>420
(っ´▽`)っ
留年すればいいじゃない☆
430デフォルトの名無しさん:2008/05/22(木) 07:19:10
ヒントを出すくらいなら、その内容を実行するコードを書いてくれ
431デフォルトの名無しさん:2008/05/22(木) 07:39:05
普通、出来る友達の回答をメールで転送して提出するに決まってる
じゃん。
今時ネットに丸投げする優秀な学生のほうが珍しいんとちゃうか?
432デフォルトの名無しさん:2008/05/22(木) 07:45:37
自分で一切やろうともしないで丸投げの奴が多いよな
433デフォルトの名無しさん:2008/05/22(木) 07:52:36
ちなみに俺大学講師で情報処理の講義やってるけど
宿題スレはチェックして丸写しのやつは評価半分にしてる。
さすがに不可にはしないけどな。
434デフォルトの名無しさん:2008/05/22(木) 07:56:34
せっかく大学側が練習する時間を与えてくれてるのに・・・。
後になって困るのはサボった自分だって、想像力働かないのかね?
435デフォルトの名無しさん:2008/05/22(木) 08:10:17
友達がいない可能性も。
436デフォルトの名無しさん:2008/05/22(木) 08:17:18
もし俺が講師だったら、チェックだけでなく、わざわざ回答してあげる。
但し、バグも入れ、コンパイルも出来ないように工夫する。
自分のソースが提出されても、ABCD評価で
A:バグ修正されてる
B:バグは修正されてないが、コンパイルは通る
C:コンパイルは通らないが、コードは自分で入力してる
D:コードも自分の書いたものの、まんま
だが、こういうのははっきり言って危険な楽しみで絶対にやっては
ならないことだな。
437デフォルトの名無しさん:2008/05/22(木) 08:26:45
438デフォルトの名無しさん:2008/05/22(木) 08:26:57
>>420
問1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* 変数宣言 */
int res, n = 0;
const char* omikuji[4] = {"大凶", "凶", "吉", "大吉"};

void main()
{
/* 実行時の時間で乱数を初期化して実行ごとに違う結果を得られるようにする */
srandom((unsigned int) time(NULL));
/* 0〜19の20通りの乱数を得る。20分率、5%刻み。 */
res = random() % 20;
if(res >= 18) /* 確率10%で大吉 */
++n;
if(res >= 15) /* 確率15%で吉 */
++n;
if(res >= 1) /* 確率70%で凶 */
++n;
puts(omikuji[n]); /* 確率 5%で大凶 */
}
439デフォルトの名無しさん:2008/05/22(木) 08:32:22
おい!おまえらいい加減にしろよ!
なんでC++の問題なのにCで回答よこすんだよ!
440デフォルトの名無しさん:2008/05/22(木) 08:33:51
>>439
C++はCを含む。だから++。
441デフォルトの名無しさん:2008/05/22(木) 08:34:02
キニスンナ、数値計算の部分はそのままで、あとは適当に
cin,coutに書き換えチャイナと
442デフォルトの名無しさん:2008/05/22(木) 08:35:28
>>440
じゃあ>>438を修正無しにC++でコンパイルしてみろよ、ハゲ!
443デフォルトの名無しさん:2008/05/22(木) 08:42:18
>>440
素直にC++知りませんって言ったらどうかな
444デフォルトの名無しさん:2008/05/22(木) 08:44:55
また基地外STL野郎が必死になってるよ・・・
445デフォルトの名無しさん:2008/05/22(木) 08:46:06
>>442
srandomで引っかかるだろうけど、それを直せば別にC++コンパイラでも通るかと
446デフォルトの名無しさん:2008/05/22(木) 09:20:00
>>445
srandom以外にもrandomとvoid mainもあるな。
後者はg++とかだと駄目。

正直、糞ったれなコードすぎるんで、
意図的に変なコード書いてる気もするけど。
447デフォルトの名無しさん:2008/05/22(木) 09:31:45
>>446
じゃあ、お手本を・・・
448デフォルトの名無しさん:2008/05/22(木) 09:45:17
>>446
お前がやってから言えよw
449デフォルトの名無しさん:2008/05/22(木) 09:45:47
>>446
夜中の3時にも関わらず、1時間弱で催促してる>>421に切れたんじゃね?w
ざっくりC++に修正してみた
#include <cstdio>
#include <cstdlib>
#include <ctime>
/* 変数宣言 */
int n = 0;
const char* omikuji[4] = {"大凶", "凶", "吉", "大吉"};
int main()
{
/* 実行時の時間で乱数を初期化して実行ごとに違う結果を得られるようにする */
std::srand((unsigned int) std::time(NULL));
/* 0〜19の20通りの乱数を得る。20分率、5%刻み。 */
int res = std::rand() % 20;
if(res >= 18) /* 確率10%で大吉 */
++n;
if(res >= 15) /* 確率15%で吉 */
++n;
if(res >= 1) /* 確率70%で凶 */
++n;
std::puts(omikuji[n]); /* 確率 5%で大凶 */
return 0;
}
450デフォルトの名無しさん:2008/05/22(木) 09:52:40
×1時間弱
○1時間強
そんなところより>>420に問題2と3があったのにいまさら気が付いたw
出勤までに暇があったらこれもC++に修正するか
451デフォルトの名無しさん:2008/05/22(木) 09:57:41
くどいがうpロダ使ってくれ・・・ソース以外のレスで流れているし・・・
452デフォルトの名無しさん:2008/05/22(木) 10:21:11
C++の課題にCライクなソースを書いても
間違いじゃないだろうけど減点されると思うぞ。
せっかくなんだからいい点取らせよう。
453デフォルトの名無しさん:2008/05/22(木) 10:21:32
2chブラウザ使ってないの?
454デフォルトの名無しさん:2008/05/22(木) 10:33:43
>>452
良い点とりたきゃ自分で考えろ
455デフォルトの名無しさん:2008/05/22(木) 10:41:36
【質問テンプレ】
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク)
身長 150 cm から 170 cm までの標準体重(BMI法で計算)によるの対応を
表示するプログラムを for 文を使って作成せよ。
標準体重は小数点以下を1桁だけ表示すること。


[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:特になし
[5] その他の制限:特になし
456デフォルトの名無しさん:2008/05/22(木) 10:43:03
>>420
>>427さんのを忠実にC++に変更してみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6646.txt

>>451
1レスに収まる範囲だから別にいいかと思ってた スマソ
457デフォルトの名無しさん:2008/05/22(木) 11:41:03
>>420
チャオ!
>>438だけど、なんかもう全面的に反省して問2を書いてみた。
今度はちゃんとC++風に見えてよくわかってない学生臭いオトクなソースさ!
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6647.txt
458デフォルトの名無しさん:2008/05/22(木) 12:04:30
つまんね
459デフォルトの名無しさん:2008/05/22(木) 12:09:40
> double min=0.0,max=99.0;
ここをmax=100.0にせにゃ、0〜99にならないことに気づいた
460デフォルトの名無しさん:2008/05/22(木) 12:10:08
>>455
#include <stdio.h>
#include <string.h>

int main(void)
{
int i;
printf("身長(cm),BMIによる標準体重(kg)\n");
for(i = 150; i <= 170; i++)
{
#define calcIBWByBMI(Height) (Height * Height * 22.0l)
printf("%3d,%.1f\n", i, calcIBWByBMI(i/100.0l));
}
return 0;
}
461デフォルトの名無しさん:2008/05/22(木) 12:16:57
また無害な罠をしかけてやがる。
462デフォルトの名無しさん:2008/05/22(木) 13:04:34
>>420
必死すぎるw

パクリだろうがなんだろうが、内容を「自分の言葉」で説明できれば
それはOKだと思うがいかがか>講師の方々
463デフォルトの名無しさん:2008/05/22(木) 13:08:02
>>462
馬鹿が横行すると指導者が責められる
464デフォルトの名無しさん:2008/05/22(木) 13:37:05
自分の言葉で説明できるやつが丸投げなんかするかよw
465デフォルトの名無しさん:2008/05/22(木) 14:07:17
>>457
ん。これはいい感じ。
メッセージは変数に格納して
内部では列挙型で判定するのとか。
466デフォルトの名無しさん:2008/05/22(木) 14:07:56
だからといって丸受けもなんか見苦しいね。
プログラマらしからぬ無思慮って感じ
467デフォルトの名無しさん:2008/05/22(木) 14:15:32
だから個人的な価値観、主観で〜は○×であるのが相応しいとか良いから。
こんなスレを覗いているお前も同じ穴の狢だし
468346:2008/05/22(木) 14:24:05
どなたか>>346をお願いできないでしょうか?
469デフォルトの名無しさん:2008/05/22(木) 14:36:41
>>468
分かる範囲で書いてうp
470デフォルトの名無しさん:2008/05/22(木) 14:59:06
日本語→C/C++言語トランスレータ(最適化機能付き)さんに逆問題が与えられました
471デフォルトの名無しさん:2008/05/22(木) 15:17:50
下記に示す日付の比較関数を作り、プログラム1を完成させよ。


関数の仕様

関数名 compare_date

日付の比較をする関数。
2個の日付(日付1,日付2と呼ぶ)を引数として受け取り、
日付1と日付2のどちらが早いか比較する。
日付1が早いときは 1 を、日付2が早いときは -1を、等しいときは 0 を返すとする

引数
int year1 日付1の年
int month1 日付1の月
int day1 日付1の日
int year2 日付2の年
int month2 日付2の月
int day2 日付2の日

戻り値
int 型で、日付1が早いときは 1 を、日付2が早いときは -1を、
等しいときは 0 を返す。


472デフォルトの名無しさん:2008/05/22(木) 15:21:08
1] 授業単元:プログラミング
[2] 問題文
縦、横、奥行きと重さを引数にとり、お急ぎ便でないときの料金を
計算する関数 calc_normal_fee() を作り、この関数を使って
計算をするように変更せよ。
プログラムはコーディング基準に合うよう記述
宅急便の料金が次の様に決まっているとき、
金額計算をするプログラムを作れ。
(何を入力、出力とするかは各自で考えること。
入力待ちの時には適切なメッセージを表示すること。)

縦横奥行きの合計が60cm以内で、かつ重量が 2kg 以下の時 800円
縦横奥行きの合計が80cm以内で、かつ重量が 5kg 以下の時 1100円
縦横奥行きの合計が120cm以内で、かつ重量が 15kg 以下の時 1500円
お急ぎ便の場合は 500円加算される。


[3] 環境
 [3.1] OS:Windows visual studio
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限:5/21
[5] その他の制限:特になし
473デフォルトの名無しさん:2008/05/22(木) 15:22:30
1] 授業単元:c言語
[2] 問題文

西暦年を引数に取り、閏年かどうか判定する関数 is_leap_year() を作成し、
この関数を用いて西暦年を3回入力するとそれぞれが閏年かどうか
判定するプログラムを作れ。

[3] 環境
 [3.1] OS:Windows visual studio
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限:5/21
[5] その他の制限:特になし
474デフォルトの名無しさん:2008/05/22(木) 15:40:09
>>471
int compare_date(int year1, int month1, int day1, int year2, int month2, int day2)
{
return year1 < year2 ? 1 : year1 > year2 ? -1 : month1 < month2 ? 1 : month1 > month2 ? -1 : day1 < day2 ? 1 : day1 > day2 ? -1 : 0;
}
475デフォルトの名無しさん:2008/05/22(木) 15:41:05
>>471
int compare_date(int year1,int month1,int day1,int year2,int month2,int day2)
{
 if(year1>year2) return 1;
 if(year2>year1) return -1;
 if(month1>month2) return 1;
 if(month2>month1) return -1;
 if(day1>day2) return 1;
 if(day2>day1) return -1;
 return 0;
}

>>472
// x=横,y=縦,z=奥,weight=重量,bl=お急ぎ便ならTRUE,規格外なら-1戻し
int calc_normal_fee(int x,int y,int z,int weight,BOOL bl)
{
 int hurry = 0;
 if(bl) hurry = 500;
 if(x+y+z<=60 && wight<=2) return 800+hurry;
 if(x+y+z<=80 && wight<=5) return 1100+hurry;
 if(x+y+z<=120 && wight<=15) return 1500+hurry;
 return -1;
}

>>473
// year=入力年,閏年なら1,違えば0戻し
int is_leap_year(int year)
{
 if(year%4==0&&year%100!=4) return 1;
 if(year%400==0) return 1;
 return 0;
}
476デフォルトの名無しさん:2008/05/22(木) 15:43:39
昔の宿題コピペして何がしたいの?
477デフォルトの名無しさん:2008/05/22(木) 18:27:20
[1] 授業単元:コンピュータ言語V
[2] 問題文:
  ある実数を入力して、その数字の「総桁数」・「小数点以下の桁数」を求め
  ポインタ引数が指す変数に返す関数と、その関数を呼び出して下記のように表示する
  表示するプログラムを作成せよ。
  
  例
  314.15926
と打ち込むと、
  総桁数:8
  小数点以下の桁数:5
  と表示される。
  関数は、
  void countno(cher*s,int*a,int*b)
とする。
  
[3] 環境
 [3.1] OS:WindowsXP
 [3.3] 言語:C++
[4] 期限:5月23日の午後2時まで

どうかよろしくお願いします。
478デフォルトの名無しさん:2008/05/22(木) 18:44:33
#include<stdio.h>
#include<string.h>

void countno(char *s, int *a, int *b)
{
int dot = (int) (strchr(s, '.') - s);
int len = strlen(s);

*a = len - 1;
*b = *a - dot;
return;
}

int main(void)
{
int fig, dec;
char str[256];

fgets(str, 256, stdin);
countno(str, &fig, &dec);

printf("総桁数:%d\n小数点以下の桁数:%d\n", fig, dec);
return 0;
}

書いてから気づいたがC++だったのか
テストしてないから動作は一切保障できん
479デフォルトの名無しさん:2008/05/22(木) 18:47:42
>>477
入力に小数点は必ずあるの?
指数形式は考慮しなくていいの?
480352:2008/05/22(木) 19:18:10
[1] 授業単元:プログラミング実習

[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6635.txt
[3] 環境
 [3.1] OS:(WindowsXP)
 [3.2] コンパイラ名とバージョン:VC++2005
 [3.3] 言語:C++
[4] 期限:5月26日
[5] その他の制限:問題文中に記載してあります。


   よろしくお願いしますm(__)m 。


481352:2008/05/22(木) 19:31:08
すいませんm(__)m。追記です

>>355の方法とは別の方法でメモリの消費を少なくしたいのですが
482デフォルトの名無しさん:2008/05/22(木) 19:37:26
>>481
メモリの消費を少なくと言うことは、iostreamの代わりにcstdioを使うと言うことでよろしいか。
483352:2008/05/22(木) 20:00:56
>>481

とりあえず、iostream を使わずに済むようにしたいんですが。
484346:2008/05/22(木) 21:01:18
簡単な説明でもかわいませんので>>346を解説して下さる方いないでしょうか?

タブを改行に変えるプログラムなのは分かるのですが、条件分岐などの内容が分かりません
485デフォルトの名無しさん:2008/05/22(木) 21:02:46
>>477
bool countNum(string str, int &total, int &decimal){
int point=0;
total=decimal=0;
for(int i=0;str[i]!='\0';i++){
if(str[i]>='0'&&str[i]<='9'){
switch(point){
case 0:
total++;
break;
case 1:
decimal++;
break;
default:
return false;
}
}
else if(str[i]=='.'){
point++;
if(point>1){
return false;
}
else{
return false;
}
}
return true;
}
486485:2008/05/22(木) 21:08:07
>>477
インターフェースは見ての通り
str:string型入力させた文字列
total:int型総桁数、参照渡し
decimal:int型小数点以下桁数、参照渡し
あとはメインで呼んで表示させてくれ
487デフォルトの名無しさん:2008/05/22(木) 21:13:34
#include <iostream>
#include <string>
using namespace std;
void countno(string s, int *a, int *b){
int i, dot = -1, len = 0;
for(i=0; s[i]!='\0'; i++){
len ++;
if(s[i]=='.'){dot=i;}
}
switch(dot){
case -1: // dot not found
*a = len;
*b = 0;
break;
default: // dot found
*a = len-1;
*b = len-dot-1;
}
return;
}
int main(void){
int fig, dec;
string str;
while(1){
cout << "input:";
cin >> str;
countno(str, &fig, &dec);
cout << "総桁数:" << fig << endl;
cout << "小数点以下の桁数:" << dec << endl;
}
return 0;
}
488デフォルトの名無しさん:2008/05/22(木) 21:14:33
最後のファイルの最後の文字読むまでずっとする
 コンバートするなら次の処理をする
  タブなら次のタブストップまでの隙間分スペース書く
  バックスペースなら一文字戻る
 文字書く
終わり
489デフォルトの名無しさん:2008/05/22(木) 21:15:12
>>487
アンカー忘れ。
>>487は、>>477向け。
490488:2008/05/22(木) 21:18:03
おれもおれも。

>>488>>484向け。

分かる範囲で書けってのにそれもできないのか。
491485:2008/05/22(木) 21:21:27
自分で突っ込み
>>485
0000.00000
って入力されたらどうすんだ俺

>>489
apa.123.456
どうすんだ



まぁエラー処理くらい自分でやれと思うが
492デフォルトの名無しさん:2008/05/22(木) 21:22:17
回答してる方々はよくスラスラ書けますね、書けない私はプログラマ失格だあああ
493488:2008/05/22(木) 21:23:09
関係ないけど、>>346の全体はこれっぽいな。
http://www.koders.com/c/fid0831F9F781DE447A3DE09C3F6B5CA9751A3F5A6D.aspx
494346:2008/05/22(木) 21:42:13
>>488,493

レスありがとうございます
まさにそのプログラムです

おかげさまで機能概要と処理の流れを理解できました
あとはモジュールインターフェース(引数、戻り値)と内部変数ですが
戻り値はintでいいんでしょうか?
495デフォルトの名無しさん:2008/05/22(木) 21:55:21
残念ながら>>485,487は>>477の要求仕様
void countno(cher*s,int*a,int*b)
を満たしていないぞ。

cher*ってなんだとか思ったりもするが。

496>>488:2008/05/22(木) 21:56:37
>>494
ええええ引数と戻り値も分からないのに理解できたのかよ。。。
戻り値はintじゃないよ。
内部変数については下のような感じだと思います。
 FILE *fp がInput stream.
 int c がInput character, or EOF.
 bool convertがperform translationsのフラグ
 uintmax_t columnがColumn of next input character.
 size_t tab_indexがIndex in TAB_LIST of next tab stop to examine.
 uintmax_t next_tab_columnがColumn the next input tab stop is on.
497デフォルトの名無しさん:2008/05/22(木) 22:06:22
>>495
重要な変数なのに変数名がa,bってので
そんなクソ要求満たしたくなくなる
498346:2008/05/22(木) 22:10:28
>>496
intじゃないんですか
内部変数の説明の英文が>>496にもありますが
ColumnがとTABLISTが分かりません
499488:2008/05/22(木) 22:24:39
>>498
> intじゃないんですか
はい、intではありません。

> 内部変数の説明の英文が>>496にもありますが
> ColumnがとTABLISTが分かりません
ColumnとTABLISTという内部変数はありません。
500デフォルトの名無しさん:2008/05/22(木) 22:44:49
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6650.txt
[3] 環境
 [3.1] Windows
 [3.2] コンパイラ名とバージョン:visual studio
 [3.3] 言語: C言語
[4] 期限:5月23日9:00まで  
  どうぞよろしくお願いします
501デフォルトの名無しさん:2008/05/22(木) 23:09:50
>>499
さすがにColumnとTAB_LISTが内部変数じゃないことぐらいは・・・・orz
英語の説明がうまく訳せないというかColumnが分からないんです
502デフォルトの名無しさん:2008/05/22(木) 23:12:06
>>497
宿題なんだから満たせよw
ま、俺の宿題じゃないからどうでもいいが。
503488:2008/05/22(木) 23:31:17
>>501
columnは列番号をあらわしてます。0からカウントします。
見かけ上の位置が先頭から何文字目であるか、というものです。

以下の行があるとすると、columnが3の位置にaという文字があります。
expand
また、タブを[tab]と表記し、タブサイズが4である場合、以下の行について
aという文字は6バイト目に存在し、columnが11の位置にあるといえます。
[tab][tab]expand
タブサイズが8である場合は、6バイト目に存在し、columnが19の位置に
あるといえます。
また、重要な点として、タブサイズが4であり、
[tab]x[tab]expand
という行である場合、aという文字は、7バイト目に存在し、columnが11の
位置にあるということです。
処理の内容を理解されたということですので問題ないと思ってはいますが、参考までに。

また、TAB_LISTはグローバル変数のtab_listのことを指しています。

>>502
要求仕様を満たそうにもa、bの中に何を入れるのかが示されていない。
504デフォルトの名無しさん:2008/05/22(木) 23:34:49
int *a, *b;
double d;
stringstream ss;
string s;
cin >> d;
ss << d;
s = ss.str();
countno( s.c_str(), a, b )

みたいにするか。
これなら 1.02e-2 とか 0000.0000 とか fool.800.fool とか
入力されても大丈夫。
505デフォルトの名無しさん:2008/05/22(木) 23:37:23
>>503
ありがとうございます
ものすごく分かりやすいです
聞いてばっかりなのもなんなんで自力でちょっとやってみます
506デフォルトの名無しさん:2008/05/23(金) 00:10:14
[1] 授業単元
C言語
[2] 問題文
キーボードから変数yearに入力された年号について、開催された年に第何回大会が開催(中止)されたか画面にその旨メッセージを出力すること。
[3] 環境
 [3.1] Windows XP
 [3.2] microsoft visual studio 2005
 [3.3] C
[4] 期限
5月27日
[5] その他
1916年の第6回大会、1940年の第12回大会、1944年の第13回大会は世界大戦の影響で中止された。
ただし中止の場合も回数に数える。
1906年には、近代オリンピック制定10周年記念大会が開催された。
ただし特別大会のため、回数には数えない。
次回は2012年、第30回大会が開催予定。

お願いします。
507デフォルトの名無しさん:2008/05/23(金) 00:13:27
すみません。問題文に誤りがありました。

[1] 授業単元
C言語
[2] 問題文
キーボードから変数yearに入力された年号について、開催された年に第何回大会が開催(中止)されたか
画面に表示するプログラムを作成しなさい。
またオリンピックイヤーでない場合は画面にその旨メッセージを出力すること。
[3] 環境
 [3.1] Windows XP
 [3.2] microsoft visual studio 2005
 [3.3] C
[4] 期限
5月27日
[5] その他
1916年の第6回大会、1940年の第12回大会、1944年の第13回大会は世界大戦の影響で中止された。
ただし中止の場合も回数に数える。
1906年には、近代オリンピック制定10周年記念大会が開催された。
ただし特別大会のため、回数には数えない。
次回は2012年、第30回大会が開催予定。

お願いします。
508デフォルトの名無しさん:2008/05/23(金) 00:15:03
何の第何回大会なのか問題文に記載されていない件
509デフォルトの名無しさん:2008/05/23(金) 00:39:40
>>507
2008年以降は「開催されていません。」としたけどこれでいいのかな?

#include <stdio.h>
int main(void);

int main(){
int year;
int nopfg = 0;
printf("開催年:");
scanf("%d",&year);
if(year%4!=0 || year<1896 || year>2004){
printf("開催されていません。\n");
return 0;
}
if(year==1916 || year==1940 || year==1944){nopfg=1;}
printf("第%d回大会が%sされました。\n",(year-1892)/4,(nopfg? "中止":"開催"));
return 0;
}
510507:2008/05/23(金) 01:21:07
>>509
ありがとうございます。
511デフォルトの名無しさん:2008/05/23(金) 01:21:34
単純に与えられた年数を4で割って余りが0の時にオリンピックイヤーとするのは危険だ。
なぜなら、未来の予定はわからないし、
夏と冬で回数は違うし、1994年からは夏と冬は2年おきに交互に開催されるようになる。

プログラム中にマジックナンバーを書き込んで対処するよりも
年表を作って読み込ませ、過去の分と未来の予定とを分けて処理するプログラムに
するべきのような気がする。

というわけで今から組むぞ。
512デフォルトの名無しさん:2008/05/23(金) 01:33:28
>>511
(・ω・)ガンバルネェ
513デフォルトの名無しさん:2008/05/23(金) 01:48:02
>>511はかわいそう
514507:2008/05/23(金) 02:24:15
すみません。もう一問お願いします。

[1] 授業単元
C言語
[2] 問題文
>>507と同様に、冬季オリンピックについても作成しなさい。
冬季オリンピックの開催年は夏季に比べて少し複雑である。
[3] 環境
 [3.1] Windows XP
 [3.2] microsoft visual studio 2005
 [3.3] C
[4] 期限
5月27日
[5] その他
1924年の第1回大会以来、4年に一度開催されている。
1992年の第16回大会までは、夏季大会と同じ年に開催されたが、
1994年の第17回大会からは、夏季大会の2年後に開催されるようになった。
1940年、1944年は第二次世界大戦の影響で中止。
中止の場合は回数を数えない。
次回は2010年、第21回大会が開催予定。
515デフォルトの名無しさん:2008/05/23(金) 03:05:46
>>511
がんばってねw
516422:2008/05/23(金) 03:15:57
>>161,233,237
当方が確認した環境は WindowsXP/cygwin, 処理系は gcc 3.4.4 です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6653.txt

これはテストプログラムです。各座標軸とも 0 〜 1000 である n 次元(変更可)のデータを多数(設定可) 発生させて、
中心点(500, 500, ...., 500) との距離が一番小さいデータを探索します。
「距離」は n 次元ユークリッドノルムです。
全数を直接計算して求めたものも表示させています。

で、結論は「全数計算にくらべてのメリットがぜんぜんありません。」
推察される原因は次のとおりです。
・k-d tree の設計がよろしくない。left ノードと right ノードにふりわける基準を中央値としたのがよくなかったと思います。座標成分が同一のデータの振り分けがいいかげんになってしまいました。
このために、「クエリが属する k-d tree 区分空間に属する点を2分探索で求める」というアルゴリズムの精度が悪くなってしまいました。
・次数が高くなると、ユークリッドノルムが大きくなりすぎて、n次元超球が往々にして定義域よりもおおきくなってしまいました。

ということで、私は楽しかったのですが、お役にはたてないことになってしまいました。
k-d tree のインプリメントを根本からかえないといけないでしょうね。
517デフォルトの名無しさん:2008/05/23(金) 03:57:48
神様の言われることは良くわかりませんね。
518デフォルトの名無しさん:2008/05/23(金) 04:29:53
>>514
#include <stdio.h>
int main(void);

int main(){
int year;
int times;
printf("開催年:");
scanf("%d",&year);

if(year<1924){
printf("開催されていません。\n");
return 0;
}else if(year==1940||year==1944){
printf("中止されました。\n");
return 0;
}else if(year<1940 && year%4==0){
times=(year-1920)/4;
}else if(year<=1992 && year%4==0){
times=(year-1920)/4-2;
}else if(year<2010 && year%4==2){
times=(year-1994)/4+17;
}else{
printf("開催されていません。\n");
return 0;
}
printf("第%d回大会が開催されました。\n",times);
return 0;
}
519デフォルトの名無しさん:2008/05/23(金) 15:55:27
【質問テンプレ】
[1] 授業単元:Cプログラム実習
[2] 問題文
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6655.zip
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ:gcc 3.4
 [3.3] 言語:C
[4] 期限:2008年05月23日22:00まで
[5] その他の制限:実習を数回経ただけのド素人ですので、それに見合ったレベルでお願いします

時間制限が短く、また課題も複数あって恐縮ですが、どうかよろしくおねがいしますm(_ _)m
520デフォルトの名無しさん:2008/05/23(金) 17:54:28
>>519
学校名晒しちゃってるけど大丈夫?
521デフォルトの名無しさん:2008/05/23(金) 18:20:14
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):

for文で1から任意の数まで表示するプログラムを作れ。

数字が1つ増えるたびに

終了しますか?y or nと表示し、yが入力されたときはプログラムを終了し、nが入力されたときは
プログラムをせずループを続けるようにせよ


[3] 環境
 [3.1] OS: Win XP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: なし
522デフォルトの名無しさん:2008/05/23(金) 18:24:10
【注意】STLの落とし穴【危険】
http://pc11.2ch.net/test/read.cgi/tech/1104092624/
523デフォルトの名無しさん:2008/05/23(金) 19:03:16
>>521
終了しますか?
どのタイミングで表示?
524デフォルトの名無しさん:2008/05/23(金) 19:04:34
>>523

と表示したあとに表示してNなら
2を表示って事だとおもいます
525デフォルトの名無しさん:2008/05/23(金) 19:19:36
>>521
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(void)
{
int i, n, exit;
char ss[]="";

printf("任意の数>>");
n = atoi(gets(ss));

for(i=1;i<=n;i++) {
printf("%d\n", i);
printf("終了しますか?y or n ");
if(strcmp(gets(ss), "y") == 0) break;
}

return 0;
}
526デフォルトの名無しさん:2008/05/23(金) 19:21:47
変数exit消してね
527デフォルトの名無しさん:2008/05/23(金) 19:25:04
ynの入力されないけど?
528519:2008/05/23(金) 19:26:54
>>520
その点は問題ありません。お気遣いありがとうございます
529デフォルトの名無しさん:2008/05/23(金) 19:27:56
>>527
ちゃんとなるけど?
530デフォルトの名無しさん:2008/05/23(金) 19:54:00
>>527
実行してから言えよw
531デフォルトの名無しさん:2008/05/23(金) 20:07:38
[1] 授業単元:プログラミング

[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6657.txt
[3] 環境
 [3.1] OS:(WindowsXP)
 [3.2] コンパイラ名とバージョン:VC++2005
 [3.3] 言語:C++
[4] 期限:5月27日
[5] その他の制限:問題文中に記載してあります。


   よろしくお願いします 。
532デフォルトの名無しさん:2008/05/23(金) 20:10:34
>>525
おいおい。。。
533デフォルトの名無しさん:2008/05/23(金) 20:11:35
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6658.txt

↑問題文です。

途中まで考えてみました。
バブルソートでやろうかと思ってました。
変数が足りなかったら足して結構です。

#include <stdio.h>
void main(void)
{
int a[10]={25,56,65,80,73,53,68,87,36,78};
int i,j;
printf("整列前:");
for(i=0; i<10; i++)
printf("%d ", a[i]);
printf("\n");
}
できれば今日中にお願いします。

534デフォルトの名無しさん:2008/05/23(金) 20:17:33
>>527
gets(ss)
535デフォルトの名無しさん:2008/05/23(金) 20:20:25
536デフォルトの名無しさん:2008/05/23(金) 20:21:35
違った
>>533
>>408
537デフォルトの名無しさん:2008/05/23(金) 20:26:16
>>536
ありがとうございます。
こっちの説明不足なのですが、Returnを使わない方法でお願いします。
538デフォルトの名無しさん:2008/05/23(金) 20:27:24
int → void
そこらへんは察しry
539デフォルトの名無しさん:2008/05/23(金) 20:48:09
いろいろとやってみたが、

細かなミスがおおい…

俺ダメだ…
540デフォルトの名無しさん:2008/05/23(金) 20:51:14
>>539
できた!
→コンパイル
→エラー修正
→コンパイル
→実行
→おかしい
→ソースと睨めっこ修正
→完成

こんな流れは良くある事だ
541デフォルトの名無しさん:2008/05/23(金) 20:55:04
>> 519
#include<stdio.h>
int main(){
int point[4][5];
int num[4],sum[4];
double ave[4];
int i,j;
FILE *fp;
fp = fopen("point.txt","r");
for(i=0;i<4;i++){
sum[i] = 0;
ave[i] = 0;
fscanf(fp,"%d %d %d %d %d %d",&num[i],&point[i][0],&point[i][1],&point[i][2]
,&point[i][3],&point[i][4]);
for(j=0;j<5;j++){
sum[i] += point[i][j];
}
ave[i] = sum[i] / 5.0;
printf("%d sum = %d average = %f ",num[i],sum[i],ave[i]);
if(ave[i]>=80.0)
printf("Rank A¥n");
else if(ave[i]>=70.0)
printf("Rank B¥n");
else if(ave[i]>=60.0)
printf("Rank C¥n");
else
printf("Rank D¥n");
}
fclose(fp);
return 0;
}
542541:2008/05/23(金) 20:55:49
課題2

ソートは他見てやってくれ

無駄に2次元配列が…
543541:2008/05/23(金) 21:09:27
if(ave[i]>=80.0)
rank[i] = 'A';
else if(ave[i]>=70.0)
rank[i] = 'B';
else if(ave[i]>=60.0)
rank[i] = 'C';
else
rank[i] = 'D';
}
fclose(fp);
printf("-->");
scanf("%d",&number);
while(number!=0){
if(number==9999)
for(i=0;i<4;i++)
printf("%d¥t%d¥t%d¥t%d¥t%d¥t%d¥t%d¥t%f¥t%c¥n",
num[i],point[i][0],point[i][1],point[i][2],point[i][3]
,point[i][4],sum[i],ave[i],rank[i]);
else{
i = number-1001;
printf("%d¥t%d¥t%d¥t%d¥t%d¥t%d¥t%d¥t%f¥t%c¥n",
num[i],point[i][0],point[i][1],point[i][2],point[i][3]
,point[i][4],sum[i],ave[i],rank[i]);
}
printf("-->");
scanf("%d",&number);
}

課題2追加

ソースがきたねぇ…
544541:2008/05/23(金) 21:11:28
力つきた

3はここみてやれ↓
ttp://www12.plala.or.jp/dokugaku/algo/lcm.html
545541:2008/05/23(金) 21:24:09
課題3
やってしまった…
#include<stdio.h>

int gcd(int m,int n);
int lcm(int m,int n);

int main(){
int a,b;
int res;

scanf("%d",&a);
scanf("%d",&b);
printf("GCD = %d¥n",gcd(a,b));
printf("LCM = %d¥n",lcm(a,b));
return 0;
}

int gcd(int m,int n){
int tmp;
while(m%n!=0){
tmp = n;
n = m%n;
m = tmp;
}
return n;
}

int lcm(int m,int n){
return (m*n / gcd(m,n));
}
546519:2008/05/23(金) 21:25:40
>541
ありがとうございましたm(_ _)m
催促がましくて申し訳ありませんが、残りがおわかりの方、どうかよろしくお願いします
547デフォルトの名無しさん:2008/05/23(金) 21:39:17
[1] 授業単元:数値計算
[2] 問題文
  電圧x 20 40 60 80 100
電流y 1.31 2.93 3.21 4.58 5.46
  電圧と電流の筧が与えられた時、最小二乗法によりデータを y=ax+bの一  次関数で表すとき、定数a、bを求めよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] VC 6.0
 [3.3] 言語:C++
[4] 期限: ([2008年05月26日08:30まで]
[5] その他の制限: 特に無し

どなたかよろしくお願いします。
正直教科書読んでも解りませんでした。
548デフォルトの名無しさん:2008/05/23(金) 21:51:20
>>547
最小二乗法の1次方程式への近似
http://ja.wikipedia.org/wiki/最小二乗法#.E4.B8.80.E6.AC.A1.E6.96.B9.E7.A8.8B.E5.BC.8F.E3.81.B8.E3.81.AE.E8.BF.91.E4.BC.BC
ここに公式が出てる。これを自分でCで書けないこと確認してからここに丸投げしてくれ
549548:2008/05/23(金) 21:52:48
アドレス間違いかも
http://ja.wikipedia.org/wiki/最小二乗法
ならあってるとおも
550519:2008/05/23(金) 21:55:13
すいません 携帯で542以下が見えてませんでした
ありがとうございました
551547:2008/05/23(金) 22:33:49
>>549

お早い解答有難う御座います。

今見てみました。

この式をどのようにプログラムを作っていくのかが全然解りません。

プログラムのソースも提出しなければいけない上、グラフも必要です。

今の自分の知識力では無理っぽいので、どうかお願いします。
552デフォルトの名無しさん:2008/05/23(金) 23:31:01
>>525
ワロタ
たまには落ちないこともあるんかねw
553デフォルトの名無しさん:2008/05/23(金) 23:40:06
>>552
落ちるん?何回やっても落ちないけど

WinXP SP3
Borland C++ 5.5.1
554デフォルトの名無しさん:2008/05/23(金) 23:47:50
>>519
おいおい、神戸情報大学院大学では学生にルートで作業させているのか?
それとも、プロンプトを#に替える洒落でも流行しているのか?
おまけに、a.outで実行しているってことは、PATHに.を含めているってことか?
555514:2008/05/23(金) 23:48:21
>>518
どうもです。
556デフォルトの名無しさん:2008/05/23(金) 23:50:50
>>553
落ちるかどうか以前に、ソースを見ればおかしいのが判るだろ。
557デフォルトの名無しさん:2008/05/23(金) 23:53:18
>>519 課題1
#include <stdio.h>
#include <stdlib.h>
static int cmpa(const void*a,const void*b){ return*((int*)a)-*((int*)b);}
static int cmpd(const void*a,const void*b){ return cmpa(b,a);}
static int(*cmpfs[])(const void*,const void*) = { cmpa,cmpd };
int main(int argc,char**args){
FILE*fp;
if(fp=fopen("in.txt","r")){
char buf[ 2 ]="";
fprintf(stdout,"input sort method. 1.ascending,2.descending\n");
fgets(buf,sizeof(buf),stdin);
if(*buf=='1'||*buf=='2'){
int v,len=1,idx=0,*vals=NULL,m=*buf-'1';
while(fscanf(fp,"%d",&v)==1){
if(len==idx+1){
len <<=1;
if(!(vals=(int*)realloc(vals,len*sizeof(*vals))))exit(1);}
vals[idx++]=v;}
qsort(vals,idx,sizeof(*vals),*(cmpfs+m));
fclose(fp);
if(fp=fopen("out.txt","w"))for(v=0;v<idx;++v)fprintf(fp,"%d\n",*(vals+v));
fprintf(stdout,"write into %s\n","out.txt");
fclose(fp);free(vals);}}
return 0;
}
558541:2008/05/24(土) 00:22:16
>>547

できた
#include<stdio.h>

int main(){
double x[]={20.0,40.0,60.0,80.0,100.0};
double y[]={1.31,2.93,3.21,4.85,5.46};
double a,b;
int i,j,n;
double xk,yk,xy,x2;
FILE *fp;
xk=yk=xy=x2=0;
a = 0;
b = 0;
n=5;
fp = fopen("test.dat","w");
for(i=0;i<n;i++){
xk += x[i];
yk += y[i];
xy += x[i]*y[i];
x2 += x[i]*x[i];
fprintf(fp,"%f %f¥n",x[i],y[i]);
}
printf("%lf %lf %lf %lf¥n",xk,yk,xy,x2);
a = (n*xy - xk*yk)/(n*x2 - xk*xk);
b = (x2*yk - xy*xk)/(n*x2 - xk*xk);
printf("f(x) = %lf * x + %lf¥n",a,b);
return 0;
}
変数テキトーすぎたwww
559541:2008/05/24(土) 00:25:22
こんなのやってたらプログラマ育たねぇなぁ…
560デフォルトの名無しさん:2008/05/24(土) 00:25:51
[1] 授業単元:Cプログラミング

[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6659.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)

[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
5月26日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
構造体を習っているところです。よろしくお願いします。
561541:2008/05/24(土) 00:43:12
>>560
課題1
POINT getMiddlePoint(POINT p1,POINT p2){
POINT MiddlePoint;
MiddlePoint.x = (p1.x + p2.x) / 2;
MiddlePoint.y = (p1.y + p2.y) / 2;
return MiddlePoint;
}
562541:2008/05/24(土) 00:44:59
座標はintじゃなきゃだめなのか?
563デフォルトの名無しさん:2008/05/24(土) 00:45:54
>>562
恐らくそうだと・・
564541:2008/05/24(土) 01:11:15
>>560
一応やった
void rotatePoint(POINT *p1,int dt){
double rad = dt * M_PI / 180.0;
int x,y;
x = p1->x;
y = p1->y;

p1->x = x * cos(rad) - y * sin(rad);
p1->y = y * cos(rad) + x * sin(rad);
printf("(%d,%d)¥n",p1->x,p1->y);
return;
}
int型じゃ絶対あの結果でないよ…
先生は何を考えているんだ…
565541:2008/05/24(土) 01:22:59
課題3
#include <stdio.h>
#include <stdlib.h>
int *makeArray(int argc,char *argv[])
{
int num;
int *table;
int i;
if (argc < 2){
fprintf(stderr, "引数が指定されていない¥n");
exit(1);
}
num = argc -1;
table = malloc(sizeof(int) * num);
for(i=0;i<num;i++){
*(table + i) = atoi(argv[i+1]);
}
return table;
}
int main(int argc, char *argv[]){
int i, num;
double sum = 0.0;
int *table;
table = makeArray(argc,argv);
num = argc -1;
for (i = 0; i < num; i++){
sum += (double)table[i];
}
printf("%d 個の実数の平均値は %.2f です ¥n",num, sum / num);
free(table);
return 0;
}
566デフォルトの名無しさん:2008/05/24(土) 01:25:35
>>564
ありがとうございます。
では本来はどうするべきなのでしょうか?
567547:2008/05/24(土) 01:36:43
>>558

有難う御座います!!

素早い解答、お疲れ様でした。
568デフォルトの名無しさん:2008/05/24(土) 01:38:17
>>554
黙ってれば無知はばれないんだからおとなしくしてろって
569541:2008/05/24(土) 01:47:24
>>566
座標の値を実数型にすればキレイにでるよ
570デフォルトの名無しさん:2008/05/24(土) 01:49:55
>>568
え?
571デフォルトの名無しさん:2008/05/24(土) 01:57:44
>>566
これでどう?
round は四捨五入する関数 ( 関数プロトタイプmath.h double round(double); )

void rotatePoint(POINT *p1,int dt){
double rad = dt * M_PI / 180.0;
int x,y;
x = p1->x;
y = p1->y;

p1->x = round(x * cos(rad) - y * sin(rad));
p1->y = round(y * cos(rad) + x * sin(rad));
printf("(%d,%d)\n",p1->x,p1->y);
return;
}
572デフォルトの名無しさん:2008/05/24(土) 02:04:07
>>569
>>571
ありがとうございます。
ところで、課題2のプログラムは不完全なプログラムだと思うのですが、完全なプログラムを書いていただけないでしょうか?
課題1のほうはなんとか自分で付け加えることができたのですが、課題2のほうは上手くいかなくて・・

ところで>>565における課題3のプログラムにおいて、
メモリ不足です云々の処理がなくなっているのはそういう仕様なのでしょうか?
いまいち課題3の意味がわからなくて・・
573541:2008/05/24(土) 02:14:17
>>572
さすがにそれくらいは自分でやろう
自分のためにならない

課題3は…めんどいから飛ばしただけですorz
574デフォルトの名無しさん:2008/05/24(土) 02:16:08
>>570
黙ってれば>>554だとばれないんだからおとなしくしてろって
575デフォルトの名無しさん:2008/05/24(土) 03:23:04
>>574
>>554じゃないんだけど、何がおかしいのか分からん。
rootではないユーザのデフォルトプロンプトが#なシェルがあるってこと?
PATHに.を含める事があまりにもひどい設定であったのはもう過去のことってこと?
576デフォルトの名無しさん:2008/05/24(土) 03:30:18
>>575
>>574じゃないけど、大学とかの課題では
暗黙的にシェルは#で表記する。ディレクトリ構成は人によって違うし。
後は、gccで指定せずコンパイルすれば
実行ファイルはa.outになる。
問題文になんらおかしな点はない。
577519:2008/05/24(土) 04:22:39
>>541
返事が遅くなってすいません
何から何までありがとうございましたm(_ _)m
578デフォルトの名無しさん:2008/05/24(土) 06:44:29
>>575
だからレスしなきゃバレなかったのに・・・
579デフォルトの名無しさん:2008/05/24(土) 08:41:06
>>525の何がおかしいのかわからん
580デフォルトの名無しさん:2008/05/24(土) 08:44:41
>>579
ss の領域が足りてない
581デフォルトの名無しさん:2008/05/24(土) 08:50:33
>>580
ss[]="";
領域指定してないから問題無いでしょ
*limitsのMAX以上にならない限りって意味で
582デフォルトの名無しさん:2008/05/24(土) 08:58:50
>>581
sizeof(ss)==1
'\0' を考慮して少なくとも領域の大きさとして 2 は必要
領域指定してない場合には必要最低限をコンパイラが自動計算するだけで
勝手に巨大な領域を割り当てたりはしない
583側近中の側近 ◆0351148456 :2008/05/24(土) 08:58:59
(っ´▽`)っ
char ss[]="";
n = atoi(gets(ss));
について

(1)
ssにリテラル文字列""を代入している。
よって、ssは静的領域を指すアドレスが設定されている。
静的領域を勝手に書き換えるなゴルァ!

(2)
さらに、ssが確保している領域のサイズは\0の1バイトのみ。
1バイトを超えたら記憶領域を壊す。
ってか、何らかの文字を入れた時点で\0と合わせて2バイト以上になるから、
確実にダメだね。
584デフォルトの名無しさん:2008/05/24(土) 09:00:04
>>583
(1)は違う
配列を確保して "" で初期化している
585側近中の側近 ◆0351148456 :2008/05/24(土) 09:02:51
>>584
(っ´ω`)っ
char *ss="";

char ss[]="";
は等価だと思ってたよ・・・いきててごめんね
586側近中の側近 ◆0351148456 :2008/05/24(土) 09:10:43
(っ´ω`)っ
char ss[]="";

char ss[]={'\0'}
と等価なのか・・・。
587デフォルトの名無しさん:2008/05/24(土) 09:12:11
>>586
肯定だ
588デフォルトの名無しさん:2008/05/24(土) 09:16:55
char ss[]="文字列";
これをよく見かけるからchar ss[]="";ってしたんじゃないかな

L1の書き方も問題あるよね
後からそれ以上のサイズ書き込まれたらエラーなのに
589側近中の側近 ◆0351148456 :2008/05/24(土) 09:24:55
(っ´▽`)っ
で、ガウスの消去法を用いた逆行列算出プログラムを作ったんだが要るかい?
590デフォルトの名無しさん:2008/05/24(土) 09:27:07
数独を解くプログラムなら見てみたい
1層に81マスの状態を保持するスタックを作ってバックトラッキングを繰り返せば解けるかな。
592デフォルトの名無しさん:2008/05/24(土) 09:34:01
>>590
数独は真面目に解法を考えるよりも、闇雲に再帰で解いた方が手っ取り早い。
どうせ瞬時に解が得られるなら、工夫をするまでもないだろ。
593デフォルトの名無しさん:2008/05/24(土) 09:34:20
人によっちゃ解読時間の差はすごい出ると思う
遅い例と早い例合わせて見てみたい気がする
594560:2008/05/24(土) 09:50:59
>>573
課題2はどうにかできました。ありがとうございます!

課題3はどうしても自分ではできないので、どなたか完全版を書いてくれないでしょうか?
よろしくお願いします。
>>560の課題3です。。
595側近中の側近 ◆0351148456 :2008/05/24(土) 10:00:13
>>594
(っ´▽`)っ
留年すればいいじゃない☆
どうして留年したくないの?
>>593
同じバックトラッキングでも、1マスずつ、1から9まで当てずっぽうでやったらものすごい計算量になるので
もちろん効率は大事。
1マスずつマメに可能性をチェックして潰していくことが大事

俺なら1マスを16ビットにするかな
4ビットを使って1〜9の数字にする。0を未確定の状態とする。
9ビットで、各数字が入る可能性の状態を保持。
残った3ビットは・・・未使用でも良いしなんかのフラグに使っても良いと思う。

これを81マス分+αでスタックの1層を構築。

で、
1スタックで推定→推定に伴う各マスの評価
を繰り返す。
矛盾が見つかればスタックを1つ前の状態に戻し、推定したマスの可能性を消す。
597560:2008/05/24(土) 10:19:13
>>595
授業料等が1年分かかるのはきついかと・・
1年分まるまる働けないことにもなるので、合計するとかなりの損失になりますし
また、就職活動において、留年というのは浪人よりもマイナスに見られるらしいです
自業自得だ
599560:2008/05/24(土) 10:34:39
Fランのゴミクズ低学歴生きてる資格無しのハゲなので留年はきついです・・orz
すいませんバカで・
600デフォルトの名無しさん:2008/05/24(土) 11:58:09
[1] 授業単元: あるゼミの命題
[2] 問題文(含コード&リンク):()
  ファイル入力でも、プログラム上のランダム作成でも方法は問わず定義された2次元上の4頂点で形成される矩形を最低30以上用い
  それらを最少面積で敷き詰める為の各矩形の座標を求めよ(最適解でOK)
[3] 環境
 [3.1] OS: Windows2000
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 6.0 アカデミック版
 [3.3] 言語: C/C++/どちらでも可
[4] 期限: 2008年6月9日AM3:00まで
[5] その他の制限: C/C++の標準的な機能以外(フリーのライブラリ等)の使用は禁止
          プログラミングコンペのような物です。期限日に各々のプログラムで教授から受け取った矩形データを、一番最適配置出来た人間に、スーパーな特典が出ます。
          SA法とか使うとか騒がれていますが、プログラムがサッパリです。お願いします。
601600:2008/05/24(土) 12:07:04
条件が一つ抜けていました。
矩形を敷き詰める空間は矩形です。(要は正方形)
この正方形が最少で、その敷き詰めた各矩形の座標が出ていれば良いそうです。
602デフォルトの名無しさん:2008/05/24(土) 12:22:44
>>576
ディレクトリ構成については気になんかいないよ。
#じゃなくて$のほうがよくね?って言ってるんだけど。
実行ファイルがa.outになるのは知ってるが、通常の環境で
a.outと入力して実行できるか?って話。
./a.outが普通だろ、と言っている。

>>578
お前のほうが無知だな。
603デフォルトの名無しさん:2008/05/24(土) 12:25:42
>>597
ほぼ解答に近いものが提示されていて、それを手直しすればいいだけなのに
それすらもできない人を雇う会社の損失については考慮しないのですか?
604560:2008/05/24(土) 12:32:29
>>603
できないならできないと言え!
ここは宿題を片付けるスレだ!宿題を片付けられない奴が偉そうにレスをするな!
605デフォルトの名無しさん:2008/05/24(土) 12:43:30
char s[]="ABC";

sは読み取り専用の場合が殆どです。マルチバイトコードの場合はバイトサイズを
間違った為に何の前触れもなく突然死する、深刻なバグが起こるので、読み取り専
用にされてます。それだけでも使いにくいです。プログラムテスター泣かせなコードです。
このコードはコンパイラの最適化能力が低かった為、上記手段で共通文字列を手動で
共有させなければならなかった古い時代の化石コードです。現在は最適化が行われ、
同一内容固定文字列は共有されたコードが出力されます。
ですので、上記sを使って共有させるのと同じことが
#define s "ABC"
で出来ます。
上記のようなchar s[]を使うのはやめましょう。
将来的に上記構文は廃止されるかもしれません。

それに対して
char s[]={'A','B','C','¥0'};は書き込み可能なsを作ります.
その代わりマルチバイトキャラクタコードの変更可能文字列変数への宣言時直接初期化は難しくな
ってきてます
606デフォルトの名無しさん:2008/05/24(土) 12:45:04
[1] 授業単元: C言語1
[2] 問題文: xのy乗を求めるPower関数の作成
[3] 環境
 [3.1] OS: Windows XP SP2
 [3.2] コンパイラ名とバージョン: Microsoft Visual Studio 2005
 [3.3] 言語: C言語
[4] 期限: 今日中
[5] その他の制限: main関数はあらかじめ組みあがっていて変更できないです。なので省略しました。

#include <stdio.h>
double Power(double x, int y)
{
 int i;
 double tmp;

 tmp = 1.0;
 for(i=1; i<=y; i++){
  tmp *= x;
 }

 return(tmp);
}

実行結果例の
x = 4.0
y = -3
x^y = 0.015625
これが導き出せません
607デフォルトの名無しさん:2008/05/24(土) 12:46:05
>>604
元の処理とmakeArrayの処理を見比べろよ。
メモリ不足の判定処理がどれか分かるだろ?
コピーして貼れよ。それもできないのか?クズ。

期限までに土日2日もあるんだ。無い脳絞って本気で考えろ。
ダメなら日曜の夜にまた来い。で、その時点までの成果を見せろ。
608デフォルトの名無しさん:2008/05/24(土) 12:48:42
>>602
黙ってれば>>554だとばれないんだからおとなしくしてろって
609デフォルトの名無しさん:2008/05/24(土) 12:49:45
>>554 が最後まで粘着していて無知を晒していてキモスギ
610デフォルトの名無しさん:2008/05/24(土) 12:52:20
こんなもんできなくて専門の道行くなんて迷惑以外の何者でもないだろう…
611デフォルトの名無しさん:2008/05/24(土) 12:55:14
612デフォルトの名無しさん:2008/05/24(土) 12:56:20
最近の大学は専門でなくてもプログラミング初級が必須だったりするけどな
613デフォルトの名無しさん:2008/05/24(土) 13:03:17
>>606
x^(-y)=1/(x^y) だから,y の符号みればおk
double Power(double x, int y){
int i, n = ( y < 0 ) ? -y : y;
double ret = 1.0;
for ( i = 0; i < n; ++i ) ret *= x
return ( n == y ) ? ret : 1.0 / ret;
}
実際には,これに x が 0 のときとか,ret が 0 になったときとか,
y が 0 か 1 のとき辺りの例外処理を入れれ
614603:2008/05/24(土) 13:07:22
>>606
抜粋ですが、以下のように変更すればよいです。

int i;
double tmp;

if (y < 0) {
 return Power(1/x, -y);
}
tmp = 1.0;
615デフォルトの名無しさん:2008/05/24(土) 13:21:23
京大と東大卒の教授の下で指導を受けた俺は、大規模な施設のある大学では
UNIXを使用していたが、自分のところじゃ % で、a.out でも実行は出来た。
Linux系ではそうでないものもあるが、まぁとりあえず、言うだけ言っておいて
自分が知っていることだけで話をして、相手に無知だってことはないだろ。
俺はお前が無知だなんて言ってないが、お前が通常の環境だの普通だの
#じゃなくて$の方が よくね? という個人的な主観でモノを言っている方が
無知丸出しに見えるんだが?自分の経験や知っていることだけがこの世のすべてだとでも?
対面交通じゃ、左側通行より右側通行が多いんだぜ、ベイビー?
ジャポネーゼは島国だから、ちったぁ引きこもってねーで海外にでも旅行してみな。
考えが360度変わっちまうぜ。おっと、一周して戻っちまったぜ、ベイビー。
616デフォルトの名無しさん:2008/05/24(土) 13:24:49
>>615
ごめん。あんまり無知無知言われるのでかっとなった。
ユーザプロンプトが%であるか$であるか、ではなくて、言いたいのは
少なくとも#ではないだろう、ということ。
カレントディレクトリがPATHに含まれているのがOS標準なのか、
/etc/profileに記述されているからなのか、ということ。
後者であればシステム管理者が行ってはいけない設定をしてるよね。

そういう話なんです。
617デフォルトの名無しさん:2008/05/24(土) 13:25:16
ttp://okwave.jp/qa277534.html
まっ、こんなこともあるから、それなりの説明をしてくれや、ボーイ?
618デフォルトの名無しさん:2008/05/24(土) 13:27:07
また足りませんでした。
もしカレントディレクトリがPATHに含まれるようなUN*X系で存在するので
あればわたしの知識不足でした。
619デフォルトの名無しさん:2008/05/24(土) 13:29:16
>>613
>>614
参考にさせていただきます
ありがとうございました
620デフォルトの名無しさん:2008/05/24(土) 13:31:24
黙ってれば>>554だとばれないんだからおとなしくしてろって
621デフォルトの名無しさん:2008/05/24(土) 13:49:51
>>600
興味がありますが、いま一つ意味がわかりません。
具体的な例を示していただくとわかりやすいと思います。お願いいたします。
622デフォルトの名無しさん:2008/05/24(土) 14:01:57
プログラムを書ける人!=数学的なアルゴリズムに長けている人
役に立ちそうな資料を載せとくと誰かががんばるかもしれないですよ?
623デフォルトの名無しさん:2008/05/24(土) 14:11:37
海外旅行にいったら感化されて日本はこれだから駄目だとか言い出すアホを思い出した
624600:2008/05/24(土) 14:40:13
>>621
おお、ありがとうございます。
口頭で出た問題なので、私が説明不足でした。

30個以上の、様々な大きさの四角形を、正方形に敷き詰める
その正方形が小さければ小さい程良い、と言う問題です。

プログラム部分での、その様々な四角形の与え方は
四角形構造体の配列をランダム初期化で作っても
ファイルに定義してあって読み込んでも、何でも良いそうです。

コンペではCSVファイルで、1行に一矩形の情報(縦横の値、整数2つ)で、数は見てのお楽しみ(30以上は確定)だそうです

625600:2008/05/24(土) 15:01:06
>>622
一応ネットで調べたんですが、凄そうな方の卒論見たいのしか見つかりませんでした

ttp://chihara.aist-nara.ac.jp/public/research/thesis/master/98/sawa9651054.pdf

ttp://www.jaist.ac.jp/library/thesis/is-master-2005/paper/ogawa-t/paper.pdf
626デフォルトの名無しさん:2008/05/24(土) 15:08:32
[1] C++演習:
[2] 問題文:キーボードからの、数値入力(制限あり)
[3] 環境
 [3.1] Windows XP SP/Fedora Linux Core 8
 [3.2] VS2005 VC++/gcc++
 [3.3] 言語: C/C++
[4] 期限:
[5] STLはOKです、boostはちょっと・・・


キーボードから入力した数値を
一番目の数値をint xに、二番目の数値をint yに代入し、それ以降の数値は、
破棄したいのですがどのように書いたらイイデツカ
教えてくださいエロイヒト

int main()
{
istream_iterator<int> iit( cin );
istream_iterator<int> iit_eof;

while( iit != iit_eof ) {
cout << *iit << endl;
iit++;
}
return 0;
}
627デフォルトの名無しさん:2008/05/24(土) 16:05:09
int x, y;
char ss[16];

gets(ss); //例:4278入力
x = atoi(ss[0]); //x = 4
y = atoi(ss[1]); //y = 2

--------------------------------

int i, tmp[16];

for(i=0;tmp[i] != 'e';i++) {
scanf("%d", &tmp[i]);
}

x = tmp[0];
y = tmp[1];

---------------------------
前者左から1桁目をXへ、2桁目をYへ
後者1文字ずつ入力し、1回目をXへ、2回目をYへ、eで終了
628デフォルトの名無しさん:2008/05/24(土) 16:14:17
何を言ってるのかね
629デフォルトの名無しさん:2008/05/24(土) 16:19:49
>>627>>626宛だろ
630デフォルトの名無しさん:2008/05/24(土) 16:52:06
一番目の数値って数値の先頭の桁のことなのか?
631デフォルトの名無しさん:2008/05/24(土) 17:04:21
>x = atoi(ss[0]); //x = 4
ひどすぎるw
632デフォルトの名無しさん:2008/05/24(土) 17:04:31
ところでatoiってcharを渡してもいいんだっけ?
633デフォルトの名無しさん:2008/05/24(土) 17:07:56
[1] 授業単元:C言語
[2] 問題文
合計で税込み500円以下の買い物をすることにした
消費税別の価格で100円、150円、170円、220円、240円、290円の商品がある
この中から2つ選んで500円に一番近い組み合わせを表示しなさい
ただし2つの商品は違う種類のものを選ぶこと
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限:今月中(できるだけ早めに解答していただけると助かります
[5] その他の制限:大学3年レベル
お願いします
634デフォルトの名無しさん:2008/05/24(土) 17:22:55
正しくはconst char*。
なのでss[0]で可。
635デフォルトの名無しさん:2008/05/24(土) 17:23:22
>>633
税込み価格で500円に一番近い商品?
636デフォルトの名無しさん:2008/05/24(土) 17:24:52
>>634
const char*にcharが渡せるの?
637デフォルトの名無しさん:2008/05/24(土) 17:25:06
税抜き460円の組み合わせが最良に思うのだが
170 + 290 = 460、220 + 240 = 460と二つあるんだけれど、
どうしよ?

あと、レジは2つまとめて税計算、端数切り捨てでよいの?
638デフォルトの名無しさん:2008/05/24(土) 17:25:56
atoiが何の略か理解しようってことですよね、わかります。
639デフォルトの名無しさん:2008/05/24(土) 17:26:41
>>634
可じゃねーよw
640側近中の側近 ◆0351148456 :2008/05/24(土) 17:35:31
641デフォルトの名無しさん:2008/05/24(土) 17:37:13
>>640
priseは大学三年生レベルに合わせてあげてるのか?
642側近中の側近 ◆0351148456 :2008/05/24(土) 17:38:46
(っ´▽`)っ
終わった・・・スペルミスだ
(っ´ω`)っ しにたいよぅ
643デフォルトの名無しさん:2008/05/24(土) 17:39:53
>>640
解答ありがとうございます
こんなに早く答えてもらえるとは思ってませんでした
644側近中の側近 ◆0351148456 :2008/05/24(土) 17:40:52
>>643
(っ´▽`)っ
で、priseで提出するんだよね?当然
645デフォルトの名無しさん:2008/05/24(土) 17:43:05
>>640
> ただし2つの商品は違う種類のものを選ぶこと

これを実装してないように思えるけどそこは残課題として頑張れって事かな
側近はいつも何かをあえて残しているように思う
646デフォルトの名無しさん:2008/05/24(土) 17:45:25
とりあえず自分で実行してから発言するように

誰とは言わないが
AtoI
647デフォルトの名無しさん:2008/05/24(土) 17:45:25
実装されてた。死んでくるわw
648側近中の側近 ◆0351148456 :2008/05/24(土) 17:47:07
>>647
(っ´ω`)っ
いっしょにしのうね
649デフォルトの名無しさん:2008/05/24(土) 17:47:58
AtoZですね わかります
650デフォルトの名無しさん:2008/05/24(土) 17:49:39
>>646
どっちに言ってるかはっきりしてくれ
651側近中の側近 ◆0351148456 :2008/05/24(土) 17:50:45
(っ´ω`)っ
とりあえずatoiを「あとい」と呼ぶ奴はダメだな☆
652626:2008/05/24(土) 17:56:24
>>626だす、なんか長くなってシマイマスタ、scanf()は大人の事情で使いたくないので・・・・orz
#include <iostream>
#include <iterator>
#include <string>
#include <sstream>
#include <math.h>
using namespace std;
class Math {
 div_t ires;
 int iquot, irem;
public:
 Math ():iquot(0), irem(0){}
 ~Math(){}
 int HeadFigure(int n);
 int Digit(int n);
};
int Math::HeadFigure(int n)
{
 int digit = 10;
 while( digit < 65535 ) {
 ires = div(n, digit);
 iquot = ires.quot; // 商
 irem = ires.rem; // 余り
 if (0 < iquot && iquot < 10)
  return iquot;
 if (iquot == 0)
  return irem;
 digit *= 10;
 }
 return -1;
}
653デフォルトの名無しさん:2008/05/24(土) 17:56:32
>651
俺はだめプログラマーだたのか。
654626:2008/05/24(土) 17:57:20
int Math::Digit(int n)
{
 int cou = 1;
 int digit = 10;
 while( digit < 65535 ) {
  ires = div(n, digit);
  iquot = ires.quot; // 商
  irem = ires.rem; // 余り
  if (0 < iquot && iquot < 10)
  return cou;
  if (iquot == 0)
   return -1;
  digit *= 10;
  ++cou;
 }
  return -1;
}
655626:2008/05/24(土) 17:57:57
int main()
{
 Math math;
 int x, y, cou;
 double result;
 istream_iterator<int> iit( cin );
 istream_iterator<int> iit_eof;
 while( iit != iit_eof ) {
  cou = math.Digit(*iit);
  if (cou == -1)
   cout << "二桁以上の整数を入力してください" << endl;
  x = math.HeadFigure(*iit);
  cout << x << endl;
  result = x * pow(10.0, (double)cou);
  y = math.HeadFigure(*iit - result);
  cout << y << endl;
  iit++;
  }
}
656デフォルトの名無しさん:2008/05/24(土) 18:06:22
長くなったならうpろだ使えって
657デフォルトの名無しさん:2008/05/24(土) 18:07:18
課題内容からは予想できない規模だったようだ
658626:2008/05/24(土) 18:09:42
>>656
スマン
だめだしタノンマス
class Math
は、使い回しが出来そうなんでわざとクラスにシマスタ
template使ったら、intでもlongでも使えて(現実的にはありえんがw)
より汎用的になると思われるが、そこまでの実力はない・・・orz
659デフォルトの名無しさん:2008/05/24(土) 18:13:49
intもlongも同じ32bitって環境は多いから凹まずがんばれ
660デフォルトの名無しさん:2008/05/24(土) 18:15:57
ほんとに先頭二桁取りたいだけだったのか。
なぜこうも。。。そしてなぜ65535。。。
661626:2008/05/24(土) 18:22:38
>>660
そうそう(^^;
実は、ボードゲームを作っていて、駒を置く座標の入力を
X座標Y座標[enter]で入力したかっただけなんですw
具体的には
35enterってな感じっす
X座標[enter]
Y座標[enter]
ならcinで全然OKだったんだけど、少々意地になってシマイマスタ
662デフォルトの名無しさん:2008/05/24(土) 18:32:45
>>661
各座標は1-9の範囲で十分ってこと?
 string s;
 getline(cin,s);
 printf("%d %d\n", s[0]-'0', s[1]-'0');
上記のようなやり方では何がダメなの?
こだわるのはいいけれど、こだわりどころを間違えてはいけないと思うよ。
main関数が何も返さないのを直すとか、そういうもっと基本的な部分を
こだわってみようよ。
663デフォルトの名無しさん:2008/05/24(土) 18:35:14
main関数とかこだわらなくていいだろ
それよりもせっかくボードゲーム作るならAIとかにこだわれよ
664デフォルトの名無しさん:2008/05/24(土) 18:43:46
9マス以内だとオセロか将棋か
665626:2008/05/24(土) 18:52:55
>>662
return 0;
が抜けてマスタ、コピペの失敗だす
こだわりその2は
istream_iteratorが使って見たかったッス
それから
printf("%d %d\n", s[0]-'0', s[1]-'0');
std::stringはCの配列[]をオーバーロードしてたんですよね、忘れてマスタ、これを忘れてたのは痛い
>>663
AIもおもろそうだけど、socketの実装が先に出来ているんで
サーバーを介して、人 vs 人の、対戦型ボードゲームを先に作ってその後で考えます
>>664
そんなところです
666デフォルトの名無しさん:2008/05/24(土) 22:16:14
確かにゲーム作りには愛が必要だなぁ。
667デフォルトの名無しさん:2008/05/24(土) 22:58:46
いや、金だろ
668デフォルトの名無しさん:2008/05/24(土) 23:05:17
>>626
こんなんどう?
x:1-9 y:a-i
#include<iostream>
#include<string>
#include<cctype>

int main(void){
std::string s;
int x, y;

for(;;){
x=y=-1;
std::cout << "座標を入力してください ";
getline(std::cin, s);
if(s.size()!=2) continue;
for(int i=0;i<2;i++){
if(isupper(s[i])) y=s[i]-'A'+1;
if(islower(s[i])) y=s[i]-'a'+1;
if(isdigit(s[i])) x=s[i]-'1'+1;
}
if(x>=1 && x<=9 && y>=1 && y<=9) break;
}
std::cout << "x=" << x << " y=" << y << std::endl;

return 0;
}
669668:2008/05/24(土) 23:35:03
ちょっと修正した
for(int i=0;i<2;i++){
if(isupper(s[i])) y=s[i]-'A'+1;
if(islower(s[i])) y=s[i]-'a'+1;
if(isdigit(s[i])) x=s[i]-'1'+1;
}

for(int i=0;i<2;i++){
if(isalpha(s[i])) y=toupper(s[i])-'A'+1;
if(isdigit(s[i])) x=s[i]-'1'+1;
}
670デフォルトの名無しさん:2008/05/25(日) 00:28:10
[1] 授業単元: プログラミング実習(C)
[2] 問題文(含コード&リンク):
共用体を用いた単精度実数型の値のバイトオーダーを変換する関数
(ビッグエンディアン→リトルエンディアン)を作成せよ
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: ([2008年5月28日まで]
[5] 以下のコードが与えられています

union byteorder {

(A)

float fval;

};

float conv_order_(float *f)
{
union byteorder buf;

buf.fval = *f;

(B)

return buf.fval;
};

(A)と(B)を埋める問題です。
よろしくお願いします。
671デフォルトの名無しさん:2008/05/25(日) 01:16:30
>>670
union byteorder {
unsigned char bytes[4];
float fval;
};

float conv_order_( float* f )
{
union byteorder buf;

buf.fval = *f;

{
unsigned char temp;

temp = buf.bytes[0];
buf.bytes[0] = buf.bytes[3];
buf.bytes[3] = temp;

temp = buf.bytes[1];
buf.bytes[1] = buf.bytes[2];
buf.bytes[2] = temp;
}

return buf.fval;
}
672デフォルトの名無しさん:2008/05/25(日) 01:39:32
#include<stdio.h>

int main(){
double x[]={20.0,40.0,60.0,80.0,100.0};
double y[]={1.31,2.93,3.21,4.85,5.46};
double a,b;
int i,j,n;
double xk,yk,xy,x2;
FILE *fp;
xk=yk=xy=x2=0;
a = 0;
b = 0;
n=5;
fp = fopen("test.dat","w");
for(i=0;i<n;i++){
xk += x[i];
yk += y[i];
xy += x[i]*y[i];
x2 += x[i]*x[i];
fprintf(fp,"%f %f¥n",x[i],y[i]);
}
printf("%lf %lf %lf %lf¥n",xk,yk,xy,x2);
a = (n*xy - xk*yk)/(n*x2 - xk*xk);
b = (x2*yk - xy*xk)/(n*x2 - xk*xk);
printf("f(x) = %lf * x + %lf¥n",a,b);
return 0;
}
ここまでは教えて頂いたのですが、
実際に実行してみるとデバッグでエラーが発生しました。

上のプログラムのどこかを直せばいいのでしょうか?
673670:2008/05/25(日) 02:02:43
>>671
ありがとうございました。
674デフォルトの名無しさん:2008/05/25(日) 02:09:45
>>672
実際に実行するとエラーが出ずに終わりました。
6751/2:2008/05/25(日) 02:39:02
char *change(char *);
main(){
char *ptr ="I'm";
char *x;
x=change(ptr);
printf("change()=%s\n",x);
}
char *change(char *ptr){
char *s;
char t;
int i,count=0;
while(*ptr!='\0'){
ptr++;
count++;
}
ptr-=count;
for(i=0;i<=count;i++){
if(*(ptr+i)>=0x41 && *(ptr+i)<=0x5A){
t=*(ptr+i)+32;
*(s+i)=t;
}else if(*(ptr+i)>=0x61 && *(ptr+i)<=0x7A){
t=*(ptr+i)-32;
*(s+i)=t;
}else{
t=*(ptr+i);
*(s+i)=t;
}
}
*(s+count)='\0';
return s;
}
半角英数字文字列の大文字を小文字に、小文字を大文字にするプログラムなんですがセグメンテーション違反を吐き出します。
6762/2:2008/05/25(日) 02:39:28
続き
簡略化してみたプログラムで
main(){
char *ptr="strings";
char *s,t;
int i,count=0;
while(*ptr!='\0'){
ptr++;
count++;
}
ptr-=count;
for(i=0;i<count;i++){
if(*(ptr+i)>=0x41 && *(ptr+i)<=0x5A){
*(s+i)=*(ptr+i)+35;
}else if(*(ptr+i)>=0x61 && *(ptr+i)<=0x7A){
*(s+i)=*(ptr+i)-29;
}else{
*(s+i)=*(ptr+i);
}
printf("a");
}
*(s+count)='\0';
printf("%s",s);
}
を作ってみたのですが文字列が4文字以上になるとセグメンテーション違反を吐き出します。
なぜでしょうか?
677訂正です:2008/05/25(日) 02:41:59
2/2の
f(*(ptr+i)>=0x41 && *(ptr+i)<=0x5A){
*(s+i)=*(ptr+i)+35;
}else if(*(ptr+i)>=0x61 && *(ptr+i)<=0x7A){
*(s+i)=*(ptr+i)-29;
}else{
*(s+i)=*(ptr+i);
}

f(*(ptr+i)>=0x41 && *(ptr+i)<=0x5A){
*(s+i)=*(ptr+i)+32;
}else if(*(ptr+i)>=0x61 && *(ptr+i)<=0x7A){
*(s+i)=*(ptr+i)-32;
}else{
*(s+i)=*(ptr+i);
}

です。
678デフォルトの名無しさん:2008/05/25(日) 03:31:47
sってどこだよ
679デフォルトの名無しさん:2008/05/25(日) 03:36:24
>>675
sは一体どこを指しているんだ。

初期化していない(どこか知らないテキトーなアドレスを指している)ポインタをアクセスしたら
落ちて当たり前。
4文字未満で落ちなかったのは偶然だ。
680デフォルトの名無しさん:2008/05/25(日) 03:41:23
>>675
ポインタと変数のスコープの勉強をやり直し
681675:2008/05/25(日) 04:08:26
配列で解決しました。
ポインタでの問題も理解しました。

局所変数のアドレスを返してしまうスコープの問題も宣言で大域変数にすることで解決しました。
ありがとうございました。
682633:2008/05/25(日) 14:15:40
633です
たびたびすいません
もう少し簡単なプログラムはないでしょうか
あと価格が290円ではなく390円でした

おねがいします
683デフォルトの名無しさん:2008/05/25(日) 14:19:07
>>682
290を390に書き換えろよ
ソース見れば理解できるだろ
684デフォルトの名無しさん:2008/05/25(日) 14:30:53
>>683
sizeofを習っていないので使ってないプログラムを
お願いしたいのですが
685デフォルトの名無しさん:2008/05/25(日) 14:33:02
元:sizeof(prise) / sizeof(prise[0])
変:6
686デフォルトの名無しさん:2008/05/25(日) 14:36:31
>>685
本当にありがとうございます
687デフォルトの名無しさん:2008/05/25(日) 14:39:56
番兵を使ったほうが分かりやすいのかしら
688デフォルトの名無しさん:2008/05/25(日) 14:40:51
[1] 授業単元:再帰呼び出し
[2] 問題文:フィボナッチ数列とは(0,1,1,2,3,5,8,13,21…)のような数列で、n番目のフィボナッチ数Fnは、F0=0,F1=1, Fn+2=Fn+Fn+1(n≧0)で表すことができる。
n番目のフィボナッチ数を返す関数fiboを再帰関数で作成せよ。
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C++
[4] 期限:2008年5月26日21:00まで
[5] その他の制限:
小文字が出来なくて見にくくなってしまいましたが,よろしくお願いします!
689デフォルトの名無しさん:2008/05/25(日) 14:49:41
なぁ n番目ってさ、最初は1番目、F1じゃねーのか?
最初のは0番目っていうのか?おかしくね?
690デフォルトの名無しさん:2008/05/25(日) 15:13:44
[1] 授業単元:プログラミング入門
[2] 問題文:(キーボードから5つの数値を取得し、その合計を出力せよ。
ただし、変数は2つまでしか使えないとする。)
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: 5/27
[5] その他の制限: (printf、四則演算、scanfを習いました)
よろしくお願いします
691デフォルトの名無しさん:2008/05/25(日) 15:17:05
>>688
int fibo(int n)
{
const int n_max = 46;
static int cache[n_max+1] = {0};
if(n < 0 || n > n_max) return -1;
if(n <= 1) return n;
if(cache[n]) return cache[n];
return cache[n] = fibo(n-2) + fibo(n-1);
}
692デフォルトの名無しさん:2008/05/25(日) 15:19:43
>>690
#include<stdio.h>
int main()
{
int sum = 0, v;
scanf("%d", &v); sum += v;
scanf("%d", &v); sum += v;
scanf("%d", &v); sum += v;
scanf("%d", &v); sum += v;
scanf("%d", &v); sum += v;
printf("合計は%d\n", sum);
return 0;
}
693デフォルトの名無しさん:2008/05/25(日) 15:23:54
690はコピペを推奨するよくない課題だな
694デフォルトの名無しさん:2008/05/25(日) 15:31:55
コピペせずに頑張る(`・ω・´)
#include<stdio.h>
int main()
{
int sum_i = 0, v;
for(; (sum_i & 7) < 5; sum_i ++) {
scanf("%d", &v);
sum_i += v * 8;
}
printf("合計は%d\n", (sum_i & ~7) / 8);
return 0;
}
695デフォルトの名無しさん:2008/05/25(日) 15:43:11
>>692-694
回答ありがとうございます

授業ではなくてやっているものなので
先輩が課題を作っています
696デフォルトの名無しさん:2008/05/25(日) 15:48:21
>>690
キーボードから取得する数値は、整数のみ?
697デフォルトの名無しさん:2008/05/25(日) 15:49:25
>695

これって配列の変数1つとループ用の変数1つを使えって問題なんじゃ?
698691:2008/05/25(日) 15:56:26
>>688
改良しました。
//compile as C++
int fibo(int n){
static int *fibonatti_seq_table=NULL;
static int already_done=1;
if( (n<0) || (n>46) )return -1;
if(n<=1)return 1;
if(n<=already_done)return fibonatti_seq_table[n];
if(fibonatti_seq_table==NULL){
fibonatti_seq_table=new int[47];
for(int i=2;i<=46;i++){
fibonatti_seq_table[i]=fibo(i-1)+fibo(i-2);
already_done=i;
}
}
return fibo(n);
}
699デフォルトの名無しさん:2008/05/25(日) 16:02:12
>>688
int fibo(int n) {
if (n == 0) return 1;
if (n == 1) return 1;
return fibo(n-1) + fibo(n-2);
}
700デフォルトの名無しさん:2008/05/25(日) 16:06:27
再帰処理は禁止だな
何でもアリになっちまう。
再帰処理したいんだったっらLISPでもやれ
701デフォルトの名無しさん:2008/05/25(日) 16:09:19
>>700
その理屈はおかしい
702デフォルトの名無しさん:2008/05/25(日) 16:09:33
お前は何を言ってるんだ?
703デフォルトの名無しさん:2008/05/25(日) 16:11:06
もうプログラマとしての再起不能、なんつって
704デフォルトの名無しさん:2008/05/25(日) 16:15:15
691の698のコード、業務や宿題で提出したら
ぶん殴られるな
705デフォルトの名無しさん:2008/05/25(日) 16:16:25
>>700
末尾再帰は非再帰に置き換えられるが
アッカーマン関数のような再帰点が複数ある場合は
置き換え不可能
706デフォルトの名無しさん:2008/05/25(日) 16:17:42
なぜ殴られるの?
707デフォルトの名無しさん:2008/05/25(日) 16:18:11
>>706
そっとしとけよ。
708デフォルトの名無しさん:2008/05/25(日) 16:28:07
>>705
コールスタックを自前で実現すれば見た目非再帰になるけれど?
709デフォルトの名無しさん:2008/05/25(日) 16:35:12
#include <stdio.h>
#include <stdbool.h>

static unsigned long long fib(unsigned n)
{
if (n == 0) return 0;
static unsigned long long a[94] = {0, 1, };
bool inRange = n < sizeof(a) / sizeof(* a);
if (inRange && a[n] != 0) return a[n];
// if (fib(n - 1) > INT64_MAX) return UINT64_MAX;
unsigned long long val = fib(n - 1) + fib(n - 2);
if (inRange) a[n] = val;
return val;
}

int main()
{
for (int n = 0; n <= 93; ++n) { // max fib with ulonglong
printf("%d:%llu\n", n, fib(n));
}
return 0;
}
710デフォルトの名無しさん:2008/05/25(日) 16:37:10
もうわかったからいいよ
711デフォルトの名無しさん:2008/05/25(日) 17:01:21
>>698=691
どうせするならここまでやれ

int fibo(int n){
static int *fib_tb=NULL;
if(n<0)
return -1;
if(n>46)
return -1;
if(n<=1)
return 1;
if(fib_tb)
return fib_tb[n];
fib_tb=new int[47];
fib_tb[0]=fib_tb[1]=1;
for(int i=2;i<=46;i++)
fib_tb[i]=fib_tb[i-1]+fib_tb[i-2];
return fibo(n);
}
712691:2008/05/25(日) 17:07:00
どうでもいいけど、698は私じゃないです。別人です。
713デフォルトの名無しさん:2008/05/25(日) 17:13:14
もうわかったからいいよ
714デフォルトの名無しさん:2008/05/25(日) 17:54:54
533の者です。
再度書き込み失礼します。

[1] 授業単元:C言語の実習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6664.txt
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C,c++
[4] 期限:未完成のまま出してしまったので再提出だと思うので、できれば早めにお願いします。
[5] その他の制限:return使用禁止。 forやwhile、printfなどの初歩的なものしか習ってません。
分けたりせずに1本のプログラムで書いて下さい。
715デフォルトの名無しさん:2008/05/25(日) 18:06:21
>>714
#include <stdio.h>
void main(void)
{
int a[10]={25,56,65,80,73,53,68,87,36,78};
int i,j,k;
printf("整列前:");
for(i=0; i<10; i++)
printf("%d ", a[i]);
printf("\n");
for(i=9; i>=0; i--)
for(j=0; j<i; j++)
if(a[j]<a[j+1]) {
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
printf("整列後:");
for(i=0; i<10; i++)
printf("%d ", a[i]);
printf("\n");
}
716デフォルトの名無しさん:2008/05/25(日) 18:06:31
>>714
#include <stdio.h>
void main(void)
{
int a[10]={25,56,65,80,73,53,68,87,36,78};
int i,j,k;
printf("整列前:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
for(i=0;i<10;i++)
for(j=i;j<10;j++)
if(a[i]<a[j]){
k=a[i]; a[i]=a[j]; a[j]=k;
}
printf("整列後:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
}
717デフォルトの名無しさん:2008/05/25(日) 18:15:50
>>715
>>716

お二人ともありがとうございます。
感謝しています。
718デフォルトの名無しさん:2008/05/25(日) 19:06:19
お願いします。

[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):
ある自然数Nを入力し、N以下の3つの自然数a,b,cで、
aの2乗+bの2乗=c2乗
を満たすものを全て表示するプログラムを作りなさい。
ただし、
a<b となっているものだけを表示(a=3,b=4,c=5は表示するがa=4,b=3,c=5は表示しない)。
a,b,cが共通の素因数を持っているものは表示しない(a=6,b=8,c=10は表示しない)。
とすること。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: ([2008年6月6日まで]
[5] その他の制限:簡単な配列や関数までは習いました
719デフォルトの名無しさん:2008/05/25(日) 19:11:52
>>605
ANSI準拠していない場合にはあり得るかも知れませんが、
それはどのコンパイラの話ですか?

#include<stdio.h>
#include<string.h>

void foo(void){
char s[]="foo Initialized!", *p;
puts("----------");
puts(s);
if((p=strchr(s, '!'))) *p='?';
puts(s);
}

void bar(void){
char *s="bar Initialized!", *p;
puts("----------");
puts(s);
if((p=strchr(s, '!'))) *p='?'; // 本当はやっちゃダメ
puts(s);
}

int main(void){
foo();
foo();
bar();
bar();
return 0;
}
720デフォルトの名無しさん:2008/05/25(日) 19:21:56
>>718
#include <stdio.h>
int gcd(int a, int b) { return a % b ? gcd(b, a % b) : b; }

int main(void)
{
int a, b, c, n;

scanf("%d", &n);

for(c=1; c<=n; c++) {
for(a=1; a<=n; a++) {
for(b=a+1; b<=n; b++) {
if(c*c==a*a+b*b && gcd(a, b)==1) printf("a=%d b=%d c=%d\n", a, b, c);
}
}
}

return 0;
}
721デフォルトの名無しさん:2008/05/25(日) 19:27:10
a<=n → a<=c、 b<=n → b<=c にしたほうがいいな
722デフォルトの名無しさん:2008/05/25(日) 19:33:30
>>718
#include<stdio.h>
#include<math.h>

int gcd(int a, int b){
int c;

while((c=a%b)) a=b,b=c;
return b;
}

int gcd3(int a, int b, int c){
return gcd(a, gcd(b, c));
}

int main(void){
int a, b, c, N, chk;

scanf("%d", &N);
for(c=3;c<=N;c++){
for(b=sqrt(c*c/2)+1;b<c;b++){
a=sqrt(c*c-b*b-1)+1;
chk=c*c-b*b-a*a;
if(chk==0 && gcd3(a, b, c)==1) printf("a=%d b=%d c=%d\n", a, b, c);
}
}
return 0;
}
723デフォルトの名無しさん:2008/05/25(日) 19:41:17
>>718
int gcd(int a, int b) {
  return b == 0 ? a : gcd(b, a % b);
}
int main() {
  int N, m, n;
  scanf("%d", &N);
  for (n = 1; n*n <= N; ++n) 
    for (m = n+1; m*m+n*n <= N; m+=2) 
      if (gcd(n, m) == 1)
        printf("%d %d %d\n", m*m-n*n, 2*m*n, m*m+n*n);
 return 0; 
}
724デフォルトの名無しさん:2008/05/25(日) 19:48:38
aとbが互いに素でc*c==a*a+b*bならaとc、bとcも互いに素だろ
725デフォルトの名無しさん:2008/05/25(日) 19:50:03
>>724
そうだねw
726718:2008/05/25(日) 20:11:29
ありがとうございました。
727デフォルトの名無しさん:2008/05/25(日) 20:49:27
おねがいします。

[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク):
1、学生10名の3科目 英語数学国語の成績表がある(値は任意で入力)。
個人別の合計、及び科目ごとの平均を計算するプログラムを、次の仕様に従って組みなさい。
(1)各学生の点数をキーボードから入力すること。
(2)合計、及び平均を求める箇所を関数とすること。
(3)結果をファイル(kekka.txtなど)に出力すること。
(学生名  英語  数学  国語  合計)
2、問題1で作成したプログラムを、合計点が大きい順にソートして出力するように変更しなさい。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VC2005
 [3.3] 言語: C/C++どちらでも可
[4] 期限: [2008年5月26日14:30まで]
[5] その他の制限:
728デフォルトの名無しさん:2008/05/25(日) 21:09:47
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク):
【n人のテストの得点に関する順位付け】
 以下の関数にメインプログラムを付け、プログラムを実行せよ。実際何回の演算が行われたか数えるルーチンを追加すること。
 @http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6665.txt
 Ahttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6666.txt
 Bhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6667.txt
 データhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6668.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc g++
 [3.3] 言語: どちらでも可
[4] 期限: 5月27日24:00まで
[5] その他の制限: 特にないです。よろしくお願い致します。
729デフォルトの名無しさん:2008/05/25(日) 22:55:40
[1] 授業単元:プログラム実験
[2] 問題文(含コード&リンク):
入力された値を2進数に変換せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:bcc 
[4] 期限: 5月26日まで
[5] その他の制限:よろしくお願い致します。
730デフォルトの名無しさん:2008/05/25(日) 23:00:21
>>729
#include<stdio.h>

int main(void){
int i, n;

scanf("%d", &n);
for(i=0;(n>>i) && i<32;i++);
for(i--;i>0;i--) printf("%d", (n>>i)&1);
printf("%d\n", n&1);
return 0;
}
731デフォルトの名無しさん:2008/05/25(日) 23:23:31
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キーボードから入力した数だけ、*(アスタリスク)を表示するプログラムを作れ。
ただし、*を10個表示させるたびに改行を入れよ。
[3] 環境
 [3.1] OS: WindowsVista
 [3.2] コンパイラ名とバージョン:VisualStudio2008
 [3.3] 言語:C言語
[4] 期限: [2008年5月28日00:00まで]
[5] その他の制限:printf,scanf,for,while,do-while,if,switch文のみ使用可。

お願いします。
「*を入力された数だけ表示」というところはできましたが、10個ごとに改行するのができません。
#include <stdio.h>
int main(void)
{
int x,n,m,y;
printf("*(アスタリスク)を表示する数を入力してください:");
scanf("%d",&x);
for(n=1;n<=x;n++){
printf("*");
y=n/10;
for(m=1;m<=y;m=m+10){
printf("\n");
}
}
return 0;
}
732デフォルトの名無しさん:2008/05/25(日) 23:26:51
>>731
#include <stdio.h>
int main(void){
int x,n;
printf("*(アスタリスク)を表示する数を入力してください:");
scanf("%d",&x);
for(n=1;n<=x;n++){
printf("*%.*s", !(n%10), "\n");
}
return 0;
}
733デフォルトの名無しさん:2008/05/25(日) 23:49:02
>>547
うはw同じクラスだww

これで課題間に合いそうだ、スレのおかげで助かったよ。
734デフォルトの名無しさん:2008/05/25(日) 23:57:02
>>732
早いレスありがとうございます。
ありがたいのですが、
printf("*%.*s", !(n%10), "\n");
の部分について、式が3つあるようなprintf文は習っておらず、意味もわかりません。
申し訳ありませんが、再度お願いします。
735デフォルトの名無しさん:2008/05/26(月) 00:04:34
>>734
#include <stdio.h>
int main(void){
int x,n,m;
printf("*(アスタリスク)を表示する数を入力してください:");
scanf("%d",&x);
for(n=0;x-n>10;n+=10){
for(m=0;m<10;m++) printf("*");
printf("\n");
}
for(;n<x;n++) printf("*");
printf("\n");
return 0;
}
736デフォルトの名無しさん:2008/05/26(月) 00:19:44
>>735
本当にありがとうございます!
二度手間かけてすみませんでした。
737 ◆wYUuBm6d7Q :2008/05/26(月) 01:13:32
単元:データ構造

問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6669.txt

環境:Windows vista
VisualStudio2008
C言語

期限:5/26 17:00まで

その他:基本事項は学びました。
期限が近くて焦ってます。。よろしくお願いします。

738デフォルトの名無しさん:2008/05/26(月) 02:54:19
>>737
当方の環境は Windows XP/cygwin 処理系は gcc 3.4.4 です。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

#define N 100000
#define T 100
int main()
{
  int n, p, q, st, t, i;
  time_t start_time, stop_time;
  start_time = time(NULL);
  for (i = 0; i < T; i++) {
    for (p = 3, n = 1; p <= N; p += 2) {
      st = sqrt(p);
      for (q = 2; q <= st; q += (q == 2) ? 1 : 2) {
        if ((t = p % q) == 0)
          break;
      }
      if (t == 0)
        continue;
      n++;
    }
    if (i % 10 == 0)
      printf("%d\n", i);
  }
  stop_time = time(NULL);
  printf("n = %d, time: %.3fsec\n", n, (double)(stop_time - start_time) / T);
  return 0;
Pentium3(1.0GHz)で 0.11 秒でした。
739デフォルトの名無しさん:2008/05/26(月) 02:55:38
>>737
失敗しました。もう一度。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define N 100000
#define T 100
int main()
{
  int n, p, q, st, t, i;
  time_t start_time, stop_time;
  start_time = time(NULL);
  for (i = 0; i < T; i++) {
    for (p = 3, n = 1; p <= N; p += 2) {
      st = sqrt(p);
      for (q = 2; q <= st; q += (q == 2) ? 1 : 2) {
        if ((t = p % q) == 0)
          break;
      }
      if (t == 0)
        continue;
      n++;
    }
    if (i % 10 == 0)
      printf("%d\n", i);
  }
  stop_time = time(NULL);
  printf("n = %d, time: %.3fsec\n", n, (double)(stop_time - start_time) / T);
  return 0;
}
740デフォルトの名無しさん:2008/05/26(月) 03:02:48
何個あった?
741デフォルトの名無しさん:2008/05/26(月) 03:13:06
とりあえずsqrt(100000)個以下ならおk
742デフォルトの名無しさん:2008/05/26(月) 03:21:07
743デフォルトの名無しさん:2008/05/26(月) 03:25:14
>>739のコードの
printf("%d\n", i);

printf("%d %d\n",i,n);
に置き換えて実行した結果

0 9592
10 9591
20 9591
30 9591
40 9591
50 9591
60 9591
70 9591
80 9591
90 9591
n = 9591, time: 0.080sec
744742:2008/05/26(月) 03:27:24
あ、>>742>>737あてです。
745743:2008/05/26(月) 03:44:21
VC6.0での結果(現象)
BCC5.0でもやてみたら今度はすべからくn=9591
float(double)をintに置き換えるところ周りが原因なのだろけど
VCの場合は、よくわからん。何で一番と二番目以降の結果が
違うんだろか.
この謎の解明した人神
746デフォルトの名無しさん:2008/05/26(月) 03:53:42
0.020sec
747デフォルトの名無しさん:2008/05/26(月) 03:55:27
t=0 continue;
じゃないの?
7481/5:2008/05/26(月) 04:11:44
>>727
// main.cpp
#include "Student_info.h"
#include "average.h"
#include <iostream>
#include <fstream>
#include <iterator>
#include <algorithm>
#include <vector>
int main()
{
using namespace std;
// ifstream infile( "in.txt" );
ofstream outfile( "out.txt" );
Student_info s;
vector< Student_info > students;
// (1)各学生の点数をキーボードから入力すること。
cout << "成績を入力せよ(学生名 国語 英語 数学):" << endl;
copy( istream_iterator< Student_info >( cin ), istream_iterator< Student_info >(),
back_inserter( students ) );
// (2)合計、及び平均を求める箇所を関数とすること。
// (合計は Student_info クラスの メンバ関数)
// (3)結果をファイル(kekka.txtなど)に出力すること。
copy( students.begin(), students.end(), ostream_iterator< Student_info >( outfile, "\n" ) );
outfile << "英語平均:" << average( students, accum_english ) << endl;
outfile << "数学平均:" << average( students, accum_mathematic ) << endl;
outfile << "国語平均:" << average( students, accum_japanese ) << endl;
// 2、問題1で作成したプログラムを、合計点が大きい順にソートして出力するように変更しなさい。
sort( students.begin(), students.end(), compare_sum );
copy( students.begin(), students.end(), ostream_iterator< Student_info >( outfile, "\n" ) );
return 0;
}
749748:2008/05/26(月) 04:15:24
すまん、やっぱ長すぎるのでこっちに。>>727

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6671.txt
750デフォルトの名無しさん:2008/05/26(月) 06:10:00
[1] 授業単元:C言語
[2] 問題文 文字列をキーボードから入力してから逆順にして返す関数を作れ
また文字列が奇数と偶数の2通りの結果を出すこと
関数内がポインタの場合も作成せよ
#include <stdio.h>
void func(char cc[])
{
処理の記述(逆順)
}
int main(void)
{
char str[10];
printf("string ->");
処理の記述(文字列入力)
func(str);
printf("逆順は%sです\n",str);
return(0);
}
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限今週中
[5] その他の制限:大学レベル
お願いします
751デフォルトの名無しさん:2008/05/26(月) 06:58:45
>>745
謎でもなんでもなくてただの初期化忘れ。

p = 3 を試すときに st = [sqrt(p)] = 1 なので
試し割りするループは回らない。
そのとき t がどうなってるか考えれば分かる。
752デフォルトの名無しさん :2008/05/26(月) 07:17:11
753752:2008/05/26(月) 07:24:20
#define DATANUM 3を
#define DATANUM 10にしといて
754727:2008/05/26(月) 07:26:28
>>748>>749
>>752>>753
ありがとうございます!さっそくやってみます。
755727:2008/05/26(月) 08:14:07
>>752
すいません、39行目
human[i].name = malloc(sizeof(char)*(strlen(BUFF)+1));
で error C2440: '=' : 'void *' から 'char *' に変換できません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
と出るのですが、どこを修正すればよいのでしょうか。
756デフォルトの名無しさん:2008/05/26(月) 08:18:59
>>737 すみません。不具合がありました。p = 3 のとき、t の値が定まっていないのにif(t == 0) と演算対象にしていたのが原因です。
私が寝ている間にバグを退治していただいて、感謝です。>>751
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define N 100000
#define T 100
int main()
{
  int n, p, q, st, t, i;
  time_t start_time, stop_time;
  start_time = time(NULL);
  for (i = 0; i < T; i++) {
    for (p = 3, n = 1; p <= N; p += 2) {
      st = sqrt(p);
      t = 1;
      for (q = 2; q <= st; q += (q == 2) ? 1 : 2) {
        if ((t = p % q) == 0)
          break;
      }
      if (t == 0)
        continue;
      n++;
    }
    if (i % 10 == 0)
      printf("%d\n", i);
  }
  stop_time = time(NULL);
  printf("n = %d, time: %.3fsec\n", n, (double)(stop_time - start_time) / T);
  return 0;
}
757742:2008/05/26(月) 09:30:31
>>737
関数の中でNに依存するコードがあったので修正しました。
これにより、メモリを動的に確保する必要があり、処理速度が遅くなりました。
また、アルゴリズムを改良しました。
2以外の偶数は素数で無い事が明らかなので、ふるいの処理を
別にすること、また、その後の処理は奇数のみ吟味するようにしました。
結果的には2msec→0.7msecとなりました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6673.txt
758750:2008/05/26(月) 10:01:01
750です
期限が今日中になったので早めに解答してくださると助かります
759デフォルトの名無しさん:2008/05/26(月) 10:42:00
void func(char cc[])
{
char *p = cc;
whille(*p) p++;
while(--p > cc) {
char temp = *p;
*p = *cc;
*cc++ = temp;
}
}
760デフォルトの名無しさん:2008/05/26(月) 10:45:25
761 ◆wYUuBm6d7Q :2008/05/26(月) 10:47:03
みなさま本当にありがとうございます!!今日中ということでかなり焦ってたけどたくさんの回答を見て時間内に仕上がりそうです。
本当に助かりました。ありがとうございます!
762デフォルトの名無しさん:2008/05/26(月) 10:59:39
っつか、うpロダ使え・・・あっ、間違えたってまた書き直したり
一部を削除、追加とかマジうぜぇから
763デフォルトの名無しさん:2008/05/26(月) 11:00:49
>>760
解答ありがとうございます
もう少し簡単なプログラムはないでしょうか
(defineを使わずにあくまで処理を指定されている部分のみの追加で)
あとポインタの解答もお願いします
764デフォルトの名無しさん:2008/05/26(月) 11:38:48
>>757 を弄ってみた。アーキテクチャによっては低速化
#define BIT_SET(index) (furui[index/32]|=1<<(index&31))
#define BIT_GET(index) ((furui[index/32]>>(index&31))&1)
int sosuu_count(int max){
unsigned long *furui;
int search_max = sqrt(max);
int i, work, num_sosuu;

if ((furui = (unsigned long*)calloc((max/32 + 1), sizeof(*furui))) == NULL){
fprintf(stderr, "malloc error\n");
return -1;
}

/* 0と1は素数ではない */
BIT_SET(0);
BIT_SET(1);

/* 以降は奇数のみ吟味する */
/* 3, 5, 7… */
for (i = 3; i<=search_max; i+=2){
if (BIT_GET(i) == 0){
/* 3倍、5倍、7倍… */
for(work = i*3; work <= max; work+=i*2) BIT_SET(work);
}
}

num_sosuu=1;
for (i = 3; i<=max; i+=2) num_sosuu+=!BIT_GET(i);
free(furui);

return num_sosuu;
}
765デフォルトの名無しさん:2008/05/26(月) 11:58:17
766デフォルトの名無しさん:2008/05/26(月) 12:00:22
ポインタの場合は >>759 で whille(*p) p++; の部分を while に訂正で
767デフォルトの名無しさん:2008/05/26(月) 12:05:38
768752:2008/05/26(月) 12:16:07
>>755
malloc(sizeof(char)*(strlen(BUFF)+1));を
(char *)malloc(sizeof(char)*(strlen(BUFF)+1));
769742:2008/05/26(月) 12:20:37
>>764
いじくっていただきありがとうございます。
なんかいいチューニング方法が他に無いかなあと思ってました。
車輪の再開発かもしれないですが、おもしろいですね。
770デフォルトの名無しさん:2008/05/26(月) 12:36:53
771デフォルトの名無しさん:2008/05/26(月) 12:38:10
>>763
これもポインタを使ってるよ、ということを先生に説明すればいいのでは
772デフォルトの名無しさん:2008/05/26(月) 12:54:47
>>765
たびたびすみません
fgetsやsizeofは習っていないのでもっと初心者用プログラムはありませんか?
あと関数がvoid func(char *cc)場合もお願いします
773デフォルトの名無しさん:2008/05/26(月) 12:55:39
>>772
> あと関数がvoid func(char *cc)場合もお願いします
>>766
>>759
774デフォルトの名無しさん:2008/05/26(月) 12:57:08
>>772
> fgetsやsizeofは習っていないのでもっと初心者用プログラムはありませんか?
初心者の基準が曖昧。授業で習った手法があるならそれを使え。
あとは逆順に並び替える関数にそのまんま渡してやりゃ済むこと。
あと char cc[] でも char *cc でも同じことだから。
775デフォルトの名無しさん:2008/05/26(月) 13:08:03
>>772
初心者用プログラムってなんでしょう?
776デフォルトの名無しさん:2008/05/26(月) 13:33:18
777デフォルトの名無しさん:2008/05/26(月) 15:02:09
777ゲトー!
778 ◆WXMLAl/8hY :2008/05/26(月) 15:06:39
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
@Dijkstraのアルゴリズム解法を実現するプログラムを作成し、コンパイルして実行せよ。このとき、グラフ中の指定頂点(ここでは頂点0)に対して、全ての頂点への最短経路コストと最短経路を標準出力に表示すること。
〜Graph〜
#define NC 9999
#define N 6
int edge[N][N] = {
  /* src:     0   1   2   3   4   5   ...dst */
  /* 0 */  {  0, NC, NC,  8, 15, NC},
  /* 1 */  { 10,  0, 24, NC,  8, NC},
  /* 2 */  { NC, NC,  0, NC, NC,  6},
  /* 3 */  { NC, NC, NC,  0,  5, NC},
  /* 4 */  { NC, NC, 12, NC,  0,  7},
  /* 5 */  { NC, NC,  3, NC, NC,  0}
};
〜Result Sample〜
Result (from 0)
To 0 : ---
To 1 : No Path
To 2 : cost 23 : 2 <- 5 <- 4 <- 3 <- 0
To 3 : cost  8 : 3 <- 0
To 4 : cost 13 : 4 <- 3 <- 0
To 5 : cost 20 : 5 <- 4 <- 3 <- 0
ADijkstraのアルゴリズムと、Floydのアルゴリズムについて、空間計算量と時間計算量をオーダーで表現せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名: gcc
 [3.3] 言語: C
[4] 期限: 2008/05/29(Thu)
[5] その他の制限: 特にありません

よろしくお願いします。
779デフォルトの名無しさん:2008/05/26(月) 17:22:48
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
任意のコマンドライン引数の平均を計算

ただしmalloc関数で配列用にメモリを確保し、コマンドライン引数の値を格納する処理を
次の関数(int *makeArray(int argc,char *argv[]))として定義し、プログラムを作成し動作を確認せよ。
ただしmakeArray関数はint型の配列の先頭を返すものとし、コマンドライン引数では
整数を指定するようにint型の配列にする。
[3] 環境
 [3.1] OS: Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日の夜まで
[5] その他の制限:一応例題などを手本に自分で作成したのですが
コンパイル時にこのようにsyntax errorがでてしまいます
kadai8.c:32: error: syntax error before ']' token
32行目はmakeArray(argc1,&argv1[],*table1);です

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6679.txt

これが自分で作成したものです
780デフォルトの名無しさん:2008/05/26(月) 18:01:05
>>779
int *makeArray(int argc, char *argv[]) {
int i, *a = malloc(sizeof(int) * (argc - 1));
for (i = 0; i < argc; i++) {
a[i] = atoi(argv[i]);
}
return a;
}
int main(int argc,char **argv) {
int i, sum = 0, *a = makeArray(argc, argv);
for (i = 0; i < argc; i++) {
sum += a[i];
}
printf("%d", sum / (argc - 1));
return 0;
}
781780:2008/05/26(月) 18:09:53
>>779
うわぁぁあぁ>>780を見直すと色々ヒドいので参考にしないでくださいw
782531:2008/05/26(月) 18:51:51
531の者です。再度書き込み失礼します

[1] 授業単元:プログラミング

[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6657.txt
[3] 環境
 [3.1] OS:(WindowsXP)
 [3.2] コンパイラ名とバージョン:VC++2005
 [3.3] 言語:C++
[4] 期限:5月27日
[5] その他の制限:問題文中に記載してあります。


   よろしくお願いします 。


783デフォルトの名無しさん:2008/05/26(月) 19:12:24
>>779
これはこれは。週末がんばったかね。
メモリ不足の処理を実装した上で壊しちゃったのかな。
784デフォルトの名無しさん:2008/05/26(月) 20:09:58
ユーザー関数 calc は学生番号が偶数か奇数かのちがいによって
sinθ と cosθ を使い分けるのにどうして引数が kakudo だけなのだ。
グローバル変数を使って関数内部から参照しろとかいう
OOPをまるっきり無視したプログラムを組めってことかいな・・・。

それとも kakudo の中に学生番号の情報を埋め込むか。
785デフォルトの名無しさん:2008/05/26(月) 20:25:19
>>784
深読みしすぎw
偶数、奇数それぞれ違う宿題出ただけ
ん?Cは元々OOP言語じゃないだろ

しかし、そういうミスは出題ミスを指摘してOK
メモリ解放ミスですよとかね
それで優もらってたよ。
787デフォルトの名無しさん:2008/05/26(月) 21:02:48
すみませんc言語でまちがえるとパソコン壊れることはありますか
788デフォルトの名無しさん:2008/05/26(月) 21:17:18
ありますが、そうなってしまう事は少ないと思います。
789デフォルトの名無しさん:2008/05/26(月) 21:18:42
>>787
何か不安あるならそのソース見せてみ
790デフォルトの名無しさん:2008/05/26(月) 21:21:13
これからはじめるにあたって不安なんでない?ってここ宿題スレか
791デフォルトの名無しさん:2008/05/26(月) 21:30:46
なんだかんだいいつつ>>757のが速いな
>>764はすごそうなんだけど、数えるためだけにもう一回ループしてる
ので結局速くないよね?
ふかいなあ
792デフォルトの名無しさん:2008/05/26(月) 22:16:39
>>791 日本語でおk
793デフォルトの名無しさん:2008/05/26(月) 22:16:51
1] 授業単元:プログラミング
[2] 問題文:txtファイルを読み込みして、入力したデータを部分一致検索するプログラム
[3] 環境
 [3.1] OS:(WindowsXP)
 [3.2] コンパイラ名とバージョン:Borland
 [3.3] 言語:C
[4] 期限:5月27日
[5] その他の制限:特になし。

お願いします><
794デフォルトの名無しさん:2008/05/26(月) 22:16:54
>>779てオワタの?
795デフォルトの名無しさん:2008/05/26(月) 22:17:52
>>793 日本語でおk
796デフォルトの名無しさん:2008/05/26(月) 22:17:59
>>791
よければプラットホームを教えて欲しい

ちなみに
Core2Duo E6750 2.66GHz メモリ割当512MB
WindowsXP Pro on VMWarePlayer で

#define N 1000000
にした時
>>757 4.776[msec]
>>764 3.194[msec]
で 30% 程度 >>764 の方が高速だったけど?
797796:2008/05/26(月) 22:19:33
コンパイラ MinGW gcc
双方ともに -O2 オプション使用
798793:2008/05/26(月) 22:23:37
ファイルオープンしてそのファイルから検索するソースです。
日本語下手ですいません…
799799:2008/05/26(月) 22:26:47
すいません、まだおわってません
800デフォルトの名無しさん:2008/05/26(月) 22:39:06
>>796
P4 2.8G コンパイラはVC、前者が>>757 後者が>>764
 N=100000 最適化オプション無し
  0.780 0.940
 N=100000 -O2
  0.460 0.310
 N=1000000 最適化オプション無し
  9.300 9.400
 N=1000000 -O2
  6.200 4.600
 N=10000000 最適化オプション無し
  284.300 170.300

Nが大きくなればなるほど>>764のほうが速くなるようでした。
最適化も>>764のほうがよく効くようでした。
お騒がせしますた。
801デフォルトの名無しさん:2008/05/26(月) 22:53:42
>>793
だから問題が意味不明w

>txtファイルを読み込みして、入力したデータを部分一致検索するプログラム
>ファイルオープンしてそのファイルから検索するソースです。

入力したデータってなんなんだよ
部分一致ってどの位なんだよ
具体例くらい示せ
802793:2008/05/26(月) 23:00:21
>>801
例)
txtデータ
1 あいうえお
2 かきくけこ
3 さしすせそ
4 あかさたな

入力データ
えお

出力結果
1 あいうえお


例2)

例)
txtデータ
1 あいうえお
2 かきくけこ
3 さしすせそ
4 あかさたな

入力データ


出力結果
2 かきくけこ
4 あかさたな

こんな感じです
803デフォルトの名無しさん:2008/05/26(月) 23:09:08
>>802
何様?
>>793によると出力いらないみたいだけど?
804793:2008/05/26(月) 23:13:41
>>803
具体例って言われたんでわかりやすく書いただけですが。
ついでに何様でもないですよ。
んでスレ違いになりそうなんで消えますね。
すいませんでした。
805デフォルトの名無しさん:2008/05/26(月) 23:21:18
>具体例って言われたんでわかりやすく書いただけですが。
こういうのを何様っていうんだよw
806デフォルトの名無しさん:2008/05/26(月) 23:25:42
[1] 授業単元:卒業研究
[2] 問題文(含コード&リンク):コンピュータとチャHしよ♪プログラム
[3] 環境
 [3.1] OS:Windows
 [3.2] VisualStudio2005 [3.3] C
 [4] 期限:
[5] その他の制限: あのシーマンのように声を掛けるとその掛けた声に
対して返信するようなプログラム。ただしエッチ中のかけ声に対した返答で
あること。また声で反応させるのは難しいので入力した文章に対して
返信すること。


自分の名前を入力> Taro
相手の名前を入力> Hana
taro>どうだ?気持ちいか?
taro:どうだ?気持ちいか?
Hana: もうちょっと奥まで・・・
taro>そうか、これでどうだ!
taro:そうか、これでどうだ!
Hana: あぁぁあああん
807デフォルトの名無しさん:2008/05/26(月) 23:26:37
横レスだが、意味わからん。
何様?って何だよ。
宿題解答者も提出者も対等な関係だろ。
気に食わないなら放置すりゃいいだろ。
808デフォルトの名無しさん:2008/05/26(月) 23:31:14
だよね
エサ与えてもらってる分際で何様だよホント
809デフォルトの名無しさん:2008/05/26(月) 23:31:32
>>807は放置で
810デフォルトの名無しさん:2008/05/26(月) 23:35:46
>>793
#include <stdio.h>
#include <string.h>

#define STR_MAX 256 // 一行読み込み最大

int main(int argc, char* argv[])
{
FILE *fpInput = NULL;
char string[STR_MAX] = {0};

if( argc < 3 ){
printf("実行ファイル 入力.txt 文字列\n");
return 1;
}

fopen_s( &fpInput, argv[1], "r" );

while( fgets( string, sizeof(string), fpInput ) != NULL ){
if( strstr( string, argv[2] ) != NULL )
puts( string );
}

fclose( fpInput );
return 0;
}

てけと。
出力はコンソールでよかったのかな…
811デフォルトの名無しさん:2008/05/26(月) 23:35:47
> >>807は放置で
とか、いちいちスレの総論っぽく促してんじゃねーよw
812デフォルトの名無しさん:2008/05/26(月) 23:36:38
>>809が放置できてないしな
そもそも>>801が何様
813デフォルトの名無しさん:2008/05/26(月) 23:37:00
別に・・・
814デフォルトの名無しさん:2008/05/26(月) 23:37:38
だって「>>807を放置します」じゃ心細いんだもん・・
815デフォルトの名無しさん:2008/05/26(月) 23:45:34
>>779>>799
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6680.c

ほい、遅くなった。
表示部分は適当に弄って。
816デフォルトの名無しさん:2008/05/26(月) 23:48:18
何様だろうと関係ねぇ、俺は俺様だが、何か?文句ある?
817デフォルトの名無しさん:2008/05/27(火) 00:24:26
>>815
ありがとうございます助かりました
818デフォルトの名無しさん:2008/05/27(火) 00:40:53
>>806
メッセージテーブル持つしかないんじゃない?
819デフォルトの名無しさん:2008/05/27(火) 00:49:57
820デフォルトの名無しさん:2008/05/27(火) 01:59:47
質問したいのですがアップローダーってどうやって使うのですか?
それはアップできないファイルですと表示されるのでが
板違いの質問すみません
821デフォルトの名無しさん:2008/05/27(火) 02:10:55
ここで使われてるアップローダなら
添付可能ファイル : TEXT, LHA, ZIP, C, CPP
と書かれているが。
何アップロードしようとしてんの?
822デフォルトの名無しさん:2008/05/27(火) 02:14:42
wordでアップしようとしてました
823デフォルトの名無しさん:2008/05/27(火) 02:27:18
[1] 授業単元:
C言語
[2] 問題文(含コード&リンク):()
数当て
キーボードから何度か数字を入力して当てるゲームを作成しなさい。
・入力のチャンスは五回までとする
・正解したら、「正解!」と出力して終了する
・不正解の場合は、大小関係や「惜しい!」などヒントを出力する
・五回とも不正解の場合は、正解と「残念!」などのメッセージを出力して終了する

【発展】
乱数生成の関数を使い、プログラムを実行するたびに
コンピュータが自動的に正解を用意するように改良しなさい。
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Windows XP
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
Micro soft Visual Studio 2005 
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
6月2日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
途中まで書きました。
次のレスに貼ります。
824823:2008/05/27(火) 02:29:09
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int a, i, w;
srand((unsigned)time(NULL));
w = rand() % 51 + 1;
for(i=5; i>=1; i--){
printf("数字を入力してください。1〜50(あと%d回)\n", i);
scanf("%d", &a);
if(a==w){
printf("正解!\n");
break;
}else if(a == w+5)
printf("惜しい! もっと小さい数字です。\n");
else if(a == w-5)
printf("惜しい! もっと大きい数字です。\n");
else if(a > w)
printf("不正解! もっと小さい数字です。\n");
else if(a < w)
printf("不正解! もっと大きい数字です。\n");
}
if(i==0)
printf("残念!\n答えは%dです。\n", w);
printf("終了します。\n");
return 0;
}


これが限界です。後お願いします。
825デフォルトの名無しさん:2008/05/27(火) 02:42:36
>>823
「キーボードから何度か数字を入力して当てるゲームを作成しなさい。」でググったら90代目のスレで回答ありそうでワロタ
826823:2008/05/27(火) 02:52:19
824は1つ前のものでした。こっちが新しい方です。出来ればこれを修正して完成させてもらえるとありがたいです。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int a, i, w;
srand((unsigned)time(NULL));
w = rand() % 51 + 1;
for(i=5; i>=1; i--){
printf("数字を入力してください。1〜50(あと%d回)\n", i);
scanf("%d", &a);
if(a==w){
printf("正解!\n");
break;
}else if(a == w+5 || a == w+4 || a == w+3 || a == w+2 || a == w+1)
printf("惜しい! もっと小さい数字です。\n");
else if(a == w-5 || a == w-4 || a == w-3 || a == w-2 || a == w-1)
printf("惜しい! もっと大きい数字です。\n");
else if(a > w)
printf("不正解! もっと小さい数字です。\n");
else if(a < w)
printf("不正解! もっと大きい数字です。\n");
}
if(i==0)
printf("残念!\n答えは%dです。\n", w);
printf("終了します。\n");
return 0;
}

827デフォルトの名無しさん:2008/05/27(火) 03:04:07
>>826
…。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int a, i, w;
srand((unsigned)time(NULL));
w = rand() % 51 + 1;
for(i=5; i>=1; i--){
printf("数字を入力してください。1〜50(あと%d回)\n", i);
scanf("%d", &a);
if(a==w){
printf("正解!\n");
break;
}
if(w+5>=a&&a>w)printf("惜しい! もっと小さい数字です。\n");
if(w>a&&w-5<=a)printf("惜しい! もっと大きい数字です。\n");
else if(a > w+5)
printf("不正解! もっと小さい数字です。\n");
else if(a < w-5)
printf("不正解! もっと大きい数字です。\n");
}
if(i==0)
printf("残念!\n答えは%dです。\n", w);
printf("終了します。\n");
return 0;
}
828デフォルトの名無しさん:2008/05/27(火) 03:32:20
間違い探しなんていやだのぅ
試してないけどこんな感じ

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
    int i, ans, choice;
    srand((unsigned)time(NULL));
    ans=(unsigned int)rand()%10;
    for(i=5; i>0; i--){
        printf("0〜9までの数字を入力してください: ");
        scanf("%d", &choice);
        if(! (0<=choice && choice<=9)){
            printf("入力は0〜9までの数字でお願いします\n");
            continue;
        }else if(choice==ans){
            printf("おめでとう,正解です\n");
            return 0;
        }else if(choice<ans){
            printf("もっと大きい!\n");
        }else if(choice>ans){
            printf("もっと小さい!\n");
        }
    }
    printf("残念,正解は%dでした\n", ans);
    return 1;
}
829デフォルトの名無しさん:2008/05/27(火) 05:15:35
1〜50なら w = rand() % 50 + 1 だぜ
830デフォルトの名無しさん:2008/05/27(火) 07:28:47
>>822
マクロにマルウェアを仕込めるようなフォーマットで、オフィススイートを持ってない人間には読めないようなもの、
アップロードしようと思う方がどうかしています。
831デフォルトの名無しさん:2008/05/27(火) 07:48:25
ぶっちゃけ、zipにしてからうpすればいいんじゃね?
とか思わなくも無い。
832デフォルトの名無しさん:2008/05/27(火) 08:13:28
perror関数について質問です!


perrorの説明を見てみると、以下のようにあります。
「関数 perror() は、システムコールやライブラリ関数の呼び出しにおいて、最後に発生したエラーに関する説明メッセージを生成し、標準エラー出力に出力する。」

標準エラー出力に出すだけだったら、fprintf(stderr,...)を使えばいいきがしますが、どのような違いがあるのでしょうか?
833つ[strerror()]:2008/05/27(火) 08:23:31
スレ違い。
834デフォルトの名無しさん:2008/05/27(火) 08:25:28
835デフォルトの名無しさん:2008/05/27(火) 10:34:15
テキストファイルを使ってアップしたいのですがたくさんあってわかりません
何かお勧めのフリーソフトをあったら教えてください
変な質問すいません
836デフォルトの名無しさん:2008/05/27(火) 10:53:00
アップロードしたいテキストファイルがどれかわからない→ファイル検索ソフト
いっぱいテキストファイルをアップロードしたい→圧縮ソフト
うpろだがいっぱいあってどれを使えばいいかわからない→>>1

さぁどれだ
837823:2008/05/27(火) 11:00:17
色々な解答ありがとうございます。

課題ではないのですが、入力された数字が1〜50以外の場合に、繰り返し入力させるようにするにはどうすればいいですか?

少し気になっただけなのでスルーしてもらっても構いません。
838デフォルトの名無しさん:2008/05/27(火) 11:07:25
>>837
while(1){
printf("数字を入力してください。1〜50(あと%d回)\n", i);
scanf("%d", &a);
if(a>0&&a<=50)break;
printf("入力は1〜50の範囲でお願いします。\n");
}
839デフォルトの名無しさん:2008/05/27(火) 11:14:55
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク)
与えられた非減少非負整数列がグラフ的であるかどうかを判定する
関数 isDegreeSequence を C言語を用いて作れ。関数仕様は次の
通りとする。

int isDegreeSeqence(int d[], int p) は、配列dに入った長さpの
非減少非負整数列を次数列としてもつようなp頂点単純グラフが
存在するときに、1を戻り値として返し、存在しないときに0を返す。

main 関数も作って,きちんと動くことが分かるプログラムにする。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 5月30日まで
[5] その他の制限:

よろしくお願いします。
840デフォルトの名無しさん:2008/05/27(火) 13:02:16
[1] 授業単元: C++
[2] 問題文(含コード&リンク):()
2008年は閏年(うるうどし)である。
現在の暦において閏年は,
地球が太陽の周りを公転する周期が,
約365.24日であることに由来する調整法である。
閏年でない年は平年という。
キーボードから西暦を入力し
入力された年が閏年かどうか判定する
プログラムを作成しなさい。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 6月3日
[5] その他の制限:
841デフォルトの名無しさん:2008/05/27(火) 13:02:44
[1] 授業単元: C++
[2] 問題文(含コード&リンク):()
今年(2008年)はオリンピックイヤー
(オリンピック開催年)である。
8月8日から24日までにかけて,中国の北京で
夏季オリンピック第29回大会が開かれる。
次の説明はオリンピックの開催年についての説明である。
キーボードから変数year に入力された年号について,
開催された年に第何回大会が開催(中止)されたか
画面に表示するプログラムを作成しなさい。
またオリンピックイヤーでない場合は、
画面にその旨メッセージを出力すること。

【説明】
・1896年の第1回大会以来、4 年に1 度開催されている。
・1916年の第6回大会,1940年の第12回大会,1944年の第13回大会は
 世界大戦の影響で中止された。ただし中止の場合も回数は数える。
・1906年には,近代オリンピック制定10周年記念大会が開催された。
 ただし特別大会のため,回数には数えない。
・次回は2012年、第30回大会がロンドンで開催予定。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 6月3日
[5] その他の制限:
2問ありますが、よろしくお願いします!
842デフォルトの名無しさん:2008/05/27(火) 13:03:08
次数の和が偶数であるときグラフ的であるというのはわかったんだけど
それが単純グラフであるのかどうかをチェックするにはどーしたらええねん。
受け取れない文字列拾うと暴走するようなscanfなんてわけもわからずに使わせるなよ。
844デフォルトの名無しさん:2008/05/27(火) 13:15:20
それ以前に○産大未満の基地外が来るなよw
845デフォルトの名無しさん:2008/05/27(火) 13:16:45
次数列の要素数がその最大次数よりも小さいとき
ループまたは多重辺を含むと考えていいのかしらん?
プログラムよりも数学の方が難しいぜ。あははん。
846デフォルトの名無しさん:2008/05/27(火) 15:20:45
今、C言語の問題をやってますが難しくて分かりません。
どのようにやったら良いでしょうか?

//------------------------------------------------------
// C言語基礎 問題
// 3人の学生の英数国理社のテストの点数データが
// それぞれ配列にある
// 学生それぞれの平均点と科目別に平均点を出せ
//------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>

void main(void)
{
// 英 数 国 理 社
static int seito1[]={41,93,64,88,33};
static int seito2[]={84,31,78,53,57};
static int seito3[]={54,34,59,46,58};
}
847デフォルトの名無しさん:2008/05/27(火) 15:28:36
1] 授業単元: C++
[2] 問題文
キーボードから入力される2つの整数を変数a、bに格納し、
aの0乗からaのb乗までを順に出力するプログラムを作成せよ。
ただし変数bは0以上の整数が入力されるまで、入力を繰り返すものとする。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 6月10日
[5] その他の制限:

[1] 授業単元: C++
[2] 問題文
キーボードから2以上の整数を入力し、その数が素数であるかどうかを判断するコードを記述せよ。
ただし入力される数値が2以上でない場合、繰り返し入力を求めること。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限: 6月10日
[5] その他の制限:

よろしくお願いします。
848デフォルトの名無しさん:2008/05/27(火) 15:52:21
>>846
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
// 英 数 国 理 社
static int seito1[]={41,93,64,88,33};
static int seito2[]={84,31,78,53,57};
static int seito3[]={54,34,59,46,58};
static int average[]={0,0,0,0,0};
char str[5][10]={"english","math","japanese","science","society"};
int i;
float sum1=0,sum2=0,sum3=0;

for(i=0;i<5;i++){
sum1 += (float)seito1[i];
sum2 += (float)seito2[i];
sum3 += (float)seito3[i];
average[i] = seito1[i] + seito2[i] + seito3[i];
}

printf("生徒1の平均点:%.2f\n",sum1/5);
printf("生徒2の平均点:%.2f\n",sum2/5);
printf("生徒3の平均点:%.2f\n",sum3/5);
printf("科目平均\n");
for(i=0;i<5;i++) printf("%s:%.2f\n",str[i],(float)average[i]/3);

return 0;
}

力押し
849デフォルトの名無しさん:2008/05/27(火) 15:56:52
>>848
ありがとうございます。
あと、この2つも分かりますか?

//--------------------------------------
// 半径 73cmの円の面積を求めよ
// だたし、円周率は3.14とする
//--------------------------------------
#include <stdio.h>
#include <stdlib.h>

void main(void)
{
}


//------------------------------------
// 乱数(0~32767)を発生させ
// 30000以上が20回出たら終わる
// プログラムを作成せよ
// ただし、乱数列の開始点は30000とする
//------------------------------------
#include <stdio.h>
#include <stdlib.h>

void main(void)
{
}
850デフォルトの名無しさん:2008/05/27(火) 16:11:11
>>849
>1

int main()
{
printf("%gcm^2\n", 3.14 * 73 * 73);
return 0;
}
851デフォルトの名無しさん:2008/05/27(火) 16:20:40
>>849
> // ただし、乱数列の開始点は30000とする
意味が分からん。
852デフォルトの名無しさん:2008/05/27(火) 16:33:09
>>849
>>(2) 最初の30000が出るまで読み飛ばす、と見なした。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void);

int main(){
int i=0, cnt=0, count_start_fg=0, r;
srand((unsigned)time(NULL));
while(cnt < 20){
i++;
r = rand() % 32768;
if(r >= 30000){
if(r == 30000){count_start_fg = 1;}
if(count_start_fg == 1){
cnt++;
printf("%d番目の乱数=%d\n", i, r);
}
}
}
return 0;
}
853デフォルトの名無しさん:2008/05/27(火) 16:48:00
>>840
int leap_check(int y){
#define chk(y,n,x) if(!(y%n)){return x;}
chk(y,400,y);
chk(y,100,0);
chk(y,4,y);
return 0;
}
854デフォルトの名無しさん:2008/05/27(火) 17:24:02
>>847
こんな感じでどうかな?1つ目
#include <iostream>
using namespace std ;

void main(void)
{
long nRet = 1;
int a,b ;
cout << "一つ目の数" << endl ;
cin >> a ;

for(;;){
cout << "二つ目の数" << endl ;
cin >> b ;
if(b > 0) break ;
}
cout << "------------------" << endl ;
cout << "1" << endl ;
for(int i = 1; i <= b; i++){
nRet *= a ;
cout << nRet << endl ;
}
}
855デフォルトの名無しさん:2008/05/27(火) 17:25:04
>>847
2つ目
void main(void)
{
long nRet = 1;
int a ;
for(;;) {
cout << "判定する数(2より大きい数)" << endl ;
cin >> a ; if(a > 2) break ;
}
for(int i = 0; i < a - 1; i++) {
nRet = nRet * 2 ;
}
if(nRet % a == 1) cout << "素数かな?" << endl ;
else cout << "素数じゃないかも" << endl ;
}
856デフォルトの名無しさん:2008/05/27(火) 17:27:02
多分

r = rand() % 32768;

は乱数にならない。
857デフォルトの名無しさん:2008/05/27(火) 17:42:13
>>856
完全乱数は宿題の趣旨には無いと思うから、timeで揺らせば充分じゃね?
標準ライブラリでもっといいの有る?
858デフォルトの名無しさん:2008/05/27(火) 18:56:56
>>836
問題を書くためのテキストファイルを探してます
859デフォルトの名無しさん:2008/05/27(火) 19:00:18
>>858
予想の斜め上www
860デフォルトの名無しさん:2008/05/27(火) 19:15:33
笑った
861デフォルトの名無しさん:2008/05/27(火) 19:16:42
>>841
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6684.zip

アップしてから気づいたんだけど、
olympic_data.hにバグがあった。

誤 std::string venue() const { return m_host; }
正 std::string venue() const { return m_venue; }
862デフォルトの名無しさん:2008/05/27(火) 19:31:56
[1] C
[2] 1から9までの9つの数字が順番にならんでいる。数字の順番を変えずに全て用いて、途中に+を1個、−を2個入れると、
例えば次のような式ができる。
123−45−67+89=100
1234+5−6−789=444
同様の方法で 450,500,666を作る方法をすべて見つけなさい
[3]
 [3.1] Linux
 [3.3] C
[4] 5月29日
863デフォルトの名無しさん:2008/05/27(火) 19:44:21
すいませんもう1つ
[1]C [2]
以下は2以上の整数を素因数分解するプログラムである。
#include<stdio.h>
#include<stdio.h>
main(){
int d,n;
do{
printf("2以上の整数を与えてください\n");
scanf("%d",&n);
}while(n<2);
printf("%d=1",n);
while(n%2==0){
printf("*2");
n/2; }
for(d=3;d*d<=n;d++,d++){
while(n%d==0){
printf("*%d",d);
n/d;
} }
if(n!=1)printf("%d",n);
puts(";"); }
2以上の整数で素数でないもののうち、K番目に小さいものをp[k]とすると、
小さなkについてp[k]を素因数分解したものは以下のようになる。
p[1]=4=1*2*2; p[2]=6=1*2*3; p[3]=8=1*2*2*2; p[4]=9=1*3*3;
問題:p[4000000],p[4500000],p[5000000],p[5500000]の値と、それぞれの素因数分解を示せ
これを求めるにあたって、上記の素因数分解のプログラムを参考に、
素因数分解を行う関数を持ったプログラムを作ること。 プログラムでは変数nを定義して、n=2,3,4、、、と順に増やしながら、
nを素因数分解して素数か判定しなさい
[3.1]Linux [3.3]C [4]5月29日
864デフォルトの名無しさん:2008/05/27(火) 19:52:53
1は素数じゃないし、素因数として扱うのはどうかと・・・
865デフォルトの名無しさん:2008/05/27(火) 20:02:03
1*
は省いたほうがいいんですかね?…
全く答えが見えてこないので助けて下さい。お願いします。
866863:2008/05/27(火) 20:06:50
>>863
プログラム2行目の
#include<stdio.h> → #include<stblib.h>
です。
867デフォルトの名無しさん:2008/05/27(火) 20:29:23
>>863
#include<stdio.h>

int hoge(long prime[], long value){ // 素因数分解
long i, j=0;
for(i=2;value/i>=i;i++){
if(value%i==0){
value/=i;
prime[j++]=i;
}
}
prime[j++]=value;
return j;
}
int main(void){
long i, j, prime[32], prime_num, index, index_list[]={1,2,3,4,4000000, 4500000, 5000000, 5500000, 0}, index_index;

for(i=2,index=1,index_index=0;;i++){
if((prime_num=hoge(prime, i))!=1){
if(index_list[index_index]==index){
printf("p[%ld]=%ld=%ld", index, i, prime[0]);
for(j=1;j<prime_num;j++) printf("*%ld", prime[j]);
printf("\n");
index_index++;
if(index>index_list[index_index]) break;
}
index++;
}
}
return 0;
}
868531:2008/05/27(火) 20:38:01
再度書き込み失礼します。


[1] 授業単元:プログラミング

[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6657.txt
[3] 環境
 [3.1] OS:(WindowsXP)
 [3.2] コンパイラ名とバージョン:VC++2005
 [3.3] 言語:C++
[4] 期限:5月29日
[5] その他の制限:問題文中に記載してあります。


   よろしくお願いしますm(__)m

869デフォルトの名無しさん:2008/05/27(火) 20:50:30
>>862-863
なかなかおもしろい課題を出す学校だねぇ
ありきたりじゃない感じ。

>>867
とりあえず、8が2*4になっちゃいますね。
870863:2008/05/27(火) 20:53:33
>>867
どうもありがとうございます。
実行してみます。本当にありがとうございます。
871867:2008/05/27(火) 20:55:15
>>863
>>867 の訂正
prime[j++]=i;

prime[j++]=i--;
872デフォルトの名無しさん:2008/05/27(火) 20:58:58
[1] 授業単元:C言語
[2] 問題文
問題()
1〜nまでの数のうち、素数を出力させるプログラムを作成せよ。
問題(2)
10進整数(0-255)を2進数に変換するプログラムを作成せよ。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:Borland C
 [3.3] 言語: C
[4] 期限今週中
[5] その他の制限:ありません



873デフォルトの名無しさん:2008/05/27(火) 21:11:07
>>868
君の出席番号がわからないとどうしようもないよ
>>872
(1)http://www.tsg.ne.jp/text/2004/c/1.html のソースをnを適宜変更しる

(2)
意味わからん
10進数で入力して2進数文字列で出力すればいいの?

printf("0b");
for (i = 0; i < 8; i++) putchar( n & (0x80 >> i) ? '1' : '0' );
putchar('\n');

あとはわかるな?てか解れ。
875デフォルトの名無しさん:2008/05/27(火) 21:20:59
所詮○産大未満か、3流以下め。キモイ顔文字使うなw
876デフォルトの名無しさん:2008/05/27(火) 21:23:04
>>874
ありがとうございます

(2)は自己解決しました
こういうことでした


#include <stdio.h>

void bin(int n);

int main(void)
{
int i,k;

scanf("%d",&k);


printf(" 2進数:"), bin(k), printf("\n\n");

return 0;
}

void bin(int n)
{
int a[8], i;

for (i = 0; i < 8; i++, n /= 2)
a[i] = n % 2;
for (i = 7; i >= 0; i--)
printf("%d", a[i]);
}
877868:2008/05/27(火) 21:23:10
>>868

すいません記述し忘れましたm(__)m

番号は120でお願いします。(実行するときは20*2の値で)
878デフォルトの名無しさん:2008/05/27(火) 21:32:46
879デフォルトの名無しさん:2008/05/27(火) 21:34:53
麻呂のクソースは所詮、ナッパレベルさ。ベジータ(団子)さんよぉ、
もちっとエリートらしいイケメソースを書いて下さいな
880デフォルトの名無しさん:2008/05/27(火) 21:35:59
[1] 授業単元:C言語
[2] 問題文
問題
1〜nまでの数のうち、素数を出力させるプログラムを作成せよ。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:Borland C
 [3.3] 言語: C
[4] 期限今週中
[5] その他の制限:ありません

すいません、どなたかもういちどおねがいします
全力で手抜きするのがエリート(笑)だろ。

>>880
http://c-kadai.sakura.ne.jp/index.php?itemid=17&catid=5
882デフォルトの名無しさん:2008/05/27(火) 21:42:07
>>880
なんでだよw
>>737も素数求めるのだったからそれ見てもいいしw
883デフォルトの名無しさん:2008/05/27(火) 21:43:35

[1] 授業単元:
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6687.txt
[3] 環境
 [3.1] OS: xp
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限:緊急(最終期限:木曜深夜)
[5] その他の制限:習ってるのはポインタ、配列、関数の初歩程度です。
なのでレベルを合わせたプログラムを書いていただけると助かります

お願いします
884デフォルトの名無しさん:2008/05/27(火) 21:44:30
885デフォルトの名無しさん:2008/05/27(火) 21:47:47
>>884
ありがとうございました
886デフォルトの名無しさん:2008/05/27(火) 21:49:45
>>883
マインスイーパのように自動で開ける限り開く機能はいらないのかね?
887デフォルトの名無しさん:2008/05/27(火) 21:50:36
>>884
なんかしらんけどあちこちのWebサイトに勝ったなwおめwww
888デフォルトの名無しさん:2008/05/27(火) 21:51:57
>>886
かなりの確率で一回で場所が分かっちゃうよw
>>884
どうして配列使わずに解けるのか、おじさん一瞬よくわからなかったよ。
890デフォルトの名無しさん:2008/05/27(火) 21:54:36
>>886
Phaseに入れた数字分動くプログラムでお願いします
891デフォルトの名無しさん:2008/05/27(火) 21:57:27
>>888
自動で開ける限り開くマインスイーパでも一回ではクリアできないよ><
892883:2008/05/27(火) 21:59:09
883です
訂正がありました。すいません

Input : e6(入力)
GET!!(宝を見つけたら表示される)
Phase = 4(ゲーム回数)
Treasures left = 7(宝の残り)
a b c d e f g h i j
0 + + + + + + + + + + 0
1 + + + + + + + + + + 1
2 + + + + + + + + + + 2
3 + + + 0 + + + + + + 3
4 + + + + + + + + + + 4
5 + + + + + + + + + + 5
6 + + + 1 $ + + + + + 6
7 + + + + + + + + + + 7
8 + + + + + + + + + + 8
9 + + + + + + + + + + 9
a b c d e f g h i j

宝をGETしたときに宝の残りの数をへらすのを忘れてました
m<_ _>m
893デフォルトの名無しさん:2008/05/27(火) 22:11:58
>>891
ちょっと試してみた
10x10盤に爆弾が7個以上あれば一回で解けることは少なかった
6個以下の場合は一回で解ける可能性大だった
894デフォルトの名無しさん:2008/05/27(火) 22:16:43
>>893
なんということ。
確かにマインスイーパ初級が10x10で爆弾10個だった。
少ないと全部あいちゃうのね。適当なこといって酢マンコ
895デフォルトの名無しさん:2008/05/27(火) 22:18:38
[1] 授業単元:
[2] 問題文:
You are writing firmware for an exercise machine. Each second, a routine in your firmware is
called which decides whether it should display the percentage of the workout completed.
The display does not have any ability to show decimal points, so the routine should only
display a percentage if the second it is called results in a whole percentage of the total workout.

Given a string time representing how long the workout lasts, in the format "hours:minutes:seconds",
return the number of times a percentage will be displayed by the routine.
The machine should never display 0% or 100%.

CONSTRAINTS
-time will be a string formatted as "HH:MM:SS", HH = hours, MM = minutes, SS = seconds.
-The hours portion of time will be an integer with exactly two digits, with a value between 00 and 23, inclusive.
-The minutes portion of time will be an integer with exactly two digits, with a value between 00 and 59, inclusive.
-The seconds portion of time will be an integer with exactly two digits, with a value between 00 and 59, inclusive
-time will not be "00:00:00".

[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語: C++

[4] 期限:今週中
[5] その他の制限:習ってるのはポインタ、配列、関数の初歩程度です。
896デフォルトの名無しさん:2008/05/27(火) 22:20:30
>>894
全部あくんじゃなくて全部の爆弾の場所が分かるだけ
897デフォルトの名無しさん:2008/05/27(火) 22:23:40
>>895
よし in English
898デフォルトの名無しさん:2008/05/27(火) 22:31:02
>>895 topcoderかなんかの問題かね
899デフォルトの名無しさん:2008/05/27(火) 22:31:22


[2] 問題文
16kHz、16bitで録音しwav形式で保存されたファイル
を読み込み、波のデータのみをwave.datという名前のファイルに出力するプログラムを作成せよ

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語: C言語
[4] 期限:5/31
[5] その他制限:
wave.datの中身は
1
2
3
15
4
7
:
:のようにgnuplotですぐに読み込めるような形にする。というものです
http://www.kk.iij4u.or.jp/~kondo/wave/
のサイトを参考にしているのですがわかりません。
よろしくお願いします


900868:2008/05/27(火) 22:33:58
868に追加で

[5] その他の制限:学籍番号120でお願いします。
901デフォルトの名無しさん:2008/05/27(火) 22:34:37
おまえらマインスイーパスレへ行け。
902デフォルトの名無しさん:2008/05/27(火) 22:39:05
>>895
トータルの時間はどうやって指定すればいいの?
903デフォルトの名無しさん:2008/05/27(火) 22:45:14
[1] 授業単元: C
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6689.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Cygnus
 [3.3] 言語: C
[4] 期限: 今週
[5] その他の制限: 配列を使用
お願いします。。。
904デフォルトの名無しさん:2008/05/27(火) 22:46:17
>>895
#include<stdio.h>

void display(long whole_time, long left_time){
long rate;

rate=(left_time-1)*100/whole_time+1;
if(whole_time*rate/100==left_time && left_time!=0 && left_time!=whole_time){
printf("%2ld%%\n", rate);
}else{
printf("%02ld:%02ld:%02ld\n", left_time/3600, (left_time/60)%60, left_time%60);
}
}

int main(void){
long whole_time, left_time;

whole_time=333; // second
for(left_time=whole_time;left_time>0;left_time--){
display(whole_time, left_time);
}

return 0;
}
905904:2008/05/27(火) 22:51:57
スマン、C++指定だった
C++はパスです
906デフォルトの名無しさん:2008/05/27(火) 22:59:25
俺、第二外国語はスペイン語だったんで、英語は読めないんだ。ははは。
907デフォルトの名無しさん:2008/05/27(火) 23:01:22
>>906
第一外国語は普通英語だと思うのだが。
908デフォルトの名無しさん:2008/05/27(火) 23:04:49
第一外国語は日本語に決まってるだろ。
909デフォルトの名無しさん:2008/05/27(火) 23:06:07
>>892
爆弾じゃないところ指定したときの仕様がわからん。
0,1 となってるが、2,3,4と行くのか?
2桁になったら、隣の数字とくっついてみにくくなりそうだが。
/* >>903 */
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <math.h>

int main(void) {
    int a[10];
    int sum = 0;
    int n_max = INT_MIN;
    int n_min = INT_MAX;
    char buf[80];
    int i;
    for (i = 0; i < 10; i++) {
        printf("データ[No. %d]を入力してください:", i+1);
        a[i] = atoi(fgets(buf, sizeof(buf), stdin));
        n_max = MAX(n_max, a[i]);
        n_min = MIN(n_min, a[i]);
        sum += a[i];
    }
   
    puts("データ一覧を表示します");
    for (i = 0; i < 10; i++) printf("[%d] %d", i+1, a[i]);
   
    putchar('\n')
    printf("合計値: %d", sum);
    printf("平均値: %.2f", (double)sum / 10.0);
    printf("最大値: %d", n_max);
    printf("最小値: %d", n_min);

    return EXIT_SUCCESS;
}
911904:2008/05/27(火) 23:09:25
>>895
whole_time < 100 の時に正しく表示されなかったので >>904 の訂正
void display(long whole_time, long left_time){
long rate;
int is_percentage=0;

rate=left_time*100/whole_time;
if(whole_time*rate/100==left_time) is_percentage=1;
if(whole_time*(rate+1)/100==left_time) rate++,is_percentage=1;
if(is_percentage && left_time!=0 && left_time!=whole_time){
printf("%2ld%%\n", rate);
}else{
printf("%02ld:%02ld:%02ld\n", left_time/3600, (left_time/60)%60, left_time%60);
}
}
912デフォルトの名無しさん:2008/05/27(火) 23:12:28
>>910
superthxです。
/* ミスった */
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
int main(void) {
    int a[10];
    int sum = 0;
    int n_max = INT_MIN, i_max;
    int n_min = INT_MAX, i_min;
    char buf[1024];
    int i;
    for (i = 0; i < 10; i++) {
        printf("データ[No.%2d]を入力してください:", i+1);
        array[i] = atoi(fgets(buf, sizeof(buf), stdin));
        if (n_max < a[i]) {
            i_max = i+1;
            n_max = a[i];
        } else if (a[i] < n_min) {
            i_min = i+1;
            n_min = a[i];
        }
        sum += a[i];
    }
    puts("データ一覧を表示します");
    for (i = 0; i < 10; i++) printf("[%d] %d", i+1, a[i]);
    printf("\n合計値: %d", sum);
    printf("平均値: %.2f", (double)sum / 10.0);
    printf("最大値: %d(No.%d)", n_max, i_max);
    printf("最小値: %d(No.%d)", n_min, i_min);
    return EXIT_SUCCESS;
}
914デフォルトの名無しさん:2008/05/27(火) 23:23:30
>>909
0や1はその周り(八方)に宝(爆弾)が0個もしくは1個ありますよっていう表示です
書き方がわかりにくくてごめんなさい
915デフォルトの名無しさん:2008/05/27(火) 23:31:16
あーそうか、まんまマインスイーパーの仕様か。
916 ◆FbQrKbwE2g :2008/05/27(火) 23:35:05
あの、本当にくだらなすぎてテンプレに全くあてはまらない質問なのですが・・・
プログラムは自分で考えますのであつかましいのですが考え方を教えて頂ければと・・・。
windowsのC++で、期限は三日ほどです。
初心者レベルだと思います。実験機器の制御に使います。

機器に繰り返し計測させる事で増加していく出力値が、ある値で増加をやめた際に、その値だけを出力したいとなれば、どうすればよろしいのでしょうか。
一つ前の値と現在の値の差がほぼゼロになった時の値を出力させれば良いのだろうか等と考えてはいるのですが、これをどうすればいいかわかりません。
917デフォルトの名無しさん:2008/05/27(火) 23:42:36
>>916
なにかしらの型 ひとつ前の値を保存する変数( Aとする )
なにかしらの型 現在の値を保存する関数  ( Bとする )

if ( A - B < ほぼゼロ )
出力 B

ほぼゼロっていうんだから整数ではないんだろうけど…
内容さらせないなら先輩にでも聞けよ
918デフォルトの名無しさん:2008/05/27(火) 23:46:14
>>900
#define PI     3.14159 // π
#define STUDENT_ID 120    // 学籍番号

enum { SIN, COS }TRI_FUNC;

int main(void)
{
}

double calc(const double Degree, const TRI_FUNC SINorCOS)
{
  double Radian = 0;
  Radian = Degree / ( 180 * PI );

  if( SINorCOS == SIN ){
    return sin(Radian);
  }else{
    return cos(Radian);
  }
}

テンプレートに従ってやるとなんか悲しいので
関数部だけ…
919デフォルトの名無しさん:2008/05/27(火) 23:46:55
for(初期値から増加やめるまで){
計測
出力
}
920デフォルトの名無しさん:2008/05/27(火) 23:48:50
>>916
ピークは一箇所だけ?
それとも正弦波のように何度も上下のピークができてその度に記録が必要?
921 ◆FbQrKbwE2g :2008/05/27(火) 23:48:53
>>917
すいません、晒す内容自体ない感じで・・・

なにかしらの型 ひとつ前の値を保存する変数( Aとする )
なにかしらの型 現在の値を保存する関数  ( Bとする )

これがよく分からないんです。どうやってひとつ前と現在を分けて保存させるんですか?
922 ◆FbQrKbwE2g :2008/05/27(火) 23:49:56
>>920
返答ありがとうございます。ピークは一箇所だけです。
923863:2008/05/27(火) 23:55:55
>>869
今更返信ですが、そう言ってもらえると行ってるかいがあります
でもレポート1回も全部解けて出せたことないですが…

>>871
了解しました
ありがとうございます
924デフォルトの名無しさん:2008/05/27(火) 23:58:14
>>921

int before=0,now=0;

while(INPUT(now) < before) before = now;

intは適当に、INPUTは装置からデータ取ってくる。
1.データをnowに代入したら、前回の値と比べる。
2.前回の値より小さければ、前回の値に今回の値を代入。
3.再びデータを取ってくる(1に戻る)。
925デフォルトの名無しさん:2008/05/27(火) 23:59:18
>>924
ごめん、等号の<は>に直して。
926900:2008/05/28(水) 00:00:29
>>918

いえいえ、関数部だけでも十分すぎるくらいですよ(^^ゞ

お手数かけてすみませんでしたm(__)m。
ありがとうございます。
927デフォルトの名無しさん:2008/05/28(水) 00:15:41
>>911
トータル時間が与えられたときにパーセント表示する回数を求めよって問題じゃね?
928 ◆FbQrKbwE2g :2008/05/28(水) 00:17:14
>>924
ありがとうございます。
最初どっちもゼロにしといて、ゼロよりnowが大きければbeforeにnowを入れる(出発)、またnowを取って来て、beforeよりnowが大きければbeforeにnowを・・・
って感じと取らせていただいたのですがよろしいでしょうか?

いや全く思いつきませんでした・・・
929デフォルトの名無しさん:2008/05/28(水) 00:21:25
>>928
それでおk
ただ、ごめん・・・そのwhileの条件式だと、
初めにnowが絶対値をとってこないとループから出てしまう。
そこは微調整してがんばってくれ
930デフォルトの名無しさん:2008/05/28(水) 00:23:18
>>883
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6692.txt
こんなもんだろうか。
要求レベルからすると、ビットマスクは難しいかもしれないが。

インデントがなんかおかしいな。
931デフォルトの名無しさん:2008/05/28(水) 00:24:10
あと、ところどころにボムとかBOMって言葉が出てくるけど、宝と同義だと思ってくれ。
932 ◆FbQrKbwE2g :2008/05/28(水) 00:30:28
>>929
分かりました!ありがとうございました。
933デフォルトの名無しさん:2008/05/28(水) 00:45:27
>>865 >>858
問題文が書かれたファイルをアップロードしたい
→ワード形式のファイルなのでできない
→よく分からないけどTEXTとやらにすればOKらしい
→ググってみたらそれらしいフリーソフトがいっぱいあった
→どれ使ったらいいの?
という事か?メモ帳でいいんじゃね
934デフォルトの名無しさん:2008/05/28(水) 00:46:46
>>895

読解力がなくて表示する条件がよくわからんかった。
百分率が変わった時だけ表示するものとする、であれば、36行目をコメント化して37行目を有効にして。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6693.cpp
935デフォルトの名無しさん:2008/05/28(水) 00:49:03
>>930
解答ありがとうございます

#define MASK_BOM 0x0001 /* 宝 */
#define MASK_HIDE 0x0002 /* まだオープンしてない */
#define MASK_AROUND 0xFF00 /* 周囲の宝の数は、この位置に保存 */
この部分はまだ習ってないのでもっと簡単なやりかたはありませんか?
わがまま言ってすいません
936デフォルトの名無しさん:2008/05/28(水) 00:57:27
それ変えると、方式自体を変えなきゃいけないから
まったくの別プログラムになるだろうな。

ようは、各セルの情報をどうやって持つかなんだが。
既に指定されている前半部コードを見ると、どうしてもtakara配列の中に情報を詰め込みたくなる。
そうすると、自然とこういう方法になると思うんだが・・・。
937デフォルトの名無しさん:2008/05/28(水) 00:58:09
[1] 授業単元:C言語論
[2] 問題文(含コード&リンク):()
C言語では再帰呼び出しは、セキュアなコードとは言えない。この理由を100字以内で述べよ
[3] 環境
 [3.1] OS: Unix準拠(Windowsを含む)他
 [3.2] コンパイラ名とバージョン: ANSI-C,ISO-C準拠
 [3.3] 言語: C
[4] 期限: 2008/05/30
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
C言語の規格は一通り学びました。
ヒントとしては、メモリクラスがどーのこーのという話でした。
おねがいしますです。(|)
938デフォルトの名無しさん:2008/05/28(水) 01:00:02
>>913
動かない…だと…?
haii1.c: In function `main':
haii1.c:7: `INT_MIN' undeclared (first use in this function)
haii1.c:7: (Each undeclared identifier is reported only once
haii1.c:7: for each function it appears in.)
haii1.c:8: `INT_MAX' undeclared (first use in this function)
haii1.c:13: `array' undeclared (first use in this function)
haii1.c:23: warning: unknown escape sequence: `\' followed by char code 0x8e
haii1.c:30: parse error at end of input
939デフォルトの名無しさん:2008/05/28(水) 01:04:18
>>936
そうですか…直接アドレスいれるプログラム見たのはじめてなので混乱してます
940デフォルトの名無しさん:2008/05/28(水) 01:08:47
>>862
途中まで(式-->値)は作ったけど、式を生成する部分が判らん。
例:char s[]="123-45-67+89"
expr2val(s) --> 100

int expr2val(char *s){
int i, sum=0, tmp=0, sign=1;
char c;
printf("%s\n",s);
loop(i, strlen(s)){
c=s[i];
if((c<'0')||('9'<c)){
sum+=(tmp*sign);
tmp=0;
sign=((c=='+')? 1:-1);
}
else{ // numeric
tmp*=10;
tmp+=(c-'0');
}
}
sum+=(tmp*sign);
return sum;
}
941デフォルトの名無しさん:2008/05/28(水) 01:09:04
アドレスじゃなく、ビットマスクだ。まぁ頑張れ。
942デフォルトの名無しさん:2008/05/28(水) 01:09:40
【質問内容】
char strの配列に入っているIPアドレス("10.20.30.40"とか)を
ネットワークバイトオーダーに変換して、unsigned char ipaddr[4]に
格納したいのですが、とりあえず以下のプログラムでアドレス不正せずに
表示ができています。ポインタの使い方とかおかしい箇所はありますでしょうか?
動作環境はUbuntu8.04(x86)でIntel Core2DuoのノートPCです。

【プログラム内容】
int i;
unsigned char *ip;
unsigned char ipaddr[4];
long long val;
char str[] = "10.20.30.40";

/* ネットワークバイトオーダー変換前 */
val = inet_addr(str);
ip = (unsigned char *) &val;
for(i = 0; i < 4; i++){
 ipaddr[i] = ip[i];
}
printf("変換前 : %d %d %d %d\n", ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]);
/* ネットワークバイトオーダー変換後 */
val = htonl(val);
ip = (unsigned char *) &val;
for(i = 0; i < 4; i++){
 ipaddr[i] = ip[i];
}
printf("変換後 : %d %d %d %d\n", ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]);

【表示結果】
変換前 : 10.20.30.40
変換後 : 40.30.20.10
943デフォルトの名無しさん:2008/05/28(水) 02:48:51
>>942
スレ違いの気もするが、とりあえずlong longが4バイトかどうか確認した方がいいと思う
というかinet_addrってlong longを返すんだっけ?
944942:2008/05/28(水) 03:29:00
>>943
sizeof(long long)=8バイトとなりました。unsigned char *でキャストすると
4バイトしか取られないので駄目ですね。
あとinet_addrの戻り値はin_addr_t(unsigned int)でした。
long longの変数に代入しても一応大丈夫そうですが…。

指摘も考慮して以下のように修正してみました。
どうでしょうか?

【修正内容】
int i;
long nval;
struct in_addr addr;
unsigned char ipaddr[4];
unsigned char *ip;
char str[] = "10.20.30.40";

inet_pton(AF_INET, str, &addr);
nval = htonl(addr.s_addr);
ip = (unsigned char *) &nval;

for(i = 0; i < 4; i++){
 ipaddr[i] = ip[i];
}

printf("%d %d %d %d\n", ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]);

【出力結果】
40 30 20 10
945デフォルトの名無しさん:2008/05/28(水) 04:03:03
>>862
#include<stdio.h>

int expr2val(const char *s){
int sum=0, value, n;

while(sscanf(s, "%d%n", &value, &n)>=1) sum+=value,s+=n;
return sum;
}

int main(void)
{
char base[]="123456789", buf[9+3+1];
int i, j, k, l, result;

for(i=1;i<9;i++)
for(j=i+1;j<9;j++)
for(k=j+1;k<9;k++)
for(l=0;l<3;l++){
char sign[]="---";
sign[l]='+';
sprintf(buf, "%.*s%c%.*s%c%.*s%c%s", i, &base[0], sign[0], j-i, &base[i], sign[1], k-j, &base[j], sign[2], &base[k]);
result=expr2val(buf);
if(result==450 || result==500 || result==666) printf("%s=%d\n", buf, result);
}
return 0;
}
946デフォルトの名無しさん:2008/05/28(水) 07:34:36
>>923
>>878は無視かい?w 処理速度に差がありすぎるんだが・・・
947デフォルトの名無しさん:2008/05/28(水) 07:52:22
>>934
間違ってんじゃね?
・完全なパーセンテージを表示できるときだけ表示
・小数点以下は表示できない
って条件だから、32%ぴったりのときとかだけ表示する仕様だと思ふ。
948デフォルトの名無しさん:2008/05/28(水) 08:34:19
あの・・・
〉〉839
をお願いしたいのですが。
949デフォルトの名無しさん:2008/05/28(水) 08:49:13
>>947
そう読めたんだけど、それだと殆ど表示が更新されない場合がある気がして。
950デフォルトの名無しさん:2008/05/28(水) 09:40:12
こうやって勝手に解釈されたら困るよな、プログラマに
951デフォルトの名無しさん:2008/05/28(水) 10:01:44
勝手に解釈されて文句垂れるんならここで質問すんな
952デフォルトの名無しさん:2008/05/28(水) 10:11:19
勝手に解釈して書く奴はプログラマとしてやっていくには難しいぞ
953デフォルトの名無しさん:2008/05/28(水) 10:16:03
このスレで「プログラマとして」とか言われても困るけどな
954デフォルトの名無しさん:2008/05/28(水) 10:21:00
仕様書をちゃんと書け、文句はそれからだ
955デフォルトの名無しさん:2008/05/28(水) 10:27:31
>>937はわかりますか?
956デフォルトの名無しさん:2008/05/28(水) 10:28:10
あまり再帰が深くなるとスタック破壊すっからだろ
957デフォルトの名無しさん:2008/05/28(水) 10:29:37
>>947
いやいや、
・小数点以下は表示できないので、整数部が変わったときだけ表示する
って話じゃね?
958デフォルトの名無しさん:2008/05/28(水) 10:56:49
>>839
グラフ的な数列とはどんな条件を満たせばよいの?
959デフォルトの名無しさん:2008/05/28(水) 11:22:39
>>958
グラフの各頂点の次数(隣接する頂点の数)をソートした結果になっていること。
Havel-Hakimi の定理などでアルゴリズミックに判定可能。過去スレにもある。
960デフォルトの名無しさん:2008/05/28(水) 11:47:22
>>839
#include<stdio.h>
#include<stdlib.h>

int cmp(const int *a, const int *b){
return *b-*a;
}

int isDegreeSequence(int d[], int p){
int i;
for(;p>0;p--,d++){
qsort(d, p, sizeof(d[0]), cmp);
if(d[0]<0 || d[0]>=p) return 0;
for(i=1;i<=d[0];i++) d[i]--;
}
return 1;
}

int main(void){
int test_data[][10]={
{1,1,1,1,1,1,1,1,1,5},
{1,2,3,4,5,6,7,8,9,10},
{2,2,3,4,6,5,7,8,9,6},
};
int i;
for(i=0;i<sizeof(test_data)/sizeof(test_data[0]);i++)
if(isDegreeSequence(test_data[i], 10)==1) printf("%d は単純グラフ的\n", i);

return 0;
}

>>959 thx Havel-Hakimi でググったら106代目がヒットしたw
961デフォルトの名無しさん:2008/05/28(水) 13:36:05
[1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):
シェルに定義されている環境変数の一覧表を表示するプログラムを作れ。
サンプルプログラムを参考にして作成すること。必ず子プロセスに実行させること。
///サンプルプログラム///
#include <stdio.h>

int main(int argc, char *argv[], char *envp[])
{
int i;
for (i=0; envp[i]!=NULL; i++)
printf("%s\n", envp[i]);
exit (0);
}

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:6月2日
[5] その他の制限:

よろしくお願いします。
962デフォルトの名無しさん:2008/05/28(水) 16:46:00
おいっ、どうした?ほれ、もっと俺が解答できるような簡単な宿題を質問せぇ?
ソート、文字列比較、リスト、構造体、素数、フィボナッチェ、再帰。
963デフォルトの名無しさん:2008/05/28(水) 17:02:15
[1] 授業単元:CプログラミングU
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6696.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: 2008/06/01
[5] その他の制限:標準ライブラリは使用不可.構造体・再帰・関数などは習いました.
複雑すぎて全くわからないので,よろしくお願いします.
964デフォルトの名無しさん:2008/05/28(水) 17:19:47
>>963
>標準ライブラリは使用不可.

printfすら駄目ってことになるぞ

Win32 APIで画面起こしてテキストコントロールにGetWindowTextを使って読めと?
965デフォルトの名無しさん:2008/05/28(水) 17:21:44
>>964
よくわからずに発言してしまったみたいです.すみません.
標準ライブラリ使ってください.
966883:2008/05/28(水) 18:00:20
再度書き込みます
[1] 授業単元:
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6697.txt
[3] 環境
 [3.1] OS: xp
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限:緊急(最終期限:木曜深夜)
[5] その他の制限:習ってるのはポインタ、配列、関数の初歩程度です。
なのでレベルを合わせたプログラムを書いていただけると助かります

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6692.txt
以上の解答をいただいたのですがやはりビットマスクはだめのようです
ビットマスクのとこを配列でやる。
takaraにいっぱい詰め込む必要はないそうです

自分で一日ねばってもできませんでした
どうかお願いしますm(_ _)m
967デフォルトの名無しさん:2008/05/28(水) 18:22:30
>>966
takaraに加えて、以下の2配列を追加してみては?
・オープンしているかどうかの配列
・周囲の宝の数を格納する配列
んで、それぞれの処理はそれぞれの配列を参照するように変更。
968デフォルトの名無しさん:2008/05/28(水) 18:43:55
>>937,955
素のままでは、スタックあふれを逐次チェックする機構がない、
てことでしょうか?
これは MS-DOS などの仮想メモリ空間を準備できない環境での
話だと思っていましたが、unix や NT でもだめでしたっけ?わかりません。
969デフォルトの名無しさん:2008/05/28(水) 18:58:38
>>967
どう書けばよいのでしょうか?
無知ですいません…
970デフォルトの名無しさん:2008/05/28(水) 19:28:02
このままじゃ今のソース説明しろって言われたらボロが出るし、簡単な
手法への変換ができないままだと疑われるし!
部屋の隅で単位落とすかもしれないと思って涙目で震えてる学生を助けろよ!
971デフォルトの名無しさん:2008/05/28(水) 19:29:52
>>970
できもしない奴に単位が取れる可能性を与えただけで十分だろ
972デフォルトの名無しさん:2008/05/28(水) 19:32:19
オレは面白い問題が解ければそれでいい
後でどうなろうと知ったこっちゃ無い
973デフォルトの名無しさん:2008/05/28(水) 19:37:11
単位落としたなら来年取ればいいじゃない?そういうシステムだろ?
974778:2008/05/28(水) 19:38:05
再度書き込み失礼しますm(__)m
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
@Dijkstraのアルゴリズム解法を実現するプログラムを作成し、コンパイルして実行せよ。
このとき、グラフ中の指定頂点(ここでは頂点0)に対して、全ての頂点への最短経路コストと最短経路を標準出力に表示すること。
〜Graph〜
#define NC 9999
#define N 6
int edge[N][N] = {
  /* src:     0   1   2   3   4   5   ...dst */
  /* 0 */  {  0, NC, NC,  8, 15, NC},
  /* 1 */  { 10,  0, 24, NC,  8, NC},
  /* 2 */  { NC, NC,  0, NC, NC,  6},
  /* 3 */  { NC, NC, NC,  0,  5, NC},
  /* 4 */  { NC, NC, 12, NC,  0,  7},
  /* 5 */  { NC, NC,  3, NC, NC,  0}
};
〜Result Sample〜
Result (from 0)
To 0 : ---
To 1 : No Path
To 2 : cost 23 : 2 <- 5 <- 4 <- 3 <- 0
To 3 : cost  8 : 3 <- 0
To 4 : cost 13 : 4 <- 3 <- 0
To 5 : cost 20 : 5 <- 4 <- 3 <- 0
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名: gcc
 [3.3] 言語: C
[4] 期限: 2008/05/29(Thu)
[5] その他の制限: 特にありません
よろしくお願いします。
975デフォルトの名無しさん:2008/05/28(水) 19:41:12
他人の力を借りないとプログラム組めない奴なんて
どうせ無理して卒業して社会に出ても使えないゴミなんだから退学しちゃえよ
とか思うけどな。まあ人のことだからどうでもいいけど。

>>972
こんなんで面白いって言ってるようじゃ(ry
刺激が欲しいなら「トリッキーなプログラム」の過去スレ漁ってみ?
976デフォルトの名無しさん:2008/05/28(水) 20:54:39
その人にとって社会に出てからは必要の無い知識だとしたら?
単位取得のタメ・必修過程終了するため

お前ら視野狭すぎる
977デフォルトの名無しさん:2008/05/28(水) 20:56:41
>>976
そんな個人的な事情はお父さんかお母さんくらいの身近な人と話してください
978デフォルトの名無しさん:2008/05/28(水) 21:08:42
プログラムの授業が必修であるような学校を自分で選んだんでしょ?
必要ないならそれが必修ではない学校を選べばいいだけじゃん。
何のために大学とか行ってんの?そこで何を学ぶかも知らずに行ったの?
学校を選び間違えたなら他を受けなおすとかいくらでも道はあるよ。

>>976
お前は考えが幼すぎる。
979デフォルトの名無しさん:2008/05/28(水) 21:14:29
>>978
お前の考えの方が幼すぎる。っつか異常。ただの妬み、僻みだろ、低学歴
980デフォルトの名無しさん:2008/05/28(水) 21:19:45
[1] 授業単元:C++実習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6698.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: VC6.0
 [3.3] 言語:C++
[4] 期限: 無期限
[5] その他の制限:なし

よろしくおねがいします
981デフォルトの名無しさん:2008/05/28(水) 21:19:55
>>979
高校以降、欲する知識が得られ、欲さない知識を得なくてすむ学校に
行き、今はその知識を活用する職につき、不自由の無い収入を得ています。
982デフォルトの名無しさん:2008/05/28(水) 21:22:07
[1] 授業単元:プログラミングT

[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6699.txt
[3] 環境
 [3.1] OS:(WindowsXP)
 [3.2] コンパイラ名とバージョン:VC++2005
 [3.3] 言語:C++
[4] 期限:今週末まで
[5] その他の制限:問題文の解答であるプログラムを関数(ヘッダファイル)を<iostream>
         を使用しない形で実行したいのですが。。

[5.2] C言語は関数を少しかじった程度のレベルです。


   どうかよろしくお願いしますm(__)m。
983デフォルトの名無しさん:2008/05/28(水) 21:28:59
>>982
>>355丸写しなんだが・・・
お前は単位落としたほうがいいと思うよ
984デフォルトの名無しさん:2008/05/28(水) 21:29:54
後付で条件増やすな。
とそれ解いてくれた人なら怒る。
985デフォルトの名無しさん:2008/05/28(水) 21:38:39
C++ほとんど知らないんだけど、iostream使わない場合の入出力関数ってどんなのがあるの?
fgetsとかつかえる?
986デフォルトの名無しさん:2008/05/28(水) 21:43:40
放置推奨
987982&352:2008/05/28(水) 21:46:43
>>355
>>356
本当にすいませんm(__)m。
提出後にメモリの消費量云々で返されてしまったので、

>>985
fgetsは使えます。
988デフォルトの名無しさん:2008/05/28(水) 21:48:41
>>987
fgets 使えるんだ。
んじゃ、fprintf も使える?
989982&352:2008/05/28(水) 21:49:59
>>988

fprintは使ったことがないのでわかりませんが、たぶん使えるかと。
990デフォルトの名無しさん:2008/05/28(水) 21:52:29
>>989
へえ!そうなんだ!
今回、iostreamを使わなくすると発生する問題は入出力部分のみかな?
991デフォルトの名無しさん:2008/05/28(水) 21:52:49
992デフォルトの名無しさん:2008/05/28(水) 21:59:02
>>991
あえてこの状態なのかしら
993982&352:2008/05/28(水) 21:59:31
>>990

はい。

先生からは実行(入出力時)するときに必要になるメモリの関係上で
実行できない時があるのが駄目だと言われまして、
994デフォルトの名無しさん:2008/05/28(水) 21:59:58
>>990
消えろ
995デフォルトの名無しさん:2008/05/28(水) 22:03:08
>>993
じゃあfgetsとfprintfを使えばいいね!
君はまるで目の前にステーキとナイフとフォークが差し出されたにも関わらず、
それを一口サイズに切って、口に運んでもらわないと食べられないよ!
って言っているわがままなおぼっちゃんのようだ!

>>994
suck
996デフォルトの名無しさん:2008/05/28(水) 22:03:30
>>994
お前がこんなスレに来なきゃ良いだろw
997デフォルトの名無しさん:2008/05/28(水) 22:05:27
何で外人風?なのか分からんが、まあ、気持ちは分からんでもないw
998デフォルトの名無しさん:2008/05/28(水) 22:19:35
次スレたってるよ
999デフォルトの名無しさん:2008/05/28(水) 22:22:57
>>992
なんかおかしい?

うめ(´・ω・`)うめ
1000デフォルトの名無しさん:2008/05/28(水) 22:23:28
うめ(´・ω・`)うめ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。