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


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

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



1 名前:デフォルトの名無しさん [2008/08/03(日) 14:25:18 BE:170408063-2BP(6868)]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

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

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

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

前スレ
C/C++の宿題を片付けます 114代目
pc11.2ch.net/test/read.cgi/tech/1216746971/

2 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 07:46:14 ]
只今全スレが稼働中です。

3 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 12:51:53 ]
2chは今日も元気だってこと?

4 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 14:42:57 ]
暇な奴が多いってことでしょ。

5 名前:デフォルトの名無しさん [2008/08/04(月) 17:14:56 ]
pc11.2ch.net/test/read.cgi/tech/1216746971/999
m9(^д^)

6 名前: ◆7W9NT64xD6 mailto:sage [2008/08/04(月) 17:31:05 ]
[1]C言語応用
[2]2chの掲示板のdatファイルを解析して、レスストリーム(後述)に分解し、
フレーム付きのページで、ストリーム単位に閲覧することができるような
HTMLファイルを生成する。Windows/Linux/MacOS共に対応し、コマンドラインで
スレURLを与えれば、カレントディレクトリに、取得した時点のYYYYMMDDHHMMSS形式の
名称のディレクトリを作り、そこにフレーム付きページを生成する。
☆レスストリーム
(1)同一スレの別のレスへのアンカーを含まないレスは単一のストリームに含まれる、その
ストリームの代表レスとなる。
(3)同一スレの別のレスへのアンカーを含むレスは、指しているレスが所属するストリーム
のすべてに含まれる。
※一つのレスが複数のストリームに含まれることはあり得る。
[3] Windows/Linux /MacOS/gcc/C言語が望ましいがC++でも可
[4] 7月中でしたが8月中に変更

7 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 19:44:01 ]
>>6
どこの学校の何年の課題だよ

8 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 19:50:19 ]
自分がやりたいことを課題風に書いてアウトソースと予想

9 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 22:04:00 ]
>>1


10 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 22:14:03 ]
>>6 = pc11.2ch.net/test/read.cgi/tech/1216746971/170



11 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 22:20:28 ]
>>6
サンプルの dat とそれに対する出力例うp!

12 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 23:07:23 ]
[1]C言語
[2]
3次元ベクトルの外積を計算するプログラムを作れ。(以下の要求に従え。)
􀂉2つの3次元ベクトルa, b の成分はそれぞれテキストファイルa.txt, b.txtに作っておく。各行は1つの成分とする。
􀂉プログラムの中で、ファイルa.txt, b.txtからベクトルa, b の成分を読み込むようにする。
􀂉a=(a1,a2,a3), b=(b1,b2,b3) に対して、a とb の外積は(a2b3-a3b2, a3b1-a1b3, a1b2-a2b1)
􀂉a とb の外積をファイルaxb.txtに書き出せ
[3]OS:Windows  言語:C
[4]2008/08/5(pm.6)
よろしくお願いします

13 名前:デフォルトの名無しさん [2008/08/04(月) 23:11:56 ]
>>12
a.txtとb.txtをアップしろ

14 名前:こんなんかな? mailto:sage [2008/08/04(月) 23:16:31 ]
[a.txt]
1.1 2.1 3.1
1.2 2.2 3.2
: : :
[b.txt]
3.1 3.2 3.3
4.1 4.2 4.3
: : :

15 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 23:17:01 ]
>>13
たぶん適当でいいんだと思います


a.txt

1
2
3

b.txt

4
5
6

よろしくお願いします

16 名前:デフォルトの名無しさん [2008/08/04(月) 23:22:23 ]
>>15
どう考えても>>14さんの形だろ
ってことで>>14さんのファイルでやってみる

17 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 23:39:49 ]
3次元ベクトルで各行に一成分なら>>15じゃね?

18 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 23:50:32 ]
>>15
すみません、ひょっとしたらこうかも。
たぶん>>14さんのような高度な事はこの問題は求めてないと思うので。


a.txt

a1
a2
a3

b.txt

b1
b2
b3


19 名前:名無しさん [2008/08/05(火) 07:28:40 ]
#include <stdio.h>
#define N 3
int main()
{
double a[N], b[N], axb[N];
FILE *fpA = fopen("a.txt", "r");;
FILE *fpB = fopen("b.txt", "r");;
FILE *fpAXB = fopen("axb.txt", "w");;
long i;
for(i=0L; i<N; i++)
{
fscanf(fpA, "%lf", &a[i]);
fscanf(fpB, "%lf", &b[i]);
}
fclose(fpA); fclose(fpB);
axb[0] = a[2] * b[3] - a[3] * b[2];
axb[1] = a[3] * b[1] - a[1] * b[3];
axb[2] = a[1] * b[2] - a[2] * b[1];
for(i=0L; i<N; i++)
{
fprintf(fpAXB, "%lf\n", axb[i]);
}
fclose(fpAXB);
return 0;
}

20 名前:名無しさん [2008/08/05(火) 07:34:28 ]
違ってるね。aとbの添え字。



21 名前:名無しさん [2008/08/05(火) 07:45:34 ]

axb[0] = a[2] * b[3] - a[3] * b[2];
axb[1] = a[3] * b[1] - a[1] * b[3];
axb[2] = a[1] * b[2] - a[2] * b[1];

axb[0] = a[1] * b[2] - a[2] * b[1];
axb[1] = a[2] * b[0] - a[0] * b[2];
axb[2] = a[0] * b[1] - a[1] * b[0];

axb = |a| * |b| * sin(theta)
直交ベクトルどうしのベクトル積は|a| * |b| * 符号
(1, 0, 0) x (0, 0, 1) ===> (0, -1, 0)
平行ベクトルどうしのベクトル積はゼロベクトル
(1, 2, 3) x (1, 2, 3) ===> (0, 0, 0)


22 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 10:39:44 ]
>>21
ありがとうございました!
とても助かりました!

23 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 11:25:19 ]
struct{
float _11, _12, _13, _14;
float _21, _22, _23, _24;
float _31, _32, _33, _34;
float _41, _42, _43, _44;
};
上記のようなマトリックスのクラスで、
m[1][2]のようにアクセスできるように演算子[]を多重定義せよ
という課題です。よろしくお願いします。

24 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 11:50:00 ]
>>23
>>1くらい読め

25 名前:デフォルトの名無しさん [2008/08/05(火) 16:39:16 ]
2階線形常微分方程式、(d^2 y)/(dx^2 )=A(Aは任意の実数),dy/dx(x=0のとき)=0,y(x=0のとき)=0
をオイラー法で解くと、具体的にどのようなC言語のプログラムになるのでしょうか。
(刻み幅10の場合)

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



26 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 16:43:31 ]
>>25
>>24

27 名前:デフォルトの名無しさん [2008/08/05(火) 16:45:59 ]
>>24 >>26
あんたも>>1を読もうな?読める?読めない?聖徳太(ry

28 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 16:47:27 ]
> 気に入らない質問やその他や発言はスルーの方向で。
これね。読める?読めない?聖徳(ry

29 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 17:00:47 ]
>>28
おまえがいうな

30 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 17:10:23 ]
別に、テンプレを無視しているからって気に入らないとは限らないじゃんか

テンプレ通りじゃないから回答はしないけど、
スルーするほど気に入らないわけじゃないから
テンプレに則って質問すれば回答しますよっていう
意思表示でしょ?

もしくは、もっと単純に、このスレでは質問はテンプレ通りにしてくれよ
ていうアドバイスかもしれないし



31 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 21:39:59 ]
お願いします

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
●トランプめくり
・好きなカードを入力する。
・好きなカードの柄を選択する。
・好きな数字を入力する。
・入力された好きなカードを表示して、指定したもので良ければ、
 トランプカードめくりを行う。

・トランプめくりの実行
・Enterキーにて、トランプを1枚表示する。
・入力された好きなカードが登場するまで繰返す。
 カードを何枚めくったか表示する。
・途中で終了したい場合は、'E' or 'e' + Enterキーで終了する。
[3] 環境
 [3.1] OS:Windows
 [3.2] VC
 [3.3] 言語:C
[4] 期限: [無期限]
[5] その他の制限:

32 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 22:02:22 ]
【質問テンプレ】
[1] 授業単元:数値解析
[2] 問題文(含コード&リンク):
LU分解による連立一次方程式について、その精度を計算するプログラムを作成せよ。過程がわかるようにコメントを添えること。
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: Cのみ
[4] 期限: 8月8日17時
[5] その他の制限 とくになし
精度計算の方法からすでに僕ではわかりません。
4次元くらいの方程式で大丈夫だと思います、よろしくお願いします。

33 名前:名無しさん [2008/08/05(火) 22:49:10 ]
>>32
精度補償付き数値計算でググれ
インラインアセンブリが必要になるが、線形計算の精度を出せる。

それでは学部の課題としては高度過ぎるか?
だとすると行列の条件値(condition number)の話かもしれない。
行列A
その逆行列をinv(A)
Aのノルムを ||A||
inv(A)のノルムを ||inv(A)||
とすると
条件値= ||A|| * ||inv(A)||
になる。
ノルムの定義は各種あるので調べてみよ。
条件値と精度を関連付ける理屈を理解する必要がある。そうしないとレポートにならない。
理屈さえ分かれば、ノルムの計算法と逆行列の求め方に帰着するはずだ。

34 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 23:04:10 ]
>>29
> 気に入らない質問やその他や発言はスルーの方向で。

35 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 03:47:31 ]
>インラインアセンブリが必要になるが
詳説もとめます。

36 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 03:57:58 ]
前スレ>>631さま
前スレ>>558です。
遅くなりましたが、ありがとうございました。
コメントの文言を変える等の若干手を加えたことを除いて、ほぼそっくりそのまま、提出したところ、
昨日遅く返事が来て、たいへん褒められました。ほとんど減点が無いそうで、クラスで1人だけだそうです
しかし、是非、「解説を書いてくれ(なければネットで同じコードがないか探すぞ)」と言われて(脅されて)
困ってます。
コードを見ても、ちんぷんかんぷんです。(中級者コースですが、初心者レベルです(哀))
コードの内容を教えて下されば幸甚です。
何か、悪質な問題だとか、色々ご指摘を受けてたようですが、実際、意図的に制限を付けて難しくしたと
言っていました。

37 名前:引用 mailto:sage [2008/08/06(水) 05:17:34 ]
[1]C言語中級コース
[2]標準入力から読み込まれた文字列を改行で区切って辞書順に比較し、長さ上位の10行について
その前後周辺5行(前2行+当該+後続2行)を行番号+":"付きで表示するプログラムを作成
しなさい。(後続が無い場合は空行を表示)
当該行は先頭行番号前に*を付けて区別させること。
表示が重なり合う場合にも対応し、同じ行を二度出力しないようにすること。
制限:行取り込みにはfgets関数を用いること。1行は最大で4Kバイト以内であるとして良い。
入力された文字列は物質のように扱い、その加工(複製、部分複製、結合、部分文字削除)は
一切禁止する。fgetsで上書きするかfreeで解放するこの2つ以外認めない。
行の長期記憶は、固定変数char *(memory[50])でのみ行うことが出来るものとし、
それ以外の変数(ポインタ以外)で行を記憶してはならない。
static変数は使ってはならない。mallocで確保した領域は必ずfreeすること。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7546.c


38 名前:名無しさん [2008/08/06(水) 08:19:28 ]
>>35
正しくは、精度補償じゃなくて精度保証ね。

IEEE-754を前提として、浮動小数点数のラウンディングの方法(四捨五入、全て切り上げ、全て切り下げ)を制御ができる。
ラウンディングを「全て切り上げ」に設定して、線形代数の計算を1回行い、答えその1を得る。
次に、ラウンディングを「全て切り下げ」に設定して、同じ線形代数の計算をもう1回行い、答えその2を得る。
真の答え=( 答えその1 + 答えその2 ) / 2
精度=絶対値( 答えその1 − 答えその2 )
となる、という定理が証明されている。

インラインアセンブリについては www.oishi.info.waseda.ac.jp/~oishi/lec_nc/Table1.htm を見よ。


39 名前:名無しさん [2008/08/06(水) 08:23:09 ]
Linuxだったら /usr/include/fpu_control.h も見よ。



40 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 08:40:23 ]
>>36
cs.tuat.ac.jp?



41 名前:デフォルトの名無しさん [2008/08/06(水) 12:52:02 ]
なんかそんな寓話がありそうだな。

42 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 14:23:37 ]
>>37

>636 :デフォルトの名無しさん :2008/07/30(水) 17:35:28
>>558
>>631
>この問題は仕様と満たそうとすると、10x5行をmemoryに取り込んだ状態で
>つぎの2行が取り込む物ではないが、さらに次の行では取り込む物の場合
>過去の2行復元が出来ないよ。
最近読み込んだのは、それは長期じゃないから、長期記憶領域と呼ばないで良いとしないと出来ない。

43 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 15:02:05 ]
>>42
>>37
> それ以外の変数(ポインタ以外)で行を記憶してはならない。
この、「ポインタ以外」ってのも良くわからない。
ポインタなら構わないという意味にも取れるが、
それなら、別途ポインタの配列を作るよな・・・

44 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 15:27:57 ]
おやおや、麻呂のクソースの出番でおじゃるか?
麻呂を呼んだのは誰でおじゃ〜る?えっ?お呼びでない?

45 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 17:13:15 ]
んにゃ。多分お呼びじゃない

46 名前:42 mailto:sage [2008/08/06(水) 17:25:46 ]
>>43 無理やり、こう↓読まないと解けない問題
>行の長期記憶は、固定変数char *(memory[50])でのみ行うことが出来るものとし、
ポインタ変数以外の変数     で行を記憶してはならない。
>それ以外の変数(ポインタ以外)で行を記憶してはならない。

47 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 17:41:04 ]
[1]C言語演習(入門コース)
[2] 次の10進数覆面算を解くプログラムを作って実行させる。
(解は何個あるかを求める。0個の場合もあるかも知れない)
(FINE+PROGRAM)*IS=DIFFICULT
PC*LANG=IS*NICE
LANG<>NICE
PC<>IS
(同時に満たすものを探す)
(異なる文字で同じ数字が割り当てられても良いが、同じ文字に複数の数字を割り当てられないものと
する。また文字列先頭は0で始まらないものとする。
解が無いことが事前に判明した場合は、その理由を記せば、コードを書かなくても良い。
[3]Linux/gcc/C
[4]8/31 正午(プログラムと解説、実行結果をメール)

手が付けられません。よろしくお願いします。解説と実行結果のほうも甘えてよろしいでしょうか?
まだ期限まで時間がありまんで、回答は急ぎません。

48 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 18:44:16 ]
>>47
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7590.c

解説:
総当りしただけ
実行結果:
 A=9 C=0 D=3 E=0 F=2 G=0 I=5 L=4 M=9 N=5 O=2 P=6 R=5 S=4 T=6 U=0  @@@

49 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 19:43:26 ]
ヤター
俺が一番載りだ!
皆見てくれ凄いだろ

50 名前:デフォルトの名無しさん [2008/08/06(水) 19:58:04 ]
以下の二つの問題が分かる方助けて頂きたく願います

1.キーボードから入力した二つの整数値x,yのxのy乗を計算するプログラム
 を作成しなさい。

2.キーボードから入力した文字列を全て大文字(小文字は大文字に、大文字
 はそのまま)に変換して表示するプログラムを作成しなさい。ただし、文字
 を大文字に変換する関数を作成し、それを利用すること。

この二つです、よろしくお願いします



51 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 20:00:57 ]
真似されないうちに貼っておこう
#include <stdio.h>
#define xx(v, from) for(v = from; v <= 9; ++v)
#define yy(expr) if(!(expr)) break
#define zz(v) printf(" " #v "=%d", v)
static int A,C,D,E,F,G,I,L,M,N,O,P,R,S,T,U;
int main(){
xx(P, 1)xx(C, 0)xx(I, 1)xx(S, 0){
// generated by "...".split(//).inject {|acc, item| "("+ acc +")*10+"+ item }
yy(P*10+C != I*10+S);
xx(L, 1)xx(A, 0)xx(N, 1)xx(G, 0)xx(E, 0){
yy(((L*10+A)*10+N)*10+G != ((N*10+I)*10+C)*10+E);
yy((P*10+C)*(((L*10+A)*10+N)*10+G)==(I*10+S)*(((N*10+I)*10+C)*10+E));
xx(D, 1)xx(F, 1)xx(M, 0)xx(O, 0)xx(R, 0)xx(T, 0)xx(U, 0){
yy((((((F)*10+I)*10+N)*10+E)+( ((((((P)*10+R)*10+O)*10+G)*10+R)*10+A)*10+M))*(I*10+S)
==(((((((((D)*10+I)*10+F)*10+F)*10+I)*10+C)*10+U)*10+L)*10+T));
zz(A);zz(C);zz(D);zz(E);zz(F);zz(G);zz(I);zz(L);zz(M);zz(N);zz(O);
zz(P);zz(R);zz(S);zz(T);zz(U);puts(" @@@");}}}}

52 名前:デフォルトの名無しさん [2008/08/06(水) 20:01:44 ]
51 名前:デフォルトの名無しさん 投稿日:2008/08/06(水) 20:00:57
真似されないうちに貼っておこう

53 名前:デフォルトの名無しさん [2008/08/06(水) 20:20:53 ]
すみません>>50です質問し直します
[1] プログラミングT
[2] 1.キーボードから入力した二つの整数値x,yのxのy乗を計算するプログラム
  を作成しなさい。

  2.キーボードから入力した文字列を全て大文字(小文字は大文字に、大文字
 はそのまま)に変換して表示するプログラムを作成しなさい。ただし、文字
 を大文字に変換する関数を作成し、それを利用すること。

[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] 言語:C
[4] 期限:明日の昼まで出来たらお願いします
よろしくお願いします

54 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 20:21:36 ]
>>50
1.位は自力でやれば?
2.
#include<stdio.h>
void smallToCapital(char* string);
int main()
{
char* str;
scanf("%s",str);
smallToCapital(str);
printf("%s",str);
}
void smallToCapital(char* string)
{
char c;
int i;
for(i=0;c=string[i];i++)
{

if('a'<=c&&c<='z')
string[i]+='A'-'a';

}
}

55 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 20:26:54 ]
52 名前: デフォルトの名無しさん Mail: 投稿日: 2008/08/06(水) 20:01:44
51 名前:デフォルトの名無しさん 投稿日:2008/08/06(水) 20:00:57
真似されないうちに貼っておこう

56 名前:デフォルトの名無しさん [2008/08/06(水) 20:32:13 ]
>>54
ご回答ありがとうございます。
何分初心者なもので
なんとか1もお願いできませんでしょうか。

57 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 20:35:52 ]
>>48様 解は16個、ちなみにこれ皆DIFFICULT
118815618
125521431
125521536
132232630
143346720
145549426
146643816
266665196
352250046
367767552
442248128
442248226
452258950
494497895
494497990
574472340

58 名前:54 mailto:sage [2008/08/06(水) 20:39:50 ]
>>56
超適当
#include<stdio.h>
int pow(int x,int y);
int main()
{
int x,y,z;
scanf("%d%d",&x,&y);
z = pow(x,y);
printf("%d",z);
}
int pow(int x,int y)
{
int z=1,i;
for(i=0;i<y;i++)
z*=x;
return z;
}

59 名前:デフォルトの名無しさん [2008/08/06(水) 20:42:34 ]
>>58
適当でも十分です
ご回答感謝します

60 名前:デフォルトの名無しさん [2008/08/06(水) 20:48:13 ]
55 名前:デフォルトの名無しさん 投稿日:2008/08/06(水) 20:26:54
52 名前: デフォルトの名無しさん Mail: 投稿日: 2008/08/06(水) 20:01:44
51 名前:デフォルトの名無しさん 投稿日:2008/08/06(水) 20:00:57
真似されないうちに貼っておこう



61 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 20:56:54 ]
真似されない内の意味が分からん。貼ったらそれを真似されるだろw

62 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 23:45:21 ]
>>54
今日も一人クズを育てたねw
おつかれさま。設問1のプログラム書いて貼る時の気持ち、お察しします。

63 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 23:51:03 ]
>>54
ある意味神頼みなコードやね
コンパイラとか最適化とかデバッグオプションの有無で動いたり動かなかったりw

64 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 00:01:43 ]
動くときがあればいいんだけどなw

65 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 00:14:48 ]
>>36
上位10行:*行  上位10行でない行:-行とする

先頭10行は無条件に読み込み、memory内に設定(全部*行)
読込み中にmemory内の最小値の位置を記憶しておく

11行目以降は、読み込んだ行が最小値より小さいか大きいかで分岐

小さい場合
 memory内の最後の*行の後ろに-行が2行設定されているかどうかで分岐
 設定されていない
  読み込んだ行を、memoryの最後に-行として設定
設定されている
  rlineの位置を1つずらす(rline内には最大で次に読み込む行の前2行を記憶)

大きい場合
 最小値の行を-行にする
 最小値の行とその前後2行の内、memory内から削除可能な範囲を削除 
 
 読み込んだ行の前の行がrline内にある場合は-行としてmemoryの最後に追加
 読み込んだ行を*行としてmemoryの最後に追加

 memory内の*行の内、最小値の位置を求める

こんな感じ(あんまりソースのコメントで書いてあることと変わらないけど)

66 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 00:46:55 ]
>>63
char *str; を char str[12345]; とかえれば、特に問題ないと思いますが、どういう最適化がはたらくのでしょうか。
for(i = 0; (c = string[i]); i++) { 
と書いたほうがいいのはなぜでしょうか?

67 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 00:51:02 ]
>>66
あれ?入門スレとここ以外にもマルチしてる?

68 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 00:52:25 ]
>>67
ここにしか投げていませんし、ここしか読んでいません。

69 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 00:55:28 ]
pc11.2ch.net/test/read.cgi/tech/1217073697/674
これと同じだったものでマルチかなと思ったんだけどほかの生徒さんか

70 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 00:59:46 ]
それはいいとして、後者は警告を防ぐため。
条件部に代入文を書くと警告が出るのを防ぐために、()をつけてる。



71 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 01:03:57 ]
>>70
たしかに、gcc ではtrue/false 判定をする代入文を使用すると「丸括弧でくくったほうがいいのでは?」という warning が出ますが、
なぜそんな warning を出すようにしているのか、よくわからないのです。

72 名前:71 mailto:sage [2008/08/07(木) 01:05:04 ]
単に == と = の間違いを警戒しているだけかもしれませんが。

73 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 01:15:18 ]
>>47 >>48 を元に変更させていただきました。
long int left, right1, right2, right3, right4, right5, right6, right7, right8, right9;
FOR_(P, 1) FOR_(C, 0)
FOR_(I, 1) FOR_(S, 0)
{
IF_(P!=I || C!=S);
FOR_(L, 1) FOR_(A, 0) FOR_(N, 1) FOR_(G, 0)
FOR_(E, 0)
{
IF_(L!=N || A!=I || N!=C || G!=E);
IF_((P*10+C) * (((L*10+A)*10+N)*10+G) == (I*10+S) * (((N*10+I)*10+C)*10+E));
FOR_(F, 1)
FOR_(R, 0) FOR_(O, 0) FOR_(M, 0)
{
left = (I*10+S) * (((((F)*10+I)*10+N)*10+E)
+ ( ((((((P)*10+R)*10+O)*10+G)*10+R)*10+A)*10+M ) );
right9 = left%10; left /= 10; right8 = left%10; left /= 10;
right7 = left%10; left /= 10; right6 = left%10; left /= 10;
right5 = left%10; left /= 10; right4 = left%10; left /= 10;
right3 = left%10; left /= 10; right2 = left%10; left /= 10;
right1 = left%10;
IF_( right2==I && right3==F && right4==F && right5==I && right6==C && right8==L );
FOR_(D, 1) FOR_(U, 0) FOR_(T, 0)
{
IF_( right1==D && right7==U && right9==T );
PRINT_(P); PRINT_(C); PRINT_(I); PRINT_(S);
PRINT_(L); PRINT_(A); PRINT_(N); PRINT_(G);
PRINT_(E); PRINT_(F);
PRINT_(R); PRINT_(O); PRINT_(M);
PRINT_(D); PRINT_(U); PRINT_(T);
puts(" @@@");
} } } }

74 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 01:56:25 ]
>>57
やはり、麻呂のクソースの出番でおじゃるか・・・

75 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 02:08:31 ]
>>57
別の文字なのに同じ数字が入ってもええのん?

76 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 02:09:23 ]
>>75
>>47 によればおk

77 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 02:10:01 ]
>>47
> 異なる文字で同じ数字が割り当てられても良いが
でしたね、すまそ。

78 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 03:54:36 ]
>>73
LANG!=NICEだけど
G==Eでも構わないはずでは?

79 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 04:34:13 ]
麻呂のクソースは数日掛かるでおじゃる。あっ、いや、ちょっと書店へ・・・
覆面算のソースを載せている本を探しに、でなぁ・・・

80 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 04:37:20 ]
>>47
#include<stdio.h>
#define FINE (F*1000+I*100+N*10+E)
#define DIFFICULT (D*100000000+I*10010000+F*1100000+C*1000+U*100+L*10+T)
#define PC (P*10+C)
#define LANG (L*1000+A*100+N*10+G)
#define NICE (N*1000+I*100+C*10+E)
int main(void){
int program, is, A, C, D, E, F, G, I, L, M, N, O, P, R, S, T, U;
for(is=10;I=is/10,S=is%10,is<=99;is++){
for(D=1;D<=9;D++){ // DIFFICULT
for(F=1;F<=9;F++){ // FINE
for(C=0;C<=9;C++){
for(U=0;U<=9;U++){
for(L=1;L<=9;L++){ // LANG
for(T=0;T<=9;T++){
if(DIFFICULT%is) continue;
for(N=1;N<=9;N++){ // NICE
for(E=0;E<=9;E++){
program=(DIFFICULT/is)-FINE;
if(program<1000000 || program>9999999) continue;
P= (program/1000000)%10;
R= (program/100000)%10;
O= (program/10000)%10;
G= (program/1000)%10;
if((program/100)%10!=R) continue;
A= (program/10)%10;
M= (program/1)%10;
if(PC*LANG==is*NICE && LANG!=NICE && PC!=is) printf("(%d+%d)*%d=%d %d*%d=%d*%d\n", FINE, program, is, DIFFICULT, PC, LANG, is, NICE);
} } } } } } } } }
return 0;
}



81 名前:73 mailto:sage [2008/08/07(木) 04:53:45 ]
>>78
G=E と、なる場合は、G=E=0 またはG=E=1 というクイズ。
ここで>>73に追加
#define IF_(expr) if(!(expr)) /*break*/continue

82 名前:デフォルトの名無しさん [2008/08/07(木) 13:51:10 ]
[1] 授業単元: 宿題じゃないんだ、すまない。
[2] 問題文(含コード&リンク):
 次の関数作っておねがいぷりーず。
 1.辺の長さがlhの正六角形からはみ出ない最大の正方形の辺の長さlsを求める関数。
 2.辺の長さがlsの正方形がはみ出さない最小の正六角形の辺の長さlhを求める関数。
 lhとlsはどちらもfloat型。小数点以下6桁までは精度保って。
[3] 環境
 [3.1] OS: WindowsXPだが?
 [3.2] VC8.0でおk
 [3.3] 言語: Cでいい
[4] 期限: なるたけ早く
[5] その他の制限:

83 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 14:17:40 ]
数学方面のスレでそれぞれのいっぺんを求める式を得たほうが楽なような

84 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 15:20:08 ]
ほっほっほ、最初から真似するつもりはないでおじゃるが、今回は
真似どころか麻呂オリジナルクソースになりそうでおじゃるなぁ〜
後出しジャンケン、勝たぬなら、負けて見せようホトトギス

85 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 15:21:22 ]
正六角形の中に円を描いて正方形を描くのかな
それなら簡単な気がする

86 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 16:15:17 ]
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク):
 パーティクルを採用した、エフェクトプログラムデモを作成する。
 ・光の粒子が回転移動。
 ・爆発エフェクト(破片の物理移動) など。
 例)花火
   1.情報の洗い出し → 構造体
   2.初期化 → 爆発時に初期データセット
   3.実処理 → 移動、加減速、色調
   4.後処理 → 情報の削除(メモリの解放)
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VC6.0
 [3.3] 言語: Cのみ
[4] 期限: 8月18日
[5] その他の制限:特になし

 エフェクトは自由にとのことでしたが、炎や、例にある花火で作っていただけるとありがたいです。
 期限がまだあるため、早急な回答は求めません。
 よろしくお願いします。

87 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 16:30:04 ]
>>86
3D?
DirectX 使ってもいいのなら探せばサンプルあるだろ

88 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 16:42:00 ]
>>85
正方形の角が全部、六角形の変にくっつく方が、若干デカくね?

89 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 16:50:28 ]
>>82
一定の係数をかけるだけになるだろうからその係数をさがせば
float func(float lh) { return lh * SECRET_NUMBER; }


90 名前:デフォルトの名無しさん [2008/08/07(木) 17:00:36 ]
あるクラスの試験の点数を整数で繰り返し入力し、
点数の合計と平均点を出力するプログラムを作成しなさい。
点数は、0点以上100点以下とし、
この範囲外の点(0点未満または100点より大きい点)が入力されたときは、
入力を終了し、点数の合計と平均点を出力する
(最後に入力された範囲外の点は集計の対象としない)。
また、平均は小数点以下2桁まで出力する。
繰り返しの命令は、何を使ってもよい。



91 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 17:03:14 ]
>>90
>>1くらい読め

92 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 17:07:07 ]
> 気に入らない質問やその他や発言はスルーの方向で。
オマエモナー、って読める?読めない?聖徳(ry

93 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 17:09:22 ]
>>92
スルーできてないw

94 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 17:18:51 ]
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):
4*4行列の列ごとの各要素の絶対値の総和の最大値
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C
[4] 期限: 8月8日12:00まで

課題の途中で上記の関数が作れないので止まりました・・・行列は2次元の配列で定義しているので
配列を引数にできるように関数を作ってください。。。

95 名前:86 mailto:sage [2008/08/07(木) 17:19:50 ]
>>87
説明不足すいません。DirectXは使用不可です。
3Dは使わず、"*"や、"+"などの記号で表現お願いします。
訂正申し訳ありません。

96 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 17:25:19 ]
>>95
ベースとなるサンプルはないの?

97 名前:86 mailto:sage [2008/08/07(木) 17:56:51 ]
>>96
炎のエフェクトの実行結果を見せてもらっただけなので、サンプルは貰っていません。
炎は、各方向に記号が常に飛び散っているエフェクトでした。

98 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 18:16:35 ]
>>97
もっと具体的にかけないものかね。
コンソールアプリなのかどうかすら読み取れない

99 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 18:50:48 ]
>>90 [C/C++ : C]
#include <stdio.h>

int main(void){
  int count = 0;
  int total = 0;
  int data = 0;

  do {
    printf("INPUT [%2d] :", count+1);
    if(fscanf(stdin, "%d", &data) < 1) break;
    if(data < 0 || data > 100) break;
    total += data;
    count++;
  } while(1);

  if(count)
    printf("COUNT=%d, AVERAGE=%.2f\n", count, (float)total/count);
}

100 名前:85 mailto:sage [2008/08/07(木) 19:07:38 ]
>>82
家に着いたから書いてみた。あってるのかは知らない
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7593.txt




101 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 19:32:51 ]
>>82
>>82
#include<stdio.h>
#include<math.h>
int main(void){
float lh, ls;
double magic_number;

magic_number=3-sqrt(3);

printf("\nInput lh : ");
scanf("%f", &lh);
ls=lh*magic_number;
printf("ls=%f\n", ls);

printf("\nInput ls : ");
scanf("%f", &ls);
lh=ls/magic_number;
printf("lh=%f\n", lh);

return 0;
}

102 名前:82 mailto:sage [2008/08/07(木) 20:55:06 ]
>>100
とても素直なプログラムだな。思考の仕方がよく見える。

>>101
マジックナンバーがとってもスマートだな。こりゃいい。

どちらさんもありがとう、ありがとう。

103 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 23:12:00 ]
>>102
>>100>>101で数値が違うがどうすんだ?

104 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 23:36:58 ]
>>98
コンソールアプリです。
あまりプログラムが分からず、度々すんません。

105 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 23:58:29 ]
>>103
>>101 (>>88) のほうが正解だろうね、>>100 (>>85) よりも大きな正方形。

106 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 01:12:10 ]
>>94
二元配列を引数にとるのは面倒だからそれを入れた構造体を作るのがいいと思うよ
>>86
難解だね、暇だからちょっとやってみるけど期待しないでね

107 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 01:48:37 ]
>>94
double f(double a[4][4])
{
double max = 0;
int i, j;

for(i=0; i<4; i++) {
double temp = 0;
for(j=0; j<4; j++) temp += fabs(a[j][i]);
if(temp > max) max = temp;
}

return max;
}

108 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 07:11:55 ]
>>107 double f(double a[4][4]) じゃなくて、ポインタ。
double f(double (*a)[4])
>>37 *(memory[50]) って、*memory[50] と同じ。

109 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 09:00:12 ]
107の書き方でも別に問題ないと思うけど?
初心者にはこっちの方がわかりやすいだろうし。

110 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 09:00:47 ]
いっけねぇ
ポインタじゃなくてポンタかと思ってた



111 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 18:47:54 ]
>>106
WindowsXPだとエスケープシーケンスが使えないと仮定したほうがよさそうです

// 最下位ビットから順に RGB で光(≠色)の三原色の合成です RG=黄色 GB=水色 RB=紫 RGB=白色
void set_color(int color){
if(color>=0 && color<=7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
}

// (x,y)=(0,0) が左上になります (※スクロールバーがある場合は一番(左)上までスクロールバーが移動します)
void set_cursor_pos(int x, int y){
COORD pos;
pos.X=x;pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}

112 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 00:04:45 ]
[1] 検索
[2] 配列に格納された文字列を前方一致検索して表示する
[3] 環境
 [3.1] Windows xp
 [3.2] borland
 [3.3] C言語
[4] 期限:2008年08月10日


113 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 00:58:34 ]
っつーかね、最近思うんよ、書店で参考書を探せば答えられる課題なんて
いくらでもあると。

114 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 01:52:21 ]
でもこのスレってそういうもんじゃね?

宿題で参考書買って解けないような問題出すやつある意味すげえよ

115 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 01:53:06 ]
まぁ、学校ごとに固有の問題を出してはいるが、それでも解き方や
ヒントは普通にあるわけで・・・

116 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 02:24:09 ]
>>114
それが結構あったりするのです‥‥‥。いや、それが面白かったりして。

117 名前:デフォルトの名無しさん [2008/08/09(土) 07:02:53 ]
void型関数、指定された文字を指定された個数だけ表示させる関数本体を作成する問題
 

#include <stdio.h>

void putnchars(char x,int n);

int main(void)
{
putnchars('A',1);
putnchars('B',2);
putnchars('C',3);
putnchars('D',4);

return 0;
}
//関数本体を作成せよ

実行結果が
A
BB
CCC
DDDD

となるようにしなければいけないのですが、どうしてもできません。教えてください



118 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 07:35:16 ]
>>117
#include <stdio.h>
void putnchars(char x,int n) {
for(;n>0;n--) putchar(x);
puts(""); }
int main(void) {
putnchars('A',1); putnchars('B',2);
putnchars('C',3); putnchars('D',4);
return 0; }


119 名前:デフォルトの名無しさん [2008/08/09(土) 07:52:24 ]
ありがとうございます。助かりました。

120 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 08:41:23 ]
コードに該当する部分に全角はいかんよ、文字列ならそれを扱うルールはあるが
コードに該当する部分は原則半角じゃ。



121 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 11:22:23 ]
>>120
そうだね
全角文字だとエラーでコンパイルできないもんね


122 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 20:18:45 ]
ラベルや関数名は全角文字OKだろ。

123 名前:デフォルトの名無しさん [2008/08/10(日) 20:39:38 ]
122 名前:デフォルトの名無しさん 投稿日:2008/08/10(日) 20:18:45
ラベルや関数名は全角文字OKだろ。


124 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 20:40:19 ]
>>122>>117が読めない子

125 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 20:46:34 ]
#include <stdio.h>
int 関数(void) {
printf("あああ\n");
return 0;
}
int main(void) {
関数();
return 0;
}

エラー出ました orz

126 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 20:55:11 ]
>>125
VC++2008でビルドしたらコンパイル出来た
まあ使わないけどね


127 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 21:09:55 ]
コンパイラが都合よく見繕ってくれるってのも、プログラマの認識レベルを下げる
原因になりそうな気がするのだが、まぁ車も安全装置が開発されたりと
それでもやらかす奴はやらかすわけで・・・

128 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 21:24:25 ]
大規模なソフトウェアを開発をしたいと思ったら
自動化できることはできる限り自動化しないと
人間の把握できる範囲を超えてしまう

もちろん基礎は大事

129 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 21:40:21 ]
[1]ゲームアルゴリズム
[2]テトリス制作でブロックを落とすところ(回転はしなくてよい)
[3]Windows Vista
Microsoft Visual Studio 2005
  C++
[4]8/20まで
[5]現在、基本情報技術者午後レベルを習っている状況

問題点
・凸型ブロックが落ちると途中で四角になってしまう
・左右移動するとブロックが分解された残像みたいなのが残る
・最下位の床につくと止まらずに突き抜けてしまう
コードをテキストでうpしました。
www2.uploda.org/uporg1600554.txt.html

130 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 23:29:49 ]
>>129
152-159行目をチェックしな

同じような部分が何度もでているところは関数に分けた方がいい



131 名前:130 mailto:sage [2008/08/10(日) 23:35:29 ]
>・凸型ブロックが落ちると途中で四角になってしまう
これしか見てなかった
全面的に作り直してねって事だったんだなw

132 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 03:21:29 ]
>>129
みられない

133 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 08:39:25 ]
>>132
再うp
www.uploda.org/uporg1601515.txt

134 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 10:10:48 ]
プログラム全体の見通しがあまりにも悪いから、最初から書き直した方が良い。
機能単位に分けてちゃんと処理追えるようにさ。
悪いけど、こんなもんどこにバグがあるかなんて探したくもない。

135 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 10:12:48 ]
>>134
すいません。出直してきます

136 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 10:48:09 ]
>>135
方針として
1.固定化されたブロックと表示用のバッファは別にする
2.ブロックの移動に関する処理はブロックの種類によらず共通化する

137 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 11:10:45 ]
>>136
丁寧なご回答ありがとうございました。がんばります

138 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 12:07:34 ]
>>86
やってみた
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7603.txt

139 名前:901 mailto:sage [2008/08/11(月) 14:14:57 ]
【質問テンプレ】
[2] 問題文:Bingoゲーム
・使用する数字は1〜75まで、同じ数字は、登場しない
・スペースキー押下にて、スロットのように表示する。
ヒント:for文を使用して行う。
表示する際は、一旦、画面消去してから、表示することになる。
・スペースキー押下にて、停止させる。
ヒント:kbhit(),_getch() 関数を使用する。
・登場した番号リストを表示する。
・終了は、'E' or 'e'にて、終了するか、全ての数字が登場した場合。
[3] 環境
 [3.1] OS:Windows
 [3.2] VS
 [3.3] C
[4] 期限:できるなら早めがいいです
[5] その他の制限:俺に聞けスレから誘導されましたあちらへの書き込みは以下です

901 :デフォルトの名無しさん:2008/08/11(月) 13:17:59
こんにちは質問です
決められた範囲(こちらで指定する)の数字をスロットのように表示させるにはどうすればいいでしょうか?
画面はコマンドプロンプトでjpgなどは無しでおねがいします
905 :901:2008/08/11(月) 13:53:55
また、スペースキーを押した場合そのスロットが止められるように とのことなんですが・・・
ループ処理で、printfで表示したものを消す→表示→消す→表示
みたいなやり方とかあるんでしょうか?
また後出しになって申し訳ありませんが
kbhit(),_getch() 関数を使用する
そうです。関係なかったらすみません


140 名前:sage [2008/08/11(月) 15:26:46 ]
2分探査木と平衡木のどちらかをc言語でつくれ(データの追加、削除をする機能を含む)

↑が全くできません。助けて下さい

よろしくお願いします




141 名前:sage [2008/08/11(月) 15:29:38 ]
2分探査木と平衡木のどちらかをc言語でつくれ(データの追加、削除をする機能を含む)

↑が全くできません。助けて下さい

よろしくお願いします


142 名前:デフォルトの名無しさん [2008/08/11(月) 15:42:37 ]
[1] 数理物理
[2] 1、∫(sinx)^πdx (∫の上が1、下が0)
    の計算をガウス・ルジャンドル積分法とモンテカルロ法で計算し、比較せよ。

  2、x,y,z>0 x+y+z<1 で囲まれる三角錐に
(x-1/3)^2+(y-1/3)^2+(z-1/3)^2>(1/2√3)^2
の球で削った部分の体積を求めよ。

[3] 環境
 [3.1] Linux
 [3.2] ?
 [3.3] C
[4] 明後日までにお願いします。

どうしてもわからないのでお願いします。


143 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 15:57:38 ]
>>142
C/C++の宿題を片付けます 114代目
pc11.2ch.net/test/read.cgi/tech/1216746971/619
pc11.2ch.net/test/read.cgi/tech/1216746971/723


144 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 16:37:38 ]
[1] c入門
[2] 単方向,非循環の線形リストをC言語でつくれ
(条件ポインタ,構造体を使用する・線形リストの生成・データ削除の機能)
[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] C
[4] 今日


145 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 16:50:52 ]
>>144
C/C++の宿題を片付けます 114代目
pc11.2ch.net/test/read.cgi/tech/1216746971/606

146 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 17:15:42 ]
>>145
727 名前:デフォルトの名無しさん[sage] 投稿日:2008/07/31(木) 16:47:18
>>606
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7562.txt


147 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 17:20:05 ]
>>139
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define NUMBER_MAX 75
void swap(int *a, int *b){int c;c=*a; *a=*b; *b=c;}
void disp_numbers(int number[], int number_num){
int i;
system("cls");
for(i=0;i<number_num;i++) printf(" %2d ", number[i]);
printf("\n");
}
int main(void){
int number[NUMBER_MAX], i, x, keycode, is_exit=0;
for(i=0;i<NUMBER_MAX;i++) number[i]=i+1;
for(i=0;i<NUMBER_MAX;i++){
for(disp_numbers(number, i);;){
x=rand()%(NUMBER_MAX-i);
printf(" %2d \r", number[i+x]);
if(_kbhit() && (keycode=_getch())){
if(keycode==' ' || keycode=='E' || keycode=='e'){
swap(&number[i], &number[i+x]);
is_exit=(keycode=='E' || keycode=='e');
break;
}
}
}
if(is_exit) break;
}
disp_numbers(number, i);
return 0;
}

148 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 17:52:30 ]
[1] c入門
[2] 2分探査木と平衡木のどちらかをc言語でつくれ
(データの追加、削除をする機能を含む)
[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] C
[4] 今日

テンプ無視してすいません
よろしく願いします


149 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 18:04:26 ]
>>148
C/C++の宿題を片付けます 114代目
pc11.2ch.net/test/read.cgi/tech/1216746971/175

www.psg.cs.titech.ac.jp/pro1/10.pdf

150 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 19:21:14 ]
>>144
仕様が指定されてない故、クソースでいくでおじゃっ、少し待ってたもう



151 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 20:03:21 ]
>>144
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7606.c
番号を追加するだけでおじゃる

152 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 21:16:58 ]
>>151
番号を追加するとはどういうことでおじゃるか
無能なまろに教えてくだしゃれ

153 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 22:12:00 ]
ハンゲーム − チョコットランドと言うゲームで
NPC_2047から始まるクエストのプログラムで教えて頂きたいのです
クエストを受ける→クリアを素材、回数制限をなくしたくて
いろいろ試しているのですが
クエストが止まる、うけれなくなるの繰り返しで進めません
どうかご教授おねがいします
プログラムを書きたいのですが長すぎで省略すみません

154 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 22:16:37 ]
>>152
実行して、追加、一覧表示で調べてみれば分かる

155 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 22:32:50 ]
>>153
ケーブル抜いて首つれ

156 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 01:44:24 ]
>>144
>>151は先頭を削除したときの対処をしていなかったでおじゃる。訂正。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7607.c


157 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 08:47:32 ]
自演で宿題w

158 名前:デフォルトの名無しさん [2008/08/12(火) 12:27:45 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
A B C D E Fの6つのアルファベットから3つ選んだときの順列を列挙するプログラムを作れ

6P3=120通りである。l

[3] 環境
 [3.1] OS:Xp
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: ありません

159 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 12:35:15 ]
>>158

puts("ABC");
puts("ACB");
puts("BAC");
puts("BCA");



puts("FED");


160 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 13:20:25 ]
>>158
#include <stdio.h>

int main()
{
int i,j,k;
int count;
const char *table = "ABCDEF";

count = 0;
for(i = 0; i < 6; ++i){
for(j = 0; j < 6; ++j){
if(i == j)continue;
for(k = 0; k < 6; ++k){
if(k == i || k == j)continue;
if((count % 10) == 0)
printf("\n");
printf("%c%c%c ", table[i], table[j], table[k]);
count++;
}
}
}
printf("\n%d個", count);
return 0;
}



161 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 13:46:02 ]
テーブル使わないver
#include<stdio.h>
int main()
{
int i,count=0;
for(i=0 ;i<6*6*6;i++)
{
int a1,a2,a3;
a1= i%6;
a2= (i/6)%6;
a3= i/(6*6);
if( a1 == a2||a2==a3||a3==a1)
continue;
printf("%c%c%c\n",a3+'a',a2+'a',a1+'a');
count++;
}
printf("%d",count);
return 0;
}


162 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 13:50:48 ]
再帰で書こうとしたが無理だったorz

163 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 13:54:39 ]
157 名前:デフォルトの名無しさん 投稿日:2008/08/12(火) 08:47:32
自演で宿題w

164 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 13:55:32 ]
>>162
かけなくもないが、これは再帰で書く意味なくないか?

165 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 13:57:38 ]
どう考えても再帰のほうが楽
#include<stdio.h>
void go(){
    int i=0,flag=0,j_[3];
    char s[4];
    j_[0]=-1;s[3]=0;
    do for(flag &= ~(1<<j_[i]);++j_[i]<6;)
        if(!(flag&1<<j_[i])){
            s[i]=j_[i]+'A';
            if(i+1==3)puts(s);
            else{
                flag |= 1<<j_[i++];
                j_[i]=-1;
            }
        }
    while(i--);
}
int main(void){
    go();
    return 0;
}


166 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 14:00:10 ]
>>165
天才

167 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 14:05:55 ]
再・・・帰?

168 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 14:13:04 ]
うわ、再帰と非再帰間違った。
こっちを適当に非再帰に書き直したやつを張っちまった。
#include<stdio.h>

void go(char s[4],int flag,int i){
    int j;
    if(i==3){puts(s);return;}
    for(j=0;j<6;++j)
        if(!(flag&1<<j)){
            s[i]=j+'A';
            go(s,flag|1<<j,i+1);
        }
}
int main(void){
    char s[4];
    go(s,0,0);
    return 0;
}


169 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 14:20:38 ]
なるほど・・・・使った文字をビット立てて記録しておくわけか
参考になったtnx

170 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 14:22:51 ]
>>168
s[3]にごみが入ってて変になったよ




171 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 14:32:58 ]
ここ思ったより人いるね、やっぱ学生が多いのか?

172 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 14:34:47 ]
>>170
非再帰に直してる途中で発見したバグだから、
非再帰のほうでしかデバグしてなかった。
thx

173 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 14:50:07 ]
>>165 が優秀過ぎ ><;

174 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 15:54:25 ]
>>168
int i=0;
int j=1;
char s[4];

この条件で

s[i]=j+'A'

上記(s[0])に入るのって何なんでしょうか。メモリ内で'A'という文字が格納されたアドレスの、1バイト後のアドレス、すなわち'B'をs[0]に代入?

また、以下の条件を追加して、
int flag=0;

>>168にあるように、
if(!(flag&1<<j){
...}

とあったら、これは
・1をjbitずらす(=2)
・flagと2の論理積(=0)
であると思うのですが、その後の ! が解釈出来ません。
もし0じゃなければ、と解釈しようとしても、何が0じゃなければ?という疑問です。


175 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 15:57:17 ]
'A' にアドレス関係ないぞ、定数だ。

176 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 16:45:08 ]
>>174
・flagと2の論理積(=0)
↑これが0かどうか

177 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 18:04:43 ]
>>175
配列に代入する場合、s[i]=1+'A' という表記は、その右辺は、'A'の格納されたアドレスに+1バイトのアドレスに格納された文字と同等である、ということになるのかと思いました。
いずれにしろchar型の配列に格納できるのは1バイトまでですから、上記のように考えてBという文字が格納されたんだと認識しないと意味が分からなかったので。
私の文章を見ると上記と言ってることが違いますね。

>>176
& とはビット毎の論理積で、だとすると
0000 // flag
0010 // 10進数の2の2進表記
0000 // 各ビットの論理積。10進表記すると0

調べたところ、論理積とはある数の第一ビット(右から二番目)が立っているか否かを調べるもの、と書いてありました。
それに従えば、flagは第一ビットが立っていないと言えないでしょうか。

178 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 18:19:37 ]
>>177
元の話、全然見てないが、、、
環境によるけど通常、'A' は65だ。
s[i]=1+'A' なら、 s[i] = 1 + 65 つまり 66 を代入。
(文字コード66はすなわち 'B'だ)

for(j=0;j<6;++j)
if(!(flag&1<<j)){
この部分は自分で展開してみればいい
j が 0のとき
flag & 1 << 0 → flag & 00000001
1のとき
flag & 1 << 1 → flag & 00000010
以下
flag & 1 << 2 → flag & 00000100
flag & 1 << 3 → flag & 00001000

& の結果、flagの該当位置が1じゃなかったら結果が0になるだろ
0は偽だから、!で反転して真になる。
つまり左から j 番目のビットが0の場合にif文以下が実行される。

179 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 18:36:42 ]
>>178
分かりました。レス下さった方々、ありがとうございました。

180 名前:デフォルトの名無しさん [2008/08/13(水) 16:55:23 ]
宿題カモーーーンっ!リストカモーーンッ!麻呂のクソースで対処するでおじゃっ



181 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 00:57:13 ]
構わん、うpロダにソースを上げろ(麻呂の碇ゲンジバージョンのAA略)

182 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 04:51:55 ]
[1] 授業単元:リスト
[2] 問題文(含コード&リンク):
単方向リストのソート関数を完成させよ
ソート順は昇順、降順のいずれでもよい
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7614.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 特になし
[5] その他の制限: 標準ライブラリの範囲内で

183 名前:182 mailto:sage [2008/08/14(木) 04:53:05 ]
>>182 は宿題ではありません
気が向いたらやってみてください

184 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 06:58:29 ]
麻呂はリストのソートは出来なかったでおじゃる(過去ログ参照)
出来なかったけど、やればなんとかなる、けど マンドクセッ でおじゃる。

185 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 17:29:32 ]
>>182
list_t *list_sort(list_t *list, int (*cmp_func) (const data_t, const data_t))
{
    list_t *i, *j, *next, *item, *tmp;
    list_t head;
    head.next = list;
    for (i = &head; i->next; i = next) {
        next = i->next;
        for (j = &head; j->next != i->next; j = j->next) {
            if (cmp_func(i->next->data, j->next->data) < 0) {
                item = i->next;
                i->next = i->next->next;
                tmp = j->next;
                j->next = item;
                item->next = tmp;
                break;
            }
        }
    }
    return head.next;
}

186 名前:デフォルトの名無しさん [2008/08/14(木) 17:45:28 ]
■■みんなでサイトつくろうぜwwwwwwwwwwwwwwww■■
「お前ら一緒にサイト作ろうぜwwwwwwwwww」
「2ちゃん越えるサイト作ろうぜwwww」
「仕事無いんだ・・・・・・」
「やろうぜ!」
「みんなでサイトつくろうぜwwwwwwwwww」
gacco.o0o0.jp/
yutori.2ch.net/test/read.cgi/news4vip/1218673130/
ex14.vip2ch.com/test/read.cgi/part4vip/1218612197/
興味沸いたらきてください!
======================!! 人材募集中 !!======================
■プログラムを組んでくれる人
 *サーバー側
  言語はRubyかPerlの予定ですが、Perlが有力候補。
  ・チャット
   定期的にクライアントから着信があり、それに対して更新されたチャットのメッセージを返信する程度の能力。じゃなくて機能。
   通信するときのフォーマットは未定。
  ・ログイン・アカウント管理
   ログイン認証、各アカウントの点数などの管理。データベースは未定。
  ・お絵描き
   未定。とりあえず鯖に負担がかからない程度にたまに画像を送信してあげるって感じで
 *クライアント側
  はっきり言って俺もわからね。Ajaxだとかflashだとかjavaだとか。
■機能提案(正しくは人材ではなく、意見?)
 「こんな機能があったら良い!」「こうするともっと楽しくなる!」などの意見募集中。
 挨拶とか気にせずスレにどんどん書き込んでくれればおk
■デザイン
 サイトのデザインを考えてくれる人、作ってくれる人募集中。
 できればphotoshop illustrator使える人(プロジェクト共有しやすいので)


187 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 18:03:20 ]
>>186
wwwwwwwww 草が多過ぎてぁゃιぃから却下w

188 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 19:18:21 ]
>>86 でミルククラウンに挑戦するものはいないか!

期日までにできるかどうか分からないし
二次元として計算する予定だからクラウンになるかどうかあやしいけどw

189 名前:デフォルトの名無しさん [2008/08/16(土) 09:09:52 ]
宿題こないね

190 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 09:14:54 ]
休みだしコミケだしな



191 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 10:58:24 ]
コミケは関係ないだろ

192 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 12:36:31 ]
逆走すんなよ

193 名前:デフォルトの名無しさん [2008/08/16(土) 13:22:02 ]
英語のwrong wayには、一通を逆走するという意味と、道を誤るの二つの意味がある

194 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 15:41:59 ]
後者の意味でどっちも説明できるな。

195 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 21:17:46 ]
This is a pen. とかの英文章をファイルで入力して
単語ごとにバッファに詰めたいんですが上手くいきません。
単語の長さも持たせたいので構造体を使いたいです。
知恵を貸してください、お願いします。

196 名前:デフォルトの名無しさん [2008/08/16(土) 21:22:40 ]
stringつかえよ

197 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 21:22:45 ]
上手くいかないソースを出せば知恵を貸してくれる人もいるだろうな

198 名前:デフォルトの名無しさん [2008/08/16(土) 21:28:33 ]
strtokとstd::stringでOKだよ

199 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 22:07:07 ]
while ((c = fgetc(in)) != EOF) {
if ( (c != ' ') || (c != '\t') || (c != '\n') ) {
strcat(wp->string, c);
wp->length = strlen(wp->string);
} else {
strcat(wp->string, '\0');
wp++;
}
}
こんな感じで一個一個結合しようとしたんですが、
strcatは文字列同士じゃないといけないっぽくてでできなくて。
strtok便利そうですね。

200 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 22:12:02 ]
>>199
よくわかんないけど、
wp->length = strlen(wp->string);
wp->string[wp->length] = c;
++(wp->length);
wp->string[wp->length] = '¥0';
こんな感じじゃ駄目なの?



201 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 22:30:49 ]
>>200
文字化けとセグメントエラーでした。
strtok使ったほうが簡単そうなんでそっちで考えてみます

202 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 01:28:39 ]
>>195
C?C++?
C++なら while(ifs >> str) strlist.push_back(str);
だけで済みそうな気がする

203 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 02:28:36 ]
>>201
おそらくはポインタの指す先が確保されていない

204 名前:デフォルトの名無しさん [2008/08/17(日) 09:49:09 ]
すいません関数がわかりません。
[]の中に答えが入ります。

3つの整数を入力して、その和を表示する。
3つの整数の和を求めるkasan()関数を使う。

[]
void main(void)
{
int a,b,c,wa;
scanf("%d%d%d",&a,&b,&c);
printf("%d+%d+%d=%d\n",[]);
}
[]kasan([])
{
int kotae;
kotae=x+y+z;
[]
}

205 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 09:50:49 ]
printf("%d+%d+%d=%d", a, b, c, kasan(a, b, c);
int kasan(int x, int y, int z)
return kotae;

206 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 09:52:10 ]
あ、忘れた

#include <stdio.h>

それと

printf("%d+%d+%d=%d", a, b, c, kasan(a, b, c)); ←ここカッコ2つ

207 名前:デフォルトの名無しさん [2008/08/17(日) 09:53:43 ]
>>204
最初のところにプロトタイブ宣言が抜けてました。すいません


208 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 09:56:45 ]
あ、そうだね。

int kasan(int x, int y, int z);

が必要か。

209 名前:デフォルトの名無しさん [2008/08/17(日) 10:01:48 ]
さっきのやつです。

点数を入力して、60点以上なら"合格"、60点未満なら"不合格"、と表示する。
点数によって"合格"、か"不合格"かを表示するhantei()関数を使う。

[]/*プロトタイプ宣言*/
void main(void)
{
int ten;
scanf("%d",&ten);
[]
}
[]hantei([])
{
if(data>=60)
printf("合格");
else
printf("不合格");
}

210 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 10:16:59 ]
void hantei'int data);
hantei(ten);
void hantei'int data)



211 名前:デフォルトの名無しさん [2008/08/17(日) 10:20:59 ]
これで最後です。

2つの実数を入力して、その積と商を表示する。
2つの実数の積と商を求めるkeisan()関数を使う。

[]/*プロトタイプ宣言*/
void main(void)
{
float s,t,seki,sho;
scanf("%f%f",&s,&t);
[]
printf("%.1f*%.1f=%.1f\n",[]);
printf("%.1f/%.1f=%.1f\n",[]);
}
[]keisan([])
{
[]=su1*su2;
[]=su1/su2;
}

212 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 10:28:37 ]
void keisan(float su1 float su2, float *seki, float *sho);
keisan(s, t, &seki, &sho);
printf("%.1f*%.1f=%.1f\n", seki);
printf("%.1f/%.1f=%.1f\n", sho);
void keisan(float su1, float su2, float *seki, float *sho)
*seki=su1*su2;
*sho=su1/su2;


213 名前:デフォルトの名無しさん [2008/08/18(月) 23:04:51 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 多倍長演算(10進数)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++

除算のやり方がよくわかりません。


214 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 17:37:02 ]
>>213
桁の数、期限が分かりません

215 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 20:01:05 ]
>>213
やり方は筆算と引き算
符号に注意

216 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 20:42:09 ]
すいませんはじめてなのですが。
長いソースコードでもここで質問してよろしいですか?
上の方にあるリンクは全然開けなくて。


217 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 21:04:41 ]
単なる質問ならスレ違い
宿題を丸投げするならできればうpろだを使ってください

218 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 21:18:27 ]
丸投げではないんですけどすでにソースコードを打ち込んだ後なのですが
メモリリークを起こしていて理由がよくわからないので教えていただきたい
のですが


219 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 21:22:00 ]
>>218
ロダにうpしてみてよ
複数ファイルならzipとかで

220 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 21:31:43 ]
遅れてすいませんUpろだに投稿しました。
自分はリソースの番号管理を作っていて、リソースを読み込むときに番号
を使用してるのをカウントして動的に管理しようとしているのですが。
メモリリークを起こしてしまって自分では対処できませんよろしくお願いします。




221 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 21:32:35 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7624.txt

222 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 21:34:38 ]
はいこのファイルです。どうかよろしくお願いします

223 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 21:35:51 ]
エラー E2209 resource1.cpp 275: インクルードファイル 'gslib.h' をオープンできない
エラー E2209 resource1.cpp 308: インクルードファイル 'TestResourceList.h' をオープンできない

おいファイルが足りんぞ
これじゃCodeGuardを掛けられない

224 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 21:41:50 ]
>>220
boost の shared_ptr についての質問で

class A
class B : public A
boost::shared_ptr< A > ptr=new B;

このとき B のデストラクタは呼ばれますかってこと?

225 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 21:47:13 ]
すいません修正版をうpろだに上げました。
いいえ、理由はよくわからないのですが。ResourceList単体ではリークは
起こさないのですが。ResourceManagerに実装しようとするとリークが起こってしまうんです



226 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 22:02:53 ]
これって、そもそも、何に基づいてリークが起きていると判断してるんだ?

227 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 22:10:59 ]
相変わらず "gslib.h" が無いと言われるからこの行だけコメントアウト
してCodeGuard掛けてみたが、リークはないみたいだぞ

228 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 22:11:22 ]
>> 226
自分が通っている学校の先生の作ったCxxTestのプログラムでのチェック
なのですが

229 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 22:17:22 ]
そのCxxTestやらがおかしいんじゃないの?

230 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 22:36:36 ]
なんかCodeGuard至上主義の人がいるようだが、それ使うと何がどこまで検出されるの?



231 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 22:47:54 ]
>>229
そうですか、自分でもメモリリークをCrtDbgでやって見ましたがリークが
検出できないのでCxxTestのプログラムの所為かもしれないです。
教えていただいてありがとうございました。

232 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 22:50:42 ]
>>230
メモリリークはほぼ100%、それから非初期化領域も
かなりの確率で発見できる。これだけのためにC++Builderを買ったぐらい。

ただC++以前に開発された部分がかなり残っているらしく、継承した
クラスを参照で渡すとそれも検出しやがる。例えばstd::ostreamに
std::fstreamを渡すとそれはひどい事に。まあ意図して検出しているの
かもしれんけど。

233 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 22:52:52 ]
おっと誤解のないように

std::ostreamにstd::ofstreamな。わかると思うけど
こんなの検出する必要ねーしオプションで制御できるようにしとけ

234 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 15:02:30 ]
<windows.h>をつかわず
ビットマップを読み込んで、色を文字で表したテキストファイルを出力する
◆仕様
・ビットマップは24bit限定
・テキスト出力フォーマット
0 1 2 3 ...
1 xx xx xx
2 xx xx xx
3 xx xx xx
.
.
.
・対象ビットマップ
 赤、青、緑、白、黒

◆コマンドライン引数
1.入力ビットマップファイル名
2.出力テキストファイル名

Cでおねがいできますか?

235 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 15:13:21 ]
まだビットマップ読み込む課題出す駄目教師いるんだな

236 名前: ◆gnmPGtYhqU mailto:sage [2008/08/20(水) 15:51:10 ]
[1]C言語応用
[2] ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7628.txt
[3]OS:Windows 言語:C
[4]2008/08/26 23:59まで
[5]特に制限はありません
  よろしくお願いします

237 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 15:53:34 ]
>>234
そもそも、ここで言う「ビットマップ」はファイルから読み込むらしいが、
そのフォーマットはどうなってるんだ?

238 名前:234 mailto:sage [2008/08/20(水) 15:56:08 ]
ペイントでbmpファイルは自作です

239 名前:234 mailto:sage [2008/08/20(水) 16:28:31 ]
すみません見当違いなレスしてしまいました
DIB形式です

240 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 17:17:52 ]
すいません、リソースマネージャとかでお世話になった218ですが。
あの後、一応完成まで言ったんですが最後の最後でリンクエラーが起きて
ビルドが行きませんうpろだにはファイルをあげていますので誰かお願いします




241 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 17:23:10 ]
>>240
リンクくらい貼れよ、バカ

242 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 17:28:57 ]
すいません。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7629.zip
これですよろしくお願いします。

243 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 17:32:50 ]
>>240
そもそも、リンクエラーって何が出てんのよ?

244 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 17:33:50 ]
>>242
makefileとか無いぞ

245 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 17:41:33 ]
自分はVisual C++しか使ったことがないのでmakefileとかに詳しくないです。すいません。
エラーは長いですけど以下のように出ています

エラー 1 error LNK2019: 未解決の外部シンボル "public: class
boost::shared_ptr<class IResource<unsigned int> > __thiscall ResourceIDManager::getFreeID<class ResourceManager::IDDeletor>
(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class ResourceManager::IDDeletor)"
(??$getFreeID@VIDDeletor@ResourceManager@@@ResourceIDManager@@QAE?AV?$shared_ptr@V?$IResource@I@@@boost@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@VIDDeletor@ResourceManager@@@Z)
が関数 "private: bool __thiscall ResourceManager::loadGraphicsResource(class ResourceIDManager &,class boost::shared_ptr<class IResource<unsigned int> > &,
class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,bool (__cdecl*)(unsigned int,char const *),void (__cdecl*)(unsigned int))"
(?loadGraphicsResource@ResourceManager@@AAE_NAAVResourceIDManager@@AAV?$shared_ptr@V?$IResource@I@@@boost@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@P6A_NIPBD@ZP6AXI@Z@Z) で参照されました。
ResourceManager.obj


246 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 17:59:02 ]
>>237
24bit BMPって書いてあるだろ。要するに、ヘッダの部分から下は
一番下の行の左側のRGBから順に記録されているタイプ。

247 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:10:00 ]
>>246
BMPなんてかいてねーよ。
ビットマップとしか書かれてないだろ。

248 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:20:22 ]
>>234
ビットマップを読み込んで、色を文字で表したテキストファイルを出力する
◆仕様
・ビットマップは24bit限定

が読めない日本人じゃない奴が、北京五輪を機に紛れ込みましたか?
祖国のサイトにお帰り下さい。

249 名前:基地外揚げ足取り [2008/08/20(水) 18:21:24 ]
>>234
> <windows.h>をつかわず

247 名前:デフォルトの名無しさん 投稿日:2008/08/20(水) 18:10:00
>>246
BMPなんてかいてねーよ。
ビットマップとしか書かれてないだろ。

BMPなんてかいてねーよ。
ビットマップとしか書かれてないだろ。

BMPなんてかいてねーよ。
ビットマップとしか書かれてないだろ。

BMPなんてかいてねーよ。
ビットマップとしか書かれてないだろ。

250 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:22:30 ]
>>247
どうせ答える気がないんだろ、だったら無知、揚げ足取り、横槍程度のバカは
口出しするなよ。言い草がみっともない。人として恥ずかしい。
> BMPなんてかいてねーよ。
> ビットマップとしか書かれてないだろ。
何これ?日本語が読めないバカって頭も悪いんだなw



251 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:25:04 ]
>>247 = >>235
鬱陶しいんだよ、クソガキ。
お前が答えられないだけだろw
教師をバカにする以前に、お前がバイナリすらまともに扱えない証拠。

>>238 にbmpと断っていますが?w

ttp://www.mm2d.net/c/c-11.shtml
ttp://www.geocities.co.jp/Playtown-Knight/6845/sd_doc/format_windib.html
どちらにしろ、同じようなもの。はいはい、知ったかの答える気無しの野次馬は帰った帰った。

252 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:29:39 ]
>>251
> >>238 にbmpと断っていますが?w
>>234の話だろ。それとも文書の前後が理解できない病気か?

253 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:30:23 ]
>>249
そういう思い込みで手を動かすタイプが、バカコード書くんだろ。

254 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:30:59 ]
>>250
ひょっとして、BMPがなんなのか知らないのか?

255 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:31:52 ]
わざわざ連投しないで1レスにまとめろよ屑

256 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:36:19 ]
>>255
おまえもな

257 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:37:34 ]
>>241とか、分かりやすいだろ、上から目線どころか、バカとか平気で
相手を罵倒する発言をする。夏厨丸出し。ここはお前の管轄じゃないから
とっとと新学期の準備をしとけや。お前みたいな実力も知識も無い無能じゃ
このスレの宿題ですら答えられないから。

258 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:40:55 ]
>>257は馬鹿

259 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:41:10 ]
>>247
これは酷い。言葉が読めないのか、こいつは?w

>>238の条件でBMPファイルを生成してみれば、どうなっているかくらいわかっているはず。
あぁそうか、Windowsを使ってないどこぞの研究所の人か?
世の中はWindowsがメインだぞ。俺は大学では実験や研究では
SolarisやUNIXなどを使っていたが、ワークステーションでもWindows系は
使ってたがね。当然、そこでは標準搭載のペイントはあったけどな、
もう6年くらい前の話だが、自分が大学生だったのは。

260 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:43:10 ]
ハナっから課題に答える気が無い奴が、揚げ足取りみたく
要らない横槍や罵倒、自分の無知をさらすなんてことはするなよ
スレが荒れるだろが >>247 >>241



261 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:43:56 ]
なんか>>237の件で揉めてるのに>>238に書いてあるじゃないかとか、あほくさい・・・

262 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:45:00 ]
>>259
> >>238の条件でBMPファイルを生成してみれば、どうなっているかくらいわかっているはず。
これも、前後感覚が無くなる病気か?

263 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:47:00 ]
>>259
> 世の中はWindowsがメインだぞ。俺は大学では実験や研究では
なんで、オマエの狭い世界が基準なんだよ。

264 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:51:09 ]
>>235
235 名前:デフォルトの名無しさん 投稿日:2008/08/20(水) 15:13:21
まだビットマップ読み込む課題出す駄目教師いるんだな


265 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:55:31 ]
>>264
その場で作ったBMPを読み取ると言う話からすれば、
バリエーションのあるフォーマットに網羅的に対応すると言う課題でもない様だし、
ターゲットとしてバカらしくはある。

266 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 20:09:16 ]
>>234 >>238
テキスト形式の具体的な内容は?

267 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 20:48:42 ]
>>234
左上から順にRGBを6桁の16進数にして出力するプログラムは出来たでごわすが
現在、>>1にあるうpろだが利用できないようなので、復旧したらうpするでごわす。

268 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 21:46:50 ]
>>245

 一応、リンクできるようにしてみたけど
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7630.zip
つながり難い

269 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 21:52:10 ]
>>1にあるうpろだの調子が悪い?

270 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 22:43:24 ]
>>258が馬鹿




271 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 23:09:59 ]
BMPの話でここまで必死にバカになれるお前らが羨ましいぜ

272 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 23:57:20 ]
っつかさ、別に個人を特定して直接自分に対して文句を言ってきた奴が
いるわけでもないのに、口出ししておいて相手を罵倒している奴って何?
後から補足でBMPって本人が言ってんじゃん。BMPなんて書いてないって
どんだけ文字が読めない学の無い奴だよ?って思われるような墓穴を掘るなよw
Windows、ペイント、ビットマップって言ったら普通に知っている人は分かるぞ?
けどさ、それを言うと、自分にとっては当たり前じゃないとか、それ以外にもあるとか
言い出すんだろ?分からないなら口出ししなきゃ良いじゃんw
己の無知を晒す場でもないから、知らないなら別に口出しせんでもよろしい。
なのに、その課題を扱う講師がどうとか、無関係なレスしてんの???

273 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 00:14:44 ]
>>272
これが前後関係のわからなくなる病気

274 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 00:15:10 ]
>>272
>>234読めよ、夏厨

275 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 00:48:15 ]
BMPって書いてあるのに、口出しして墓穴を掘った本人乙w
それに反応するのはお前くらいだよ

276 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 00:54:15 ]
>>238が読める?読めない?聖徳太(ry

277 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 00:55:50 ]
>>276
結局、BMPがなんだか知らなかったのか・・・

278 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 00:56:14 ]
さてと、分からず屋はとりあえず、Windowsに標準搭載の
ペイントで24ビットBMPファイルを何でも良いから作ってみましょう。
先に言っておくが、中身がまったくないってのは無しね。

279 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 00:57:01 ]
>>276
まあ、Wikipediaをwikiって略すようなもんだから、バカっぽいけど、それほど恥ずかしくないんじゃないの?

280 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 01:04:43 ]
テンプレに沿ってないだけでここまで荒れるものなのか
なんというか活気があるな



281 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 01:05:10 ]
あらあら、課題に答える気もないくせに、煽るのに必死な奴が必死だなw
ねぇ、Macユーザ?それともUNIX、Linux系?Windows固有のものではないが、
>>234には
> <windows.h>をつかわず
って条件があるし、24ビットBMPっと言ってしまえば、察するに例のあれでしょ。
あぁ、そうか、windows.hすら知らない初心者か、んじゃあんたみたいなのは
ここで回答せずにROMってなさい、ね?口ばっかりでソースを提示しない卑怯者には
用がないんですけど?

ttp://e-words.jp/w/BMP.html
ttp://ja.wikipedia.org/wiki/Windows_bitmap
ttp://ja.wikipedia.org/wiki/%E3%83%93%E3%83%83%E3%83%88%E3%83%9E%E3%83%83%E3%83%97%E7%94%BB%E5%83%8F


282 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 01:08:50 ]
wingdi.h使えばBITMAPINFOHEADER使えるよ

283 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 01:10:50 ]
>>281
よっぽど恥ずかしいんだろうけど、もう、気にするなよ。

284 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 01:13:12 ]
題意が分からなくて答える気がないなら、要らんレスせんでよろしいよ。
本当にお前が日本語が理解できるかも疑わしい。
>>1読め。
> 気に入らない質問やその他や発言はスルーの方向で。
何もあんたを特定して質問者は質問をしてんじゃないんだから。
知らない、分からない奴に押し付けてないだろw
そうやって、自分が知らなかったことを許してもらおうとかしているわけ?
それとも、知らなかったことを言い訳して、認めてもらおうとしてんの?
あんたがどこの誰か知らないが、自分が解けない課題を出す奴を
目の敵にしてどーすんだよ?w
答える気がないなら黙っとれ、鬱陶しい。スレが汚れるからこの変にしとくぞ。


285 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 01:15:09 ]
>>284
とうとう、>>1を持ち出したよ。
それ、何回もやりすぎで効果ないだろ。

286 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 01:16:13 ]
>>284
>>1を持ち出して何とか、自分が最後の発言者になりたいんだろうけど、逆効果じゃね?

287 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 01:16:57 ]
>>284
それ、何行目からコピペなの?

288 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 01:18:30 ]
回答できない人に向けて質問者は質問なんてしてませんよぉ〜?
なんでそれが分からないで、一人で質問者に噛み付いてファビョってんの?w
>>1読め

289 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 01:21:29 ]
>>288
オマエは質問者じゃないだろ。
当人はとうに飽きて出てったさ。

290 名前:↑課題に答えられなくて悔しいのう悔しいのう mailto:sage [2008/08/21(木) 01:35:50 ]
そろそろ寝たら?どうせ解けないんだろ?暇でやることないんだろ?
最近、丸投げのレスがなくて、たまにある課題をwktkして待っていたが
BMPの問題程度の簡単なものでも、解けなくて悔しいんだろうけどさ。
お前もあれだろ、昼夜逆転した生活で脳がおかしくなって
世の中がおかしく見え始めている妄想癖のある危険人物。
他の板でも、深夜に暴れているキチガイを見かけるけど、そいつらって
最後は暴れて逮捕されてるんじゃね?あと、スレが汚れるからこの辺で、な?
お前みたいなのは、引き際を知らないから、余計に泥沼に嵌るんだよ。
とにかくな、ごちゃごちゃ言い訳っぽいことを並べるだけの奴って、
どんな業界でも、無責任で情けなく見えるんだわ。お前が無能だから出来ないんだろって
普通に言われるぞ。ここは答えるのも任意だから、出来なくても誰にも文句いわれないから、
だから安心して寝ろ、な?お前が出来る課題が必ずしも質問されるとは限らないからさ。
出来る人に任せとけ、な?



291 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 01:41:25 ]
>>290
BMP程度って、中身は簡単なようで複数フォーマットがあって
割と面倒なんでけどw



292 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 02:00:24 ]
わざわざ限定されてるんだから複数フォーマットは考慮しないでいいだろ

293 名前:268 mailto:sage [2008/08/21(木) 03:56:42 ]
>>245

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7631.zip
うpろだ復活したので修正したのをあげとく

294 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 09:38:10 ]
BMPファイル討論して盛り上がったが誰も問題は解いてやってない件www

295 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 09:44:59 ]
いつもの人は解けない問題がくるとファビョって他人に絡みだすからな

296 名前:234 mailto:sage [2008/08/21(木) 11:32:45 ]
なんだか争いが起きていたようですが
元はといえばボクの情報漏れが原因なので・・・
みなさんすみません。
>>266
FF00FF みたいな感じだと思います
>>267
よろしくおねがいします

297 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 13:07:53 ]
>>295
さすがに解けないわけじゃなくて、面倒くさいだけだろ。

298 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 13:40:44 ]
とりあえず、仕様はっきりさせて仕切り直ししようか?
C言語でやること、24bit色の無圧縮BMPだけを扱えば良さそうなとこまでは把握した。

>・対象ビットマップ
> 赤、青、緑、白、黒
これがいまいちわからない。どゆこと?

299 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 13:47:39 ]
>>298
この手の問題をやりたくないのは

出題者がいい加減な出題の仕方をしてて、答えるほうが質問者に落としどころを確認しないと

いけないことだ。



300 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 13:49:35 ]
オレは、赤、青、緑、白、黒 の5色だけ使われてて
テキストファイルにはピクセルに相当する赤、青、緑、白、黒の文字が並ぶんだと思ってたよ・・・



301 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 13:51:22 ]
>>234
「私の為に争わないで」ってかw
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7632.txt

302 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 13:53:27 ]
第一24bitビットマップでどうやって赤青緑白黒とか区切るんだよw

RGBそれぞれ256段階指定できるんだぞ。

やっぱり糞問題じゃねーか

303 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 14:01:55 ]
>>299
出題者は講義を通じて課題の範囲を示しているだろうが、
質問者はやる気の無いド素人だから、課題を理解していない。
それが、源泉だと思う。

304 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 14:30:22 ]
>>300
0000FF00、FF000000、00FF0000、FFFFFF00、00000000の5種類のデータしか並んでないって事か。
決めうちしちゃって大丈夫かな・・・?


305 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 14:35:56 ]
>>304
そらなw

PC9801の初期のデジタルモードじゃないだからwww

出題者はやっぱり糞

本気で赤青とかに分類するための条件設定がなくて
ソフト作れーねーよ。

24bitビットマップでざっくり「赤青・・・」に分けるなら色ごとの閾値設定だとかも
よこせよ

306 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 14:56:46 ]
>>305
糞なのは、質問者だろ。

307 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 14:57:38 ]
なんでこんなにもビットマップが人気なのか分からんw

308 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 15:33:57 ]
とりあえずそれっぽいソースに見えるだけなビットマップ for VC++ 8.0
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7634.txt

動作確認?まったくしとらんでおじゃるよ?(鼻糞ほじりながら)

309 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 17:44:52 ]
閾値がどうとかどうでもいー
ペイントでそのようなファイル作ってくれるんでしょ?他のがあったら捨て置けばいいじゃん

310 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 17:45:52 ]
>>306
またお前か、答えもせず回答する能力もないくせに、偉そうに
口出ししかしないお前の方が糞なんだよ!このスレでは用なし
要らない子でつよ?wwww



311 名前:デフォルトの名無しさん [2008/08/21(木) 19:04:00 ]
[1] 授業単元: プログラミング技術
[2] 問題文(含コード&リンク):
二次元配列「field[5][5]」に格納されている

#####
#####
#****
#****
#****

という文字列(#は壁。*がフィールド)で一番左上が(0,0)とした場合のフィールドの開始位置の座標を求めよ。
上でしたら「X:1 Y:2」

#####
#####
###**
###**
###**

でしたら「X:3 Y:2」という値を求めたいです。

[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語: C)
[4] 期限:無期限

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

312 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 19:08:39 ]
>>311
この場合は?
#####
#####
###**
##***
##***

313 名前:デフォルトの名無しさん [2008/08/21(木) 19:11:59 ]
>>312
そうゆうのは無いです。。
あくまで角がある(?)パターンです。

お願いします(;´Д`)

314 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 19:13:34 ]
>>234
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7635.c

>>308
偽おじゃるめ、クソースさが足りないでごじゃる

315 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 19:24:52 ]
>>234 余計なコードを削除したでござる
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7636.c

316 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 19:34:27 ]
>>311
#include<stdio.h>

int main(int argc, char *argv[]){
int i, x, y, width=5, height=5, left=-1, top=-1;
int field[5][5]={
{'#', '#', '#', '#', '#'},
{'#', '#', '#', '#', '#'},
{'#', '#', '#', '*', '*'},
{'#', '#', '#', '*', '*'},
{'#', '#', '#', '*', '*'},
};

for(i=0;i<width+height-1;i++){
for(y=0;y<i;y++){
x=i-y;
if(x<0 || x>=width) continue;
if(field[y][x]=='*'){
left=x;
top=y;
break;
}
}
if(y<i) break;
}
printf("X:%d Y:%d\n", left, top);

return 0;
}

317 名前:デフォルトの名無しさん [2008/08/21(木) 19:51:46 ]
>>316
本当にありがとうございます!
助かりました!

318 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 01:57:08 ]
>>316が理解できない。
何でこういうループになるの?

319 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 02:03:22 ]
無駄の多いループだけど、やってることは難しいことじゃないだろw

320 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 08:58:01 ]
無限ループじゃないから安心汁!



321 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 09:36:59 ]
さて、宿題かもーん

322 名前:回答者修行中 mailto:sage [2008/08/22(金) 11:50:25 ]
質問者もういっちゃいましたね
#include <string.h>
#include <stdio.h>
int main()
{
int i, x, y, width=5, height=5, left=-1, top=-1;
char *p;
char field[5][5]={
{'#', '#', '#', '#', '#'},
{'#', '#', '#', '#', '#'},
{'#', '#', '#', '*', '*'},
{'#', '#', '#', '*', '*'},
{'#', '#', '#', '*', '*'},
};

p=strchr((char *)field,'*');
i = ((int)p - (int)field)/sizeof(char);
y=i/5;
x=i-y*5;
printf("x=%d y=%d",x,y);
return 0;
}
これまともに動いてる?

323 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 16:03:54 ]
クソコテww

324 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 18:47:59 ]
>>322
*が存在することが明確なら特に問題ないのかな
y=i/widthのほうがよかったりしないかな、とおもいつつも、ともあれその発想が面白かったです

325 名前: ◆tr.t4dJfuU [2008/08/22(金) 22:21:04 ]
[1] プログラミング演習
[2] 問題:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7643.txt
  データ:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7644.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] VC 5.0
 [3.3] 言語:C
[4] 期限:2008年08月24日16:00
[5] 特になし。

326 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 22:52:15 ]
>>322
>((int)p - (int)field)/sizeof(char);
こう書くより
p - (char*)field
こう書いたほうがよくね?

327 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 23:46:36 ]
>>236をお願いできないでしょうか。

328 名前:デフォルトの名無しさん [2008/08/23(土) 00:37:29 ]
[2] 問題文
1.
次のような式で表される数列が与えられたとする。
a0=1,a1=1,an=an-1+2an-2
int型の整数n(n≧0)を受け取り、上記の数列anの値をa0からanまで全て表示する関数printa(n)を作成せよ。

2.
要素数2個のdouble型の配列xy(xy[0]にはx座標、xy[1]にはy座標が納められている)と2行2列のdouble型の2次元配列Aを受け取り、座標(x,y)のAによる1次変換を求めて、その結果を配列xyに格納する返却値無しの関数LinearTrance(xy,A)を作成せよ。

3.
文字列の納められた文字型の配列sとstailを受け取り、sの末尾にstailの文字列が含まれているかどうかを調べ、含まれている場合には1、含まれていない場合には0を返す関数strcmptail(s,stail)を作成せよ。

4.
4個の文字列"abc.txt","xyz.jpg","foo.txt","bar.mp3"と文字列"txt"を受け取り、文字列の末尾に"txt"を含む文字列かあるかどうかを調べて、あればその文字列全てを表示するプログラムを作成せよ。ただし問3で作成した関数を用いること。


[3] 環境
 [3.1] OS:Windows
 [3.2] すいません、わからないです。
 [3.3] 言語:C
[4] 期限:23日正午

見づらいかもですが、よろしくお願いします。

329 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 01:07:37 ]
1.
void printa(int n) {
int a = 0, b = 1, i;
printf("%d ", a);
if(n==0) return;
printf("%d ", b);
for(i=2; i<=n; i++) {
int temp = a * 2 + b;
printf("%d ", temp);
a = b;
b = temp;
}
}

2.
void LinearTrance(double xy[2], doubleA[2][2]) {
double temp[2];
temp[0] = A[0][0] * xy[0] + A[0][1] * xy[1];
temp[1] = A[1][0] * xy[0] + A[1][1] * xy[1];
xy[0] = temp[0];
xy[1] = temp[1];
}

3.
int strcmptail(char *s, char *stail) {
char *p = s, *q = stail;
while(*p) p++;
while(*q) q++;
while(q > stail) if(*--q!=*--p) return 0;
return 1;
}

330 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 01:29:43 ]
>>329
int main(void){
char *tail="hogehuga";
char *s="foobarhogehuga", *p;

p=s+20;
printf("%s %s %d\n", p, tail, strcmptail(p, tail));

return 0;
}



331 名前:クソコテ mailto:sage [2008/08/23(土) 18:10:22 ]
ありがとうございます
>>324
そうですねマジックナンバーはいただけませんね
>>326
それでいけますか?
あ、いけますね、やっぱりまだ少し勘違いがあるみたいです。
>>327
すみません、私の力不足の用で、途中までやってみましたが、
構造体に入れるところで、異常に長くなってしまうので諦めました。
メモリ上での構造体の配置を仮定すればループでいけますが
あまりにも処理系依存なので止めておきます、
誰かがすごい解答を出してくれるのを待ちましょう。


332 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 18:59:28 ]
問題文
OSを作りなさい

333 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 19:05:22 ]
>>332

#include <allornothing.h>

int main(void){
puts("The End");
}


334 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 19:30:32 ]
>>332
Oh yes なんつって

335 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:20:28 ]
>>330が何を言いたいのか理解できないんだが。

336 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:21:51 ]
>>335
strlen(stail) > strlen(s)
の時に問題あるよ

337 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:25:16 ]
330からそういう意味は読み取れないw

338 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:27:49 ]
>>337
>>330 を実行してアレッ?と思って欲しかったが、回りくどかったようだ

339 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:30:50 ]
お前本人かw
>p=s+20;
こんなこと書くアホが何言ってんだ。

340 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:32:05 ]
>>339
p=&s[20]; が好みか?



341 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:32:39 ]
どこ指してるか理解してんのかよw

342 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 21:34:22 ]
あーなんてこった orz

343 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 17:45:45 ]
アセンブラの宿題あるんだけど誰か助けて

344 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 17:57:45 ]
スレ違い
死ね

345 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 18:46:54 ]
暇だから宿題出して

346 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 19:37:12 ]
>>343にきけ

347 名前:デフォルトの名無しさん [2008/08/24(日) 20:09:39 ]
≫345

[1]アルゴリズムとデータ構造
[2]
クラスカルの方法を用いて,最小木のアルゴリズムを作れ.
データファイル(data.txt)は

点の数 枝の数 (1行目のみ)
枝番号 始点 終点 枝の長さ
・・・・・・・・・・(これが枝の数だけ続く)

という形式.

グラフを各点に接続する枝を覚えるリスト形式で表現せよ.

↓data.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7644.txt

[5]最小木の最短経路の問題へと発展する1stステップです。ま、解ければね・・・

348 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 21:15:23 ]
>>347
もっと解いてうれしくなるような問題にしろよ。

349 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 21:30:21 ]
>>344
>>348
いい加減、お前の方がうざいぞ

350 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 21:36:03 ]
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク)
ファイルに以下のような数字の列があるとする。
32
82
11
19
90
24
58
48
これをプログラムで読み込んで数字の小さい順に並び替えるプログラムを作れ。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:g77
 [3.3] 言語:C
[4] 期限:2008年8月25日正午
[5] その他の制限:なし

よろしくおねがいします。



351 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 21:47:30 ]
>>350
#include<stdio.h>
#include<stdlib.h>
int compare(const int *a, const int *b){
if(*a<*b) return -1;
if(*a>*b) return 1;
return 0;
}
int main(void){
char *filename="hoge.txt";
int *data=NULL, one_data, data_num=0, i;
FILE *fp;

fp=fopen(filename, "r");
if(fp==NULL){
fprintf(stderr, "\nError: %s file cannot open.\n", filename);
return 1;
}
while(fscanf(fp, "%d", &one_data)==1){
data=realloc(data, sizeof(int)*(data_num+1));
data[data_num++]=one_data;
}
fclose(fp);
qsort(data, data_num, sizeof(int), (int (*)(const void *, const void *))compare);

for(i=0;i<data_num;i++) printf("%d\n", data[i]);

free(data);

return 0;
}

352 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 21:53:20 ]
>>351
ありがとうございます。

353 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 01:42:06 ]
>>347
読み込んで記憶するだけでいいの?
それとも内部でグラフを作るの?

354 名前:sage [2008/08/25(月) 02:09:56 ]
>>353
グラフはアウトプットしなくてもよいのですが
まずリスト形式で作成すると同時に
枝情報をヒープに格納して(最大ヒープサイズは枝の数である50)
ヒープから短い枝順に順次データを取り出し
クラスカルのアルゴリズムに従って、最小全域木を求めます。
最終的には最小全域木の
ある任意の点Αから、点50までの最短経路を求める問題になります。

おそらく出題者は、グラフを先に作ったうえで
問題にしたっぽいです。

グラフはwinnyの開発画面みたいなやつです。
あぷりますね。

355 名前:347 mailto:sage [2008/08/25(月) 02:26:40 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7646.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7647.txt

356 名前:347 mailto:sage [2008/08/25(月) 02:29:34 ]
サーセン。拡張子ま違いました。

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


357 名前: ◆luuqrOhdZk mailto:1/2sage [2008/08/25(月) 03:29:06 ]
[1] 授業単元: 授業ではありません
[2] 問題文(含コード&リンク):
「苦しんで覚えるC言語」の第1部13(全ページリンクフリー)
homepage3.nifty.com/mmgames/c_guide/13-q.html
の、「プログラム書き取り」の問題です。
「入力された10個の数値を最後から表示するプログラムを作成せよ。」
(簡単のため3個の数値にしました)
[3] 環境
 [3.1] OS: Windows XP Home edition
 [3.2] コンパイラ名とバージョン: (Cpad for C++ comiler ver2.31)
 [3.3] 言語: C
[4] 期限: ( [無期限])
[5] その他の制限:まだ初心者なので高度な設定等は分かりません

プログラムの、
for(i = 0;i < 3; i++ ){
printf("%d番目を入力:",i);
scanf("%d\n",&array[i]); }
の部分で、実行画面で、
0番目を入力:11
1番目を入力:22
2番目を入力:33

(11、22、33は実行画面で入力する値です。)
としたいのに、なぜか

0番目を入力:11
22
1番目を入力:33
2番目を入力:44
となってしまいます。
よろしくお願いします。以下、プログラム全文と実行画面です。

358 名前: ◆luuqrOhdZk mailto:2/2sage [2008/08/25(月) 03:30:17 ]
先の質問のプログラム全文と実行画面です。
#include <stdio.h>

int main(void)
{
int array[3];
int i;
for(i = 0;i < 3; i++ ){
printf("%d番目を入力:",i);
scanf("%d\n",&array[i]);
}

for(i = 2;i >= 0;i--){
printf("%d番目は%d\n",i,array[i]);
}

fflush(stdin);
getchar();
return 0;

}
―――実行画面―――

0番目を入力: 11
22
1番目を入力: 33
2番目を入力: 44
2番目は33
1番目は22
0番目は11

359 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 04:02:49 ]
>>357
> scanf("%d\n",&array[i]);

scanf("%d",&array[i]);

360 名前: ◆luuqrOhdZk mailto:sage [2008/08/25(月) 05:01:27 ]
>358
お陰様で解決しました。
ありがとうございます。



361 名前:234 mailto:sage [2008/08/25(月) 09:09:51 ]
>>234です。お返事の方遅れてすみません、今みなさんの書いてくれたコードを読みながら自分でコードつくっています。
また、ご協力お願いします。

362 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 11:01:55 ]
>>347
言語は?

363 名前:347 mailto:sage [2008/08/25(月) 11:17:57 ]
>>362

C言語でもC++でもOKです。
自分はVC++使ってたんですけど
引数のエラーが出て
関数がうまく扱えないので

C使ってBorlandでやってまス。


364 名前: ◆O5wSDVhi7. mailto:sage [2008/08/25(月) 11:31:16 ]
Cの問題について、ちょいと質問したいのですが、
ファイルの読み込み処理で、入力した名前のファイルがある場合はある、ない場合はないと
表示させるプログラムを作っていますが、自分が作成したコードではダメだしをくらいました。

以下、コードです。
char filename[20];
FILE *fp;

printf( ">" );
scanf("%s",&filename);


fp = fopen( filename, "r" );
if( fp == NULL )
{
printf( "%sは存在しません\n",filename );

}
else
{
printf( "%sは存在します\n", filename );
}
fclose( fp );

一応、動くことは動くのですが、余計な部分が多いというところと、もう一つ
問題があるといわれましたが、自分ではよくわかりません。

どなたか教えてください。
環境はVisual studi2005です。

365 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 11:37:53 ]
>>364
filename がバッファオーバーフローする危険性がある
fclose(NULL) する危険性がある
scanf に渡す引数の型が一致していない

あとこのレベルだとどうでもいいことだが
排他処理をしている場合 fopen でファイルの存在を確定することはできない

366 名前: ◆O5wSDVhi7. mailto:sage [2008/08/25(月) 11:59:28 ]
>>364
自分でも、ちょっと調べてみたのですが、
どうやら、fclose(NULL)している模様です。

この場合の対策などはないのでしょうか?

367 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 12:10:24 ]
>>366
fpがNULLかどうかチェックしてるだろ。
そのNULLじゃない方に入れたらいいべ。

368 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 12:52:58 ]
>>364 通りすがりの初心者の意見↓

1.scanfのところの&がいらない。
2.ファイルがない場合はfcloseする必要がない。

369 名前: ◆O5wSDVhi7. mailto:sage [2008/08/25(月) 13:39:34 ]
>>367
そのとおりに変更して提出しました。

>>368
scanfを使用した場合どのような問題が起こるか説明しろといわれました。

上で言われた、バッファオーバーフロー云々でいいのだろうか?
いろいろ、調べてみたが解釈の仕方が様々でよくわからなかった・・・。

370 名前:368 mailto:sage [2008/08/25(月) 14:04:57 ]
>>369

scanfの問題は空白がくると読み込みが終了するってことかな?
オーバーフローはgetsだった気がする。



371 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 14:21:56 ]
オーバーフローは書式でどうにか出来るしな

372 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 14:26:00 ]
>>370
scanf("%[^\n]", a);
これでよかった気がするがうるおぼえ。

373 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 14:37:45 ]
>>372
こういうやり方があったのか知らんかった。
'\n'をスキャン対象から除外すればいいのか。

374 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 15:07:11 ]
>>369
リターンキーが無視できない、バッファオーバーラン、空白が読み取れない
これらの問題を解決したすばらしいscanf

scanf("%19[^\n]%*[^\n]", filename);

375 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 15:24:28 ]
>>370
getsは回避手段がないのでだめだめな関数
scanfも>>364の使い方だとgetsと変わらない
20文字以上入力されたらバッファーがあふれる

376 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 15:31:41 ]
>>370
scanf(%20s,filename);とか
文字数制限しないとバッファオーバーランするみたいですね。
勉強不足でした・・・(´・ω・)

377 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 15:34:09 ]
>>375
scanf(%20s,filename);とか
文字数制限しないとバッファオーバーランすんですね。
勉強不足でした。(´・ω・)

378 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 15:34:19 ]
そして現実にはそこまでするくらいならfgets+sscanfで良くね?となるのであった……。

379 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 16:28:42 ]
文字列一つだけ欲しいんだからsscanfもいらない気がするw

380 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 12:56:45 ]
>>347
データをすべて読み込むところまでしかできてない
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7651.txt



381 名前:234 mailto:sage [2008/08/26(火) 14:41:03 ]
234ですみなさんおつかれさまです
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7652.txt

と、無事完成させることができました(関数にしたほうがいいかも)

そして次の課題もご協力おねがいしたいのですがよろしいですか?

256、16、モノクロ対応
◆仕様
・各ビット数のビットマップも読み込めるようにする。
・<windows.h>は使用しない
◆ポイント
・読み込んだデータを24ビットに展開させる。

あと以前の色を文字で表示するのは
0x000000FF=青
0x0000FF00=緑
0x00FF0000=赤
0x00FFFFFF=白
0x00000000=黒
だったようです。失礼しました。

382 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 20:14:28 ]
>>347
>>380 は有向グラフで書いてるけど、問題は無向グラフ?

383 名前:347 mailto:sage [2008/08/26(火) 20:46:46 ]
>>380
すごく参考になりました。
ありがとうございます!

>>382
あくまでも、私個人の考えなのですが;
ある点A(これは学生の出席番号でした) から50までの最短経路の長さとその途中に通った点を求めるのが、
この問題の最終的な目標です。(奥行優先探索を使うといいと教師は言ってました。)

今回はグラフを書くこと自体が目的ではないので、有向、無向、どちらでも大丈夫です。
まぁ、最短経路なので、無向、有向どちらかといえば、一番近い距離を制約なしに
進める無向の方がいいかもしれません。

あと、データの各枝の長さがすべて異なっていれば、最小木が一意に定まりますが、
今回のデータは、そうでないので、作り方によっては、最小木が何本か作れるかもしれないです。

384 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 09:47:14 ]
夏休みの宿題で c++で
「自分で考えた最高のクラスを創ってこい」
というのが出ました。

どんなのを作っていいか全く見当がつきません。
だれか知恵を貸してください。

385 名前:384 mailto:sage [2008/08/27(水) 10:01:33 ]
すいません追記です

クラスの継承は必ず使えとの事です

386 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 10:43:43 ]
総勢30名のクラス中女子が28名いて自分以外の男子1名はとんでもないブサイクのようなクラスだ。

387 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 10:54:19 ]
>>386
夢のようなクラス(学級)ですね!

でもそっちのクラスじゃないです;;

class xxxx{
private:
int aa:
public;
xxxx();

とかのクラスです。

388 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 11:02:06 ]
物凄く面倒くさい手順でHello, World!を表示するクラスとか

389 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 11:04:29 ]
class Ninja{
private:
static const int lv = 99;
public:
int Attack(void){ return lv*100; }
};
こういうことか

390 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 11:14:46 ]
NinjaはMonsterを継承しないと



391 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 11:15:33 ]
って敵で出てくるほうの忍者じゃないか

392 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 16:42:00 ]
[1] 授業単元: C言語実習
[2] 問題文:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7655.txt
[3] 環境
 [3.1] OS: WindowsXP Professional
 [3.2] コンパイラ名とバージョン: Borland C++ 5.6.4
 [3.3] 言語: C
[4] 期限: 本日中

よろしくお願いします。

393 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 17:09:55 ]
自分-1まで調べろと書いてあるのに
何故自分までadd配列に入った結果になってるんだ?

394 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 17:11:21 ]
ああ、最後に自分を入れろと書いてるのか

395 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 17:24:19 ]
>>392
#include<stdio.h>

int main(void){
int add[15], in=-1, i, j;

scanf("%d", &in);
if(in<2 || in>100) return 1;

for(i=0;i<15;i++) add[i]=0;
for(i=2,j=0;i<in;i++) if(in%i==0) add[j++]=i;
add[j++]=in;

for(i=0;add[i]!=0;i++) printf(" %d", add[i]);

return 0;
}

396 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 17:24:46 ]
#include<stdio.h>
int main()
{
int add[15]={0};
int own=0,cownt=0;
do{
printf("2〜100の値を入れてください\n");
scanf("%d",&own);
}while(own<2||100<own);
for(int i=1;i<own;i++)
if( !(own%i) )
add[cownt++]=i;
add[cownt]=own;
for(int i=0;add[i]!=0;i++)
printf("%d ",add[i]);
return 0;
}

397 名前:396 mailto:sage [2008/08/27(水) 17:26:44 ]
しまった、変数名の指定呼んでなかったorz

398 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 17:34:04 ]
>Q3.「バブル・ソート」という整列手順(アルゴリズム)があるが、ここで用いた基本ソートとの違い何か。

ソート使って無くね?

399 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 17:49:17 ]
Q3だけ設問、浮いてるよなw

400 名前:392 mailto:sage [2008/08/27(水) 18:51:58 ]
回答ありがとうございます。

>>395
returnを複数使うという事を習っていないのですが
return 1; の部分を使わないとすればどういう風になるのでしょうか?
お手数かけますがお願いします。



401 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 19:01:05 ]
判定ひっくり返して中に入れちゃえばいいべ。

if(in>=2 && in<=100) {
//return 0の前の行まで
}
return 0;

402 名前: ◆mM5kCiKYnA [2008/08/27(水) 21:49:48 ]
[1] 授業単元: C言語(送信,受信)
[2]
UDPマルチキャストにて送信されたデータを受信するのですが....。
そのデータというのがアナログ64点,デジタル256点分が送られてきて、
それぞれアナログ256byte,デジタル32byteに格納して
残りの40byteはダミーで合計328byte分を用意して受け取り、
受信したデータをシュミレーターの受信バッファに書き込む作業ですが...

*注意事項としてはマルチキャストで送信されるデータはパルス信号がカウント値で送られ
てくるので受信したパルス信号時間に変換すること。
*パルス信号自体通常1が送信されるので2以上の値を受信した時点でバッファに書き込むようにする。
尚この処理自体湾ショットのみ行う。つまり通常1が送られて、2になった時点で受け取りまたしばらく
すると1になりその信号が3とか1以外になった時点で取り込むようなプログラムにする。
困っているので助けてください。よろしくお願いします。

[3] 環境
 [3.1] OS:Solaris8,UNIX(viコマンド)
 [3.2] コンパイラ名又はバージョン
 [3.3] 言語: C言語
[4] 期限:2008年9月1日


403 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 22:11:47 ]
>>402
あなろぐ?

404 名前: ◆mM5kCiKYnA [2008/08/27(水) 22:59:12 ]
>>アナログとデジタルのことです。
時計とかでもあると思うんですけど。
そこはあまり深く考えなくても大丈夫ですので。


405 名前:デフォルトの名無しさん [2008/08/28(木) 01:07:23 ]
[1] 演習課題: C++
[2]
配列等を使って料金算出システムを作るのですが・・・

給料を入力
等級⇒給料が〜101100の場合"1"、101000〜107000の場合"2"、107000〜1014000の場合"3"
   1014000〜122000の場合"4"、122000〜130000の場合"5"
健康保険⇒給料の8.2%
厚生年金⇒給料の14.642%
雇用保険⇒給料の0.02%

出力後
所得   ○○円
等級   ○
厚生年金 ○○円
健康保険 ○○円
雇用保険 ○○円

終了しますか?(y,n)

というようなプログラムにします。
本当に困っているのでどなたか助けてください。よろしくお願いしますm(__)m

[3] 環境
 [3.1] OS:WindowsXp
 [3.2] Visial C++
 [3.3] 言語: C++
[4] 期限:2008年8月28日

406 名前:392 mailto:sage [2008/08/28(木) 01:15:02 ]
>>401
遅くなりましたが解決しました。
ありがとうございました!

407 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 02:36:20 ]
>>405
何をすればいいのかいまいちわからん。
それやるのに配列使わなく無いか?
それとも、表示するだけではなくて保存しておく必要があるのか?

408 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 02:41:40 ]
>>405
数値を正確に書けよ。イミフだ
未満とか以下の表現も必要

409 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 06:18:35 ]
>>405
こんなもんでいかがッスか?
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7656.txt

410 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 07:58:36 ]
OpenGLで球体を作りたいのですが、サンプル例を作っていただけませんか?



411 名前:デフォルトの名無しさん [2008/08/28(木) 08:19:35 ]

[1] 確率論
[2]
NxNの行列の逆行列を出すプログラムをつくれ。
Nは10以上30以下である。
[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] 言語:C
[4] 期限:明日にかわるくらいまでには

412 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 09:00:58 ]
>>410
glutでいいよね?
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7657.txt

413 名前:デフォルトの名無しさん [2008/08/28(木) 09:56:02 ]
だが断る

414 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 10:13:16 ]
>>402
シュミレーターの受信バッファに書き込む?
カウント値?
パルス信号?

問題の意味が分からない

415 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 10:15:15 ]
>>411
Numerical Recipes in C でも読んでろ

416 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 11:16:29 ]
5000円とかたかいよー。

417 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 19:02:35 ]
>>411
LU分解,Gauss-Jordan法,特異値分解
好きなのでググれ

418 名前:デフォルトの名無しさん [2008/08/28(木) 22:30:14 ]
>>407
すいません。説明が言葉足らずでしたね。
>>408
たしかに。。。これからは気をつけよう。
>>409
おかげさまでどうにか期限までに課題を終わらせる事ができました。
本当に助かりました。ありがとうございました。


419 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 03:32:50 ]
[1]C言語
[2]住所録の作成
名前・住所・年齢・メアドを一つのレコードとする住所録システム
レコードの登録・削除・レコード中の各項目の更新・レコード中の各項目によるレコード検索
ファイルへの書込みと読込の6機能
配列は使えない
[3]OS:Windows  言語:C
[4]08/08/31

420 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 03:57:29 ]
> 配列は使えない
ちょっwwwwwww



421 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 03:59:37 ]
ポインタと動的メモリ確保使ってことでは?

422 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 04:06:21 ]
あんまり好みの設計じゃないなぁ。
固定長レコードな住所録の方が好きだ。

423 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 04:11:13 ]
いや、まてよ?
1レコードは256Byte固定長にして、各レコードは区切り文字で区切ればいいのか。
ちょっとやってくる。


424 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 04:26:26 ]
飽きたから放棄。

425 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 04:56:17 ]
>>419
レコード検索は部分一致でやるの?
その場合、複数件の該当レコードがあったときどうすんの?

426 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 05:40:40 ]
>>423
とりあえず登録と表示できるやつを作ってみた

#include "stdio.h"
#include "string.h"
typedef struct { int address,age,email, a,b,c,d, e,f,g,h, i,j,k,l, m,n,o,p ; } RECORD;
typedef struct { RECORD a,b,c,d,e, f,g,h,i,j, k,l,m,n,o, p,q,r,s,t, u,v,w,x,y,z ; } RECORDSET;
int main(void)
{
int i; char *p,*a,c; RECORDSET rs = {0}; RECORD *r = &rs.a,*t;
while( 1 ) { printf("i:touroku r:sakujo o:koushin h:kensaku a:kakikomi n:yomikomi 1:list 0:exit ?");
fflush(stdin); c = getchar();
switch(c) {
case 'i': p = (char*)&r->a;
printf("name :");scanf("%s",p);p+=r->address=strlen(p)+1;
printf("address :");scanf("%s",p);p+=r->age=strlen(p)+1;
printf("age :");scanf("%s",p);p+=r->email=strlen(p)+1;
printf("e-mail :");scanf("%s",p); r++; break;
case '1': t = &rs.a;c=0;
while(t->address>0) {
printf("\n[%c]",'a'+(t-&rs.a)/sizeof(RECORD));a=(char*)&t->a;
printf("\nname :%s\n",a);a+=t->address;printf("address :%s\n",a);a+=t->age;
printf("age :%s\n",a);a+=t->email;printf("e-mail :%s\n",a);
t++;c++;
}
printf("\ncount = %d\n", c ); break;
case '0':return 0; default :printf("not implimented.\n");
}
}
return 0;
}

427 名前:デフォルトの名無しさん [2008/08/29(金) 08:18:44 ]
>>420
住所録関係なら配列は使えないだろ?
勉強しなおせ

428 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 10:35:12 ]
×使えない
○使わない

429 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 10:37:46 ]
そうだよな、住所録関係なら配列は使えないのは常識だよな

430 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 13:00:39 ]
>>427 (・∀・)ニヤニヤ



431 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 13:02:04 ]
文字列は配列として扱ってはいけないんですね?
1文字づつメモリ上に領域を確保してポインタを繋げていかないといけないんですね?

432 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 13:02:57 ]
>>431
しっ、知ったか初心者に障っちゃだめ、また屁理屈を言い出して
それでも配列じゃないって言い出すから。

433 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 13:49:00 ]
struct string{
int size;

};

434 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 15:02:10 ]
[1] 授業単元:C++
[2] 問題文(含コード&リンク): 多倍長整数の除算(100桁まで)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 出来れば明日中
[5] その他の制限: 形式としてclassは必ず使う。

よろしくお願いします。

435 名前:デフォルトの名無しさん [2008/08/29(金) 21:51:05 ]
>>434
その手の問題は未解決になる可能性大

ここのスレの住人は文字列を逆順にしたり、並べ替えたりする
なんの役にもたたないようなプログラムばかり書いてるからw

436 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 21:52:40 ]
>>435
煽ればやってくれるとでもwww
記憶にある限り少なくともCの範囲では過去にやったよ

437 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:00:35 ]
たばいちょうせいすうってなに?

438 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:03:25 ]
>>437
ググレカス

439 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:16:29 ]
ja.wikipedia.org/wiki/%E5%A4%9A%E5%80%8D%E9%95%B7%E6%95%B4%E6%95%B0

440 名前:419 mailto:sage [2008/08/30(土) 02:03:26 ]
>>421
そうですね。
>>425
部分一致でお願いいたします。
複数件あった場合は何件該当しましたという表記でお願いします。




441 名前:デフォルトの名無しさん [2008/08/30(土) 02:09:15 ]
やっぱりこの手の問題は無理かw

前にあったとか、wwwを探せとか・・・

やっぱり、”10個の整数の和を求めるプログラムを教えて下さい”位がちょうどいいかw

442 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:25:06 ]
>>441
やり方じゃなくてタイプするのが面倒なだけのコードなんて、誰も興味ないだろ。

443 名前:デフォルトの名無しさん [2008/08/30(土) 02:30:50 ]
あたかも、余裕で書けるが面倒なんで書かないといいたいようですねw


444 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:36:57 ]
余裕だなんて、よう言う わ

445 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:37:44 ]
>>443
書けるかどうかじゃなくて、手持ちの教科書に載ってるしな・・・

446 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:39:38 ]
>>445
んじゃ、それを丸々書けば良いだろwwww

447 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:41:55 ]
多倍長整数ってだけで何処までやればいいのか分からないのは俺だけ?
メモリの許す限り無限長までやればいいの?

448 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:42:38 ]
>>446
面白みがなくて、タイプするのが面倒。
最初から言ってるだろ?

449 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:43:05 ]
>>434
何スレか前にintを10進数4桁とみなして計算するようなやつを見た気がするぞ。
加算だか除算だかは覚えてないが。
速度を度外視していいんなら、単純に減算を繰り返すやつを無理矢理クラスに押し込めれば完成。

はい、やる価値無し。次。


450 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:43:47 ]
>>447
整数の除算って言ってるし、100桁とも書いてあるぞ?



451 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:44:12 ]
100桁って書いてたということに今気付いた
正直すまんかった

452 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:44:26 ]
>>447
適当に桁を決められるようにするとか、もちろん、それも
実行している環境が許す範囲内ということにはなるけどね。

>>448
ごちゃごちゃうるせーよ、答える気が無いなら失せろや
昼夜逆転生活の頭のイカれたひきこもり

453 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:44:58 ]
なんか小学生が暴れてるようだな。
あぼーんしとこうぜ。

454 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:45:02 ]
>>452
自己紹介乙

455 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:50:29 ]
>>449
なんで自分の価値観を語ってるの?w
>>1読める?読めない?聖徳(ry

456 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:56:11 ]
1000000000000000000/100000000000000000000とか
こういう計算をするってこと?

457 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 03:02:13 ]
宿題スレの過去ログだと多倍長整数の四則演算は4回以上解かれてるようだ
オレもさすがに二度目は面倒だ

458 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 03:07:52 ]
ttp://www5.airnet.ne.jp/tomy/cpro/longint.htm
ググったら何かあったけど?

>>453
目の前の本を書き写すことも出来ない小学生は寝ろよw

459 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 03:12:04 ]
>>452
問題文も読めないヤツが、ちゃちゃ入れてただけか・・・

460 名前:デフォルトの名無しさん [2008/08/30(土) 03:12:59 ]
ググのは面倒ではないんだW



461 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 03:16:12 ]
やっぱこいつ、本を見ても理解できないからって
必死に自分がやらないことをアピールしてらw
お子ちゃま〜〜とっとと寝ろよ、難しい年頃の厨房w

462 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 03:38:29 ]


> あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。



463 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 04:41:54 ]
>>440
>複数件あった場合は何件該当しましたという表記でお願いします。
件数だけでいいんですか?該当したレコードを選択して表示できたりしないでいいんですか?
もしそうなら、それって検索の意味が全く無いですね。
できるようにする必要があるなら該当レコードへのポインタを配列に入れて検索結果の保存を
したいんですが、配列は使ってはいけないんですよね?
配列を使ってはいけない、という制限は一体何のためにあるんですか?バグを増やすためですか?

464 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 08:02:11 ]
「自分より出来ない奴」を探して馬鹿にしたいガキが迷い込んでたみたいだな。
はやく夏休み終わればいいのに。

465 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 10:19:25 ]
>>463
多分リストとか二分木とかを使えってことじゃないかと

466 名前:47 mailto:sage [2008/08/30(土) 10:48:06 ]
>>48,51
>>73
>>80
皆様方ありがとうございました。
参考にさせて頂いて取り敢えずプログラム作れました。
結果も16通りでました。解説も書けたところで、
これから提出します。
約1月振りに覗いてみたら、数時間で解答が出てたので
びっくりでした。

467 名前: [2008/08/30(土) 11:59:13 ]
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7664.txt
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C言語
[4] 期限:出来れば明日まで
[5] その他の制限:学校で習う程度にライブラリを使用してくれれば有難いです。


口頭で言ったものを文章にしたので上手く伝わっていなかったらすみません。


468 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 13:31:41 ]
>>467
こんな感じでいかがでしょう?
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7665.txt

469 名前: [2008/08/30(土) 14:03:27 ]
>>468

データを追加してファイルを上書きしたあとにsyouhin_1.txtというファイルに綺麗に出力するのですが・・・
そこの部分もお願いしたいのですが。。。


470 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 14:58:44 ]
>>469
修正したよ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7666.txt



471 名前:デフォルトの名無しさん [2008/08/31(日) 12:12:47 ]
[1] 授業単元: マルチメディア・プログラミング
[2] 問題文(含コード&リンク): Windows上で動作するアクションゲームを製作せよ
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: 指定なし
 [3.3] 言語: C++
[4] 期限:2009年4月1日
[5] その他の制限: OpenGL又はDirectXを使うこと

472 名前: [2008/08/31(日) 14:17:14 ]
>>470

ありがとうございました。
たすかりました。

473 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 08:55:56 ]
>>471
プログラムよりモデルデータやモーションデータのほうがキモになるから無理


474 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 09:18:19 ]
1日までってぎりぎりすぎると思ってよく見たら来年の4月か
期限長いな

475 名前:デフォルトの名無しさん [2008/09/01(月) 13:10:01 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 多倍長演算
 100桁以内の整数(10進数)を2つ入力し
 その二つの足し算引き算の結果を表示せよ。
 表示方法は4桁ごとにスペースを入れること。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC++
 [3.3] 言語: C
[4] 期限: 2008年9月4日まで
入力と表示だけは出来ましたが肝心の足し算引き算
の仕方がわかりません。どなたかお願いいたします。
入力と表示だけ書いたソースを一応はっときます。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7674.txt

476 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 13:22:19 ]
>>475
過去スレたどれよ

477 名前:デフォルトの名無しさん [2008/09/01(月) 16:02:49 ]
void _plus(char* a, char* b, int minus_flg){
char* ans = (strlen(a) > strlen(b)) ? a : b;
char* ans_p = ans + ((strlen(a) > strlen(b)) ? strlen(a) : strlen(b)) - 1;
int kuriagari = 0;
for (char *a_p = a + strlen(a) - 1, *b_p = b + strlen(b) - 1; ans_p >= ans; ans_p--){
if (a_p >= a) kuriagari += (*a_p-- - 0x30);
if (b_p >= b) kuriagari += (*b_p-- - 0x30);
*ans_p = 0x30 + kuriagari % 10;
kuriagari /= 10;
}
if (minus_flg) std::cout << '-';
if (kuriagari) std::cout << kuriagari << ans << std::endl;
else std::cout << ans << std::endl;
}

478 名前:デフォルトの名無しさん [2008/09/01(月) 16:03:58 ]
void _minus(char* a, char* b, int minus_flg){
char* ans = (strlen(a) > strlen(b)) ? a : b;
char* ans_p = ans + ((strlen(a) > strlen(b)) ? strlen(a) : strlen(b)) - 1;
int kuriagari = 0;
for (char *a_p = a + strlen(a) - 1, *b_p = b + strlen(b) - 1; ans_p >= ans; ans_p--){
if (a_p >= a) kuriagari += (*a_p-- - 0x30);
if (b_p >= b) kuriagari -= (*b_p-- - 0x30);
*ans_p = 0x30 + (kuriagari + 10) % 10;
if (kuriagari >= 0) kuriagari = 0;
else kuriagari = -1;
}
if (minus_flg) std::cout << '-';
if (!kuriagari) std::cout << ans << std::endl;
else std::cout << ans << std::endl;
}

479 名前:デフォルトの名無しさん [2008/09/01(月) 16:05:02 ]
void plus(char* a, char* b){
if (*b == '-') minus(a, b + 1);
else if (*a == '-') minus(b, a + 1);
else _plus(a, b);
}

void minus(char* a, char* b){
if (*b == '-') plus(a, b + 1);
else if (*a == '-') _plus(a + 1, b, 1);
else if (strlen(a) > strlen(b)) _minus(a, b);
else if (strlen(a) < strlen(b)) _minus(b, a, 1);
else if (strcmp(a, b) >= 0) _minus(a, b);
else _minus(b, a, 1);
}

480 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 16:46:30 ]
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
   10進数の-10を8進数・16進数に変換するプログラムを書きなさい
   配列を使用する場合の要素数は16とする
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: 指定なし
 [3.3] 言語: C
[4] 期限:2008年9月3日
[5] その他の制限: ポインタなどは少し話題に上がった程度の習得状況です

よろしく御願い致します。



481 名前:デフォルトの名無しさん [2008/09/01(月) 16:56:19 ]
int main(void){
char buf[16];
sprintf(buf, "%x", -10);
sprintf(buf, "%o", -10);
}

482 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 17:24:29 ]
>>481
返信、ありがとうございます。
問題の書き方が言葉足らずだったようです。

ttp://www.orchid.co.jp/computer/cschool/bin.html の
上のプログラムのような計算をし、かつ負数を取り扱えるような
ソースを書きたいのです。

483 名前:デフォルトの名無しさん [2008/09/01(月) 17:38:28 ]

int main(void){
int a = -10;
char buf16[16];
memset(buf16, 0x00, 16);
for (int i = 0; i < 15; i++){
buf16[14 - i] = "0123456789abcdef"[a & 0xF];
a >>= 4;
}

a = -10;
char buf8[16];
memset(buf8, 0x00, 16);
for (int i = 0; i < 15; i++){
buf8[14 - i] = "01234567"[a & 0x7];
a >>= 3;
}
}

484 名前:ぱそこん [2008/09/01(月) 18:16:42 ]
1授業単元;C言語
2問題文;抽選プログラム(定員、募集人数をキーボードから入力し、乱数を発生させて数値の重複のないように定員分のランダムな数値を求める。
そして、その発生した数値を昇順と、発生した順にそれぞれ出力する。)

3環境
4OS:widows xp またはLinuxでもok
5期限:できれば明日中(本当に急いでます!)
6その他;flg、do while文は必ず用いる。
     C言語かなりの初心者です。 

485 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 20:33:27 ]
問題文:配列bufferの文字列の中にあるカンマを水平タブに変換して、配列strafterに
格納し表示させよ。
OS:Linux Fedora8
コンパイラ:gcc(バージョン失念。Fedora8のデフォルトのものです。
コメント:エラー吐きまくりで動作しません。助けて下さいorz 
以下、現状のソース
-------------------
#include<stdio.h>
#include<string.h>
int main(void){
char buffer[512]="2000/01/01,9:00:00,AAA BBB CCC";
char repchar[1];
int i;
int buflen;
char strafter[512];
strafter[0]='\0';
repchar[0]='\t';
buflen = strlen(buffer);
printf("文字数 = %d\n",buflen);
printf("Before : %s\n",buffer);

for(i = 0; i < buflen ; i++){
i = i-1;
if(*(buffer+i) == ','){
strcat(strafter,repchar);
}
else{
strcat(strafter,(buffer +i));
}
}
printf("%s\n",strafter);
}

486 名前: ◆O/vs7BIw1Y mailto:sage [2008/09/01(月) 20:50:30 ]
[1] 授業単元:プログラミング
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7679.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008/09/15
[5] その他の制限: 標準ライブラリのみ使用

よろしくおねがいします。

487 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 20:58:08 ]
>>485
repcharが文字列でないからじゃないかな
strcat(strafter,repchar);


面倒なのでこれでいいだろ
#include <stdio.h>

int
main()
{
char buffer[512] = "2000/01/01,9:00:00,AAA BBB CCC";
char strafter[sizeof(buffer)] = {0};

{ int i = 0;
while ( buffer[i] != '\0' ) {
strafter[i] = ( buffer[i] == ',' ) ? '\t' : buffer[i];
++i;
}}

printf("%s\n", strafter);

return 0;
}

488 名前:485 mailto:sage [2008/09/01(月) 21:43:21 ]
>>487さん

ありがとうございます。
こんなやり方でいけるんですね。
C言語本格的に初めて5日目くらいですが,頑張らねばorz

489 名前: [2008/09/01(月) 22:37:27 ]
467のものです。
>>468
>>470
でやってもらったのですが、構造体を使えとさらに指示が出まして…

構造体を使ってやっていただきたいです。
ファイル処理はバイナリではなく、w,r,a,(a+)などでお願いします。



490 名前:抽選プログラム [2008/09/01(月) 22:48:16 ]
[1]授業単元;C言語
[2]問題文;抽選プログラム(定員、募集人数をキーボードから入力し、乱数を発生させて数値の重複のないように定員分のランダムな数値を求める。
そして、その発生した数値を昇順と、発生した順にそれぞれ出力する。)

[3]環境:gcc 
[4]OS:widows xp またはLinuxでもok
[5]期限:できれば明日中(本当に急いでます!)
[6]その他;flg、do while文は必ず用いる。
     C言語かなりの初心者です。 



491 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 23:11:11 ]
「ビンゴ プログラム C言語」くらいでググレ

492 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 23:42:48 ]
>>490
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7681.c
鬱だ死

493 名前:抽選プログラム [2008/09/02(火) 00:14:50 ]
492さんありがとうございます!!
よかったらプログラムに書いてあるコメントを日本語で書いていただけないでしょうか汗
英語分からないんです涙

494 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 00:22:02 ]
辞書引けよ・・・

495 名前:ロベ mailto:sage [2008/09/02(火) 09:33:09 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
インテルHEX形式をモトローラSレコード形式に変換するプログラムを作成しなさい
〜条件〜
・通常の形式はS1レコードに変換する
・セグメントアドレスがあった場合はS2レコードに変換する
・拡張リニアアドレスがあった場合はS3レコードに変換する
・途中でセグメント/リニアアドレスが出てくる場合でも、最初からS2/S3レコードで出力すること(S1〜S3の混合はNG)
・セグメント/リニアアドレス両方あった場合は、S3レコードとする
・スタートアドレスは考慮しなくてもよいものとする
・S0(スタートレコード)は出力しなくてもかまわない
・S4〜S6は今回考慮しなくてもよい
・プログラム中でポインタを必ず使用すること
・ソース内にはコメントを表記すること
[3] 環境
 [3.1] OS:Windows
 [3.2] borland
 [3.3] 言語:C言語
[4] 期限:9月4日0:00まで
[5] その他の制限:特になし

よろしくお願いします

496 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 10:02:19 ]
あまりに難易度が高くてまったく分からない!

497 名前:デフォルトの名無しさん [2008/09/02(火) 10:37:37 ]
出てくる単語が分からないだけじゃない?
別に難易度高くないから調べてみたら?勉強になるし。

498 名前:デフォルトの名無しさん [2008/09/02(火) 11:57:01 ]
[1] 授業単元: 応用数学
[2] 問題文(含コード&リンク): 入力された関数を微分するプログラムを作れ
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年9月10日まで

---実行例(<>内は入力)--
enter equation> <3x^4 + sin(x)^2>
derivative is
12x^3 + sin(2x)
------------------

高次項・三角関数・合成関数に対応させるのが条件です

499 名前:デフォルトの名無しさん [2008/09/02(火) 21:32:48 ]
[1] テキストからファイル出力でログインの認証システムを作る課題です。
ログイン後はユーザの新規登録・削除・変更、一覧と紹介(絞込み)が可能なもの。
@ユーザID/パスワード入力
Aユーザテーブルチェック・エラー処理・メニュー処理へ
【出力画面】
Uidを入力してください
○○
Pwdを入力してください
○○

Uid: ○○
Pwd: ○○
担当者: ○○
会社コード: ○○
アクセス区分: ○○
e-mail: ○○

1.照会(絞込み) 2.一覧 3.新規、変更、削除 4.ログアウト

終了しますか? (y,n)
【テキストの内容】
会社コード 担当者   ユーザID アクセス区分 e-mail
001   山田 太郎 u001   1    yamada@co.jp
002   山田 花子 u002   2    hanako@co.jp
003   田中 次郎 u003   3    tanaka@co.jp
というようなプログラムにします。
頑張りましたがどうしても無理でした。。
申し訳ないですが、どうかよろしくお願いしますm(__)m
 [2.1] OS:WindowsXp
 [2.2] Visial C++
 [2.3] 言語: C++
[3] 期限:2008年9月3日

500 名前:デフォルトの名無しさん [2008/09/03(水) 00:23:04 ]
>499

ひまなので

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace baka1
{
class Program
{
static string[,] users = {
{"uid1", "pwd1","諡蠖楢蜷","莨夂、セ繧ウ繝シ繝牙錐","繧「繧ッ繧サ繧ケ蛹コ蛻蜷","繧√k縺ゅ←"},
{"uid1", "pwd1","諡蠖楢蜷","莨夂、セ繧ウ繝シ繝牙錐","繧「繧ッ繧サ繧ケ蛹コ蛻蜷","繧√k縺ゅ←"},
};

static void Main(string[] args)
{
for (int i = 0; i < users.Length; i++)
{
if (users[i, 0] == args[0] && users[i, 1] == args[1])
{
Console.WriteLine("user驟榊励ョi逡ェ逶ョ繧偵励Μ繝ウ繝");
}
}
}
}
}





501 名前:デフォルトの名無しさん [2008/09/03(水) 00:24:20 ]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace baka1
{
class Program
{
static string[,] users = {
{"uid1", "pwd1","担当者名","会社コード名","アクセス区分名","めるあど"},
{"uid1", "pwd1","担当者名","会社コード名","アクセス区分名","めるあど"},
};

static void Main(string[] args)
{
for (int i = 0; i < users.Length; i++)
{
if (users[i, 0] == args[0] && users[i, 1] == args[1])
{
Console.WriteLine("user配列のi番目をプリント");
}
}
}
}
}


502 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 00:37:15 ]
>>500>>501
コラw

503 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 09:51:54 ]
そのままコピペするとUTF-8になっちゃうことあるよなw

504 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 17:34:53 ]
ここってプログラムに関する質問じゃなくて、プログラムを作ってもらうのってありですか?

505 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 17:38:27 ]
>>504
高いよ

506 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 17:43:19 ]
宿題スレで聞いてるってことは宿題か?
このスレずっとさかのぼってみてみるといい。

507 名前:デフォルトの名無しさん [2008/09/03(水) 17:56:44 ]
誰か>>499を答えて下さる方いませんでしょうか?
他力本願で情けないのですが今の僕のレベルではお手上げ状態です(>_<)

508 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 18:42:40 ]
お手上げなら正直に単位落とせばいいのに…

509 名前:デフォルトの名無しさん [2008/09/03(水) 19:37:34 ]
>>508
それはできません(>_<)どうか本当にお願いします(>_<)

510 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 20:12:17 ]
>>509
マジレスすると、その機能を無料で作ってくださいとかありえない。




511 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 20:28:16 ]
>>509
そうですか…。自力で作るしか方法は無いのですね。
わかりました、ご指摘いただいてありがとうございましたm(__)m


512 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 20:33:20 ]
.

513 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 22:46:57 ]
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7683.txt
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:Borland
 [3.3] 言語:C言語
[4] 期限:日付変更辺りまで

どうか宜しくお願いします。

514 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 23:02:30 ]
>>513
#include <stdio.h>
#include <math.h>

int main(void)
{
FILE *fp_in, *fp_out;
char *filename_in="louise.dat", *filename_out="site.dat";
int x;

if((fp_in=fopen(filename_in, "r"))==NULL) return 1;
if((fp_out=fopen(filename_out, "w"))==NULL) return 2;
while(fscanf(fp_in, "%d", &x)==1)
{
fprintf(fp_out, "%f\n", sqrt(x));
}
fclose(fp_in);
fclose(fp_out);

return 0;
}

515 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 23:27:08 ]
>>514
回答ありがとうございます。

ですが()を2重にしたり、NULLやreturn 0;以外のreturnの使い方を習っておりません・・・。
他にどんな書き方があるか聞いても良いでしょうか?

516 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 23:32:39 ]
>>515
if((fp_in=fopen(filename_in, "r"))==NULL) return 1;

fp_in=fopen(filename_in, "r");
if(fp_in==NULL) return 0;

517 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 23:44:50 ]
>>516
ほう・・・カッコを外すと1が0になるのか・・・

518 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 23:52:07 ]
return 0; 以外使えないなら仕方ない

519 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 01:48:04 ]
>>517
揚げ足とることに必死で515をちゃんと読めてないw

520 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 07:47:02 ]
if(fp_in==NULL) return 0;

if(!fp_in) return 0;




521 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 09:52:49 ]
>>520
なぜわざわざ可読性を下げる?


522 名前:デフォルトの名無しさん [2008/09/04(木) 10:00:03 ]
加毒性いうほどのもんじゃない

523 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 10:01:27 ]
522は大規模な開発したことないんだな


524 名前:デフォルトの名無しさん [2008/09/04(木) 11:50:53 ]
慣用句とか知ってる?

525 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 12:05:34 ]
それで可読性下がるなんて経験値低すぎる。
うちのコーディング規約でもif (!hoge)だし。

526 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 12:17:11 ]
仕事なんかでは統一されていれば問題無いと思うが、
このスレは経験値低すぎる人が質問するスレだから不適切だな

527 名前:520 mailto:sage [2008/09/04(木) 12:18:41 ]
>>521
>>515でNULLの使い方を習ってないと書いてたのでこうしました

528 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 12:22:51 ]
次は!を習ってないと言われるわけですね

529 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 15:53:06 ]
もう0で良いよ0で

530 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 17:38:15 ]
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):URLの“第12回目”の中にある一番下(課題1)の
  問題。 URL→al.cm.is.nagoya-u.ac.jp/~takao/toho/2008/
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 9月5日16時まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 関数とかは習っていません。

どうか宜しくお願いします(><)



531 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 17:42:39 ]
>>530
面倒でも問題はテキストに起こそうぜ。
君の大学がばれるぞ。
で、JAVA???

532 名前:530 mailto:sage [2008/09/04(木) 18:00:18 ]
>>531
分かりました。

533 名前:530 mailto:sage [2008/09/04(木) 18:16:59 ]
連続スミマセン。
>>531
Javaです。

534 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 18:24:00 ]
>>533
スレタイ読んで来ような。

ほしいのはこっちだろ?
pc11.2ch.net/test/read.cgi/tech/1212085079/

535 名前:533 mailto:sage [2008/09/04(木) 18:37:51 ]
>>534
すみません。わざわざ誘導してもらって…失礼します

536 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 19:49:48 ]
旧帝大でこれかよ…

537 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:32:13 ]
七帝の中でも名古屋はおみそみたいなもんだからw

538 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 01:06:40 ]
こんなアフォをみると日本の将来が本当に不安になるな。
教授に怒られることもできない。匿名の2CHでこそっと聞いて。ちなみにJava板で解答げっとしてたよ、こいつ

539 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 01:08:06 ]
何騙されてんだ、そこはFランだ

540 名前:504 mailto:sage [2008/09/05(金) 01:16:42 ]
>>506
亀レスすみません

宿題なんですけど、問題を解くのではなくてプログラムを作る宿題なんです…

ちょっと1から読んで来ます(;´Д`)



541 名前:デフォルトの名無しさん [2008/09/05(金) 04:49:32 ]
3問ありますがよろしくお願いします。

[1] 授業単元:C言語
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7688.txt


[3] 環境
 [3.1] OS: (Windows vista)
 [3.2] コンパイラ名とバージョン: (Visual Studio 2005)
 [3.3] 言語: C言語
[4] 期限: (来週まで)
[5] その他の制限: (ポインタの最初の段階まで習っています)


542 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 09:50:32 ]
>>541 問1 こんな感じか?問2の意図がよくわからないが

#include <stdio.h>

void copy(char *from, char *to);

int main()
{
char a[8] = "America";
char b[8];

copy(a,b);

printf("a:%s\n",a);
printf("b:%s\n",b);

return 0;
}

void copy(char *from, char *to)
{
for(int i=0;*(from+i) != NULL;i++)
*(to+i) = *(from+i);
}


543 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 09:51:50 ]
>>541
問1
#include <stdio.h>
int main(void)
{
char str1[7]="America";
char str2[7];
char *p1,*p2;
p1=str1;
p2=str2;
while(*p1)
*p2++=*p1++;
printf(str2);
return 0;
}


544 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 09:53:01 ]
>>541
問2
#include <stdio.h>

int main(void)
{
char str[5]="abcde";
char *p;

p=str;

while(*p)
putchar(*p++);

return 0;
}

545 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 09:54:17 ]
>>541
問3
#include <stdio.h>
#include <string.h>
int main(void)
{
char str1[6]="France";
char str2[6];
char *p1,*p2;
int i;
p1=str1;
p2=str2;
/* p1を'\0'の位置まで移動させる */
while(*p1)
p1++;
/* 今'\0'にいるため1つ前の'e'まで戻す */
p1--;

i=strlen(str1);
for(;i;i--)
*p2++ = *p1--;
printf(str2);
return 0;
}

546 名前:543-545 mailto:sage [2008/09/05(金) 10:02:47 ]
'\0'のこと考えるの忘れてたぜ orz

547 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 10:14:30 ]
>>546
よくあることだぜ。
むしろ、普通は数字直接入力なんてしないからな。

548 名前:デフォルトの名無しさん [2008/09/05(金) 16:36:09 ]
>>542
>>543
>>544
>>545

助かります♪
ありがとうございました。

549 名前:デフォルトの名無しさん [2008/09/08(月) 13:10:28 ]
[1] 授業単元:確率・統計
[2] 問題文(含コード&リンク):
AさんとBさんが順番にコインを投げる
ただし、AさんとBさんはそれぞれp, qの確率で表を出すことができるとする。
ここで、Aさんならm回、Bさんならn回先に表を出したら勝ちとする勝負をした場合
Aさんが勝つ確率を求める関数を作成しなさい。
ただし関数は以下のプロトタイプ宣言に従うこと。
double odds(double p, double q, int m, int n);
[3] 環境
 [3.1] OS: Windows + Cygwin
 [3.2] コンパイラ名とバージョン: gcc 3.4.4
 [3.3] 言語: C
[4] 期限: 2008年09月08日11:59まで
[5] その他の制限:特にありませんが、アルゴリズムや考え方についての解説があると助かります。
よろしくお願いします。


550 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 14:52:44 ]
>>549
数学の問題じゃねーか
数式よろ



551 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 15:27:46 ]
#include <iostream>
#include <stdexception>

double odds(double p, double q, int m, int n) {
// Aが表を m 回出すまでの確率
double a = ( double )m / p;
// Bが表を n 回出すまでの確率
double b = ( double )n / q;
// AのBに対する勝率
// ただし、AはBよりも1回分余計に振るチャンスがある
return a / b + 1 / a; }

int main(){
using namespace std;
double p( 0 ), q( 0 );
int m( 0 ), n( 0 );
cout << "入力が必要です、例えばAとBが表を出す確率:";
cin >> p, q;
if ( p =< 0.0 || q =< 0.0 || p > 1.0 || q > 1.0 ) { throw domain_error( "ちょ、おまw" ); }
cout << "おまえが入力せよ、つまりAとBが表を出す回数:";
cin >> m, n;
if ( m =< 0 || n =< 0 ) { throw domain_error( "ちょ、おまw" ); }
cout << "AのBに対する勝率は・・・" << odds( m, n ) << endl;
return false; }

552 名前:デフォルトの名無しさん [2008/09/08(月) 17:33:15 ]
>>551
ちょ、おまw

553 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 18:04:00 ]
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7697.zip
[3] 環境
 [3.1] OS: WinXP SP3/Vista SP1
 [3.2] コンパイラ名とバージョン: Borland
 [3.3] 言語: C
[4] 期限: 明日9日 午前6時頃まで
[5] その他の制限:
課題番号の大きい順、6>5>4>3に優先して希望

出かけてる間に母親が親戚の子に勝手に俺のラップトップを貸した上、
明日の登校日に提出する課題の入ったUSBを吹っ飛ばされました…orz
復元作業とはいえ間に合うか不安なのでお願いします

554 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 18:45:22 ]
まさに丸投げ

555 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 20:45:43 ]
ハードディスクにないの?

556 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 20:51:10 ]
>>553
やらせようとしている内容は察しがつくが
問題文が気持ち悪いな

表現のゆらぎが尋常じゃない。統一しろよと


557 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 20:52:58 ]
>>551
脳が溶けた

558 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:35:46 ]
>>553
親戚の子も母も許してやれよ?
その寛大な気持ちが、将来のお前の資産になる。
あぁ、母親はやらせくれるだろうし、親戚の子はお前を大切に育ててくれるのだから。

559 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:36:38 ]
>>558
イミフ

560 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:41:33 ]
IMF

読み:イミフ



561 名前:553 mailto:sage [2008/09/08(月) 22:11:40 ]
>>554
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7699.txt
1と2を終わらせて3に入ったものの、この有様で…。
USB吹っ飛ばされたショックで焦りすぎました、夜風にあたって頭冷やしてきます。

>>555
USB内で完結させてしまったのが敗因でした。
やり直しから大人しくHDDで作業→USBでコピー、の形を取ることにしました。

562 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:21:00 ]
>>561
頑張ってコメントを書いているようだが内容が的外れ
最初は誰でもそんなもんだろうけど

563 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:23:57 ]
そういえば、コメントってどういうことをどういう風に核のかっていう教則本みたいなのはみたことないな。
一応、先頭にプログラムの目的と製作日付、製作者の魔羅サイズは記入するようにしているけど・・・

564 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:30:24 ]
>>563
標準時?最大時?現在時?

565 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:49:25 ]
>>561
・ループから抜けるにはbreakを使うとよい
・一致文字列チェックでp[j]をみてるが、高頻度で見てはいけないところを
 みるようになっている。それを防ぐために、配列pの各要素をNULLで初期化
 しておいて、NULLじゃないところだけ一致チェックをするとよい
・一致した文字に対応する文字列件数を加算 の処理がcnt[n]++;
 となっているが、cnt[j]++;では?

566 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:51:11 ]
そんなことなかった。nで数チェックしてるのね。
みてはいけないとこはみてなさそうだった。ごめん。

567 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:57:21 ]
printで状況を見る努力もしてるし、コメントもあながち的はずれではないし。
いい感じと思うけどなぁ。

丸投げして自分の考えと全く異なるコードを提出するより
可能ならばもう一回作って提出できる方がいいなと思う。
その途中で過去の自分のコードを改善できることもあるし。
別に丸投げが悪いといってるわけではなくて、時間があれば
そういうこと(作り直し)をしてみたらいいんじゃない?程度。

568 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:57:45 ]
>>561
データ復旧させたほうが早いかも
がんばれ!

569 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 23:59:34 ]
>>549
double odds(double p, double q, int m, int n)
{
if(m==0) return 1.0;
if(n==0) return 0.0;
return ( p*q*odds(p,q,m-1,n-1) + p*(1-q)*odds(p,q,m-1,n) + (1-p)*q*odds(p,q,m,n-1) ) / (p+q-p*q);
}
//
// F(m,n) = p*q*F(m-1,n-1) +p*(1-q)*F(m-1,n) +(1-p)*q*F(m-1,n) +(1-p)*(1-q)*F(m,n)
// 上の式を、F(m,n) について解く
//


570 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 01:39:52 ]
>>553
課題6だけ。
出力と、main()のループを抜けるロジックがアレだけど、
眠いんでそっちで調整して。

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



571 名前:デフォルトの名無しさん [2008/09/09(火) 02:34:31 ]
[1] 授業単元:ファイル出入力
[2] 問題文(含コード&リンク):
複数の人の名前と体重、身長を質問してローレル指数を計算して
「名前、体重、身長、ローレル指数、やせすぎ(または丁度良いなど)」
をファイルに保存しなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限: 2008/09/9(am.7)
[5] その他の制限:特になし
自分でやってみたのですが分かりません。急ですみませんがよろしくお願いします。

#include <stdio.h>
int main(void)
{
int p,n,w,h,r;
FILE *fp1;
fp1 = fopen("c:\\file.dat","w");
printf("人数を入力してください。:");
scanf("%d",&p);


572 名前:デフォルトの名無しさん [2008/09/09(火) 02:36:07 ]
for(;p>0;p--){
printf("名前を入力してください。:");
scanf("%s",&n);
fprintf(fp1,"%d\n",n);
printf("体重を入力してください。(kg):");
scanf("%d",&w);
fprintf(fp1,"%d\n",w);
printf("身長を入力してください。(cm):");
scanf("%d",&h);
fprintf(fp1,"%d\n",h);
r=w/(h*h*h)*1.0E7;
fprintf(fp1,"%d\n",r);
if (r<100){
printf("やせすぎです。\n");
fprintf(fp1,"やせすぎ\n"); }
else if(r>=100 && r<115){
printf("やせている。\n");
fprintf(fp1,"やせている\n"); }
else if(r>=115 && r<145){
printf("丁度良いです。\n");
fprintf(fp1,"丁度良い\n"); }
else if(r>=145 && r<160){
printf("太っています。\n");
fprintf(fp1,"太っている\n"); }
else {
printf("太りすぎです。\n");
fprintf(fp1,"太りすぎ\n"); }
}
fclose(fp1);
return 0;
}

573 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 06:19:46 ]
>>572
何が分からんのか分からんのだが。

> printf("名前を入力してください。:");
> scanf("%s",&n);
> fprintf(fp1,"%d\n",n);
↑の fprintf(fp1,"%d\n",n); は fprintf(fp1, "%s\n",n); だべ。
後、名前って文字列だよな?なんで int 型の変数に入れようとしてんの?だったら例えば

char s[64];
scanf("%s", s);
fprintf(fp1, "%d\n", s);

こうだな。
後、
> r=w/(h*h*h)*1.0E7;
もおかしい。r は float や double で定義せんと小数点使えん。
後、整数型を直接割り算しても0にしかならん。

ならば
身長、体重も小数点扱える型で定義するか、キャストしてから割り算せい。


574 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 06:29:06 ]
まとめ

> int p,n,w,h,r;
char n[64];
int p;
float n, w, h, r;

> scanf("%s",&n);
> fprintf(fp1,"%d\n",n);
scanf("%s", n);
fprintf(fp1, "%s\n", n);

> scanf("%d", &w);
> fprintf(fp1, "%d\n", w);
scanf("%f",&w);
fprintf(fp1, "%f\n", w);

> scanf("%d",&h);
> fprintf(fp1,"%d\n",h);
scanf("%f", &h);
fprintf(fp1, "%f\n", h);

> r=w/(h*h*h)*1.0E7;
> fprintf(fp1,"%d\n",r);
r = w / (h * h * h ) * 1000000;
fprintf(fp1, "%f\n", r);

とりあえずこれで。

575 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 06:47:11 ]
訂正
 > 後、整数型を直接割り算しても0にしかならん。
整数の部分しか持って来ないってことね。
int i = 3 / 2;
ってやったら、i は 1 になる。

後、fprintf で小数点以下を書き込みたくないのなら、
 > fprintf(fp1, "%f\n", w);
fprintf(fp1, "%0.0f\n", w);
にすると小数点以下を無くして書き込む。

576 名前:デフォルトの名無しさん [2008/09/09(火) 14:00:24 ]
いいかげん>>569に誰か突っ込めよ

577 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:04:48 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7703.zip
[3] 環境
 [3.1] Windows XP
 [3.2] gcc
 [3.3] C
[4] 期限:2008/9/12
[5] xlsファイルでシートごとに問題が分かれています。よろしくお願いします。

578 名前:デフォルトの名無しさん [2008/09/09(火) 16:23:52 ]
#include <stdio.h>
unsigned str_length(const char str[])
{
unsigned len = 0;
while (str[len])
len++;
return (len);
}
void str_rev(const char str[]){
unsigned i = str_length(str);
while(i>0)
printf("%c",str[--i]);
}
int main(void)
{
char str[100];
printf("文字列を入力してください:");
scanf("%s", str);
printf("入力した文字列は%sです。\n長さは%uです。\n", str, str_length(str));
printf("文字列を逆から表示→");
str_rev(str);
printf("\n");
return (0);
}

ポインタを使って文字列を逆から表示させる課題があるのですが、
上のプログラムのどこを変更すればポインタを使ったプログラムになるでしょうか?
よろしくお願いします。


579 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:38:12 ]
>>578
>>541
過去スレ全部とは言わない。
せめてこのスレ位読んできて。

580 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 19:23:13 ]
>>576
ツッコミの手本を見せてください><



581 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 22:41:15 ]
>>577
丸投げかよ

582 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 23:17:10 ]
>>577
問題1
#include <stdio.h>
#define CONST_NUM ( -2007110825 ) /*( 314159265 )*/
const int number = CONST_NUM;
char str_decimal[16];
char str_hex[16];
char str_octal[16];
char str_binary[40];
const char * bin_table[] = {
"0000", "0001", "0010", "0011",
"0100", "0101", "0110", "0111",
"1000", "1001", "1010", "1011",
"1100", "1101", "1110", "1111",
};
int main()
{
int i = 0;
int l = 0;
sprintf( str_decimal, "%d", number );
sprintf( str_hex, "0x%x", number );
sprintf( str_octal, "0%o", number );
l = sprintf( str_binary, "0b" );
for ( i = 28; i >= 0; i -= 4 ) {
l += sprintf( str_binary + l, "%s", bin_table[( number >> i ) & 0x0f] );
}
printf( "decimal:%s\n", str_decimal );
printf( " hex:%s\n", str_hex );
printf( " octal:%s\n", str_octal );
printf( " binary:%s\n", str_binary );
}

583 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 23:35:36 ]
>>577
問題2
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7706.zip

584 名前:583 mailto:sage [2008/09/09(火) 23:40:08 ]
微妙に読み間違っていた。
・typedefを消去
・string1 s1を消去
・strign2 s2を消去
・s1,s2をそれぞれstring1、string2に置換

585 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 01:06:41 ]
>>578
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7707.lzh

586 名前:デフォルトの名無しさん [2008/09/10(水) 16:51:46 ]
すいません。またお願いします。

[1] 授業単元:C言語
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7708.txt


[3] 環境
 [3.1] OS: (Windows vista)
 [3.2] コンパイラ名とバージョン: (Visual Studio 2005)
 [3.3] 言語: C言語
[4] 期限: (来週まで)
[5] その他の制限: (ポインタの最初の段階まで習っています)

587 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 17:26:11 ]
>>586
>>542以下じゃないのか?

588 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:50:24 ]
>>586
問1

#include <stdio.h>
#include <string.h>
int main(void)
{
char *p="Japan";
int i;
i=strlen(p);
i-=1;
for(;i>=0;i--)
putchar(*(p+i));
return 0;
}

589 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:51:30 ]
>>586
問2
#include <stdio.h>
#include <string.h>
int main(void)
{
char *p="pointer test program";
char save[256];
strcpy(save,p);
printf(save);
return 0;
}

590 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:52:16 ]
>>586
問3
#include <stdio.h>
int main(void)
{
char *day_p[ ]={
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Fraiday",
"Saturday",
NULL
};
int i;
for(i=0;day_p[i];i++)
printf("%s\n",day_p[i]);
return 0;
}



591 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:54:14 ]
>>586
問4
#include <stdio.h>
int main(void)
{
char *day_p[ ]={
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Fraiday",
"Saturday",
NULL
};
int i;
for(i=0; *(day_p+i); i++)
printf("%s\n",*(day_p+i));
return 0;
}


592 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 23:33:43 ]
>>586
問4別解
#include <stdio.h>
int main(void)
{
char *day_p[ ]={
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Fraiday",
"Saturday",
NULL
};
char **p;

for (p=day_p; *p; p++) {
printf("%s\n", *p);
}

return 0;
}

593 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 23:35:29 ]
>>589
- printf(save);
+ printf("%s", save);


594 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 23:37:13 ]
>>578
- unsigned str_length(const char str[])
+ unsigned str_length(const char *str)

- void str_rev(const char str[]){
+ void str_rev(const char *str){

595 名前:デフォルトの名無しさん [2008/09/11(木) 05:17:31 ]
[1] 授業単元:C/C++(最小ファイルサイズを目指せ!!)
[2] 問題文(含コード):
int型のsin,cosテーブルを"sincos.cpp"というファイル名で出力
コード:main.c<とりあえずココまで短くなりました>
float sin();f;i;main(){for(f=fopen("sincos.cpp","w");i<450;i++)fprintf(f,
"%c%6d,%s",i%10?32:9,(int)(sin(i*3.141592653589793/180)*65536),i%10<9?"":
"\n");fclose(f);}
これより短くせよ。但し、出力結果は同じになるように。
[3] 環境
 [3.1] Windows
 [3.2] VisualStudio2005
 [3.3] C/C++どちらでも可
※スレ違いだったらゴメンなさい

596 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 05:36:16 ]
7行スレでやるといいよ

597 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 12:59:59 ]
とりあえずfcloseいらなくね?

598 名前:y [2008/09/11(木) 14:51:28 ]
文字列(数字のみ)で構成されているファイルを読み込んで
文字列を数値に変換して並び替えを行うプログラムを作っているんですけど
文字列を数値に変換をして並び替えを行った結果、
先頭の数字0がなくなった状態で並び替えがされていました。
先頭の数字0がなくならない状態で並び替えを行う方法を教えてください。
お願いします。

例)
先頭の数字0がなくならない並び替え

並び替え前    並び替え後  
00159    0101
130   →  130 
0101     00159

先頭数字0がなくなった並び替え

並び替え前    並び替え後
00159    101
130   →  130 
0101     159




599 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 15:04:37 ]
>>598
文字列と数値の構造体にして数値でソートして文字列を表示

600 名前:y [2008/09/11(木) 15:19:06 ]
文字列と数値の構造体にして数値でソートして文字列を表示
するとはなんですか?
プログラムにするとどうなりますか?
教えてください。



601 名前:デフォルトの名無しさん [2008/09/11(木) 15:25:52 ]
C言語なら俺に聞け(入門編)で詳しく解説されている。

602 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 15:30:30 ]
>>600
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char moji[32];
int suu;
} NUM;
int compare(const NUM *a, const NUM *b)
{
return a->suu - b->suu;
}
int main(void)
{
NUM num[3] = {"00159", 0, "130", 0, "0101", 0};
int i;
for (i = 0; i < 3; i++) {
num[i].suu = atoi(num[i].moji);
}
qsort(num, 3, sizeof(NUM), (int (*)(const void*, const void*))compare);
for (i = 0; i < 3; i++) {
printf("num%d=%s\n", i, num[i].moji);
}
return 0;
}

603 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 19:55:20 ]
>>595
う〜ん、直値は見なかったことにしよう
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7710.c

604 名前:デフォルトの名無しさん [2008/09/12(金) 11:54:51 ]
>>598
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7713.txt

605 名前:604 mailto:sage [2008/09/12(金) 12:02:29 ]
fcloseすんの忘れてた。
あと、data.txtの内容は整数限定で
10桁以上の数値に関しては無しの方向で

606 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 12:10:08 ]
>>604
ポインタの配列で出来るのに何でわざわざ構造体にしてんの?(numdataとか要らないし)
strotol(atoi)で出来るのに何でわざわざToNumDataとか作ってんの?
なんでそんなど素人の分際で人に教えようとしてんの?


607 名前:604 mailto:sage [2008/09/12(金) 12:12:55 ]
>>606
文句言うならお前が手本を示せ。
ソースも書かずに何言ってるんだか。

608 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 12:14:52 ]
まあでもこのくらいじゃないと、どっかで手本丸写ししたってバレちゃうかもしれんし。

609 名前:604 mailto:sage [2008/09/12(金) 12:16:23 ]
607は俺じゃないよ

610 名前:606 mailto:sage [2008/09/12(金) 12:27:54 ]
ほれ。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7714.txt

○2度読みする必要なし。
○構造体もイラネ。
○ToNumDataってatoiでいいじゃん。
○malloc+strcpyってstrdupでいいじゃん。
○比較関数はローカルなんだからstaticつけろよ。
○比較関数の引数宣言が変だったから直しといた。
○関数はトップダウン順に(main→cmp)書いた方が見やすい。プロトタイプ宣言を惜しむな。
○こういうツールはホントはstdinから読むべきなんだけど、data.txtから読みたいみたいだから尊重しといたぞw




611 名前:604 mailto:sage [2008/09/12(金) 13:46:18 ]
>>610
strdupって知りませんでした
staticも付けるべきでした
その他何かと勉強になりました
猛省します

612 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 15:17:18 ]
よーし>>610にイチャモンを付けまくるぞー

strdupはC言語標準の関数じゃないし。
いちいちC言語の規格を無視する理由になる程便利でもないし。
使わないほうがよくね?

あとreallocの結果がNULLの時にメモリリークしてるぜ。

printf(buffer[i])は文字列の中に%があると
破綻するからデータに%しかなくても使うのはよくないprintf("%s",...)にしなさい。

それに比較関数のポインタをキャストするのはよくない。
関数ポインタのキャストは動作するか保障されてない。
素直に比較関数の中でvoid*をキャストしろ。

比較関数で減算使ってるけど、
値がでかいとオーバーフローとかアンダーフローする可能性がある。
素直に比較しろ。


613 名前:デフォルトの名無しさん [2008/09/12(金) 15:47:46 ]
1] 授業単元: 情報
[2] 問題文(含コード&リンク): 2点の座標A(a,b),B(c,d)を与えたとき
1.ABの距離を求めよ
2. ABを通る直線の方程式を求めよ
3. 2で求めた方程式がx=1,y=1,y=xと交点を持つかどうか調べ持つならその交点の座標を
持たないならNoと返すプログラムを作成せよ
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:C
[4] 期限: 2008年9月12日23時59分
[5] その他の制限:特にないです。

よろしくお願いします。

614 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 15:52:49 ]
>>612
こんなうるさい奴と仕事したくない・・・・

615 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 16:01:35 ]
>>614
ていうか仕事だともっと細かく突付くよ。
潰せる問題点はできる限り早めに潰したほうが望ましいし。

イチャモン付けるだけもなんなので自分も書いてみた。
もう面倒だし、これでよくね?
色々と無視してるけど。

char s[256][256];
f(char*a,char*b){return atoi(b)-atoi(a);}
main(){
    int i=0;
    while(gets(s[i]))++i;
    qsort(s,256,256,f);
    while(i--)puts(s[i]);
}

よい子の皆はこのコードは悲惨なので真似しないでねー

616 名前:デフォルトの名無しさん [2008/09/12(金) 18:22:02 ]
>>613
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7717.txt
座標は整数で入力するようにした。
3番目の問題はよくわかんなかったので解いてません。

617 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 18:35:09 ]
[1] 授業単元: C言語基本
[2] 問題文(含コード&リンク):
  文字判定でスペースが入力されたら 「空白です」 と表示させたい
[3] 環境
 [3.1] OS: Windows
 [3.2] VC6.0
 [3.3] 言語: C
[4] 期限: 無期限

618 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 19:45:47 ]
コンパイルするとエラーメッセージが出てきてしまいます><
手直ししていただけませんでしょうか?

[1] 授業単元: コンピュータープログラミングT
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7718.txt
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: Borland C++ Compiler5.5
 [3.3] 言語:C++
[4] 期限: 2008.9.12(24:00)


619 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 20:07:16 ]
>>618
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7719.cpp

620 名前:デフォルトの名無しさん [2008/09/12(金) 20:20:23 ]
>>618
void You::Attack()をint You::Attack()に(宣言もint Attack()に訂正)
int You::Attack()の最後にreturn a;
void Shishou::Attacked(int SAttacked)内のaを全てSAttackedに



621 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 20:36:02 ]
>>610
>>620
レスありがとです><
こんな簡単なことに時間を割いてもらって大変申し訳なかったです
でもおかげで助かりました!どうもありがとう!

622 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 20:42:17 ]
ここって、シュミのプログラマーしかいないんじゃね?
Cなんてばぐったら致命的な損害及ぼすFA、医療、航空などにつかわれてっから
あめーもんじゃーねーぞ。

623 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 20:55:03 ]
>>622
どこをみてそういったの?

624 名前:613 mailto:sage [2008/09/12(金) 21:07:53 ]
>>616
お礼おくれてすみません
ありがとうござました!

どなたか3番も解ける方いないでしょうか・・・

625 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 21:34:02 ]
>>624
puts("y=1と交点を持つか");
if (A.y == B.y) {
puts("No");
}
else {
printf("交点 %.3lf,1 \n", (1-h)/slop);
}
puts("x=1と交点を持つか");
if (A.x == B.x) {
puts("No");
}
else {
printf("交点 1,%.3lf \n", slop + h);
}
puts("y=xと交点を持つか");
if (slop == 1) {
puts("No");
}
else {
printf("交点 %.3lf,%.3lf \n", h/(1-slop), h/(1-slop));
}

626 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 21:59:38 ]
質問です。
    msg.data[0] = 0xE0;
msg.data[1] = 0x07;
msg.data[2] = 0x00;
msg.data[3] = 0x00;
msg.data[4] = 0x07;
msg.data[5] = 0xAD;
msg.data[6] = 0xA9;
msg.data[7] = 0xD7;
//msg.dataはUCHAR型配列です
このコードの0x○○の部分をchar型配列のIDという変数からmsg.dataに
格納するように変更したいです。
わかりにくいんですが、今IDにはE007000007ADA9D7というのが格納されています。
上記のコードを
    msg.data[0] = ID[0];
msg.data[1] = ID[1];
msg.data[2] = ID[2];
msg.data[3] = ID[3];
msg.data[4] = ID[4];
msg.data[5] = ID[5];
msg.data[6] = ID[6];
msg.data[7] = ID[7];
で出来るのかな、と思いましたが余裕で無理でした。
どなたか方法を知っていればお願いします。

627 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 22:03:03 ]
strtol様の出番だな。
というわけで後は誰か任せた。

628 名前:626 mailto:sage [2008/09/12(金) 22:04:36 ]
>>627
strtol?
今調べてみます。
ありがとうございます。

629 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 22:12:51 ]
>>627
strtolでもいいけどNUL文字を自分で入れないと駄目ジャン。
むしろsscanfのほうが使いやすいんじゃない?

630 名前:626 mailto:sage [2008/09/12(金) 22:18:31 ]
今、試してるんですがいまいち要領がつかめません。
どなたかちょろっと書いてくださると助かるんですが・・・。



631 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 22:33:59 ]
#include <string.h>

unsigned char ID[8] =
{
0xE0 , 0x07 , 0x00 , 0x00 , 0x07 , 0xAD , 0xA9 , 0xD7
};
struct msg_t
{
unsigned char data[8];
};

int main( int main , char **argv )
{
struct msg_t msg;

/*IDの配列サイズだけmsg.dataにコピー*/
memcpy( msg.data , ID , sizeof( ID ) );

return 0;
}


632 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 22:49:49 ]
こう?
sscanf(ID, "%2x%2x%2x%2x%2x%2x%2x%2x"
, &data[0], &data[1], &data[2], &data[3]
, &data[4], &data[5], &data[6], &data[7]);

633 名前:626 mailto:sage [2008/09/12(金) 23:00:09 ]
>>631
>>632
おお、助かりました!!
これでもう少しアプリ開発が進みそうです

634 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 23:07:04 ]
う、うん。
>>631>>632の何が違うか理解してから使ってね。。。

635 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 02:01:11 ]
>>617
#include <stdio.h>
int main( void )
{
    char ch;
    puts( "1文字だけ入力してください。" );
    ch = getc();

    switch( ch ){
    case ' ':
        puts( "空白です" );
    default:
        break;
    }

    return( 0 );
}

636 名前:あおい [2008/09/14(日) 17:52:30 ]
改行コードとして"LF"が使われているテキストファイルを読み取り、
"LF"を"CR+LF"に変換できるようなソースを教えてください。


ロジックとしては、
1文字ずつ読み込み、"LF"じゃなかったらそのまま出力し、"LF"だったら"CR+LF"にして出力する
のようなものが思いつくのですが、C言語は経験が無くて・・・。

また処理時間がシビアに要求されていて、なるべく処理時間が早いソースができればと思っています。


637 名前:あおい [2008/09/14(日) 17:57:58 ]
(636の補足)
外部サーバ(OSは不明)から改行コード"LF"のテキストファイルが
HULFT6を使用して送られてきます。
こちら側はWindows2003サーバで受け取り、そのテキストファイルを読み込んで
データ異常チェック・複数ファイルの結合といった処理を行います。

その際、改行コード"LF"では不都合かと思い、"CRLF"に一度変換してから処理に回そうと考えているのです。
C言語に詳しい方どうか助けてください。

638 名前:あおい [2008/09/14(日) 18:04:12 ]
重ね重ねすいません。質問の仕方のルールがありましたね。
改めて書き直します。

【質問テンプレ】
[1] 授業単元: 改行コード変換
[2] 636&637参照
 [3.2] VC 6.0
 [3.3] 言語: C
[4] 期限: 2008年09月15日22:00まで

どうかお願いします。

639 名前:デフォルトの名無しさん [2008/09/14(日) 18:06:21 ]
そのロジックで良いんじゃないかな。
もう少し具体的には、一文字前をおぼえておいて、
現在書こうとしている文字がLFで、一文字前がCRで無ければ
CRも書く。
例えば、
int last = '¥0';
int ch;
while ((ch = getchar()) != EOF) {
if (last != '¥r') putchar('¥r');
putchar(ch);
last = ch;
}
こんな感じかな。
fgets, strlen, fputs 使った方が少しだけ速いかもしれないが
簡明さでは劣る。

640 名前:デフォルトの名無しさん [2008/09/14(日) 18:14:48 ]
ごめん、if(ch=='¥n')を追加しといて。
俺ってばか。



641 名前:あおい [2008/09/14(日) 18:27:38 ]
迅速な応対ありがとうございます。
とても助かりました。

もう一つだけ教えていただいていいでしょうか?
改行コード"LF"と"CR"ってC言語上では何になるのでしょうか?

"CR"は"\r"?
ホントに初心者で申し訳ないのですが、
教えていただいたソースに簡単なコメントを添えていただけると助かります。


642 名前:デフォルトの名無しさん [2008/09/14(日) 18:32:51 ]
速度ならバリなりで読み込めよ

643 名前:デフォルトの名無しさん [2008/09/14(日) 18:36:58 ]
ただし、Webでの受け渡しなら、届いた分ずつ処理すればいい。
ほとんど、ネットの転送時間に依存して書き換え速度は無視できる

644 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 18:40:00 ]
全部読み込む−>変換−>書き込み
の方が早いんじゃないの?

645 名前:あおい [2008/09/14(日) 18:43:52 ]
受信方法はHULFT6というツールで行います。
ファイルを送ってくる相手は別会社なので、あまり柔軟な要求は聞いてくれません。。。

最大20ファイルほどを1ファイルずつ連続で送ってきます。
1ファイルにはデータレコードのみで4レコード入っています。

受け取ったファイルを5分ごとにまとめて編集し、1ファイルに集約します。

そんなシステムを要求されているのですが・・・。
仕組みは考えられてもCに詳しくないので困っているんです。

646 名前:デフォルトの名無しさん [2008/09/14(日) 18:44:11 ]
届いた分ずつの方が速いよ。 1Mで転送待ちで5秒掛かったとたら
そのあと処理に0.5秒掛かれば合計で5.5秒。
もし32Kbyte届いたとして、それを書き換える時間は次のデータが届くまでには終わっているだろう。

647 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 18:45:40 ]
こんな簡単な要求で苦しんでる会社と仕事したくないな・・・・

648 名前:デフォルトの名無しさん [2008/09/14(日) 18:50:24 ]
HULFT6調べたら、独自形式で圧縮、復元してるみたいね。 順次の処理は無理みたいだ。
ローカルファイルを書き換えるという方法しかないね。
簡単な方法だと、
nkf.exe -Lw -c inputfile > outputfile
でいいのでは?

649 名前:デフォルトの名無しさん [2008/09/14(日) 19:00:34 ]
ただし、NKFは文字コードの自動判別がはいるから、処理には時間が掛かる。
間にあわなければ、C言語を使ったら

650 名前:デフォルトの名無しさん [2008/09/14(日) 19:03:00 ]
1Mから500Mのサイズで最も速く書き換えられるアルゴリズムを作ってみてください。



651 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 19:10:19 ]
>>650
>最も速く書き換えられる
なにを?

652 名前:デフォルトの名無しさん [2008/09/14(日) 19:11:53 ]
考えたアルゴリズム。 500M=5M*100に分割して読み込む。
スレッドを用意して、5M+αのバッファを2〜4個持つ。
空いているところへデータと分割位置を渡して処理をさせる。
処理後に出力ルーチンへ渡す。
出力ルーチンは0番から順に書き込み、バッファとスレッドを解放する。


653 名前:デフォルトの名無しさん [2008/09/14(日) 19:13:07 ]
>>651
500Mのテキストファイルの改行コードを最も高速で変換するプログラムです。

654 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 19:22:42 ]
処理時間の大半がIOになると思うけど、そういう処理でもやっぱ、マルチスレッドにして処理が早くなったりするの?

655 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 19:24:43 ]
スレッド生成時間とかが気になる。

656 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 19:25:22 ]
>>641
基本的にLFは'\n'でCRが'\r'だと思って問題ない。

>>653
そういう次元の話だと、もはやアルゴリズムよりいかにCPUを使い倒すかって問題になる。

657 名前:デフォルトの名無しさん [2008/09/14(日) 19:27:42 ]
この単純な課題で誰が上級者なのかチャレンジしよう。いまくんでみているところ

658 名前:あおい [2008/09/14(日) 20:12:02 ]
みなさん、初心者でホントにすいません。。。

改行コード'LF'のテキストを'CR+LF'に変換する、
一番シンプルで処理速度が期待できるCのソースを教えてください。

よろしくお願いします。

659 名前:デフォルトの名無しさん [2008/09/14(日) 20:15:27 ]
シンプルで、そこそこ速いのは、512Kbyte位読み込んで、書き換えて書き出す。
というので良いと思う。スレッド使っても速くなるかは微妙。

660 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 20:39:27 ]
>>658
変換する対象はファイルでいいの?



661 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 20:40:25 ]
これで充分だろ。
てかnkf使うんじゃダメなのか?

#include <stdio.h>

int main(void)
{
int ch;
while((ch = getchar()) != EOF){
if(ch == '\n'){
putchar('\r');
}
putchar(ch);
}
return 0;
}


662 名前:デフォルトの名無しさん [2008/09/14(日) 20:45:39 ]
>>661
一文字ずつ読んだら鈍いし、それは間違えてないか?

663 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 20:51:01 ]
作ってみた。何を対象にして時間計測すればいいの?
#include<stdio.h>
#include<stdlib.h>
#define BUF_SIZE (1<<20)
#define CHAR_LF 0x0A
#define CHAR_CR 0x0D
int lf2crlf(FILE *fp_in, FILE *fp_out){
char *buf_in, *buf_out;
size_t buf_size=BUF_SIZE, read_size, write_size, whole_size=0, i;

buf_in=malloc(buf_size);
buf_out=malloc(buf_size*2);
if(buf_in==NULL || buf_out==NULL) goto on_exit;

while((read_size=fread(buf_in, 1, buf_size, fp_in))){
for(i=0,write_size=0;i<read_size;i++){
if(buf_in[i]==CHAR_LF) buf_out[write_size++]=CHAR_CR;
buf_out[write_size++]=buf_in[i];
}
whole_size+=fwrite(buf_out, 1, write_size, fp_out);
}
on_exit:
free(buf_in);
free(buf_out);
return whole_size;
}

int main(void){
lf2crlf(stdin, stdout);

return 0;
}

664 名前:661 mailto:sage [2008/09/14(日) 20:51:30 ]
>>662
一文字づつ読んだら遅い?オーケー、おまえが速いと思うプログラムを書いてみて、
オレのと速度比較してみ。そのうえで、おまえのプログラムのほうが速かったら、
そのとおりでしたと認めるよ。
あと、間違えてると思うんならその箇所を指摘してくれ。単に、「間違えてないか?」
と言われても「どこが?」と聞き返すしかないぞ。


665 名前:デフォルトの名無しさん [2008/09/14(日) 20:59:29 ]
ちょっとまってろ

666 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:07:40 ]
1行読み込んで1番最後だけ確認するのが早いんじゃないの?

667 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:11:19 ]
DOSのころ、setvbufでバッファを大きくしたらそれだけでファイルIOが速くなったけど、Windows95か98のころに、
確認してみたら、setvbufでバッファを大きくしても、ぜんぜん速くならなかったような記憶がある。

668 名前:662 [2008/09/14(日) 21:16:16 ]
質問があります。
>>661でgetchar()っていうのは、ファイルも開いて無くて使えますか?

>>663でstdinて (ここ)にくるやつですか? ***.exe (ここ)

669 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:19:51 ]
スクリプト言語なんかでも書いてみて、スピードの比較をやってみたら面白そう。

670 名前:662 [2008/09/14(日) 21:24:17 ]
できたよ。 バッファを始め512Kでやってたけど2Mのほうが速い。

#include <stdio.h>
#include <string.h>
#include <time.h>
void trans(char *input, char *output);
int main(){
int cl=clock();
trans("input.txt","output.txt");
cl=clock()-cl; printf("%d\n",cl); }

#define K 2024288
void trans(char *input, char *output){
char *x=new char[K*1.3];
char *y=new char[K+1]; y[K]=0;
FILE *fp=fopen( input,"rb");
FILE *fq=fopen(output,"wb");
int m,n,r,N;
while( N = fread(y, 1, K, fp) ){
m=n=r=0;
for(;;){
for(;r<N;r++)if(y[r]=='\r')if(y[r+1]!='\n')break;
if(r==N){ fwrite(x,1,m,fq); fwrite(&y[n],1,N-n+1,fq); break; }
int d=r-n+1;
memcpy(&x[m],&y[n],d); x[m+d]='\n';
m+=d+1; r++; n=r;}
}
fclose(fp);fclose(fq);}



671 名前:662 [2008/09/14(日) 21:28:28 ]
まとめて2M読み込んで、別のバッファに結果を書き込んで出力しているけど
プログラムの工夫のポイントは、一度も\rが出てこなかったら、コピーは作らず
元のバッファをそのまま出力するところと、|r以外の連続する文字列はmemcpyで一気に移すところです。
しかし、ほとんど手間が掛かっているところはHDDアクセスのようです。
バッファを増やしても、アクセスランプが点滅しっぱなしなので。

672 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:30:21 ]
1文字変数読みづらい


673 名前:デフォルトの名無しさん [2008/09/14(日) 21:30:39 ]
>>670
話の本筋とはずれるんだが、
動的にメモリを2Mも確保するのが怖いのは俺だけ?
別に怖い理由があるとかではないんだがなんとなく漠然と…。

674 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:34:02 ]
>>673
スタックに確保するほうが怖いだろ

675 名前:662 [2008/09/14(日) 21:34:05 ]
メモリを2M以上確保したことがないんですか? 全然余裕と思いますが。

676 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:35:34 ]
perlとか、起動しただけで、プロセスが1M越えてるしな。

677 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:38:27 ]
>>673
どこで動的に確保してる?

678 名前:673 [2008/09/14(日) 21:40:20 ]
そういうもんなのか>動的確保
いつもなんとなく怖いからせいぜい2kくらいまでしか確保してなかった…
今度からはもっと大胆にとってみる

679 名前:662 [2008/09/14(日) 21:44:08 ]
470Mのファイルを、読み込みバッファ512Kで処理すると約80秒
2Mだと約60秒、8Mだと約70秒掛かりました。
ただし8MはコンパイラをBCCからVC++に変更しました。
VC++2008はなかなか性能が良いと経験的に判っているのでバッファ増やしたら速くなると思ったのですが。


680 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:50:11 ]
670って、妖しいような?



681 名前:662 mailto:sage [2008/09/14(日) 21:52:42 ]
どうやら2M程度で十分なようです。 BCCで8Mにしても60秒は切れないです。
でもFire File Copy で単純にコピーしてみると29秒で済みます。
処理時間のほとんどがディスクアクセスに費やされるなら、もっと速くできるはずです。

682 名前:あおい [2008/09/14(日) 21:53:47 ]
みなさんありがとうございます。

変換する対象はファイルです。
拡張子は無しですが、メモ帳で開けるのでバイナリではなくテキストです。
ただ、1レコードに複数の項目があって、カンマ区切りになっています。
それが1ファイル内に最大4レコードあります。


速くて何よりシンプルなソースだと助かります。
初心者なものでホントにすいません。。。

683 名前:あおい [2008/09/14(日) 21:55:52 ]
ちなみにVisual Studioで開発しています。

684 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:58:27 ]
>>679
実メモリを8Mも積んでないからじゃね? 遅くなるの。

685 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:58:29 ]
非同期で処理と読み書きすればはやくなりそうです。


686 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:59:33 ]
>>682
情報小出しキター!!!!

687 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 22:00:26 ]
>>679
L2/L3キャッシュの容量超えてない?<8M

688 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 22:00:59 ]
>>684
Fire File Copy では15M確保しましたよ。そしたら29秒です。
読み込みバッファ8Mとコピー先バッファ約10Mで併せて合計18Mくらいの確保ですが
Fire File Copyの確保量とほぼ同じです。


689 名前:デフォルトの名無しさん [2008/09/14(日) 22:04:24 ]
キャッシュなんてただの飾りです。
偉い人にはそれが

690 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 22:05:04 ]
>>662

>>662のデータで>>661の処理時間どれくらいになった?
参考までに聞かせてくれ。
1文字ずつ読んで、あそこまで強気になれる時間かどうか知りたい。



691 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 22:05:46 ]
HDDキャッシュ容量にもよるのでは?

692 名前:684 mailto:sage [2008/09/14(日) 22:06:28 ]
ああ、ボケてた。
いまどきメモリを8M積んでないPCとかあるわけないか。

693 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 22:15:29 ]
>>661の動かし方が判りません。 
あとディスクアクセス以外の時間を計ってみたら3秒ほどしか使ってませんでした。
ほとんど入出力のアクセスの問題です。APIで直接操作したらいいかもしれません。

694 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 22:23:54 ]
でも3秒以内なのは、はじめから\r\nという改行コードのせいと思います。メモリ間転送は全くしていないので。
新聞のログですがWindowsなのでSjisで改行は\r\nです。

695 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:05:06 ]
>>690
試してみた
512MB の乱数で生成したテキストデータ ( A-Za-z0-9!#$%&'()=^;:][/.,<>?_}*{\n を等確率 )
>>661 が 50sec or 36sec
>>663 が 41sec or 15sec
>>663 (バッファを2MBに変更) が 36sec or 12sec
>>670 が 36sec or 12sec

それぞれ一回目の実行と二回目以降の所要時間が大幅に違う
二回目以降は明らかにキャッシュヒットしてる速さ

696 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:13:53 ]
実際のデータは等確率ではない(\rはあまり現れない)ので、
memcpyで一気に写す>>670は一文字ずつよりかなりはやいはずです。

697 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:32:59 ]
>>695
コンパイラ何使った?
もし、VC++ 2005以上なら_CRT_DISABLE_PERFCRIT_LOCKS定義した結果も計ってよ。

698 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:34:09 ]
今更だけど、stdin/stdoutはテキストモードだろうから、
Windowsで661のコードはあまり意味ない気がする。

699 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:35:46 ]
これって如何に同一ドライブのコピーを速くするかに掛かっているな。
CなどはOSのキャッシュも使い、内蔵キャッシュも使っているだろうから
ディスクアクセスが頻繁だと時間が掛かると思う。
WinAPIでOSのキャッシュ無効に出来るからそれで計ったらいい速度になると思う。


700 名前:695 mailto:sage [2008/09/14(日) 23:38:21 ]
>>697
gcc -O2 にてコンパイル
>>697 は自分で試して結果を張ってくれればいいじゃない

ほら、乱数テキスト生成コード
int main(void){
FILE *fp;
char table[]="\nabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&'()=^;:][/.,<>?_}*{";
char buf[1024*128];
int i, j;

fp=fopen("input.txt", "wb");
if(fp==NULL) return 1;
for(i=0;i<1024*4;i++){
for(j=0;j<sizeof(buf);j++){
buf[j]=table[rand()%(sizeof(table)-1)];
}
fwrite(buf, 1, sizeof(buf), fp);
}
fclose(fp);
return 0;
}



701 名前:697 mailto:sage [2008/09/15(月) 00:41:31 ]
>>700
tx やってみた。VC++ 2008 SP1で/O2。
全てのソースに_setmodeでstdin/stdout共にバイナリモードにするコードを挿入した。
計測はCygwinのtimeのrealの値。

左がなし、右が_CRT_DISABLE_PERFCRIT_LOCKS
661 7.872s 0.632s
663 0.477s 0.403s
663 0.429s 0.602s (バッファ2MB)
2回目
661 6.500s 0.485s
663 0.578s 0.344s
663 0.578s 0.485s (バッファ2MB)
>>670は出力が間違っていたので除外した。とは言え一応計ってみたら0.387sだった。

702 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 00:54:50 ]
質問者おいてけぼりの流れにワロタ。
いいぞ、もっとやれ。

703 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 00:59:35 ]
まちがってた? さしたら修正と速度向上を目指してもう一度やってみる

704 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 01:07:29 ]
670はもうこんなんでいいんじゃないか?
void trans(char *input, char *output){
FILE *fp=fopen( input,"rb");
FILE *fq=fopen(output,"wb");
char *buff1=(char*)malloc(K);
char *buff2=(char*)malloc(K*2);
int r_size,cr=0;
while((r_size=fread(buff1,1,K,fp))){
char *r=buff1,*w=buff2;
while(r<buff1+r_size){
if(*r=='\n' && cr==0){
*w++='\r';
}
cr=(*r=='\r');
*w++=*r++;
}
fwrite(buff2,1,w-buff2,fq);
}
fclose(fp);fclose(fq);
}


705 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 01:11:31 ]
>>686
その小出しによって攪乱されるあなたの方がちょっとどうかしてるのでは

706 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 01:32:57 ]
情報小出しはウザいだろ
仕様不明確はかなりめんどくさい

707 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 03:18:42 ]
まぁテンプレに沿ってないやつの相手をするなら情報の小出しくらい覚悟しろってことだな

708 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 04:20:29 ]
仕様に変更が発生しない小出しならスルーすればいいじゃない

709 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 14:05:37 ]
[1] 授業単元 : プログラミング総合演習
[2] 問題文 : ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7724.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:C
[4] 期限: 2008年09月17日22:00まで

ビットフィールドへの変換もいまいち分かりません。
よろしくお願い致します。

710 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 14:39:06 ]
>>709
なんかサーバ落ちてる



711 名前:デフォルトの名無しさん [2008/09/15(月) 16:26:34 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
課題1
∫[0→1]1/(1+x^2)dxを台形公式を用いて求めるプログラムを作成せよ。
台形公式:
∫[a→b]f(x)dx≒h/2{y[0]+2(y[1]+y[2]+…+y[n-1])+y[n]}
h=(b-a)/n
n=20

課題2
∫[0→1]1/(1+x^2)dxをシンプソンの公式を用いて求めるプログラムを作成せよ。

シンプソンの公式:
∫[a→b]f(x)dx≒h/3{y[0]+4(y[1]+y[3]+…+y[2n-1])+2(y[2]+y[4]+…+y[2n-2])+y[2n]}
h=(b-a)/2n
n=20

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:LSIC-86
 [3.3] 言語:C
[4] 期限:2008年9月16日7:00まで
[5] その他の制限:できるだけ簡単な構文でお願いします。
答えは0.785…となるようです。
よろしくお願いします。

712 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 18:23:28 ]
#include<stdio.h>
double f(double x){ return 1.0/(1.0+x*x); }
int main(){
int i,n;
double h,a,b,s;
a=0.0; b=1.0; n=20;
//1
h=(b-a)/n;s=f(a);
for(i=1;i<n;i++) s+=2.0*f(a+h*i);
s+=f(b); s*=h/2.0;
printf("1:%f\n",s);
//2
h=(b-a)/(2.0*n); s=f(a);
for(i=1;i<2*n;i+=2) s+=4.0*f(a+h*i);
for(i=2;i<2*n;i+=2) s+=2.0*f(a+h*i);
s+=f(b); s*=h/3.0;
printf("2:%f\n",s);
return 0;
}

713 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 20:05:58 ]
[1] 授業単元:C++
[2] 西暦と月を入力し○年○月○日を出せるようにする
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Microsoft Visual studio
 [3.3] 言語: C++
[4] 期限: 9月16日 11:30
[5] その他の制限:とくにありません

よろしくお願いします

714 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 21:52:41 ]
日はどうするのかと

#include <iostream>
using namespace std;
int main(int argc,char *argv[]){
int year,month,day;
cout<<"年を入力=";
cin>>year;
cout<<"月を入力=";
cin>>month;
cout<<"日を入力=";
cin>>day;
cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;
return 0;
}

715 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 22:38:37 ]
[1] 授業単元:C++
[2] 西暦と月を入力しそのつきのカレンダーを表示させる
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Microsoft Visual studio
 [3.3] 言語: C++
[4] 期限: 9月16日 11:30
[5] その他の制限:とくにありません

すいません間違えてました
よろしくお願いします

716 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 23:02:05 ]
カレンダーの形式は? 2008年9月としたときのサンプル


717 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 23:25:37 ]
#include <iostream>
#include <iomanip>
using namespace std;
const int days[] = { 31,28,31,30,31,30,31,31,30,31,30,31};
const char dayOfTheWeek[7][4] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
int main(int argc,char *argv[]){
int year,month,x,i;
cout<<"年を入力=";
cin>>year;
cout<<"月を入力=";
cin>>month;

x=(year+year/4-year/100+year/400+(13*month+8)/5 +1)%7;
for(i=0; i<7; i++) cout << dayOfTheWeek[i] << " " ;
cout << endl;
for(i=0; i<x; i++) cout << " ";
cout << setw(3);
for(i=1; i<=days[month-1]; i++){
cout << setw(3) << i << " ";
if((i+x)%7==0) cout << endl;
}
cout << endl;
return 0;
}

718 名前:デフォルトの名無しさん [2008/09/16(火) 00:41:23 ]
>>712
ありがとうございます
助かりました

719 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 02:39:45 ]
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <string>
using namespace std;
const int days[] = { 31,28,31,30,31,30,31,31,30,31,30,31};
const string monthName[] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
const string dayOfTheWeek[] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
int main(int argc,char *argv[]){
int year,month,x,i;
string buf;
cout << "年を入力=";
do{ cin >> buf;}while((year = atoi(buf.c_str()))<=0);
cout << "月を入力=";
do{ cin >> buf;}while(!((month = atoi(buf.c_str()))>=1 && month<=12));

//xはその月の1日の曜日。0:日曜〜6:土曜
x=(year+year/4-year/100+year/400+(13*month+8)/5 +1)%7;
cout << year << " / " << monthName[month-1] << endl;
for(i=0; i<7; i++) cout << dayOfTheWeek[i] + " " ;
cout << endl;
for(i=0; i<x; i++) cout << " ";
for(i=1; i<=days[month-1]; i++){
cout << setw(3) << i << " ";
if((i+x)%7==0) cout << endl;
}
if((i+x)%7!=1) cout << endl;
return 0;
}
エラーチェックとか追加!

720 名前:デフォルトの名無しさん [2008/09/16(火) 15:17:32 ]
1から100までの数を出力する。


宜しくお願いします。



721 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 15:36:03 ]
#include <studio.h>
int mani(viod){
puts("#include <studio.h>¥nint mani(viod){int i;for(i=1;i<=100;i+++)printf("%s",i);retrun(0);}¥n","%d");
retrun(0);
}

722 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 16:02:07 ]
[1] 授業単元:C++
[2] 問題文(含コード&リンク):C++でオセロを作る
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:CPad for Borland C++ Compiler
 [3.3] 言語:C++
[4] 期限:9/17まで
[5] その他の制限:for if while do switch printf scanfだけで作る。それと対人

723 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 16:05:02 ]
>>709の課題1だけでもいいので教えていただけないでしょうか

724 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 16:17:52 ]
>>709
問題1
//
//課題部分
unsigned int dec;
dec=atoi(str_dec);
hex.hex7=dec%16;
dec=dec/16;
hex.hex6=dec%16;
dec=dec/16;
hex.hex5=dec%16;
dec=dec/16;
hex.hex4=dec%16;
dec=dec/16;
hex.hex3=dec%16;
dec=dec/16;
hex.hex2=dec%16;
dec=dec/16;
hex.hex1=dec%16;
dec=dec/16;
hex.hex0=dec%16;
return 0;
}
//
#include<stdlib.h> 必要

725 名前:デフォルトの名無しさん [2008/09/16(火) 16:30:12 ]
[1] 授業単元:数理科学C
[2] 問題文:ttp://sakuratan.ddo.jp/imgboard/img-box/img20080916162721.jpg
      の(2)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: 指定なし
 [3.3] 言語: C/C++/どちらでも可
[4] 期限:9月21日
[5] その他の制限: 制限なし

726 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 17:26:34 ]
>>725
#include<stdio.h>
#include<math.h>
double a(int n)
{
double an;
if (n == 0) {
return 1.0;// 6角形の1辺の長さ
}
an = a(n - 1);
return (an / (sqrt(2 + sqrt(4 - (an * an)))));
}
int main(void)
{
int n = 10;
double pai;
pai = a(n) * pow(2, n) * 6 / 2;
printf("%f\n", pai);
return 0;
}


727 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:01:07 ]
[1] 授業単元:計算機応用
[2] 問題文(含コード&リンク):data.txtからデータを取り出し配列に格納せよ。
また長方形の個数(data.txtの行数)も求めよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc (Cygwin)
 [3.3] 言語: C
[4] 期限: 2008年9月17日0:00まで
[5] その他の制限: 特にないです。

data.txtの中身
---------------------------------------
a{1} = [100, 200; 200, -300; 100, -300; 200, -200]';
a{2} = [1, 2; 2, 2; 1, 1; 2, 1]';
---------------------------------------------------
data.txtの中身は
長方形名 = {長方形の頂点1のx座標, 長方形の頂点1のy座標;頂点2のx,頂点2のy;・・}
となっています。
この中から各座標を取り出し、2次元配列d[長方形の数][4]に
d[i番目の長方形][0]=小さい方のx座標
d[i番目の長方形][1]=大きいほうのx座標
d[i番目の長方形][2]=小さい方のy座標
d[i番目の長方形][3]=大きいほうのy座標
となるように格納してください。data.txtの長方形の数が変わっても対応できるようにお願いします

分かりにくい文章ですみません・・・よろしくお願いします



728 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:06:37 ]
data.txtの中身を間違っていました

正しいのは
a{1} = [100, 200; 200, -300; 100, -300; 200, 200]';
a{2} = [1, 2; 2, 2; 1, 1; 2, 1]';

です

729 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:09:55 ]
[1] 授業単元:C言語
[2] 問題文:文字列をchar型のポインタとして受け取り、そのポインタから10文字か、
NULL文字が現れるまで画面に1文字ずつ表示する関数を作成しなさい。
画面に1文字表示するたびに改行を入れなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: 指定なし
 [3.3] 言語: C
[4] 期限:9月17日午前6時
[5] その他の制限: 制限なし

お願いします。

730 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:38:29 ]
void char_out(const char *str){
int i;

for(i=0;;i++){
if(str[i]=='\0' || i<10)break;
printf("%c\n",str[i]);
}
}

コンパイルしてねーから凡ミスとか知らね。



731 名前:727 mailto:sage [2008/09/16(火) 23:02:05 ]
すみません。なんとか自力で解けました
スレ汚してごめんなさい

732 名前:デフォルトの名無しさん [2008/09/16(火) 23:35:18 ]
[1] 授業単元:C++
[2] 100文字以内の文字列をキー入力し大文字/小文字を反転して表示せよ。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Microsoft Visual studio
 [3.3] 言語: C++
[4] 期限: 9月23日
[5] その他の制限:配列[101]を使用。+32 -32で文字の変換を行う

全くのシロウトですいません;
よろしくお願いします

733 名前:デフォルトの名無しさん [2008/09/16(火) 23:46:07 ]
↑より素人・・・どころか問題外ですみません。
プログラムを始めようと思い、いろいろ調べましたが、
Borland C++ Compiler というソフトがいいらしいことはわかりました。
が、PCにすでにMicrosoft visual c++ 2005 Redistri butableや、
Microsoft Visual Studioといったものが入っているのですが、
これではできないのでしょうか?

スレ汚してすみません。。。

734 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 23:48:47 ]
#include<iostream>
using namespace std;

int main(){
char str[101];

cin >> str;
for(int i=0; str[i] != '\0'; i++){
if(str[i] >= 'a' && str[i] <= 'z'){
str[i] -= 'a'-'A';
}else if(str[i] >= 'A' && str[i] <= 'Z'){
str[i] += 'a'-'A';
}
}
cout << str <<endl;

return 0;
}

735 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 23:50:29 ]
>>733
使えるはずだけど、Visual Studioじゃいやなの?
park6.wakwak.com/~wmasa/prog/bcc/index.htm

736 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 00:11:34 ]
>>734
cin >> str;
ってスペースとれるっけ?

737 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 00:24:55 ]
#include<iostream>
using namespace std;

int main(){
char str[101];

cin.getline(str,sizeof(str));
for(int i=0; str[i] != '\0'; i++){
if(str[i] >= 'a' && str[i] <= 'z'){
str[i] -= 'a'-'A';
}else if(str[i] >= 'A' && str[i] <= 'Z'){
str[i] += 'a'-'A';
}
}
cout << str <<endl;

return 0;
}

738 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 00:55:55 ]
>>735
いいんですけど、どこから起動するのか分かりません。プログラムファイル内の
ヴィジュアルスタジオのファイルを覘いてもASP.TLBというファイルが一つあるだけです。
Borland C++は会員登録が面倒なのと、使えればヴィジュアルスタジオほうを使いたいです。


739 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 01:15:38 ]
>>738
ttp://www.forest.impress.co.jp/article/2007/12/18/vs2008express.html

740 名前: ◆ZnBI2EKkq. mailto:sage [2008/09/17(水) 03:52:26 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7727.zip
[3] 環境
 [3.1] Windows XP
 [3.2] gcc
 [3.3] C
[4] 期限:2008/9/19
[5]どうかお願いいたします。



741 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 08:43:10 ]
>>739
スタートから起動できるよ

742 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 09:05:52 ]
[1] 授業単元:画像処理
[2] 画像の平滑化を、移動平均フィルタとメディアンフィルタを用いて行うプログラム(それぞれ一つづつ)の作成

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:NetBeans
 [3.3] 言語: C
[4] 期限: 9月19日 12:30
[5] その他の制限:とくにありません

プログラミング苦手で全く分かりません…よろしくお願いしますm(__)m

743 名前:デフォルトの名無しさん [2008/09/17(水) 10:28:03 ]
>>734
>>737
ありがとうございます。
自分なりに授業で習った<stdio.h>に少しもじって書き直したのですが

#include<stdio.h>
int main(void)
{
char str[101];
int i;
printf("100文字以内の文字列を入力してください。\n");
scanf("%s",&str);
for(i=0; i<100; i++)
{if(str[i] >= 'A' && str[i] <= 'Z'){
str[i] = str[i] + 32;
}else if(str[i] >= 'a' && str[i] <= 'z')
{
str[i] = str[i] - 32;
}
}
printf("%s\n",str);
return 0;
}

スペースを含んだ文字列がどうやってもできません;;
それとNULL文字は最後の最後で独立して指定したいのですが
どこでどう指定したらいいのかよくわかりません
ほかにも間違いがあったら指摘お願いしマス。。
スレ汚しですいません;;


744 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 11:51:07 ]
>>743
CとC++は書き方が変わるから、正確に申告汁。

745 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 12:17:18 ]
>>743
scanf("%s",&str);
は間違い

746 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 12:41:26 ]
紛らわしいけど配列へのポインタだから大丈夫じゃね?
配列へのポインタは先頭の要素を指すだろうし

747 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 14:13:34 ]
[1] 授業単元:C言語
[2] 1から11の乱数を5個発生させ、それぞれを配列に順に保存する。
この作業をn回繰り返し、1から11の各数字がどれだけ出現したかを求めよ。
また、各数字の出現割合を求めよ。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio
 [3.3] 言語: C
[4] 期限: 9月18日
[5] その他の制限:特になし

下のコードまでは書けたのですが、ここから出現回数と出現割合の
求め方が分かりません。よろしくお願いします。

int array[n][5];

for(i=0;i<n;i++){
for(j=0;j<5;j++){
array[i][j]=rand()%10+1;
}
}


748 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 14:30:14 ]
>>743
scanf("%s",&str);
よりも
scanf("%s",&str[0]);
または
scanf("%s",str);
のほうがいいと思う。(一番下が簡単)

#include<stdio.h>
#define INPUT_SIZE 100
int main(void)
{
char str[INPUT_SIZE+1];
int i;
printf("%d文字以内の文字列を入力してください。\n", INPUT_SIZE);
fgets(str,sizeof(str),stdin);
for(i=0; str[i]!='\0'; i++){
if(str[i] >= 'A' && str[i] <= 'Z'){
str[i] = str[i] + 32;
}else if(str[i] >= 'a' && str[i] <= 'z'){
str[i] = str[i] - 32;
}else if(str[i] == '\r' || str[i] == '\n'){
str[i] = '\0';
break;
}
}
printf("%s\n",str);
return 0;
}


749 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 14:43:42 ]
>>747
5個発生させる意味がよくわからないんだけど・・・
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define N 1000
#define MAX_RAND 11
int main(){
int i,j;
int ary[N][5];
int count[MAX_RAND];
memset(ary,0,sizeof(ary));
memset(count,0,sizeof(count));
srand((unsigned int)time(NULL));
for(i=0;i<N; i++){
for(j=0; j<5; j++){
ary[i][j] = rand()%MAX_RAND + 1;
count[ary[i][j]-1]++;
}
}
for(i=0;i<MAX_RAND; i++){
printf("%5d:%5d\n",i+1,count[i]);

}
return 0;
}

750 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:05:12 ]
ありがとうございます。
1:6と表示されたら、1が6回出たということですが、
この6回出たというのは、全体の何パーセントということになるのでしょうか。



751 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:14:09 ]
printf("%5d:%5d\n",i+1,count[i]);

printf("%5d:%5d times, %f %%\n",i+1,count[i],(double)100*count[i]/(5*N));


752 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:58:34 ]
ありがとうございます。
助かりました。
もし、よろしければ100*count[i]/(5*N));という式を
どういう考えで導いたのか教えていただけないでしょうか。
数学的質問で申し訳ありません。(100を掛けるのは%に直すためなのは分かります)

753 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 16:05:41 ]
なんていうかそこまで行くとC言語がどうこういうレベルじゃないような

754 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 16:55:32 ]
5個の乱数を出すことを、N回繰り返すから、全部で5N個の乱数が出力されて、
i+1はcount[i]回現れる。
i+1が現れる統計的な確率はcount[i]/5N。
パーセントにすると(count[i]/5N)x100
(double)は計算式に表れる数がすべて整数なので、分子をdouble型にキャストしてあげないと小数点以下が切り捨てられてしまう。

755 名前:デフォルトの名無しさん [2008/09/17(水) 17:08:23 ]
>>744
失礼しました;;
>>745
>>748
ありがとうございます
助かりました
また試験前に足を運ばさせていただくかもしれませんので
そのときにまたよろしくお願いします。

756 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 23:05:56 ]
>>754
ありがとうございます。
納得できました。

757 名前:デフォルトの名無しさん [2008/09/19(金) 16:59:23 ]
台形の面積を求めるプログラムなのですが

#include <stdio.h>

double menseki(double, double, double);

int main(void)
{
double = h, f1, f2, ans;

scanf("%lf", &h );
scanf("%lf", &f1);
scanf("%lf", &f2);

printf("h = %lf\n",h);
printf("f1= %lf\n",f1);
printf("f2= %lf\n",f2);

ans = menseki(h,f1,f2);
printf("Answer = %lf\n", ans);

return(0);
}

double menseki(double a, double b, double c){
return((b+c)*a/2);
}
これで、コンパイルしても成功しません。
なぜでしょうか??


758 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 17:03:17 ]
>>757
エラーメッセージ読めよ

759 名前:757 [2008/09/19(金) 17:20:00 ]
>>758
エラーメッセージを見てもなぜエラーが発生するかわかりませんでした。

7:宣言が正しく終了していない(関数 main )
9: 未定義のシンボル h(関数 main )
10: 未定義のシンボル f1(関数 main )
11: 未定義のシンボル f2(関数 main )
17: 未定義のシンボル ans(関数 main )

760 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 17:20:47 ]
double = h, f1, f2, ans;



761 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 17:34:29 ]
宣言は
型名 変数名;
=はいりませんね

762 名前:757 mailto:sage [2008/09/19(金) 17:36:34 ]
>>760-761
そうでした・・・。すみません。。
ありがとうございました。

763 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 18:24:43 ]
この程度が解決できないならプログラムを組むな、
と言いたいのが最近多い気がするけど昔からか?

764 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 18:27:55 ]
随分と敷居が高くなったなここも

765 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 18:28:13 ]
どう考えても昔からいます

766 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 18:43:55 ]
最近はテンプレ無視にも寛容になったみたいだから
むしろ敷居は下がっただろ

767 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 19:05:35 ]
>>763
スレ違いだってことだ
宿題丸投げじゃねーじゃん

768 名前:デフォルトの名無しさん [2008/09/19(金) 19:13:36 ]
大学の卒業研究で作っているプログラムについて質問させてください。
C++、コンパイラはgcc、動かすのはlinux上です。

データ構造の動的確保についてなのですが
すでに自分で作った mvector というデータ構造があります。
mvectorを宣言するときは

mvector mvec(DIM); //DIMはベクトルの次元を指すint型

という感じです。mvectorは事実上ただの配列やvectorと似ていますが少し機能追加(算術計算など)しています。

ここでmvectorの配列(二次元配列のような感じ)を動的確保したいのですがどうやればいいかよくわかりません。
最初は適当に

head = new (mvector(DIM))[data]; //headは先頭ポインタを受け取る子、dataは配列の数

としたのですが普通にエラーです。 mvector(DIM)[data]もエラーです。
引数をもつ子の配列というのはどう確保すればよいのでしょうか。よろしくお願いいたします。

769 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 19:15:35 ]
vector使えよ

770 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 19:44:03 ]
new ((mvector(DIM))[data]); ではどうよ



771 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 22:51:01 ]
ユーザー定義型のインスタンスを要素とする配列をnewで確保した場合、
各要素の引数付きコンストラクタを呼ぶことは出来ない。
デフォルトコンストラクタが呼ばれる仕様。

772 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 22:57:25 ]
テンプレート引数の出番か。
まぁ、無理に new[] を使うよりは、vector使うべきだとは思うが。
#include <iostream>
template<int dim>
class mvector
{
  int m_dim;
public:
  mvector() : m_dim(dim){}
  int get_dim(){ return m_dim;}
};
int main()
{
  mvector<3> *head = new mvector<3>[10];
  ...
  delete[] head;
  return 0;
}

773 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 23:18:20 ]
既存のデータ構造を変えたくなければ、配列をインスタンスじゃなくポインタにするのも手。
でも初期化と解放の両方で、各要素の構築/解放が必要になって手間。
mvector **head = new mvector*[data];
//確保
for(int i=0; i<data; i++) head[i] = new mvector(DIM);
//解放
for(int i=0; i<data; i++) delete head[i];
delete[] head;

774 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 23:28:48 ]
mvectorの内部バッファをコンストラクタじゃなくて
別途メンバ関数で割り当てできるようにするのが
一番スマートかもしれない。

mvector *head = new mvector[data];
for(int i=0; i<data; i++) head[i].alloc(DIM);
...
delete[] head;

775 名前:デフォルトの名無しさん [2008/09/20(土) 12:14:38 ]
>>769-774
ありがとうございます。にわかに理解できない部分もありますが勉強になります。ちょっと要勉強というか要解読です。
newを使わずにstd::vectorを使えばだいぶ簡単にすることが出来るのでしょうか?
new自体にこだわりはないのでもしvectorで簡単に実現で切るならばうれしいです。
作ろうとしているmvectorの配列mvarrayは現在以下のようです。

class mvarray{ //mvector の配列みたいなデータ構造
private:
int _data;
mvector* head;
public:
mvarray(int data){ //コンストラクタ、これが困ってる
head = new mvector[data];
_data = data;
}
mvector* th(int n){ //二次元配列のn番目の配列を返す感じのもの。th は 4th,5th,のth.
return (head + n);
}
int data(){ retrun _data;}
}
長々と申し訳ないですが、もう少しだけお願いいたします。

776 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 12:20:25 ]
std::vector<std::vector<mvarray> > mvec(DIM, std::vector<marray>())

んでコンストラクタではなく>>774のように初期値を後から与える
vectorならresize()が使えるから後からサイズを変えてもいいし

777 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 23:51:58 ]
[1] 授業単元: ソフトウエア実習
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7728.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: ボーランド
 [3.3] 言語: C
[4] 期限: 明日中

どうかお願い致します。

778 名前:775 mailto:sage [2008/09/21(日) 00:12:02 ]
みなさんのおかげでうまく実装できました!
本当にありがとうございます。助かりました。
また困ったことが会ったらよろしくお願いいたします。

779 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:20:54 ]
>>777 (1)
#include<stdio.h>
#define DATA_NUM 12
int main(int argc, char *argv[]){
char *filename_in, *filename_out;
FILE *fp_in, *fp_out;
int i, array[DATA_NUM]={0};
if(argc!=3){
fprintf(stderr, "\nUsage: %s filename_in filename_out\n", argv[0]);
return 0;
}
filename_in=argv[1];
filename_out=argv[2];
fp_in=fopen(filename_in, "r");
if(fp_in==NULL){
fprintf(stderr, "\nERROR: %s cannot open.\n", filename_in);
return 1;
}
fp_out=fopen(filename_out, "wb");
if(fp_out==NULL){
fprintf(stderr, "\nERROR: %s cannot open.\n", filename_out);
fclose(fp_in);
return 2;
}
for(i=0;i<DATA_NUM;i++){
fscanf(fp_in, "%d", &array[i]);
}
fwrite(array, sizeof(int), DATA_NUM, fp_out);
fclose(fp_in);
fclose(fp_out);
return 0;
}

780 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:22:45 ]
>>777 (2)
#include<stdio.h>
#define DATA_NUM_MAX 100
int main(int argc, char *argv[]){
char *filename_in, *filename_out;
FILE *fp_in, *fp_out;
int data_num, array[DATA_NUM_MAX]={0};
if(argc!=3){
fprintf(stderr, "\nUsage: %s filename_in filename_out\n", argv[0]);
return 0;
}
filename_in=argv[1];
filename_out=argv[2];
fp_in=fopen(filename_in, "r");
if(fp_in==NULL){
fprintf(stderr, "\nERROR: %s cannot open.\n", filename_in);
return 1;
}
fp_out=fopen(filename_out, "wb");
if(fp_out==NULL){
fprintf(stderr, "\nERROR: %s cannot open.\n", filename_out);
fclose(fp_in);
return 2;
}
for(data_num=0;data_num<DATA_NUM_MAX;data_num++){
if(fscanf(fp_in, "%d", &array[data_num])!=1) break;
}
fwrite(array, sizeof(int), data_num, fp_out);
fclose(fp_in);
fclose(fp_out);
return 0;
}



781 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:34:37 ]
>>777 (3)
#include<stdio.h>
#define DATA_NUM_MAX 100
int main(int argc, char *argv[]){
char *filename_in, *filename_pos_out="p.txt", *filename_neg_out="n.bin";
FILE *fp_in, *fp_pos_out, *fp_neg_out;
int i, data_num, array[DATA_NUM_MAX]={0};
if(argc!=2){
fprintf(stderr, "\nUsage: %s filename_in\n", argv[0]);
return 0;
}
filename_in=argv[1];
if((fp_in=fopen(filename_in, "r"))==NULL){
fprintf(stderr, "\nERROR: %s cannot open.\n", filename_in);
return 1;
}
for(data_num=0;data_num<DATA_NUM_MAX;data_num++) if(fscanf(fp_in, "%d", &array[data_num])!=1) break;
fclose(fp_in);
fp_pos_out=fopen(filename_pos_out, "w");
fp_neg_out=fopen(filename_neg_out, "wb");
if(fp_pos_out==NULL || fp_neg_out==NULL){
fprintf(stderr, "\nERROR: %s or %s cannot open.\n", filename_pos_out, filename_neg_out);
return 2;
}
for(i=0;i<data_num;i++){
if(array[i]>0) fprintf(fp_pos_out, "%d ", array[i]);
if(array[i]<0) fwrite(&array[i], sizeof(int), 1, fp_neg_out);
}
fclose(fp_pos_out);
fclose(fp_neg_out);
return 0;
}

782 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 14:47:15 ]
>>781
ありがとうございます
(1)(2)(3)すべて実行すると、出力に「Usage: 自分のPCの名前 filename_in filename_out」と表示されましたが
書き込み用のファイルを確認した所、値が書き込まれておらず「・・・・」と点が並んでいるだけです
何故でしょうか・・・?

783 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 17:14:29 ]
>>782
バイナリエディタで開け

784 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 21:13:43 ]
>>783
01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00
05 00 00 00 06 00 00 00 07 00 00 00 08 00 00 00
09 00 00 00 0A 00 00 00 0B 00 00 00 0C 00 00 00
となっていてきちんと正常でした。お手数かけましてすみません
ありがとうございました!

785 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 10:24:12 ]
ん?それ負数じゃないな?

786 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 17:57:52 ]
1] 授業単元: C言語
[2] 問題文:auto関数とstatic関数の違いが分かるプログラムを作成しなさい、ただしfor文を使用する
[3] 環境
 [3.1] OS:Win
 [3.2] 任意
 [3.3] 言語: C
[4] 期限: 2008年9月25日13:00まで
できればプログラムは短くコンパイルして結果が長くならないようなものでお願いします


787 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 18:05:58 ]
変数じゃねーのか?

788 名前:786 mailto:sage [2008/09/22(月) 18:40:59 ]
ごめん 
関数じゃなくて変数でした^^;

789 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 18:48:57 ]
>>786

#include <stdio.h>

int main(int argc, char *argv[])
{
int i;
for (i = 0; i < 10; i++) {
int j = 0;
static int k = 0;
printf("j = %d, k = %d\n", j, k);
j++; k++;
}
return 0;
}

こんなんでいいか?

790 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 18:50:12 ]
>>786

#include <stdio.h>

void Count()
{
   auto int a = 0;
   static int s = 0;

   printf("a = %d, s = %d\n", a++, s++);
}

int main()
{
   int i;

   for(i = 0; i < 10; i++)
      Count();

   return 0;
}



791 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 19:19:29 ]
>>789>>790
あり
やっぱりC勉強するんだったら家に環境整えたほうがいいのかな

792 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 19:45:42 ]
言わずとも揃えるべき

793 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 19:53:22 ]
>>791
sshとかで学校につなげてプログラミングするとか手段はあるぞ。

794 名前:デフォルトの名無しさん [2008/09/23(火) 00:01:13 ]
[1] 授業単元: ディジタル信号処理
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7731.txt
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名: Microsoft Visual Studio 2005
 [3.3] 言語:C
[4] 期限: 9月24日

よろしくお願いします


795 名前:デフォルトの名無しさん [2008/09/23(火) 01:25:27 ]
[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):

ファイルを読み込んで読み込んだファイルの
コメントが関数内で閉じられているかチェックするツールを作る


#include <stdio.h>

int main(void)
{
   int a = 0;
   printf("aは%dです",a);
   /*コメント
   return 0;
}
/*プログラム終わり*/


↑こうなっていた場合に「/*コメント」と書かれている部分の行を指摘する
  /**/が関数内で閉じられているかのチェック
  実行はコマンドプロンプト
  出力はprintf

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:C
[4] 期限: 9/26
[5] その他の制限: 制限は特にありません。
[6]備考:fopenした後からの処理でいいので教えてもらえると幸いです。

796 名前:デフォルトの名無しさん [2008/09/23(火) 01:48:26 ]
[1] 授業単元: 情報
[2] 問題文:商品の値段と支払額を入力し、お釣りの貨幣の種類/枚数を表示。
   例) 2800円の商品に3000円支払い
    -> \10000:0枚 \5000:0枚 \1000:0枚 \500:0枚 \100:2枚 \50:0枚 \10:0枚 \5:0枚 \1:0枚
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: ?
 [3.3] 言語: C
[4] 期限: 9/26(金)
[5] その他の制限:if、printf、scanf、四則演算+-*/のみ習いました。シンプルな回答がベストです。
宜しくお願い致します。

797 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 03:15:03 ]
>>796
#include <stdio.h>

int kinds_of_money[] = { 10000, 5000, 2000, 1000, 500, 100, 50, 10, 5, 1, };
int num_of_money[sizeof kinds_of_money / sizeof kinds_of_money[0]] = { 0 };

int main()
{
int bill = 0;
int payment = 0;
int change = 0;
int i = 0;

puts( "請求額は?" );
scanf( " %d", &bill );
puts( "支払額は?" );
scanf( " %d", &payment );

if ( bill > payment ) {
puts( "足りんわwwww" );
return 1;
}
for ( i = 0, change = payment - bill; change > 0; i++ ) {
num_of_money[i] = change / kinds_of_money[i];
change = change % kinds_of_money[i];
}
for ( i = 0; i < sizeof kinds_of_money / sizeof kinds_of_money[0]; i++ ) {
printf( "\\%d:%d枚 ", kinds_of_money[i], num_of_money[i] );
}
return 0;
}

798 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 03:53:24 ]
>>795
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7732.txt

エラー処理省きまくった。

799 名前:798 mailto:sage [2008/09/23(火) 03:57:54 ]
>>795
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7733.txt

>>798は無視で。

800 名前:798 mailto:sage [2008/09/23(火) 04:02:30 ]
>>795
もうぐだぐた。
>>799を訂正。

stack[count++] = line;

if ( ( count == 0 ) || ( stack[count - 1] != line ) ) {
stack[count++] = line;
}



801 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 08:04:34 ]
[1]C文解釈中級
[2]次の文章を行単位に並べ替えて、コンパイルが通るようにして、この文章を実行した時の処理仕様
を100字以内にまとめなさい。コンソールで実際にコンパイルして実行してみた結果も添えてメールしなさい。
idx = strlen(label);
#include <string.h>
p = strchr(label, *src);
if(p) count[p - label]++;
for( ; *src != '¥0'; src++){
p = strchr(buf, '¥n');
*dst = '¥0';
void alphabetsort(char *dst, const char *src)
for(i = 0; i < 256; i++) while(count[i]-- > 0){ *dst = label[i]; dst++; }
if(p) *p = '¥0';
int count[256] = {0}, idx, i;
return 0;
char buf[100], dst[100], *p;
alphabetsort(dst, buf);
int main(void)
{
}
#include <stdio.h>
fgets(buf, sizeof(buf), stdin);
char *p, label[256] = " aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ";
else{ label[idx] = *src; count[idx] = 1; idx++; }
printf("%s¥n", dst);
{
}
}
[3]1.Linux 2.GCC 3.C言語
[4] 2008/09/30 15:00までにメール
まったくわかりません。よろしくです

802 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 09:40:04 ]
>>801
#include <stdio.h>
#include <string.h>
void alphabetsort(char *dst, const char *src)
{
int count[256] = {0}, idx, i;
char *p, label[256] = " aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ";
idx = strlen(label);
for( ; *src != '\0'; src++){
p = strchr(label, *src);
if(p) count[p - label]++;
else{ label[idx] = *src; count[idx] = 1; idx++; }
}
for(i = 0; i < 256; i++) while(count[i]-- > 0){ *dst = label[i]; dst++; }
*dst = '\0';
}
int main(void)
{
char buf[100], dst[100], *p;
fgets(buf, sizeof(buf), stdin);
p = strchr(buf, '\n');
if(p) *p = '\0';
alphabetsort(dst, buf);
printf("%s\n", dst);
return 0;
}


803 名前:デフォルトの名無しさん [2008/09/23(火) 15:20:03 ]
[1] 授業単元: if文がテーマです
[2] 問題文:アラビア数字を入力→ローマ数字に変換して表示
   〔ex.〕5→V 111→CXI 1000→M
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: ?
 [3.3] 言語: C
[4] 期限: 9/25(木)
[5] その他の制限:if、printf、scanf、+-*/%のみで簡潔に作成

804 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 16:10:26 ]
>>803
4はIV、IIIIどっち(減算則も考慮するのか)

805 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 16:20:17 ]
>>803
#include <stdio.h>
void func(int n, char I, char V, char X)
{
if (n == 1) printf("%c", I);
if (n == 2) printf("%c%c", I, I);
if (n == 3) printf("%c%c%c", I, I, I);
if (n == 4) printf("%c%c", I, V);
if (n == 5) printf("%c", V);
if (n == 6) printf("%c%c", V, I);
if (n == 7) printf("%c%c%c", V, I, I);
if (n == 8) printf("%c%c%c%c", V, I, I, I);
if (n == 9) printf("%c%c", I, X);
}
int main()
{
int tho, han, dec, mon, x;
printf("%s", "数字を入力してください\n");
scanf("%d", &x);
tho = x / 1000;
han = x % 1000 / 100;
dec = x % 100 / 10;
mon = x % 10;
func(tho, 'M', '*', '+');
func(han, 'C', 'D', 'M');
func(dec, 'X', 'L', 'C');
func(mon, 'I', 'V', 'X');
return 0;
}


806 名前:デフォルトの名無しさん [2008/09/23(火) 18:47:34 ]
>>803 IVでもIIIIでもどちらでも構いません。

>>804 早速の対応有難うこざいます。
void funcなどは習っていないため、出来ればvoid main()で始まる形に
していただけると有り難いのですが…。よろしくお願いします。

807 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 18:58:27 ]
>>806
>if、printf、scanf、+-*/%のみで簡潔に作成
forやwhileもだめなんだよね


808 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 19:33:32 ]
>>806
とりあえず関数にまとめてた部分を展開しておいたよ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7734.txt

809 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 19:34:58 ]
もはや %c の意味がほとんどないなw

810 名前:デフォルトの名無しさん [2008/09/23(火) 22:53:42 ]
[1]プログラミング実習
[2](1)単純洗濯法を用いて人口の多い県から順にソートせよ
  (2)バブルソートを用いて人口密度の大きい県から順にソートせよ
  北海道    83461     5692    
  青森     9606     1482
  東京     2186     11772
  愛知     5150     6868
  大阪     1892     8797
[3] windows/dev-c++4.9.9.2/cのみ

[4] 9月中

[5] 配列・if・while・for・プロトタイプ関数まで既習



811 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 22:55:56 ]
用語がwww

812 名前:デフォルトの名無しさん [2008/09/23(火) 22:56:38 ]
>>810
そのデータの取り込み方は自由なの?
ソースに埋め込んじゃっておk?
標準入力にすべき?

813 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 23:10:02 ]
バブルで洗濯?

814 名前:デフォルトの名無しさん [2008/09/23(火) 23:12:00 ]
洗濯→選択ですね すみません
標準入力でお願いします



815 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 23:27:52 ]
県じゃないのがある…という突っ込みはナシ?

816 名前:795 [2008/09/24(水) 01:52:00 ]
>>800
考えてもらいありがとうございます。

しかし、そのプログラムだと
#include <stdio.h>

int main(void)
{
   int a = 0;
   printf("aは%dです",a);
   /*コメント1
   /*コメント2*/

   /*コメント3
   return 0;
}
/*プログラム終わり*/

となったときに「/*コメント1」の行も検出してしまう
と思ったのですが、平気でしょうか?

わざわざ考えてもらったのに
文句が多くてすみません。

817 名前:デフォルトの名無しさん [2008/09/24(水) 02:05:03 ]
[1] C
[2] CSVファイルを構造体へ全て格納後、別ファイルへ出力せよ。
 (CSVファイルフォーマットは任意とし、行数は可変とする)
[3] WIN/gcc/C
[4] 2008/09/26

CSV読み込み、出力は出来たのですが……
CSVの中身を一度全て格納しなければならず、そこで困っております。
構造体の配列を定義して、足りなくなったらreallocして行けばいいのしょうか?


818 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 02:16:40 ]
>>817
読み込みができてるならそのサイズでmallocすればいいじゃないか

819 名前:デフォルトの名無しさん [2008/09/24(水) 02:28:36 ]
>>818
なんと言いますか、C++などのArrayみたいなことをしたいのです。
構造体の配列にCSVファイルを全部保存したいのですが、
ファイル行数が可変のために、行数に応じて構造体の配列数を増やして行く方法しかないのかなと疑問に思っております。
ファイルが大きいとreallocするときに時間がかかりそうなので……


820 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 02:35:32 ]
>>819
Cで可変長配列的なことしたいなら、malloc/reallocするしかないよ。
今回の件なら、最初に一度ファイル全体を空読みして、行数だけ数えてから行数分mallocして、
2度目のファイル読みで格納ってすれば、reallocの無駄は省ける。
けど、代わりにファイル2度読みのコストがかかるから、どちらのコストをとるかだね。



821 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 02:41:49 ]
100Kずつ確保

822 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 02:42:45 ]
配列が連結していないといけない訳でもあるか?

823 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 02:47:52 ]
配列で無きゃだめなの?リストを使う問題かと思ったんだが

824 名前:デフォルトの名無しさん [2008/09/24(水) 02:54:00 ]
>>820
やはり可変だと、メモリ確保し続けるか、必要分を確認してとかではないと
辛いみたいですね、ありがとうございます。
>>821
無駄なメモリ領域を出来るだけ省きたいのです
>>822
特にはないですが、ポインタの配列にするほうがいいでしょうか?
>>823
Cにリストってありましたっけ?

825 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 02:55:32 ]
無駄を省きたいのなら10Kずつ確保でいいだろう。
たらなくなったら10Kずつ増やしていく

826 名前:デフォルトの名無しさん [2008/09/24(水) 03:00:49 ]
>>825
10Kに満たないと勿体なくないですか?
気分の問題だと思うのですが、ピッタリにしたいんです。

>>823
リストを調べました、リスト構造のことで間違いないでしょうか?
難しそうですが、これならやりたいことが出来そうです。
ありがとうございました。

>レスしてくださった方々へ
malloc/reallocなら簡単そうですが、やはりコスト的な問題があるようなので、
難しそうですがリスト構造を勉強して、それで対応してみます。
深夜にもかかわらず、助けていただいてありがとうございました。


827 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 03:02:49 ]
まあ、他言語の可変長配列だって結局malloc/reallocと同じことしてるわけだから
reallocをそんなに嫌わないであげてください><

828 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 03:04:37 ]
>>826
そしたら、あらかじめファイルサイズを求めておいて、バイナリでそのまま読み込めよ
ぴったりだぞ

829 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 03:05:42 ]
>>826
これは実装依存だが、malloc(13);とかやったとしても実際の確保領域は16バイトだったりするよ。

嫌なら要素一回ずつreallocするしかないけど、パフォーマンスが落ちるし、無駄が出るよ。

830 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 03:07:09 ]
ファイルの行数を先に取得して一括でmallocすればいいことじゃないのか?
可変にこだわる意味がわからないのだが

ところでC++のArrayってなんだ?
std::vectorのことならかなり豪快にメモリ確保してるぞ



831 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 03:13:06 ]
こういう時って、やっぱりみんなテラバイト超のファイルもプロセスできるように作ってる?

832 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 03:17:55 ]
>>827
行数増えた場合大変なことになりそうなのです
>>828
ファイルそのままだと使いづらいじゃないですか……
って確かに、そう考えると10Kつづ確保して行ってもいい気がしてきました。
>>829
mallocは指定した分だけ確保だと思ってました。
実際は(多少?)誤差があるんですね、勉強になりました。
>>830
それのことです。
なるほど……便利だと思ってたのですが、裏では結構あくどいことしてるんですね。

833 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 10:42:40 ]
>>832
あくどいっつーかきっちり確保するよりおおむね効率がいいからだな
誤解するなよ

834 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 14:07:01 ]
[1] 授業単元:映像処理
[2] 問題文(含コード&リンク):太陽系プログラム
planet.cのプログラムを以下のように発展させよ。
@オブジェクトの色を変更する
Aオブジェクトをソリッドにする
B他のオブジェクト形状を使用する。(例:惑星を立方体にする)
C隠面処理を行う。
D惑星に(その惑星の周囲をまわる)衛星をつける。
E2個のパーツを組み合わせたオブジェクトを作る。(例:土星)
F色、光沢などの表面属性を時間経過で変化するようにする。(例:時間とともに色が自動的に変化する)
G複数の軌道面がある。

///planet.c///
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7735.txt

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語:C
[4] 期限:9月28日

丸投げです。よろしくお願いいたします。

835 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 16:19:49 ]
>>834
4までやった
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7736.c

836 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 17:14:47 ]
ついでにmallocも効率やら扱いやすさのためであって意図的。
誤差というべきではない。

837 名前:834 mailto:sage [2008/09/24(水) 17:28:33 ]
>>835
提出の条件がGまで完成したプログラムですので、
できればGまで作って頂けませんでしょうか。
せっかく作って貰ったのに、すいません・・・

838 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 17:38:09 ]
学校でOpenGLなんてやるのか
へーおじさんびっくりだわ

839 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 17:59:17 ]
どうせGLUTだろ

840 名前:835 mailto:sage [2008/09/24(水) 18:26:06 ]
>>837
暇で面白そうだからやっただけ
気が向いたら残りもやるかもしれないがあてにしないほうがいい



841 名前:798 mailto:sage [2008/09/24(水) 22:42:13 ]
>>816
そういうのを検出するプログラムじゃないの?
/*コメント1の行の検出はNGで
/*コメント3の行の検出のみやれってこと?
その場合、検出しなきゃいけない行の基準がわからないんだけど?

>>795で示している例でも/*コメントから始まって、プログラム終わり*/で
コメントはちゃんと閉じているよね?

842 名前:デフォルトの名無しさん [2008/09/24(水) 23:19:18 ]
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
「t[5]に5つの整数が格納されている。これを昇順にソートするプログラムを示せ。
ソートのアルゴリズムは何でもよい事とする。」
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:CPad for Borland C++ Compiler
 [3.3] 言語:C++
[4] 期限:9/25まで

これをバブルソートで作る場合のプログラムをお願いしますm(_ _)m

843 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 23:30:07 ]
>>842
#include<stdio.h>
int main()
{

int t[] = {2, 40, 2, 554, -4}, i, j, tmp;
int n = sizeof(t) / sizeof(int);
fputs("前 : ", stdout);
for (i = 0; i < n; ++i) {
printf("%d ", t[i]);
}
putchar('\n');

for (i = 0; i < n - 1; i++){
for (j = n - 1; j > i; j--) {
if (t[j] < t[j - 1]) {
tmp = t[j];
t[j] = t[j-1];
t[j-1] = tmp;
}
}
}
fputs("後 : ", stdout);
for (i = 0; i < n; ++i) {
printf("%d ", t[i]);
}
putchar('\n');
return 0;
}
こんなんでいかが?

844 名前:デフォルトの名無しさん [2008/09/24(水) 23:54:04 ]
>>843
ありがとうございます><


845 名前:795 [2008/09/25(木) 23:03:51 ]
>>841
ごめんなさい。
説明不足だったかもしれません。
一応、
>>795の最初のほうに書いてあるように
「コメントが関数内で閉じられているかチェックする」
ようにしないといけないんです。
それがどうしても難しくてわからないんです。
本当に質問する立場でえらそうにしてごめんなさい。
どうやったら、関数内でコメントが閉じられているか判断できるでしょうか?



846 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 09:47:53 ]
どっちにしろ>>798では
printf("/*\n");
とか出てきたら破綻する。

847 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 15:06:54 ]
[1] 授業単元:課題自由研究
[2] 問題文(含コード&リンク):ポーカーのプログラム製作
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
 [3.3] 言語:C++
[4] 期限:特になし
[5] その他の制限:C++であること

ない脳みそで考えたのですが、JOKERの効果と役の設定がわかりません。
今の所製作してあるプログラムの駄目出しもお願いします。

848 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 15:11:00 ]
// 乱数の初期値のセット
srand((unsigned) time(NULL));
// 0〜9 までの乱数を 1回生成
for (i=0; i<5; i++) {
n = rand() % 4; // 10は0〜9の要素数 マーク判定用
m = rand() % 11; // カードの数値判定用
//マーク判断、数値の判定
if(n==0){sprintf(str, "H %d " , m);
TextOut(hdc,50,20*i,str,(int)strlen(str));
a=m;}
else if(n==1){ sprintf(str, "D %d " , m);
TextOut(hdc,50,20*i,str,(int)strlen(str));
b=m;}
else if(n==2){ sprintf(str, "C %d " , m);
TextOut(hdc,50,20*i,str,(int)strlen(str));
c=m;}
else if(n==3){ sprintf(str, "S %d " , m);
TextOut(hdc,50,20*i,str,(int)strlen(str));
d=m;}
if(m==0){//機能してないかも・・・・・・
sprintf(str, "JOKER");
TextOut(hdc,50,20*i,str,(int)strlen(str));
}}
z1=a;z2=b;z3=c;z4=d;


849 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 15:11:52 ]
//役の判定 a b c d z
if(a==b || a==c || a==d || b==c || b==d || c==d || a==z1 || d==z2 || c==z3 || d==z4){
sprintf(str, "ワンペア!!");
TextOut(hdc,50,100,str,(int)strlen(str));}
else if(a==b==c || b==c==d || c==d==a || z1==a==b || z2==a==b || z2==b==c ||z3==b==c || z3==c==d || z4==d==a || z1==d==a){
sprintf(str, "スリーカード!!");
TextOut(hdc,50,100,str,(int)strlen(str));}
else {sprintf(str, "ノーペア!!");
TextOut(hdc,50,100,str,(int)strlen(str));}

850 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 15:27:42 ]
GUI?



851 名前:834 mailto:sage [2008/09/26(金) 15:31:08 ]
>>834
どなたかお願いできませんでしょうか。

852 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 15:50:51 ]
>>849
これはひどい

853 名前:デフォルトの名無しさん [2008/09/26(金) 16:53:37 ]
[1] 授業単元:C
[2] 問題文(含コード&リンク):
数値が文字列として開業で区切られたデータファイル(例:音楽をA/D変換により取り込んだデータ)
の処理を考える。データファイルがデータのみである場合に、その
データファイルに含まれるデータ総数を数えるプログラムを作成しなさい。
[3] 環境
 [3.1] OS:fedora
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:9月末

よろしくお願いします

854 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 17:01:31 ]
>>853
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE * fp;
int x, n = 0;
fp = fopen("data.txt", "r");
while (fscanf(fp, "%d", &x) == 1) n++;
printf("%d個です\n", n);
fclose(fp);
return 0;
}

855 名前:デフォルトの名無しさん [2008/09/26(金) 17:06:40 ]
>>854
ありがとうございます!

856 名前:853 [2008/09/26(金) 17:29:40 ]
すいません、続けてですがこちらもお願いします。


[1] 授業単元:文字列の操作
[2] 問題文(含コード&リンク):
各人の氏名を、性と名にわけてキーボードからの入力で2つの変数に格納し
2つの文字列を連結することで、性と名の区切りに1つの空白を入れて
表示するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:fedora
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:9月末

857 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 17:37:25 ]
>>856
#include <stdio.h>
int main()
{
char first[2000], family[2000], full[4000];
puts("姓を入力してください");
scanf("%1999s", family);
puts("名を入力してください");
scanf("%1999s", first);
sprintf(full, "%s %s", family, first);
puts(full);
return 0;
}

858 名前:853 [2008/09/26(金) 17:42:29 ]
>>857

ありがとうございます!助かりました!

859 名前:795 [2008/09/27(土) 02:32:05 ]
すみません。
誰か
>>795
のソースを作ってくれないでしょうか。
ここ数日、考えても本当にわからなくて。

860 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 03:17:27 ]
>>859
どういうものを作ればいいか分からない
もう少し分かりやすく説明してくれないかな



861 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 03:25:21 ]
>>859
もうちょいパターンを洗い出して整理してはどうか。まずそこが出来てないように思う。

/* OK パターン */

/*
/* OK パターン */
hoge("/* OKパターン */");

int main(void)
{
/* NG パターン
  return 0;
}
/*

こんなもん??

862 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 04:02:28 ]
結構厄介だな。
普通コンパイラなんかだと最初にコメントを除去するからな。
コメントそのものとコードとの位置関係をチェックするのか…。


863 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 04:16:05 ]
真面目にやろうと思えばコンパイラのパーサに近いものを作らなきゃならないし
宿題レベルの問題じゃないと思うけどね。

>>859
コメントの中に"}"があれば関数が閉じてない可能性は高くなるけれど
以下のプログラムを入力した場合どんな出力になってほしい?

void main(void)
/* {が関数の始まり */
{
/* }まで関数の処理を記述する (}を含むけれど正しいコメント) */

/* 関数の返り値 (コメント閉じ忘れで本来検出したい部分)
return 0;
}
/* プログラムの終了 */


864 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 04:31:28 ]
「関数」にはこだわらないほうがいいんじゃないかな。
関数と構造体と配列の初期化と単なるブロックの { } を区別するのはそれこそパーサーになってしまう。
とりあえずは全部ひっくるめて { } とコメントだけに注目して作ったほうがいいと思う。

865 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 04:39:48 ]
}と};で区別すればなんとかなりそうな
C言語で関数をブロックでくくる事ってできたっけ?

866 名前:デフォルトの名無しさん [2008/09/27(土) 12:09:45 ]
整数型配列 a[5]を宣言する。
配列aに適当な整数を代入する。
配列から最大値を求め画面表示する。
#include<stdio.h>

main()
{
int a[5];
int maxdata;
int i;

a[0]=12;
a[1]=3;
a[2]=40;
a[3]=10;
a[4]=30;

maxdata=a[0];

for(i=1;i<5;i++)
{
if(?)
{
maxdata=a[i];
}
}
printf("最大値:%d",maxdata);
}

?の部分がわかりません。
お願いします。

867 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 12:20:07 ]
a[i] > maxdata

868 名前:デフォルトの名無しさん [2008/09/27(土) 12:22:37 ]
>>867
ありがとうございました。

869 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 12:37:03 ]
お礼のおっぱいはまだかね?

870 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 14:10:17 ]
>>865
グローバルな領域に何も無い空文(;だけ)があっても
エラーにならないよ。
int main()
{
・・・
}; /* 関数の終わりと空文と解釈 */



871 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 17:33:32 ]
【質問テンプレ】
[1] 授業単元:プログラミング言語演習U
[2] 問題文(含コード&リンク): 住所録管理を行うプログラム。
データは「氏名」「住所」「電話番号」「メールアドレス」「グループ」を持つようにする。
データの登録、変更、削除、検索ができるようにする。
登録の際、「氏名」は必須とし、他の項目は空白でも良しとする。
検索は、「氏名」「住所」「グループ」で行えるようにする。
データは、テキストファイルに書き込み、次回実行する際、それを読み込むようにする。
[3] 環境
 [3.1] OS:Fedora Core 6
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:9月中
[5] その他の制限:特に無し


872 名前:795 [2008/09/27(土) 19:14:40 ]
>>860
そうですね。
>>861さんのいうように

/* OK パターン */

int main(void)
{
/*
/* OK パターン */
hoge("/* OKパターン */");
}

int main(void)
{
/* NG パターン
  return 0;
}
/*

int main(void)
{
/* NG パターン
  return 0;
}
*/

の5パターンで考えています。

本当に難しすぎますよね。
課題出した先生も難易度高すぎだと思いました。

873 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 19:31:26 ]
>>859
つ {で+1 }で-1


874 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 19:33:12 ]
パターンじゃなくてステートで考えた方がいい。

875 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 19:49:41 ]
これはOK?
int main(void)
{
/*}
int hoge(void)
{
/* } */
 return 0;
}


876 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 20:42:46 ]
#define BIGIN {
#define END }
みたいにされてたり、
その後で#undef BIGINされてたりして、
で、それらが#ifdefやら#ifndefやらに囲まれてて、
その間にパズルみたいにコメントがはりめぐらされたりしてるどうしようもないコードも
面倒みなきゃいけないならプリプロセッサ部分も作らなきゃいけないから大変だな。

877 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 21:31:44 ]
パターンもステートも使って考えると
対象ファイルを読みながら/**/で囲まれた部分を
検出したら囲まれた部分は出力せず
その直後の行まで別ファイルに書き出し、
その時点でそのファイルを子プロセスで
Cコンパイラにコンパイルさせ、エラーコー
ドがunexpected endof fileでなければ
コメントエラーであると判断して、
その行を出力する
でオK?

878 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 21:34:25 ]
>Cコンパイラにコンパイルさせ、エラーコードが
そこを作る課題だろうが。

879 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 21:43:18 ]
[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):
ファイルを読み込んで読み込んだファイルが
C言語の文法に合致しているかチェックするツールを
作る。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:C
[4] 期限: 本日中
[5] その他の制限: 制限は特にありません。
[6]備考:fopenした後からの処理でいいので教えてもらえると幸いです。

880 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 21:46:58 ]
字句解析と構文解析をするプログラムか
難易度高いな



881 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 21:54:10 ]
既存のツールを利用するという >>877 のアイデアはおもしろいと思うぞぬ

882 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:01:40 ]
>>879を本日中っていうかあと2時間でバグなく動かせる奴ってすごいよな。

883 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:11:52 ]
>>879
難易度高いぞそれ

つshellexec

884 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:15:27 ]
>>876
プリプロセッサを展開させるならboost::waveがあるぞ

885 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:16:42 ]
>>882
宿題の期限が土曜って

886 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:37:00 ]
>>879
#include<stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[])
{
int i, ret_code;
char cmd[1024], *filename_src, *filename_tmp="hoge.tmp";
FILE *fp_tmp;

for(i=1;i<argc;i++)
{
filename_src=argv[i];

fp_tmp=freopen(filename_tmp, "w", stderr);
if(fp_tmp==NULL)
{
fprintf(stdout, "\nERROR: temporary file cannot open.\n");
exit(1);
}
sprintf(cmd, "gcc -c %s", filename_src);
ret_code=system(cmd);
freopen("con", "w", fp_tmp);
remove(filename_tmp);

if(ret_code) printf("\nInvalid source code. %s\n", filename_src);
}

return 0;
}

887 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 23:15:07 ]
>>879
その問題は例えば「{}」の数があってるかだけ数えるとか
そんな条件ついてたりしないか?

じゃなきゃ無理だろ

888 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 01:01:38 ]
>>871
最近作ったがコードが見つからない。
作る時間もないのでその時のことを。
構造体とキューを使うとすぐできた。
 

889 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 01:11:22 ]
>>871のものです。

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

自力でここまでやってみましたが、うまく実行できません。
それに、このプログラムでは、「氏名」を必須、他の項目は空白で良しという条件が満たされてません。

何卒アドバイスのほうをよろしくお願いします。

890 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 01:51:53 ]
氏名だけは入力長0だったら再入力させれば?



891 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 09:36:29 ]
>>889
宿題ぐらいのレベルなら、入力部を

int c = 0;

while (c == 0){
printf("氏名 >> ");
fgets(data[n].name, N, stdin);
c = strlen(data[n].name);
data[n].name[c] = '\0'; //最後の改行をNULL文字にする
}

で十分でしょう。

892 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 10:18:51 ]
>>891
たいした問題じゃないけどそれだとN-1文字以上読み込んだときに一文字減るね

893 名前:893 [2008/09/28(日) 10:46:03 ]
[1] 授業単元:機械工学学生実験(デジタル信号処理)
[2] 問題文(含コード&リンク):
※長いのでこの書き込みの下に分けて書き込みします。すみません。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語:C
[4] 期限: 明後日
[5] その他の制限: ないです。
[6]備考:C言語を習ったことがないです。C++を大学1年次に半年だけ授業でやりました。
    今回の実験内容はTMS320C6713 DSKボードを使用して、マイク入力した音声を正弦波に変換し、
    スピーカで出力するまでのプログラムの流れをPCを操作しながら学ぶというものでした。

上記の問題をパワーポイント2枚にまとめなければならないので、このプログラムの解説をお願いいたします。
特に/* main */以下をできる範囲でお願いいたします。

894 名前:893 [2008/09/28(日) 10:52:40 ]
[2] 問題文(含コード&リンク):
以下のプログラム中の割り込み処理についてマイクからスピーカまでのデータの流れに沿って説明せよ。

/* Include files */
#include <csl.h>
#include <csl_mcbsp.h>
/* Declarations */
#define DRR 0x01900000 // McBSP1 receive address
#define DXR 0x01900004 // McBSP1 transmit address
// #define BUFF_SIZE = 256
/* Prototypes */
extern void dsk6713_init(void);
interrupt void voice_change(void);
/* References */
extern MCBSP_Handle hMcbspData;
/* Global Variables */
#pragma DATA_SECTION(buff1,"myData");
short buff1[256] ;
short buff0[256] ;
short I= 0x0000 ;
short y[3] = {0, 0x15AE, 0};
short a1 = 0x786F; /* 2*cosWT */
// short a1 = 0x7FFF; /* 2*cosWT */
// short a1 = 0x8000 ; /* 2*cosWT */
volatile short *drr = (volatile short *)DRR;
volatile short *dxr = (volatile short *)DXR;


895 名前:893 [2008/09/28(日) 10:54:25 ]
/* main */
void main(void)
{
dsk6713_init();
MCBSP_write(hMcbspData, 0);
while(1){}
}
short amari( short i )
{
// short i ;
short j ;
//j = i/256 ;
j = i - (i/256)*256 ;
// j = i ;
    return(j);
}
interrupt void voice_change(void)
{
// short tmpI ;
    y[0] = ((int)a1*(int)y[1]>>14) - y[2];
y[2] = y[1];
y[1] = y[0];
*dxr = ((int)y[0] *(int)(*drr)) >> 14;
    I = amari( ++I );
buff1[ I ] = *dxr ;
buff0[ I ] = y[0] ;
// buff1[ I ] = y[0] ;
}

見づらくてすみません。894-895が今回与えられたソースの全てです。

896 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 10:54:58 ]
6713のコンパイラのlong intが32bitじゃなくてはまったのもいい思い出。

897 名前:834 mailto:sage [2008/09/28(日) 14:34:10 ]
何度もすみません。
明日の昼12時まででしたら、提出遅れの形で提出できますので、
>>834 どうかお願いいたします。
配点大きな課題ですので、本当に困ってます…
よろしくお願いします。

898 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 14:37:02 ]
罵声を浴びるの覚悟でOpenGLのスレとかで聞いた方がいいんじゃないの?

899 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 15:07:04 ]
止めてやれよ、こういうの送り込むの

900 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 15:19:59 ]
ところでOpenGLの本ぐらい読んだの?



901 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 15:55:21 ]
>>897
よくわからんが、軌道計算とかもするの?

902 名前:834 mailto:sage [2008/09/28(日) 16:15:15 ]
>>900
最近始めたので、まだ教員の配布資料しか手元にありません。
その資料にもOpenGLの特徴とか投影法?の仕組みしか載っていませんので、
プログラムについては完全にお手上げ状態です…
今夜にでも書店行って、買い足そうと思います。

>>901
軌道計算とは何でしょうか?
一応、明日までに教員の前で作成したプログラムを実行し、
Gまでの条件が満たされた動画であればOKという課題です。
適当な返事ですみません…

903 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 16:20:07 ]
1から順に課題をクリアしていけば到達できるようになってるね。


904 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 16:35:05 ]
>>902
少なくとも問題に軌道面という単語はあるのだが。


905 名前:デフォルトの名無しさん [2008/09/28(日) 19:07:59 ]
[1] 授業単元: cプログラミング基礎(一般的な入出力)
[2] 問題文(含コード&リンク): c言語で読み出しファイルからファイル位置と読みだすバイト数を指定し読み出
し、違う名前のファイルに書き出すプログラムを作成せよ。ただし読み出しファイル、読みだすデータ位置、読みだすバイト数
書き出すファイル名はDOS窓で指定できるようにすること。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: 不明
 [3.3] 言語: c
[4] 期限: 2008年9月28日23:59まで
[5] その他の制限: 大学一年レベルの簡単でなるべく分かりやすいように書くこと。

906 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 19:30:46 ]
>>905
大学1年レベルって結構高レベルな気がするんだけど
初めてC言語習いましたってレベルのことなのか?


907 名前:デフォルトの名無しさん [2008/09/28(日) 19:34:34 ]
大学1年で初めて習い始めたというレベルだそうです。
ちなみに当方は前期の講義をまったく覚えておらず何もできない状態です。

908 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 19:39:54 ]
>>905
#include <stdio.h>
int main()
{
FILE *fpr, *fpw;
char filename_r[1000], filename_w[1000];
char data[30000];
int a, n;
puts("読み込むファイル名");
scanf("%s", filename_r);
puts("書き込むファイル名");
scanf("%s", filename_w);
puts("読み出す位置");
scanf("%d", &a);
puts("読み出すバイト数");
scanf("%d", &n);
fpr = fopen(filename_r, "rb");
fpw = fopen(filename_w, "wb");
fseek(fpr, a, SEEK_SET);
fread(data, 1, n, fpr);
fwrite(data, 1, n, fpw);
fclose(fpw);
fclose(fpr);
return 0;
}


909 名前:デフォルトの名無しさん [2008/09/28(日) 19:53:39 ]
ありがとうございます。早速ためしに動かしてみますね。

910 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 22:06:51 ]
>>905
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7740.c
無駄に長いかも



911 名前:834 mailto:sage [2008/09/28(日) 22:35:36 ]
>>904
確認しましたがFGは難しいので、
省いても良いそうです。減点ですけど…
Cまでは作って頂けましたので、残りDEお願いできませんでしょうか。


912 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 22:44:19 ]
>>847
ルール合ってるか分からん、表示その他結構色々適当、C++じゃない、
といった感じなんで参考にもならんかもですが。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7741.txt


913 名前:デフォルトの名無しさん [2008/09/28(日) 23:20:47 ]
>>910
こんな方法があったんですね。只今用語を調べながら
どうなっているか理解に努めています。ありがとうございました。

914 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 23:32:12 ]
[1] 授業単元: 初級c++
[2] 演技のよくない数字4と9をはずして、1,2,3,5,6,7,8,10・・・・と数える「49抜き」があります。
この49抜きの数は10個の数字のうち4と9が無いので8進数と同じように考えることができます。
ここで、10進数の符号なし整数を渡してそれに対応する49抜きの数値を標準出力する関数void printfwo49(unsigned int n)
を以下のように空欄を埋め完成させなさい。

void printwo49(unsigned int n)
{
char buf[]="01235678";
if(空欄){ //nが8ならば上位の桁がある
printwo49( 空欄 );//上位の桁の処理を行う。
}
putchar(buf[n % 8]);
}

 [3.1] OS:xp
 [3.2] コンパイラ名とバージョン:vc6.0
 [3.3] 言語: c++
長文申し訳ありません。
よろしくおねがいいたします。

915 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 23:35:20 ]
>>914
n>8
n/8

916 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 00:21:15 ]
n>=8
じゃないかな

917 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 00:31:21 ]
>>834 7番 これじゃ手抜きすぎ?
glColor3d((double)year / 360.0, (double)day / 360.0, 1.0);


918 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 00:39:21 ]
>>914

ttp://ziddy.japan.zdnet.com/qa4345093.html

919 名前:914 mailto:sage [2008/09/29(月) 00:51:40 ]
ありがとうございます

920 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 00:51:51 ]
こんなんみつけた

pw137.cs.ie.u-ryukyu.ac.jp/repos/complex_back/OpenGL_sample/p4-MovingPlanet.c



921 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 00:57:17 ]
Borland c++のunsigned int 型は4バイトの大きさがあります。4バイトというと、
ちょうどIPv4でのIPアドレスのバイナリ表現と同じ大きさになります。そこで、
unsigned int型の引数を渡し、それをxxx.xxx.xxx.xxxという形式で標準出力に
出力する関数void printIPAddress(unsigned int address)を以下のように書きました。
空欄を埋める正しい答えを選択せよ。

void printIPAddress(unsigned int address)
{
printf("%d.%d.%d.%d",
(address & 空欄)>>24,
(address & 空欄)>>16,
(address & 空欄)>> 8,
(address & 空欄));
}

@ 0x000000ff A 0x0000ff00 B 0x00ff0000
C 0xff000000 D 0xff00000000

どうかよろしくおねがいします

922 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 01:26:34 ]
c++の問題です。よろしくお願いいたします。

ネットワークのルートアドレスとネットマスク、そしてチェックしたいIPアドレスを
渡して、チェックしたいIPアドレスがそのネットワークに含まれているかどうかを
チェックする関数int checkIPAddress(unsigned int root,unsigned int mask,unsigned
int address)を以下のように書いた。空欄をうめよ。
ただし、あるIPアドレスがネットワークに含まれているかどうかチェックするには、
ネットワークのルートアドレス(root)と、チェックしたいIPアドレス(address)の
ネットワークIDを比較してその値が同じであったら、そのネットワークに含まれていると
判定します。IPアドレス中のネットワーク部は、ネットマスクのビットパターンが1である部分と
考えます。IPアドレスからネットワークIPを取り出すには、IPアドレスをネットマスクの
ビットごとのANDを取り出します。詳細はインターネットの検索エンジンで「ネットマスク」
をキーワードに調べてください。

int checkIPAddress(unsigned int root,unsigned int mask,unsigned int address)
{
return(root 空欄@ 空欄A)==(root 空欄B 空欄C)
}

長文で申し訳ありません。よろしくおねがいします

923 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 02:05:40 ]
>>834
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7742.txt
とりあえず全部満たしたんじゃないかな
二個のオブジェクトで作ったのは、みかんっぽいなにか

924 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 02:19:26 ]
>>921
C
B
A
@

925 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 02:26:32 ]
>>922
>return(root 空欄@ 空欄A)==(root 空欄B 空欄C)
ここ問題あってる?
return(root 空欄@ 空欄A)==(address 空欄B 空欄C)
じゃない?
だとしたら
& mask & mask

926 名前:922 mailto:sage [2008/09/29(月) 02:30:48 ]
>>925さま
925さまのおっしゃる通りに間違えていました
ただしくは

ネットワークのルートアドレスとネットマスク、そしてチェックしたいIPアドレスを
渡して、チェックしたいIPアドレスがそのネットワークに含まれているかどうかを
チェックする関数int checkIPAddress(unsigned int root,unsigned int mask,unsigned
int address)を以下のように書いた。空欄をうめよ。
ただし、あるIPアドレスがネットワークに含まれているかどうかチェックするには、
ネットワークのルートアドレス(root)と、チェックしたいIPアドレス(address)の
ネットワークIDを比較してその値が同じであったら、そのネットワークに含まれていると
判定します。IPアドレス中のネットワーク部は、ネットマスクのビットパターンが1である部分と
考えます。IPアドレスからネットワークIPを取り出すには、IPアドレスをネットマスクの
ビットごとのANDを取り出します。詳細はインターネットの検索エンジンで「ネットマスク」
をキーワードに調べてください。

int checkIPAddress(unsigned int root,unsigned int mask,unsigned int address)
{
return(root 空欄@ 空欄A)==(address 空欄B 空欄C)
}

でした

927 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 09:33:57 ]
テキストファイルを読み込んで次の出力を得る。
(・・・)内の文字は、そのまま出力する。
ただし\に続く数字3文字は8進数として、バイナリ出力する。
<・・・>内の文字は、2桁ごとに16進数としてバイナリ出力する。
0からFに現れない文字は無視する。

928 名前:デフォルトの名無しさん [2008/09/29(月) 17:14:36 ]
[1] 授業単元: if文
[2] 問題文(含コード&リンク): 正の整数を入力すると、それをローマ数字で表示するプログラムを作りなさい。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio .Net 2003
 [3.3] 言語: C
[4] 期限: 9月30日16:00まで
[5] その他の制限: ほとんど習ってません(Cとは?・int・printf・scanf・if・else←今ここ)

よろしくお願いします。

929 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 17:17:10 ]
>>928
>>805
>>808
関数ならってないなら>>808でどうぞ



930 名前:デフォルトの名無しさん [2008/09/29(月) 17:20:27 ]
>>929
どうもありがとうございました。



931 名前:834 mailto:sage [2008/09/29(月) 17:57:31 ]
>>923
条件の多い課題をありがとうございました。
配点が大きな課題だったので何とか提出でき、助かりました。
本当にありがとうございます。

932 名前:デフォルトの名無しさん [2008/09/29(月) 21:59:29 ]
[1] 授業単元:Cープログラミング
[2] 問題文:(含コード&リンク): 配列を用いて0〜9の16個の数値を入力
  し、入力した数値の個数を*で表示させるプログラムを作りなさい。
  ただし、If文の使用はないものとし、関数はvoid型を使用しなさい。
[3] 環境
[3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C ++
[4] 期限: 10月1日16:00まで
[5] その他の制限:ポインタはまだ習ってないです。
  条件が多いですが、よろしくお願いします。


933 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 22:04:45 ]
ポインタならってないと関数で配列渡せない気がするんだけどどうしたらいい?
関数つかわなくてもいい?

934 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 22:06:31 ]
配列を渡してるように見せかければいいじゃない

935 名前:912 mailto:sage [2008/09/29(月) 22:21:58 ]
>>847
wiki見たら随分ルール間違ってた……
一応作り直してみたもののやっぱりルールに不安あり。
全然参考にならんかもですがまあ一応ってことで。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7743.txt



936 名前:デフォルトの名無しさん [2008/09/29(月) 23:23:37 ]
>>933
ポインタはまだ習ってませんが、使用してもかまいません。

937 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 23:31:13 ]
>>932
#include <stdio.h>
int main()
{
char s[16] = {0};
int i, j;
scanf("%16s", s);
for (i = 0; i < 16; ++i) {
printf("%c : ", s[i]);
for (j = 0; j < s[i] - '0'; ++j) {
putchar('*');
}
putchar('\n');
}
return 0;
}

いまいちよくわからんがこういうことでいいのかなぁ・・


938 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 23:34:22 ]
>>937
s[16+1] じゃね?

939 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 23:37:50 ]
>>938
scanf("%16s", s);
なのにか?

940 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 23:39:41 ]
>>939
終端に \0 がはいる



941 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 23:45:21 ]
>>940
ほんとだ、試したり調べたらそうだった
ごめんなさい

942 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 10:40:14 ]
初心者です


cydwinで、argvをつかって テキストファイル名を
引数としてわたして、ファイルの読込とファイルへ
の書込みをするプログラムを作成しました。

作成したいもの

このプログラムを呼び出シェルの作成シェル実行時の
引数を読込と書込みのファイル名を指定する

実行内容、エラーなどすべてのログをログファイルに
残す。

以上ですおねがいします

期限 10月1日

943 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 11:39:09 ]
○以下のプログラムを作成して下さい。

 課題2.getsを使用し文字列(10字程度)をキーボードから入力する。
      入力した文字列を前後逆転した文字列を画面表示する。

○表示画面イメージ

  入力文字列 : abcde    → ”入力文字列 : ”はprintf   abcdeはgetsで入力
  逆転文字列 : edcba    →printfで画面表示

期限 今日中

944 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 11:41:03 ]
>>942
>>1 の質問テンプレ読んで書き直してくれ
それと意味が分からない

a.out はすでに作成してあり、使い方は次のとおり
./a.out in.txt out.txt

で、イメージとしてはこんなんを作るのか?
stdout stderr の両方を処理しないといけないのと標準出力にも出すのかもしれないけど…
int main(void){
char fname_in[FILENAME_MAX], fname_out[FILENAME_MAX];
scanf("%s", fname_in);
scanf("%s", fname_out);
sprintf(cmd, "./a.out %s %s |& tee -a log.txt", fname_in, fname_out);
system(cmd);
return 0;
}

945 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 12:01:39 ]
>>944
たぶんシェルスクリプトを書いて欲しいだけのように見える。

--hoge.sh--
#!/bin/sh

./a.out $@ >logfile 2>&1

946 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 12:03:42 ]
[1] 授業単元:配列・ポインタ・文字列
[2] ○以下のプログラムを作成して下さい。

 課題2.getsを使用し文字列(10字程度)をキーボードから入力する。
      入力した文字列を前後逆転した文字列を画面表示する。

○表示画面イメージ

  入力文字列 : abcde    → ”入力文字列 : ”はprintf   abcdeはgetsで入力
  逆転文字列 : edcba    →printfで画面表示
[3] 環境
 [3.1] OS Windows
 [3.2] コンパイラ名とバージョン: わかりません
 [3.3] 言語: C
[4] 期限:今日中
[5] その他の制限:表示画面イメージを参照してください。

テンプレを使ってなかったので、書き直しました。
よろしくお願いします

947 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 13:27:37 ]
>>946
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
char buf[16];
int i;

printf("入力文字列:"); gets(buf);
i= strlen(buf);
printf("逆転文字列:");
while (i-- > 0) {
printf("%c", buf[i]);
}
printf("\n");
return 0;
}


948 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 15:12:17 ]
>>921
いまさらだが、こういう場合ってバイトオーダー関係しないの?

949 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 15:13:43 ]
>>948
その設問に関係あるとは思えないけど、どのへんが?

950 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 15:20:20 ]
>>949
算術シフト演算はバイトオーダー関係ないけど、
例えば、addressが 192.168.0.1 を数値化したものだとして、address & 0x000000ff は
バイトオーダによって 192 または 1 になるんじゃないかなって思ったんだけど。



951 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 15:29:42 ]
あ、ごめん。なんでもなかった。
& 0x000000ff が下位2バイト取ると勘違いしてた。
ぼけててほんとごめん。

952 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 15:35:36 ]
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク):
1、武君が持っているお金の3倍と景子さんが持っているお金の5倍を加えると7500円
武の2倍と景子の7倍を加えると8850円である。それぞれいくら持っているか

2、sinxとxを加えると1になった。xはいくらか

上の2つの問題について解く方法を考えプログラムをくめ
上の問題だけしか解けない方法でも構わない

できれば1はfor文の2重ループとx,yをランダムに発生させて合わせるという2パターン

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: 2008年10月3日まで
[5] その他の制限:
ネット上にある連立方程式のプログラム(?)をつかわずにやれとのことですが気にしないでいいです
変な問題なのですがどなたかお願いします


953 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 16:25:43 ]
>>952
sinのも似たようなもんだよ
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main(){
int takeru, keiko, found;
found = 0;
for(keiko = 1;keiko < 7500/5; keiko++){
for(takeru = 1;takeru < 7500/3; takeru++){
if(((takeru*3+keiko*5) == 7500) && ((takeru*2+keiko*7) == 8850))
found = 1;
if(found != 0)break;
}
if(found != 0)break;
}
if(found != 0)printf("武=%d 景子=%d", takeru, keiko);
}
void main(){
int takeru, keiko, found;
srand(time(NULL));
found = 0;
while(found == 0){
keiko = rand() / 7500/5 + 1;
takeru = rand() / 7500/3 + 1;
if(((takeru*3+keiko*5) == 7500) && ((takeru*2+keiko*7) == 8850))
found = 1;
}
if(found != 0)printf("武=%d 景子=%d", takeru, keiko);
}

954 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 16:30:12 ]
>>950
IPとして扱うならネットワークバイトオーダー(ビッグエンディアン)だろう
address & 0x000000ff は192になる

955 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 16:35:24 ]
またバカが掻き回しにきたかw

956 名前:801 mailto:sage [2008/09/30(火) 16:43:44 ]
>>802
コンパイルしてみた結果動くようです。
で、このプログラムはどういった動作をするものでしょうか?
結局よく分からなくて適当書いて提出しました。
とはいえ、取り敢えずどうもありがとうございました。

957 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 16:54:16 ]
>>956
関数名見ただけで何してるかわかるけど

958 名前:946 [2008/09/30(火) 19:18:33 ]
#include<stdio.h>

main()
{
char str[10];

gets(str);
printf("入力文字列:");
puts("str");

printf("逆転文字列:");

}

こんな感じかな?
全然わかんない・・・・
文字を逆転するのもどうしたらいいのかわからないし・・・・
誰か助けてください

959 名前:946 mailto:sage [2008/09/30(火) 19:21:26 ]
puts(str)だった

960 名前:946 [2008/09/30(火) 19:32:07 ]
>>947

習ってるのは
#include<stdio.h>
main()

みたいな感じで、main()をいじる方法はならってないです。
int main(〜)じゃない方法で出来ないでしょうか?

後最後のreturn 0;というのもまだ習っていません。

>>958みたいな感じではこのプログラムは作れないんでしょうか?

連レス失礼しました。



961 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 19:37:28 ]
>>960
#include <stdio.h>
#include <string.h>
main()
{
char buf[1600];
int i;

printf("入力文字列:"); gets(buf);
i= strlen(buf);
printf("逆転文字列:");
while (i-- > 0) {
printf("%c", buf[i]);
}
printf("\n");
}

説明するのもめんどくさいからこれで

962 名前:デフォルトの名無しさん [2008/09/30(火) 19:39:56 ]
>>937
>>932ですが、わかりにくかったみたいですみません。
例えば、キーボードから0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9
と、入力したとき、実行結果が
histo[0]=**
histo[1]=**
histo[2]=**
histo[3]=**
histo[4]=**
histo[5]=**
histo[6]=*
histo[7]=*
histo[8]=*
histo[9]=*
のように表示するプログラムをつくるという意味です(ヒストグラム)
ポインタは使用してもかまいません。必ず配列の受け渡しを行っていることが前提です。
どなたかお願いします。

963 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 20:12:11 ]
int histo[10] = {0};

while(適当に) histo[input_value]++;

と、詰めて、
for (i=0; i<10; i++) {
while(histo[i] != 0) {
printf("*");
histo[i]--;
}
printf("\n");
}
という感じに出力すればよいのではないかな。

964 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 20:20:03 ]
>>953さん
ありがとうございます。すごく助かりました

965 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 21:05:31 ]
>>953
すいません下のランダムの方がうまくいかないのですが

966 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 21:35:57 ]
>>965
どううまくいかないんだろう。
永久ループに見せかけていつかそのうち見つかるってアレじゃないのかな。

967 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 21:36:36 ]
>>965
rand() / 〜 じゃなくて rand() % (〜) の間違いだと思う

968 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 21:42:38 ]
できました。ありがとうございます


969 名前: 株主【tech:0/6602=0(%)】 誰か次スレ立てて mailto:sage [2008/09/30(火) 21:47:24 ]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

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

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

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

前スレ
C/C++の宿題を片付けます 115代目
pc11.2ch.net/test/read.cgi/tech/1217741118/

970 名前:デフォルトの名無しさん [2008/09/30(火) 22:24:22 ]
>>963
ありがとうございます。配列の受け渡しはどのようにすればよいのでしょうか。



971 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 22:34:48 ]
>>970
何に渡すの?別にmainだけでいいのでは。
というか内部関数作って配列渡そうとするとポインタ使うことになっちゃうよ

諸々を検討して、ああ、void main ってことなんだなって理解してたのに。

972 名前:971 mailto:sage [2008/09/30(火) 22:36:19 ]
と思ったら配列渡す前提となっていた。
どこを関数化するんですか?

973 名前:デフォルトの名無しさん [2008/09/30(火) 23:06:32 ]
>>972
入力した0〜9までの個数を*で表示する部分を関数化です。

974 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 23:21:26 ]
>>973
mainで
show_histogram(histo);
として、

void show_histogram(int *data) {
/* 出力処理 */
}

という関数を作ればよいのではないかな。

975 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 00:05:23 ]
ポインタを習っていない段階でも

void xxxxx(int data[10]) {
/* 中身 */
}

は習った気がする。

976 名前:デフォルトの名無しさん [2008/10/01(水) 00:11:27 ]
>>974
void histogram(int *data){
int histo[10]={0};
int i;
for(i=0;i<10;i++){
while(histo[i]!=0){
printf("*");
histo[i]--;
}
printf("\n");
}
}
int main(void){
int j, a[16];
for(j=0;j<16;j++){
scanf("%d",&a[j]);
}
histogram(a);
return 0;
}
という感じにすればよいのでしょうか。







977 名前:952 mailto:sage [2008/10/01(水) 00:43:26 ]
>>952の1番目の問題を解いてもらって2番目のsinx + x = 1 のほうの問題をやっていたのですがうまくいきませんでした
for文でまわしても結果がでてこないのとsinxのxはラジアンで扱ったほうがいいのかどうか(どっちでやってもうまくいかなかったんですが)わかりません
どなたかできる方いたら教えていただけないでしょうか?よろしくお願いします
 

978 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 00:45:22 ]
>>977
double f(double x){
return sin(x)+x-1;
}
として、あとはニュートン法でも二分法でも

979 名前:952 mailto:sage [2008/10/01(水) 01:19:08 ]
アドバイスありがとうございます。頭悪くて申し訳ないんですが以下のプログラムは何がいけないんでしょうか?全部おかしいですか?
#include <stdio.h>
#include<math.h>

double f(double x){
return sin(x)+x-1;
}

void main(void)
{
double x,z;
for(x=0;x<5;x++){
if(f(x)==0)z=1;
if(z!=0)printf("%d",x);
}
}

980 名前:952 mailto:sage [2008/10/01(水) 01:22:12 ]
すいませんこっちでした

#include <stdio.h>
#include<math.h>

double f(double x){
return sin(x)+x-1;
}

void main(void)
{
double x,z;
z=0;
for(x=0;x<5;x++){
if(f(x)==0)z=1;
if(z!=0)
{printf("x=%d\n",x);
z=0;
}

}
}



981 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 01:30:50 ]
>>952

#include <stdio.h>
#include <math.h>


int
main(void)
{
double x = 0.0;

for ( x = 1.0; 1.0E-8 < x; x -= 0.01 ) {
if ( (sin(x)+x-1.0) < 1.0E-8 ) {
printf("x == %f\n", x);
break;
}
}

return 0;
}

982 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 01:39:01 ]
>>976
>>963 には入力データを配列に詰める処理と、表示処理を書いているんだけど
なぜ >>937 のエッセンスを微妙に混ぜてしまったの?

分からないままとりあえず組み合わせて
> という感じにすればよいのでしょうか。
と締めくくるのは、クマーAAを生むのに必要な技術であって、プログラムを組むには必要ないよ。

983 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 01:56:40 ]
懐かしいネタがw

void show_histogram(int *data){
int i;
for(i=0;i<10;i++){
while(data[i]!=0){
printf("*");
data[i]--;
}
printf("\n");
}
}
int main(void){
int i, input_value, a[10] = {0};
for(i=0;i<16;i++){
scanf("%d",&input_value);
a[input_value]++;
}
show_histogram(a);
return 0;
}

こうですか!?わかりません!教えてください!
if禁止なので入力チェックは本当にわかりません><

984 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 07:29:23 ]
次スレ立てました
C/C++の宿題を片付けます 116代目
pc11.2ch.net/test/read.cgi/tech/1222813731/

985 名前:946 mailto:sage [2008/10/01(水) 10:48:55 ]
>>961
ありがとうございました。

986 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 13:51:59 ]
[1] 授業単元: c++
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7745.txt
・「年(西暦)」「月」を入力したら,その月のカレンダーを表示するプログラムを作成しなさい。ただし,下記の条件を満たすものとする。

【条件】
(1)カレンダークラスを作成し,main関数でカレンダークラスの実体を生成し,カレンダークラス内のメンバ関数(show関数)を呼び出してカレンダーを表示する。
(2)カレンダークラスはカプセル化されていること。
(3)カレンダー表示には,年,月および曜日,日を表示すること。
(4)上記以外については自由に作成してよい。


[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: VS2008
 [3.3] 言語:C++
[4] 期限: ([2008年10月5日まで]

987 名前:986 mailto:sage [2008/10/01(水) 13:56:34 ]
もしよければ閏年の表示もお願いします。

988 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 13:56:54 ]
>>986
>>715-719とかにあった気がする

989 名前:デフォルトの名無しさん [2008/10/01(水) 14:39:25 ]
[1] 授業単元: 数理科学C
[2] 問題文: 二分法を用いて√2の近似値を求めるプログラム
[3] 環境
 [3.1] OS: Windows/
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [2008年10月2日まで]
[5] その他の制限:特になし

990 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 15:10:20 ]
>>984
乙!

>>989
#include<stdio.h>
#include<math.h>

double f(double x){
return x*x-2;
}

int main(void){
double a=0.0, b=2.0, x;

while(f(a)*f(b)<0.0){
x=(a+b)/2;
if(f(a)*f(x)<0) b=x;
else a=x;
printf("x=%f f(x)=%f\n", x, f(x));
if(fabs(f(x))<1e-7) break;
}

return 0;
}

>>980
これの関数 f(x) の中身を書き換えればおk



991 名前:デフォルトの名無しさん [2008/10/02(木) 16:03:28 ]
質問なのですが、プログラム中に別のプログラムを呼び出す場合は
データをコマンドライン上で受け渡しはできないのでしょうか?
それともtxtデータなどで外部出力したものを読み取るしかないのでしょうか。


992 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 16:11:49 ]
>>991
LinuxでもWindowsでも引数つきでプログラム起動は出来るだろう


993 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 16:15:07 ]
引数か標準入力に書き込むか

994 名前:991 [2008/10/02(木) 16:30:53 ]
調べてみたら標準出力のパイプ処理でうけわたしできるみたいですね。
ありがとうございました。

995 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 20:05:42 ]
埋めるぜ

996 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 20:06:28 ]
次スレは >>984

997 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 20:10:55 ]
オレにとって手ごろな宿題が無くなってきてるな
ストライクゾーンが狭いからしょうがないけど

998 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 20:23:24 ]
1000取っちゃうぜ?

999 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 20:24:43 ]
どうぞどうぞ

1000 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 20:26:11 ]
では遠慮なく

1000ならオレ様勝手にレベルアップ



1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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