C/C++の宿題を片付けます 115代目
レス数が1000を超えています。これ以上書き込みはできません。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題を片付けます 114代目
http://pc11.2ch.net/test/read.cgi/tech/1216746971/
0002デフォルトの名無しさん
2008/08/04(月) 07:46:140003デフォルトの名無しさん
2008/08/04(月) 12:51:530004デフォルトの名無しさん
2008/08/04(月) 14:42:570005デフォルトの名無しさん
2008/08/04(月) 17:14:56m9(^д^)
[2]2chの掲示板のdatファイルを解析して、レスストリーム(後述)に分解し、
フレーム付きのページで、ストリーム単位に閲覧することができるような
HTMLファイルを生成する。Windows/Linux/MacOS共に対応し、コマンドラインで
スレURLを与えれば、カレントディレクトリに、取得した時点のYYYYMMDDHHMMSS形式の
名称のディレクトリを作り、そこにフレーム付きページを生成する。
☆レスストリーム
(1)同一スレの別のレスへのアンカーを含まないレスは単一のストリームに含まれる、その
ストリームの代表レスとなる。
(3)同一スレの別のレスへのアンカーを含むレスは、指しているレスが所属するストリーム
のすべてに含まれる。
※一つのレスが複数のストリームに含まれることはあり得る。
[3] Windows/Linux /MacOS/gcc/C言語が望ましいがC++でも可
[4] 7月中でしたが8月中に変更
0007デフォルトの名無しさん
2008/08/04(月) 19:44:01どこの学校の何年の課題だよ
0008デフォルトの名無しさん
2008/08/04(月) 19:50:190009デフォルトの名無しさん
2008/08/04(月) 22:04:00乙
0010デフォルトの名無しさん
2008/08/04(月) 22:14:030011デフォルトの名無しさん
2008/08/04(月) 22:20:28サンプルの dat とそれに対する出力例うp!
0012デフォルトの名無しさん
2008/08/04(月) 23:07:23[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)
よろしくお願いします
0013デフォルトの名無しさん
2008/08/04(月) 23:11:56a.txtとb.txtをアップしろ
0014こんなんかな?
2008/08/04(月) 23:16:311.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
: : :
0015デフォルトの名無しさん
2008/08/04(月) 23:17:01たぶん適当でいいんだと思います
例
a.txt
1
2
3
b.txt
4
5
6
よろしくお願いします
0017デフォルトの名無しさん
2008/08/04(月) 23:39:490018デフォルトの名無しさん
2008/08/04(月) 23:50:32すみません、ひょっとしたらこうかも。
たぶん>>14さんのような高度な事はこの問題は求めてないと思うので。
例
a.txt
a1
a2
a3
b.txt
b1
b2
b3
0019名無しさん
2008/08/05(火) 07:28:40#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;
}
0020名無しさん
2008/08/05(火) 07:34:280021名無しさん
2008/08/05(火) 07:45:34axb[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)
0022デフォルトの名無しさん
2008/08/05(火) 10:39:44ありがとうございました!
とても助かりました!
0023デフォルトの名無しさん
2008/08/05(火) 11:25:19float _11, _12, _13, _14;
float _21, _22, _23, _24;
float _31, _32, _33, _34;
float _41, _42, _43, _44;
};
上記のようなマトリックスのクラスで、
m[1][2]のようにアクセスできるように演算子[]を多重定義せよ
という課題です。よろしくお願いします。
0024デフォルトの名無しさん
2008/08/05(火) 11:50:00>>1くらい読め
0025デフォルトの名無しさん
2008/08/05(火) 16:39:16をオイラー法で解くと、具体的にどのようなC言語のプログラムになるのでしょうか。
(刻み幅10の場合)
よろしくお願いいたします。
0026デフォルトの名無しさん
2008/08/05(火) 16:43:31>>24
0028デフォルトの名無しさん
2008/08/05(火) 16:47:27これね。読める?読めない?聖徳(ry
0029デフォルトの名無しさん
2008/08/05(火) 17:00:47おまえがいうな
0030デフォルトの名無しさん
2008/08/05(火) 17:10:23テンプレ通りじゃないから回答はしないけど、
スルーするほど気に入らないわけじゃないから
テンプレに則って質問すれば回答しますよっていう
意思表示でしょ?
もしくは、もっと単純に、このスレでは質問はテンプレ通りにしてくれよ
ていうアドバイスかもしれないし
0031デフォルトの名無しさん
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] その他の制限:
0032デフォルトの名無しさん
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次元くらいの方程式で大丈夫だと思います、よろしくお願いします。
0033名無しさん
2008/08/05(火) 22:49:10精度補償付き数値計算でググれ
インラインアセンブリが必要になるが、線形計算の精度を出せる。
それでは学部の課題としては高度過ぎるか?
だとすると行列の条件値(condition number)の話かもしれない。
行列A
その逆行列をinv(A)
Aのノルムを ||A||
inv(A)のノルムを ||inv(A)||
とすると
条件値= ||A|| * ||inv(A)||
になる。
ノルムの定義は各種あるので調べてみよ。
条件値と精度を関連付ける理屈を理解する必要がある。そうしないとレポートにならない。
理屈さえ分かれば、ノルムの計算法と逆行列の求め方に帰着するはずだ。
0034デフォルトの名無しさん
2008/08/05(火) 23:04:10> 気に入らない質問やその他や発言はスルーの方向で。
0035デフォルトの名無しさん
2008/08/06(水) 03:47:31詳説もとめます。
0036デフォルトの名無しさん
2008/08/06(水) 03:57:58前スレ>>558です。
遅くなりましたが、ありがとうございました。
コメントの文言を変える等の若干手を加えたことを除いて、ほぼそっくりそのまま、提出したところ、
昨日遅く返事が来て、たいへん褒められました。ほとんど減点が無いそうで、クラスで1人だけだそうです
しかし、是非、「解説を書いてくれ(なければネットで同じコードがないか探すぞ)」と言われて(脅されて)
困ってます。
コードを見ても、ちんぷんかんぷんです。(中級者コースですが、初心者レベルです(哀))
コードの内容を教えて下されば幸甚です。
何か、悪質な問題だとか、色々ご指摘を受けてたようですが、実際、意図的に制限を付けて難しくしたと
言っていました。
0037引用
2008/08/06(水) 05:17:34[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
0038名無しさん
2008/08/06(水) 08:19:28正しくは、精度補償じゃなくて精度保証ね。
IEEE-754を前提として、浮動小数点数のラウンディングの方法(四捨五入、全て切り上げ、全て切り下げ)を制御ができる。
ラウンディングを「全て切り上げ」に設定して、線形代数の計算を1回行い、答えその1を得る。
次に、ラウンディングを「全て切り下げ」に設定して、同じ線形代数の計算をもう1回行い、答えその2を得る。
真の答え=( 答えその1 + 答えその2 ) / 2
精度=絶対値( 答えその1 − 答えその2 )
となる、という定理が証明されている。
インラインアセンブリについては http://www.oishi.info.waseda.ac.jp/~oishi/lec_nc/Table1.htm を見よ。
0039名無しさん
2008/08/06(水) 08:23:090040デフォルトの名無しさん
2008/08/06(水) 08:40:23cs.tuat.ac.jp?
0041デフォルトの名無しさん
2008/08/06(水) 12:52:020042デフォルトの名無しさん
2008/08/06(水) 14:23:37>636 :デフォルトの名無しさん :2008/07/30(水) 17:35:28
>>>558
>>>631
>この問題は仕様と満たそうとすると、10x5行をmemoryに取り込んだ状態で
>つぎの2行が取り込む物ではないが、さらに次の行では取り込む物の場合
>過去の2行復元が出来ないよ。
最近読み込んだのは、それは長期じゃないから、長期記憶領域と呼ばないで良いとしないと出来ない。
0043デフォルトの名無しさん
2008/08/06(水) 15:02:05>>37
> それ以外の変数(ポインタ以外)で行を記憶してはならない。
この、「ポインタ以外」ってのも良くわからない。
ポインタなら構わないという意味にも取れるが、
それなら、別途ポインタの配列を作るよな・・・
0044デフォルトの名無しさん
2008/08/06(水) 15:27:57麻呂を呼んだのは誰でおじゃ〜る?えっ?お呼びでない?
0045デフォルトの名無しさん
2008/08/06(水) 17:13:15004642
2008/08/06(水) 17:25:46>行の長期記憶は、固定変数char *(memory[50])でのみ行うことが出来るものとし、
ポインタ変数以外の変数 で行を記憶してはならない。
>それ以外の変数(ポインタ以外)で行を記憶してはならない。
0047デフォルトの名無しさん
2008/08/06(水) 17:41:04[2] 次の10進数覆面算を解くプログラムを作って実行させる。
(解は何個あるかを求める。0個の場合もあるかも知れない)
(FINE+PROGRAM)*IS=DIFFICULT
PC*LANG=IS*NICE
LANG<>NICE
PC<>IS
(同時に満たすものを探す)
(異なる文字で同じ数字が割り当てられても良いが、同じ文字に複数の数字を割り当てられないものと
する。また文字列先頭は0で始まらないものとする。
解が無いことが事前に判明した場合は、その理由を記せば、コードを書かなくても良い。
[3]Linux/gcc/C
[4]8/31 正午(プログラムと解説、実行結果をメール)
手が付けられません。よろしくお願いします。解説と実行結果のほうも甘えてよろしいでしょうか?
まだ期限まで時間がありまんで、回答は急ぎません。
0048デフォルトの名無しさん
2008/08/06(水) 18:44:16http://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 @@@
0049デフォルトの名無しさん
2008/08/06(水) 19:43:26俺が一番載りだ!
皆見てくれ凄いだろ
0050デフォルトの名無しさん
2008/08/06(水) 19:58:041.キーボードから入力した二つの整数値x,yのxのy乗を計算するプログラム
を作成しなさい。
2.キーボードから入力した文字列を全て大文字(小文字は大文字に、大文字
はそのまま)に変換して表示するプログラムを作成しなさい。ただし、文字
を大文字に変換する関数を作成し、それを利用すること。
この二つです、よろしくお願いします
0051デフォルトの名無しさん
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(" @@@");}}}}
0052デフォルトの名無しさん
2008/08/06(水) 20:01:44真似されないうちに貼っておこう
0053デフォルトの名無しさん
2008/08/06(水) 20:20:53[1] プログラミング�T
[2] 1.キーボードから入力した二つの整数値x,yのxのy乗を計算するプログラム
を作成しなさい。
2.キーボードから入力した文字列を全て大文字(小文字は大文字に、大文字
はそのまま)に変換して表示するプログラムを作成しなさい。ただし、文字
を大文字に変換する関数を作成し、それを利用すること。
[3] 環境
[3.1] Linux
[3.2] gcc
[3.3] 言語:C
[4] 期限:明日の昼まで出来たらお願いします
よろしくお願いします
0054デフォルトの名無しさん
2008/08/06(水) 20:21:361.位は自力でやれば?
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';
}
}
0055デフォルトの名無しさん
2008/08/06(水) 20:26:5451 名前:デフォルトの名無しさん 投稿日:2008/08/06(水) 20:00:57
真似されないうちに貼っておこう
0056デフォルトの名無しさん
2008/08/06(水) 20:32:13ご回答ありがとうございます。
何分初心者なもので
なんとか1もお願いできませんでしょうか。
0057デフォルトの名無しさん
2008/08/06(水) 20:35:52118815618
125521431
125521536
132232630
143346720
145549426
146643816
266665196
352250046
367767552
442248128
442248226
452258950
494497895
494497990
574472340
005854
2008/08/06(水) 20:39:50超適当
#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;
}
0059デフォルトの名無しさん
2008/08/06(水) 20:42:34適当でも十分です
ご回答感謝します
0060デフォルトの名無しさん
2008/08/06(水) 20:48:1352 名前: デフォルトの名無しさん Mail: 投稿日: 2008/08/06(水) 20:01:44
51 名前:デフォルトの名無しさん 投稿日:2008/08/06(水) 20:00:57
真似されないうちに貼っておこう
0061デフォルトの名無しさん
2008/08/06(水) 20:56:540062デフォルトの名無しさん
2008/08/06(水) 23:45:21今日も一人クズを育てたねw
おつかれさま。設問1のプログラム書いて貼る時の気持ち、お察しします。
0063デフォルトの名無しさん
2008/08/06(水) 23:51:03ある意味神頼みなコードやね
コンパイラとか最適化とかデバッグオプションの有無で動いたり動かなかったりw
0064デフォルトの名無しさん
2008/08/07(木) 00:01:430065デフォルトの名無しさん
2008/08/07(木) 00:14:48上位10行:*行 上位10行でない行:-行とする
先頭10行は無条件に読み込み、memory内に設定(全部*行)
読込み中にmemory内の最小値の位置を記憶しておく
11行目以降は、読み込んだ行が最小値より小さいか大きいかで分岐
小さい場合
memory内の最後の*行の後ろに-行が2行設定されているかどうかで分岐
設定されていない
読み込んだ行を、memoryの最後に-行として設定
設定されている
rlineの位置を1つずらす(rline内には最大で次に読み込む行の前2行を記憶)
大きい場合
最小値の行を-行にする
最小値の行とその前後2行の内、memory内から削除可能な範囲を削除
読み込んだ行の前の行がrline内にある場合は-行としてmemoryの最後に追加
読み込んだ行を*行としてmemoryの最後に追加
memory内の*行の内、最小値の位置を求める
こんな感じ(あんまりソースのコメントで書いてあることと変わらないけど)
0066デフォルトの名無しさん
2008/08/07(木) 00:46:55char *str; を char str[12345]; とかえれば、特に問題ないと思いますが、どういう最適化がはたらくのでしょうか。
for(i = 0; (c = string[i]); i++) {
と書いたほうがいいのはなぜでしょうか?
0067デフォルトの名無しさん
2008/08/07(木) 00:51:02あれ?入門スレとここ以外にもマルチしてる?
0068デフォルトの名無しさん
2008/08/07(木) 00:52:25ここにしか投げていませんし、ここしか読んでいません。
0069デフォルトの名無しさん
2008/08/07(木) 00:55:28これと同じだったものでマルチかなと思ったんだけどほかの生徒さんか
0070デフォルトの名無しさん
2008/08/07(木) 00:59:46条件部に代入文を書くと警告が出るのを防ぐために、()をつけてる。
0071デフォルトの名無しさん
2008/08/07(木) 01:03:57たしかに、gcc ではtrue/false 判定をする代入文を使用すると「丸括弧でくくったほうがいいのでは?」という warning が出ますが、
なぜそんな warning を出すようにしているのか、よくわからないのです。
007271
2008/08/07(木) 01:05:040073デフォルトの名無しさん
2008/08/07(木) 01:15:18long 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(" @@@");
} } } }
0074デフォルトの名無しさん
2008/08/07(木) 01:56:25やはり、麻呂のクソースの出番でおじゃるか・・・
0075デフォルトの名無しさん
2008/08/07(木) 02:08:31別の文字なのに同じ数字が入ってもええのん?
0076デフォルトの名無しさん
2008/08/07(木) 02:09:23>>47 によればおk
0077デフォルトの名無しさん
2008/08/07(木) 02:10:01> 異なる文字で同じ数字が割り当てられても良いが
でしたね、すまそ。
0078デフォルトの名無しさん
2008/08/07(木) 03:54:36LANG!=NICEだけど
G==Eでも構わないはずでは?
0079デフォルトの名無しさん
2008/08/07(木) 04:34:13覆面算のソースを載せている本を探しに、でなぁ・・・
0080デフォルトの名無しさん
2008/08/07(木) 04:37:20#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;
}
008173
2008/08/07(木) 04:53:45G=E と、なる場合は、G=E=0 またはG=E=1 というクイズ。
ここで>>73に追加
#define IF_(expr) if(!(expr)) /*break*/continue
0082デフォルトの名無しさん
2008/08/07(木) 13:51:10[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] その他の制限:
0083デフォルトの名無しさん
2008/08/07(木) 14:17:400084デフォルトの名無しさん
2008/08/07(木) 15:20:08真似どころか麻呂オリジナルクソースになりそうでおじゃるなぁ〜
後出しジャンケン、勝たぬなら、負けて見せようホトトギス
0085デフォルトの名無しさん
2008/08/07(木) 15:21:22それなら簡単な気がする
0086デフォルトの名無しさん
2008/08/07(木) 16:15:17[2] 問題文(含コード&リンク):
パーティクルを採用した、エフェクトプログラムデモを作成する。
・光の粒子が回転移動。
・爆発エフェクト(破片の物理移動) など。
例)花火
1.情報の洗い出し → 構造体
2.初期化 → 爆発時に初期データセット
3.実処理 → 移動、加減速、色調
4.後処理 → 情報の削除(メモリの解放)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC6.0
[3.3] 言語: Cのみ
[4] 期限: 8月18日
[5] その他の制限:特になし
エフェクトは自由にとのことでしたが、炎や、例にある花火で作っていただけるとありがたいです。
期限がまだあるため、早急な回答は求めません。
よろしくお願いします。
0087デフォルトの名無しさん
2008/08/07(木) 16:30:043D?
DirectX 使ってもいいのなら探せばサンプルあるだろ
0088デフォルトの名無しさん
2008/08/07(木) 16:42:00正方形の角が全部、六角形の変にくっつく方が、若干デカくね?
0089デフォルトの名無しさん
2008/08/07(木) 16:50:28一定の係数をかけるだけになるだろうからその係数をさがせば
float func(float lh) { return lh * SECRET_NUMBER; }
0090デフォルトの名無しさん
2008/08/07(木) 17:00:36点数の合計と平均点を出力するプログラムを作成しなさい。
点数は、0点以上100点以下とし、
この範囲外の点(0点未満または100点より大きい点)が入力されたときは、
入力を終了し、点数の合計と平均点を出力する
(最後に入力された範囲外の点は集計の対象としない)。
また、平均は小数点以下2桁まで出力する。
繰り返しの命令は、何を使ってもよい。
0091デフォルトの名無しさん
2008/08/07(木) 17:03:14>>1くらい読め
0092デフォルトの名無しさん
2008/08/07(木) 17:07:07オマエモナー、って読める?読めない?聖徳(ry
0093デフォルトの名無しさん
2008/08/07(木) 17:09:22スルーできてないw
0094デフォルトの名無しさん
2008/08/07(木) 17:18:51[2] 問題文(含コード&リンク):
4*4行列の列ごとの各要素の絶対値の総和の最大値
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語: C
[4] 期限: 8月8日12:00まで
課題の途中で上記の関数が作れないので止まりました・・・行列は2次元の配列で定義しているので
配列を引数にできるように関数を作ってください。。。
009586
2008/08/07(木) 17:19:50説明不足すいません。DirectXは使用不可です。
3Dは使わず、"*"や、"+"などの記号で表現お願いします。
訂正申し訳ありません。
0096デフォルトの名無しさん
2008/08/07(木) 17:25:19ベースとなるサンプルはないの?
009786
2008/08/07(木) 17:56:51炎のエフェクトの実行結果を見せてもらっただけなので、サンプルは貰っていません。
炎は、各方向に記号が常に飛び散っているエフェクトでした。
0098デフォルトの名無しさん
2008/08/07(木) 18:16:35もっと具体的にかけないものかね。
コンソールアプリなのかどうかすら読み取れない
0099デフォルトの名無しさん
2008/08/07(木) 18:50:48#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);
}
010085
2008/08/07(木) 19:07:38家に着いたから書いてみた。あってるのかは知らない
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7593.txt
0101デフォルトの名無しさん
2008/08/07(木) 19:32:51>>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;
}
010282
2008/08/07(木) 20:55:06とても素直なプログラムだな。思考の仕方がよく見える。
>>101
マジックナンバーがとってもスマートだな。こりゃいい。
どちらさんもありがとう、ありがとう。
0103デフォルトの名無しさん
2008/08/07(木) 23:12:00>>100と>>101で数値が違うがどうすんだ?
0104デフォルトの名無しさん
2008/08/07(木) 23:36:58コンソールアプリです。
あまりプログラムが分からず、度々すんません。
0106デフォルトの名無しさん
2008/08/08(金) 01:12:10二元配列を引数にとるのは面倒だからそれを入れた構造体を作るのがいいと思うよ
>>86
難解だね、暇だからちょっとやってみるけど期待しないでね
0107デフォルトの名無しさん
2008/08/08(金) 01:48:37double 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;
}
0108デフォルトの名無しさん
2008/08/08(金) 07:11:55double f(double (*a)[4])
>>37 *(memory[50]) って、*memory[50] と同じ。
0109デフォルトの名無しさん
2008/08/08(金) 09:00:12初心者にはこっちの方がわかりやすいだろうし。
0110デフォルトの名無しさん
2008/08/08(金) 09:00:47ポインタじゃなくてポンタかと思ってた
0111デフォルトの名無しさん
2008/08/08(金) 18:47:54WindowsXPだとエスケープシーケンスが使えないと仮定したほうがよさそうです
// 最下位ビットから順に 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);
}
0112デフォルトの名無しさん
2008/08/09(土) 00:04:45[2] 配列に格納された文字列を前方一致検索して表示する
[3] 環境
[3.1] Windows xp
[3.2] borland
[3.3] C言語
[4] 期限:2008年08月10日
0113デフォルトの名無しさん
2008/08/09(土) 00:58:34いくらでもあると。
0114デフォルトの名無しさん
2008/08/09(土) 01:52:21宿題で参考書買って解けないような問題出すやつある意味すげえよ
0115デフォルトの名無しさん
2008/08/09(土) 01:53:06ヒントは普通にあるわけで・・・
0116デフォルトの名無しさん
2008/08/09(土) 02:24:09それが結構あったりするのです‥‥‥。いや、それが面白かったりして。
0117デフォルトの名無しさん
2008/08/09(土) 07:02:53#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
となるようにしなければいけないのですが、どうしてもできません。教えてください
0118デフォルトの名無しさん
2008/08/09(土) 07:35:16#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; }
0119デフォルトの名無しさん
2008/08/09(土) 07:52:240120デフォルトの名無しさん
2008/08/09(土) 08:41:23コードに該当する部分は原則半角じゃ。
0121デフォルトの名無しさん
2008/08/09(土) 11:22:23そうだね
全角文字だとエラーでコンパイルできないもんね
0122デフォルトの名無しさん
2008/08/10(日) 20:18:450123デフォルトの名無しさん
2008/08/10(日) 20:39:38ラベルや関数名は全角文字OKだろ。
0124デフォルトの名無しさん
2008/08/10(日) 20:40:190125デフォルトの名無しさん
2008/08/10(日) 20:46:34int 関数(void) {
printf("あああ\n");
return 0;
}
int main(void) {
関数();
return 0;
}
エラー出ました orz
0126デフォルトの名無しさん
2008/08/10(日) 20:55:11VC++2008でビルドしたらコンパイル出来た
まあ使わないけどね
0127デフォルトの名無しさん
2008/08/10(日) 21:09:55原因になりそうな気がするのだが、まぁ車も安全装置が開発されたりと
それでもやらかす奴はやらかすわけで・・・
0128デフォルトの名無しさん
2008/08/10(日) 21:24:25自動化できることはできる限り自動化しないと
人間の把握できる範囲を超えてしまう
もちろん基礎は大事
0129デフォルトの名無しさん
2008/08/10(日) 21:40:21[2]テトリス制作でブロックを落とすところ(回転はしなくてよい)
[3]Windows Vista
Microsoft Visual Studio 2005
C++
[4]8/20まで
[5]現在、基本情報技術者午後レベルを習っている状況
問題点
・凸型ブロックが落ちると途中で四角になってしまう
・左右移動するとブロックが分解された残像みたいなのが残る
・最下位の床につくと止まらずに突き抜けてしまう
コードをテキストでうpしました。
http://www2.uploda.org/uporg1600554.txt.html
0130デフォルトの名無しさん
2008/08/10(日) 23:29:49152-159行目をチェックしな
同じような部分が何度もでているところは関数に分けた方がいい
0131130
2008/08/10(日) 23:35:29これしか見てなかった
全面的に作り直してねって事だったんだなw
0132デフォルトの名無しさん
2008/08/11(月) 03:21:29みられない
0133デフォルトの名無しさん
2008/08/11(月) 08:39:25再うp
http://www.uploda.org/uporg1601515.txt
0134デフォルトの名無しさん
2008/08/11(月) 10:10:48機能単位に分けてちゃんと処理追えるようにさ。
悪いけど、こんなもんどこにバグがあるかなんて探したくもない。
0135デフォルトの名無しさん
2008/08/11(月) 10:12:48すいません。出直してきます
0136デフォルトの名無しさん
2008/08/11(月) 10:48:09方針として
1.固定化されたブロックと表示用のバッファは別にする
2.ブロックの移動に関する処理はブロックの種類によらず共通化する
0137デフォルトの名無しさん
2008/08/11(月) 11:10:45丁寧なご回答ありがとうございました。がんばります
0138デフォルトの名無しさん
2008/08/11(月) 12:07:34やってみた
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7603.txt
0139901
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() 関数を使用する
そうです。関係なかったらすみません
0140sage
2008/08/11(月) 15:26:46↑が全くできません。助けて下さい
よろしくお願いします
0141sage
2008/08/11(月) 15:29:38↑が全くできません。助けて下さい
よろしくお願いします
0142デフォルトの名無しさん
2008/08/11(月) 15:42:37[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] 明後日までにお願いします。
どうしてもわからないのでお願いします。
0143デフォルトの名無しさん
2008/08/11(月) 15:57:38C/C++の宿題を片付けます 114代目
http://pc11.2ch.net/test/read.cgi/tech/1216746971/619
http://pc11.2ch.net/test/read.cgi/tech/1216746971/723
0144デフォルトの名無しさん
2008/08/11(月) 16:37:38[2] 単方向,非循環の線形リストをC言語でつくれ
(条件ポインタ,構造体を使用する・線形リストの生成・データ削除の機能)
[3] 環境
[3.1] Linux
[3.2] gcc
[3.3] C
[4] 今日
0145デフォルトの名無しさん
2008/08/11(月) 16:50:52C/C++の宿題を片付けます 114代目
http://pc11.2ch.net/test/read.cgi/tech/1216746971/606
0146デフォルトの名無しさん
2008/08/11(月) 17:15:42727 名前:デフォルトの名無しさん[sage] 投稿日:2008/07/31(木) 16:47:18
>>606
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7562.txt
0147デフォルトの名無しさん
2008/08/11(月) 17:20:05#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;
}
0148デフォルトの名無しさん
2008/08/11(月) 17:52:30[2] 2分探査木と平衡木のどちらかをc言語でつくれ
(データの追加、削除をする機能を含む)
[3] 環境
[3.1] Linux
[3.2] gcc
[3.3] C
[4] 今日
テンプ無視してすいません
よろしく願いします
0149デフォルトの名無しさん
2008/08/11(月) 18:04:26C/C++の宿題を片付けます 114代目
http://pc11.2ch.net/test/read.cgi/tech/1216746971/175
http://www.psg.cs.titech.ac.jp/pro1/10.pdf
0150デフォルトの名無しさん
2008/08/11(月) 19:21:14仕様が指定されてない故、クソースでいくでおじゃっ、少し待ってたもう
0151デフォルトの名無しさん
2008/08/11(月) 20:03:21ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7606.c
番号を追加するだけでおじゃる
0152デフォルトの名無しさん
2008/08/11(月) 21:16:58番号を追加するとはどういうことでおじゃるか
無能なまろに教えてくだしゃれ
0153デフォルトの名無しさん
2008/08/11(月) 22:12:00NPC_2047から始まるクエストのプログラムで教えて頂きたいのです
クエストを受ける→クリアを素材、回数制限をなくしたくて
いろいろ試しているのですが
クエストが止まる、うけれなくなるの繰り返しで進めません
どうかご教授おねがいします
プログラムを書きたいのですが長すぎで省略すみません
0154デフォルトの名無しさん
2008/08/11(月) 22:16:37実行して、追加、一覧表示で調べてみれば分かる
0155デフォルトの名無しさん
2008/08/11(月) 22:32:50ケーブル抜いて首つれ
0156デフォルトの名無しさん
2008/08/12(火) 01:44:24>>151は先頭を削除したときの対処をしていなかったでおじゃる。訂正。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7607.c
0157デフォルトの名無しさん
2008/08/12(火) 08:47:320158デフォルトの名無しさん
2008/08/12(火) 12:27:45[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] その他の制限: ありません
0159デフォルトの名無しさん
2008/08/12(火) 12:35:15puts("ABC");
puts("ACB");
puts("BAC");
puts("BCA");
・
・
・
puts("FED");
0160デフォルトの名無しさん
2008/08/12(火) 13:20:25#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;
}
0161デフォルトの名無しさん
2008/08/12(火) 13:46:02#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;
}
0162デフォルトの名無しさん
2008/08/12(火) 13:50:480163デフォルトの名無しさん
2008/08/12(火) 13:54:39自演で宿題w
0164デフォルトの名無しさん
2008/08/12(火) 13:55:32かけなくもないが、これは再帰で書く意味なくないか?
0165デフォルトの名無しさん
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;
}
0166デフォルトの名無しさん
2008/08/12(火) 14:00:10天才
0167デフォルトの名無しさん
2008/08/12(火) 14:05:550168デフォルトの名無しさん
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;
}
0169デフォルトの名無しさん
2008/08/12(火) 14:20:38参考になったtnx
0170デフォルトの名無しさん
2008/08/12(火) 14:22:51s[3]にごみが入ってて変になったよ
0171デフォルトの名無しさん
2008/08/12(火) 14:32:580172デフォルトの名無しさん
2008/08/12(火) 14:34:47非再帰に直してる途中で発見したバグだから、
非再帰のほうでしかデバグしてなかった。
thx
0173デフォルトの名無しさん
2008/08/12(火) 14:50:070174デフォルトの名無しさん
2008/08/12(火) 15:54:25int 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じゃなければ?という疑問です。
0175デフォルトの名無しさん
2008/08/12(火) 15:57:170176デフォルトの名無しさん
2008/08/12(火) 16:45:08・flagと2の論理積(=0)
↑これが0かどうか
0177デフォルトの名無しさん
2008/08/12(火) 18:04:43配列に代入する場合、s[i]=1+'A' という表記は、その右辺は、'A'の格納されたアドレスに+1バイトのアドレスに格納された文字と同等である、ということになるのかと思いました。
いずれにしろchar型の配列に格納できるのは1バイトまでですから、上記のように考えてBという文字が格納されたんだと認識しないと意味が分からなかったので。
私の文章を見ると上記と言ってることが違いますね。
>>176
& とはビット毎の論理積で、だとすると
0000 // flag
0010 // 10進数の2の2進表記
0000 // 各ビットの論理積。10進表記すると0
調べたところ、論理積とはある数の第一ビット(右から二番目)が立っているか否かを調べるもの、と書いてありました。
それに従えば、flagは第一ビットが立っていないと言えないでしょうか。
0178デフォルトの名無しさん
2008/08/12(火) 18:19:37元の話、全然見てないが、、、
環境によるけど通常、'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文以下が実行される。
0179デフォルトの名無しさん
2008/08/12(火) 18:36:42分かりました。レス下さった方々、ありがとうございました。
0180デフォルトの名無しさん
2008/08/13(水) 16:55:230181デフォルトの名無しさん
2008/08/14(木) 00:57:130182デフォルトの名無しさん
2008/08/14(木) 04:51:55[2] 問題文(含コード&リンク):
単方向リストのソート関数を完成させよ
ソート順は昇順、降順のいずれでもよい
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7614.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 特になし
[5] その他の制限: 標準ライブラリの範囲内で
0184デフォルトの名無しさん
2008/08/14(木) 06:58:29出来なかったけど、やればなんとかなる、けど マンドクセッ でおじゃる。
0185デフォルトの名無しさん
2008/08/14(木) 17:29:32list_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;
}
0186デフォルトの名無しさん
2008/08/14(木) 17:45:28「お前ら一緒にサイト作ろうぜwwwwwwwwww」
「2ちゃん越えるサイト作ろうぜwwww」
「仕事無いんだ・・・・・・」
「やろうぜ!」
「みんなでサイトつくろうぜwwwwwwwwww」
http://gacco.o0o0.jp/
http://yutori.2ch.net/test/read.cgi/news4vip/1218673130/
http://ex14.vip2ch.com/test/read.cgi/part4vip/1218612197/
興味沸いたらきてください!
======================!! 人材募集中 !!======================
■プログラムを組んでくれる人
*サーバー側
言語はRubyかPerlの予定ですが、Perlが有力候補。
・チャット
定期的にクライアントから着信があり、それに対して更新されたチャットのメッセージを返信する程度の能力。じゃなくて機能。
通信するときのフォーマットは未定。
・ログイン・アカウント管理
ログイン認証、各アカウントの点数などの管理。データベースは未定。
・お絵描き
未定。とりあえず鯖に負担がかからない程度にたまに画像を送信してあげるって感じで
*クライアント側
はっきり言って俺もわからね。Ajaxだとかflashだとかjavaだとか。
■機能提案(正しくは人材ではなく、意見?)
「こんな機能があったら良い!」「こうするともっと楽しくなる!」などの意見募集中。
挨拶とか気にせずスレにどんどん書き込んでくれればおk
■デザイン
サイトのデザインを考えてくれる人、作ってくれる人募集中。
できればphotoshop illustrator使える人(プロジェクト共有しやすいので)
0187デフォルトの名無しさん
2008/08/14(木) 18:03:20wwwwwwwww 草が多過ぎてぁゃιぃから却下w
0188デフォルトの名無しさん
2008/08/15(金) 19:18:21期日までにできるかどうか分からないし
二次元として計算する予定だからクラウンになるかどうかあやしいけどw
0189デフォルトの名無しさん
2008/08/16(土) 09:09:520190デフォルトの名無しさん
2008/08/16(土) 09:14:540191デフォルトの名無しさん
2008/08/16(土) 10:58:240192デフォルトの名無しさん
2008/08/16(土) 12:36:310193デフォルトの名無しさん
2008/08/16(土) 13:22:020194デフォルトの名無しさん
2008/08/16(土) 15:41:590195デフォルトの名無しさん
2008/08/16(土) 21:17:46単語ごとにバッファに詰めたいんですが上手くいきません。
単語の長さも持たせたいので構造体を使いたいです。
知恵を貸してください、お願いします。
0196デフォルトの名無しさん
2008/08/16(土) 21:22:400197デフォルトの名無しさん
2008/08/16(土) 21:22:450198デフォルトの名無しさん
2008/08/16(土) 21:28:330199デフォルトの名無しさん
2008/08/16(土) 22:07:07if ( (c != ' ') || (c != '\t') || (c != '\n') ) {
strcat(wp->string, c);
wp->length = strlen(wp->string);
} else {
strcat(wp->string, '\0');
wp++;
}
}
こんな感じで一個一個結合しようとしたんですが、
strcatは文字列同士じゃないといけないっぽくてでできなくて。
strtok便利そうですね。
0200デフォルトの名無しさん
2008/08/16(土) 22:12:02よくわかんないけど、
wp->length = strlen(wp->string);
wp->string[wp->length] = c;
++(wp->length);
wp->string[wp->length] = '¥0';
こんな感じじゃ駄目なの?
0201デフォルトの名無しさん
2008/08/16(土) 22:30:49文字化けとセグメントエラーでした。
strtok使ったほうが簡単そうなんでそっちで考えてみます
0202デフォルトの名無しさん
2008/08/17(日) 01:28:39C?C++?
C++なら while(ifs >> str) strlist.push_back(str);
だけで済みそうな気がする
0203デフォルトの名無しさん
2008/08/17(日) 02:28:36おそらくはポインタの指す先が確保されていない
0204デフォルトの名無しさん
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;
[]
}
0205デフォルトの名無しさん
2008/08/17(日) 09:50:49int kasan(int x, int y, int z)
return kotae;
0206デフォルトの名無しさん
2008/08/17(日) 09:52:10#include <stdio.h>
それと
printf("%d+%d+%d=%d", a, b, c, kasan(a, b, c)); ←ここカッコ2つ
0207デフォルトの名無しさん
2008/08/17(日) 09:53:43最初のところにプロトタイブ宣言が抜けてました。すいません
0208デフォルトの名無しさん
2008/08/17(日) 09:56:45int kasan(int x, int y, int z);
が必要か。
0209デフォルトの名無しさん
2008/08/17(日) 10:01:48点数を入力して、60点以上なら"合格"、60点未満なら"不合格"、と表示する。
点数によって"合格"、か"不合格"かを表示するhantei()関数を使う。
[]/*プロトタイプ宣言*/
void main(void)
{
int ten;
scanf("%d",&ten);
[]
}
[]hantei([])
{
if(data>=60)
printf("合格");
else
printf("不合格");
}
0210デフォルトの名無しさん
2008/08/17(日) 10:16:59hantei(ten);
void hantei'int data)
0211デフォルトの名無しさん
2008/08/17(日) 10:20:592つの実数を入力して、その積と商を表示する。
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;
}
0212デフォルトの名無しさん
2008/08/17(日) 10:28:37keisan(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;
0213デフォルトの名無しさん
2008/08/18(月) 23:04:51[2] 問題文(含コード&リンク): 多倍長演算(10進数)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
除算のやり方がよくわかりません。
0214デフォルトの名無しさん
2008/08/19(火) 17:37:02桁の数、期限が分かりません
0215デフォルトの名無しさん
2008/08/19(火) 20:01:05やり方は筆算と引き算
符号に注意
0216デフォルトの名無しさん
2008/08/19(火) 20:42:09長いソースコードでもここで質問してよろしいですか?
上の方にあるリンクは全然開けなくて。
0217デフォルトの名無しさん
2008/08/19(火) 21:04:41宿題を丸投げするならできればうpろだを使ってください
0218デフォルトの名無しさん
2008/08/19(火) 21:18:27メモリリークを起こしていて理由がよくわからないので教えていただきたい
のですが
0219デフォルトの名無しさん
2008/08/19(火) 21:22:00ロダにうpしてみてよ
複数ファイルならzipとかで
0220デフォルトの名無しさん
2008/08/19(火) 21:31:43自分はリソースの番号管理を作っていて、リソースを読み込むときに番号
を使用してるのをカウントして動的に管理しようとしているのですが。
メモリリークを起こしてしまって自分では対処できませんよろしくお願いします。
0221デフォルトの名無しさん
2008/08/19(火) 21:32:350222デフォルトの名無しさん
2008/08/19(火) 21:34:380223デフォルトの名無しさん
2008/08/19(火) 21:35:51エラー E2209 resource1.cpp 308: インクルードファイル 'TestResourceList.h' をオープンできない
おいファイルが足りんぞ
これじゃCodeGuardを掛けられない
0224デフォルトの名無しさん
2008/08/19(火) 21:41:50boost の shared_ptr についての質問で
class A
class B : public A
boost::shared_ptr< A > ptr=new B;
このとき B のデストラクタは呼ばれますかってこと?
0225デフォルトの名無しさん
2008/08/19(火) 21:47:13いいえ、理由はよくわからないのですが。ResourceList単体ではリークは
起こさないのですが。ResourceManagerに実装しようとするとリークが起こってしまうんです
0226デフォルトの名無しさん
2008/08/19(火) 22:02:530227デフォルトの名無しさん
2008/08/19(火) 22:10:59してCodeGuard掛けてみたが、リークはないみたいだぞ
0228デフォルトの名無しさん
2008/08/19(火) 22:11:22自分が通っている学校の先生の作ったCxxTestのプログラムでのチェック
なのですが
0229デフォルトの名無しさん
2008/08/19(火) 22:17:220230デフォルトの名無しさん
2008/08/19(火) 22:36:360231デフォルトの名無しさん
2008/08/19(火) 22:47:54そうですか、自分でもメモリリークをCrtDbgでやって見ましたがリークが
検出できないのでCxxTestのプログラムの所為かもしれないです。
教えていただいてありがとうございました。
0232デフォルトの名無しさん
2008/08/19(火) 22:50:42メモリリークはほぼ100%、それから非初期化領域も
かなりの確率で発見できる。これだけのためにC++Builderを買ったぐらい。
ただC++以前に開発された部分がかなり残っているらしく、継承した
クラスを参照で渡すとそれも検出しやがる。例えばstd::ostreamに
std::fstreamを渡すとそれはひどい事に。まあ意図して検出しているの
かもしれんけど。
0233デフォルトの名無しさん
2008/08/19(火) 22:52:52std::ostreamにstd::ofstreamな。わかると思うけど
こんなの検出する必要ねーしオプションで制御できるようにしとけ
0234デフォルトの名無しさん
2008/08/20(水) 15:02:30ビットマップを読み込んで、色を文字で表したテキストファイルを出力する
◆仕様
・ビットマップは24bit限定
・テキスト出力フォーマット
0 1 2 3 ...
1 xx xx xx
2 xx xx xx
3 xx xx xx
.
.
.
・対象ビットマップ
赤、青、緑、白、黒
◆コマンドライン引数
1.入力ビットマップファイル名
2.出力テキストファイル名
Cでおねがいできますか?
0235デフォルトの名無しさん
2008/08/20(水) 15:13:21[2] ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7628.txt
[3]OS:Windows 言語:C
[4]2008/08/26 23:59まで
[5]特に制限はありません
よろしくお願いします
0237デフォルトの名無しさん
2008/08/20(水) 15:53:34そもそも、ここで言う「ビットマップ」はファイルから読み込むらしいが、
そのフォーマットはどうなってるんだ?
0238234
2008/08/20(水) 15:56:080239234
2008/08/20(水) 16:28:31DIB形式です
0240デフォルトの名無しさん
2008/08/20(水) 17:17:52あの後、一応完成まで言ったんですが最後の最後でリンクエラーが起きて
ビルドが行きませんうpろだにはファイルをあげていますので誰かお願いします
0241デフォルトの名無しさん
2008/08/20(水) 17:23:10リンクくらい貼れよ、バカ
0242デフォルトの名無しさん
2008/08/20(水) 17:28:57http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7629.zip
これですよろしくお願いします。
0243デフォルトの名無しさん
2008/08/20(水) 17:32:50そもそも、リンクエラーって何が出てんのよ?
0244デフォルトの名無しさん
2008/08/20(水) 17:33:50makefileとか無いぞ
0245デフォルトの名無しさん
2008/08/20(水) 17:41:33エラーは長いですけど以下のように出ています
エラー 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
0246デフォルトの名無しさん
2008/08/20(水) 17:59:0224bit BMPって書いてあるだろ。要するに、ヘッダの部分から下は
一番下の行の左側のRGBから順に記録されているタイプ。
0247デフォルトの名無しさん
2008/08/20(水) 18:10:00BMPなんてかいてねーよ。
ビットマップとしか書かれてないだろ。
0248デフォルトの名無しさん
2008/08/20(水) 18:20:22ビットマップを読み込んで、色を文字で表したテキストファイルを出力する
◆仕様
・ビットマップは24bit限定
が読めない日本人じゃない奴が、北京五輪を機に紛れ込みましたか?
祖国のサイトにお帰り下さい。
0249基地外揚げ足取り
2008/08/20(水) 18:21:24> <windows.h>をつかわず
247 名前:デフォルトの名無しさん 投稿日:2008/08/20(水) 18:10:00
>>246
BMPなんてかいてねーよ。
ビットマップとしか書かれてないだろ。
BMPなんてかいてねーよ。
ビットマップとしか書かれてないだろ。
BMPなんてかいてねーよ。
ビットマップとしか書かれてないだろ。
BMPなんてかいてねーよ。
ビットマップとしか書かれてないだろ。
0250デフォルトの名無しさん
2008/08/20(水) 18:22:30どうせ答える気がないんだろ、だったら無知、揚げ足取り、横槍程度のバカは
口出しするなよ。言い草がみっともない。人として恥ずかしい。
> BMPなんてかいてねーよ。
> ビットマップとしか書かれてないだろ。
何これ?日本語が読めないバカって頭も悪いんだなw
0251デフォルトの名無しさん
2008/08/20(水) 18:25:04鬱陶しいんだよ、クソガキ。
お前が答えられないだけだろ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
どちらにしろ、同じようなもの。はいはい、知ったかの答える気無しの野次馬は帰った帰った。
0252デフォルトの名無しさん
2008/08/20(水) 18:29:39> >>238 にbmpと断っていますが?w
>>234の話だろ。それとも文書の前後が理解できない病気か?
0253デフォルトの名無しさん
2008/08/20(水) 18:30:23そういう思い込みで手を動かすタイプが、バカコード書くんだろ。
0254デフォルトの名無しさん
2008/08/20(水) 18:30:59ひょっとして、BMPがなんなのか知らないのか?
0255デフォルトの名無しさん
2008/08/20(水) 18:31:520256デフォルトの名無しさん
2008/08/20(水) 18:36:19おまえもな
0257デフォルトの名無しさん
2008/08/20(水) 18:37:34相手を罵倒する発言をする。夏厨丸出し。ここはお前の管轄じゃないから
とっとと新学期の準備をしとけや。お前みたいな実力も知識も無い無能じゃ
このスレの宿題ですら答えられないから。
0258デフォルトの名無しさん
2008/08/20(水) 18:40:550259デフォルトの名無しさん
2008/08/20(水) 18:41:10これは酷い。言葉が読めないのか、こいつは?w
>>238の条件でBMPファイルを生成してみれば、どうなっているかくらいわかっているはず。
あぁそうか、Windowsを使ってないどこぞの研究所の人か?
世の中はWindowsがメインだぞ。俺は大学では実験や研究では
SolarisやUNIXなどを使っていたが、ワークステーションでもWindows系は
使ってたがね。当然、そこでは標準搭載のペイントはあったけどな、
もう6年くらい前の話だが、自分が大学生だったのは。
0260デフォルトの名無しさん
2008/08/20(水) 18:43:10要らない横槍や罵倒、自分の無知をさらすなんてことはするなよ
スレが荒れるだろが >>247 >>241
0261デフォルトの名無しさん
2008/08/20(水) 18:43:560262デフォルトの名無しさん
2008/08/20(水) 18:45:00> >>238の条件でBMPファイルを生成してみれば、どうなっているかくらいわかっているはず。
これも、前後感覚が無くなる病気か?
0263デフォルトの名無しさん
2008/08/20(水) 18:47:00> 世の中はWindowsがメインだぞ。俺は大学では実験や研究では
なんで、オマエの狭い世界が基準なんだよ。
0264デフォルトの名無しさん
2008/08/20(水) 18:51:09235 名前:デフォルトの名無しさん 投稿日:2008/08/20(水) 15:13:21
まだビットマップ読み込む課題出す駄目教師いるんだな
0265デフォルトの名無しさん
2008/08/20(水) 18:55:31その場で作ったBMPを読み取ると言う話からすれば、
バリエーションのあるフォーマットに網羅的に対応すると言う課題でもない様だし、
ターゲットとしてバカらしくはある。
0266デフォルトの名無しさん
2008/08/20(水) 20:09:16テキスト形式の具体的な内容は?
0267デフォルトの名無しさん
2008/08/20(水) 20:48:42左上から順にRGBを6桁の16進数にして出力するプログラムは出来たでごわすが
現在、>>1にあるうpろだが利用できないようなので、復旧したらうpするでごわす。
0268デフォルトの名無しさん
2008/08/20(水) 21:46:50一応、リンクできるようにしてみたけど
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7630.zip
つながり難い
0269デフォルトの名無しさん
2008/08/20(水) 21:52:100270デフォルトの名無しさん
2008/08/20(水) 22:43:240271デフォルトの名無しさん
2008/08/20(水) 23:09:590272デフォルトの名無しさん
2008/08/20(水) 23:57:20いるわけでもないのに、口出ししておいて相手を罵倒している奴って何?
後から補足でBMPって本人が言ってんじゃん。BMPなんて書いてないって
どんだけ文字が読めない学の無い奴だよ?って思われるような墓穴を掘るなよw
Windows、ペイント、ビットマップって言ったら普通に知っている人は分かるぞ?
けどさ、それを言うと、自分にとっては当たり前じゃないとか、それ以外にもあるとか
言い出すんだろ?分からないなら口出ししなきゃ良いじゃんw
己の無知を晒す場でもないから、知らないなら別に口出しせんでもよろしい。
なのに、その課題を扱う講師がどうとか、無関係なレスしてんの???
0273デフォルトの名無しさん
2008/08/21(木) 00:14:44これが前後関係のわからなくなる病気
0274デフォルトの名無しさん
2008/08/21(木) 00:15:10>>234読めよ、夏厨
0275デフォルトの名無しさん
2008/08/21(木) 00:48:15それに反応するのはお前くらいだよ
0276デフォルトの名無しさん
2008/08/21(木) 00:54:150277デフォルトの名無しさん
2008/08/21(木) 00:55:50結局、BMPがなんだか知らなかったのか・・・
0278デフォルトの名無しさん
2008/08/21(木) 00:56:14ペイントで24ビットBMPファイルを何でも良いから作ってみましょう。
先に言っておくが、中身がまったくないってのは無しね。
0279デフォルトの名無しさん
2008/08/21(木) 00:57:01まあ、Wikipediaをwikiって略すようなもんだから、バカっぽいけど、それほど恥ずかしくないんじゃないの?
0280デフォルトの名無しさん
2008/08/21(木) 01:04:43なんというか活気があるな
0281デフォルトの名無しさん
2008/08/21(木) 01:05:10ねぇ、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
0282デフォルトの名無しさん
2008/08/21(木) 01:08:500283デフォルトの名無しさん
2008/08/21(木) 01:10:50よっぽど恥ずかしいんだろうけど、もう、気にするなよ。
0284デフォルトの名無しさん
2008/08/21(木) 01:13:12本当にお前が日本語が理解できるかも疑わしい。
>>1読め。
> 気に入らない質問やその他や発言はスルーの方向で。
何もあんたを特定して質問者は質問をしてんじゃないんだから。
知らない、分からない奴に押し付けてないだろw
そうやって、自分が知らなかったことを許してもらおうとかしているわけ?
それとも、知らなかったことを言い訳して、認めてもらおうとしてんの?
あんたがどこの誰か知らないが、自分が解けない課題を出す奴を
目の敵にしてどーすんだよ?w
答える気がないなら黙っとれ、鬱陶しい。スレが汚れるからこの変にしとくぞ。
0285デフォルトの名無しさん
2008/08/21(木) 01:15:09とうとう、>>1を持ち出したよ。
それ、何回もやりすぎで効果ないだろ。
0286デフォルトの名無しさん
2008/08/21(木) 01:16:13>>1を持ち出して何とか、自分が最後の発言者になりたいんだろうけど、逆効果じゃね?
0287デフォルトの名無しさん
2008/08/21(木) 01:16:57それ、何行目からコピペなの?
0288デフォルトの名無しさん
2008/08/21(木) 01:18:30なんでそれが分からないで、一人で質問者に噛み付いてファビョってんの?w
>>1読め
0289デフォルトの名無しさん
2008/08/21(木) 01:21:29オマエは質問者じゃないだろ。
当人はとうに飽きて出てったさ。
0290↑課題に答えられなくて悔しいのう悔しいのう
2008/08/21(木) 01:35:50最近、丸投げのレスがなくて、たまにある課題をwktkして待っていたが
BMPの問題程度の簡単なものでも、解けなくて悔しいんだろうけどさ。
お前もあれだろ、昼夜逆転した生活で脳がおかしくなって
世の中がおかしく見え始めている妄想癖のある危険人物。
他の板でも、深夜に暴れているキチガイを見かけるけど、そいつらって
最後は暴れて逮捕されてるんじゃね?あと、スレが汚れるからこの辺で、な?
お前みたいなのは、引き際を知らないから、余計に泥沼に嵌るんだよ。
とにかくな、ごちゃごちゃ言い訳っぽいことを並べるだけの奴って、
どんな業界でも、無責任で情けなく見えるんだわ。お前が無能だから出来ないんだろって
普通に言われるぞ。ここは答えるのも任意だから、出来なくても誰にも文句いわれないから、
だから安心して寝ろ、な?お前が出来る課題が必ずしも質問されるとは限らないからさ。
出来る人に任せとけ、な?
0291デフォルトの名無しさん
2008/08/21(木) 01:41:25BMP程度って、中身は簡単なようで複数フォーマットがあって
割と面倒なんでけどw
0292デフォルトの名無しさん
2008/08/21(木) 02:00:240293268
2008/08/21(木) 03:56:42http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7631.zip
うpろだ復活したので修正したのをあげとく
0294デフォルトの名無しさん
2008/08/21(木) 09:38:100295デフォルトの名無しさん
2008/08/21(木) 09:44:590296234
2008/08/21(木) 11:32:45元はといえばボクの情報漏れが原因なので・・・
みなさんすみません。
>>266
FF00FF みたいな感じだと思います
>>267
よろしくおねがいします
0297デフォルトの名無しさん
2008/08/21(木) 13:07:53さすがに解けないわけじゃなくて、面倒くさいだけだろ。
0298デフォルトの名無しさん
2008/08/21(木) 13:40:44C言語でやること、24bit色の無圧縮BMPだけを扱えば良さそうなとこまでは把握した。
>・対象ビットマップ
> 赤、青、緑、白、黒
これがいまいちわからない。どゆこと?
0299デフォルトの名無しさん
2008/08/21(木) 13:47:39この手の問題をやりたくないのは
出題者がいい加減な出題の仕方をしてて、答えるほうが質問者に落としどころを確認しないと
いけないことだ。
0300デフォルトの名無しさん
2008/08/21(木) 13:49:35テキストファイルにはピクセルに相当する赤、青、緑、白、黒の文字が並ぶんだと思ってたよ・・・
0301デフォルトの名無しさん
2008/08/21(木) 13:51:22「私の為に争わないで」ってかw
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7632.txt
0302デフォルトの名無しさん
2008/08/21(木) 13:53:27RGBそれぞれ256段階指定できるんだぞ。
やっぱり糞問題じゃねーか
0303デフォルトの名無しさん
2008/08/21(木) 14:01:55出題者は講義を通じて課題の範囲を示しているだろうが、
質問者はやる気の無いド素人だから、課題を理解していない。
それが、源泉だと思う。
0304デフォルトの名無しさん
2008/08/21(木) 14:30:220000FF00、FF000000、00FF0000、FFFFFF00、00000000の5種類のデータしか並んでないって事か。
決めうちしちゃって大丈夫かな・・・?
0305デフォルトの名無しさん
2008/08/21(木) 14:35:56そらなw
PC9801の初期のデジタルモードじゃないだからwww
出題者はやっぱり糞
本気で赤青とかに分類するための条件設定がなくて
ソフト作れーねーよ。
24bitビットマップでざっくり「赤青・・・」に分けるなら色ごとの閾値設定だとかも
よこせよ
0306デフォルトの名無しさん
2008/08/21(木) 14:56:46糞なのは、質問者だろ。
0307デフォルトの名無しさん
2008/08/21(木) 14:57:380308デフォルトの名無しさん
2008/08/21(木) 15:33:57ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7634.txt
動作確認?まったくしとらんでおじゃるよ?(鼻糞ほじりながら)
0309デフォルトの名無しさん
2008/08/21(木) 17:44:52ペイントでそのようなファイル作ってくれるんでしょ?他のがあったら捨て置けばいいじゃん
0310デフォルトの名無しさん
2008/08/21(木) 17:45:52またお前か、答えもせず回答する能力もないくせに、偉そうに
口出ししかしないお前の方が糞なんだよ!このスレでは用なし
要らない子でつよ?wwww
0311デフォルトの名無しさん
2008/08/21(木) 19:04:00[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] 期限:無期限
どうかよろしくお願いします。
0312デフォルトの名無しさん
2008/08/21(木) 19:08:39この場合は?
#####
#####
###**
##***
##***
0313デフォルトの名無しさん
2008/08/21(木) 19:11:59そうゆうのは無いです。。
あくまで角がある(?)パターンです。
お願いします(;´Д`)
0314デフォルトの名無しさん
2008/08/21(木) 19:13:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7635.c
>>308
偽おじゃるめ、クソースさが足りないでごじゃる
0315デフォルトの名無しさん
2008/08/21(木) 19:24:52ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7636.c
0316デフォルトの名無しさん
2008/08/21(木) 19:34:27#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;
}
0317デフォルトの名無しさん
2008/08/21(木) 19:51:46本当にありがとうございます!
助かりました!
0318デフォルトの名無しさん
2008/08/22(金) 01:57:08何でこういうループになるの?
0319デフォルトの名無しさん
2008/08/22(金) 02:03:220320デフォルトの名無しさん
2008/08/22(金) 08:58:010321デフォルトの名無しさん
2008/08/22(金) 09:36:590322回答者修行中
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;
}
これまともに動いてる?
0323デフォルトの名無しさん
2008/08/22(金) 16:03:540324デフォルトの名無しさん
2008/08/22(金) 18:47:59*が存在することが明確なら特に問題ないのかな
y=i/widthのほうがよかったりしないかな、とおもいつつも、ともあれその発想が面白かったです
0325 ◆tr.t4dJfuU
2008/08/22(金) 22:21:04[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] 特になし。
0326デフォルトの名無しさん
2008/08/22(金) 22:52:15>((int)p - (int)field)/sizeof(char);
こう書くより
p - (char*)field
こう書いたほうがよくね?
0327デフォルトの名無しさん
2008/08/22(金) 23:46:360328デフォルトの名無しさん
2008/08/23(土) 00:37:291.
次のような式で表される数列が与えられたとする。
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日正午
見づらいかもですが、よろしくお願いします。
0329デフォルトの名無しさん
2008/08/23(土) 01:07:37void 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;
}
0330デフォルトの名無しさん
2008/08/23(土) 01:29:43int main(void){
char *tail="hogehuga";
char *s="foobarhogehuga", *p;
p=s+20;
printf("%s %s %d\n", p, tail, strcmptail(p, tail));
return 0;
}
0331クソコテ
2008/08/23(土) 18:10:22>>324
そうですねマジックナンバーはいただけませんね
>>326
それでいけますか?
あ、いけますね、やっぱりまだ少し勘違いがあるみたいです。
>>327
すみません、私の力不足の用で、途中までやってみましたが、
構造体に入れるところで、異常に長くなってしまうので諦めました。
メモリ上での構造体の配置を仮定すればループでいけますが
あまりにも処理系依存なので止めておきます、
誰かがすごい解答を出してくれるのを待ちましょう。
0332デフォルトの名無しさん
2008/08/23(土) 18:59:28OSを作りなさい
0333デフォルトの名無しさん
2008/08/23(土) 19:05:22#include <allornothing.h>
int main(void){
puts("The End");
}
0334デフォルトの名無しさん
2008/08/23(土) 19:30:32Oh yes なんつって
0335デフォルトの名無しさん
2008/08/23(土) 21:20:280336デフォルトの名無しさん
2008/08/23(土) 21:21:51strlen(stail) > strlen(s)
の時に問題あるよ
0337デフォルトの名無しさん
2008/08/23(土) 21:25:160338デフォルトの名無しさん
2008/08/23(土) 21:27:49>>330 を実行してアレッ?と思って欲しかったが、回りくどかったようだ
0339デフォルトの名無しさん
2008/08/23(土) 21:30:50>p=s+20;
こんなこと書くアホが何言ってんだ。
0340デフォルトの名無しさん
2008/08/23(土) 21:32:05p=&s[20]; が好みか?
0341デフォルトの名無しさん
2008/08/23(土) 21:32:390342デフォルトの名無しさん
2008/08/23(土) 21:34:220343デフォルトの名無しさん
2008/08/24(日) 17:45:450344デフォルトの名無しさん
2008/08/24(日) 17:57:45死ね
0345デフォルトの名無しさん
2008/08/24(日) 18:46:540346デフォルトの名無しさん
2008/08/24(日) 19:37:120347デフォルトの名無しさん
2008/08/24(日) 20:09:39[1]アルゴリズムとデータ構造
[2]
クラスカルの方法を用いて,最小木のアルゴリズムを作れ.
データファイル(data.txt)は
点の数 枝の数 (1行目のみ)
枝番号 始点 終点 枝の長さ
・・・・・・・・・・(これが枝の数だけ続く)
という形式.
グラフを各点に接続する枝を覚えるリスト形式で表現せよ.
↓data.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7644.txt
[5]最小木の最短経路の問題へと発展する1stステップです。ま、解ければね・・・
0348デフォルトの名無しさん
2008/08/24(日) 21:15:23もっと解いてうれしくなるような問題にしろよ。
0349デフォルトの名無しさん
2008/08/24(日) 21:30:21>>348
いい加減、お前の方がうざいぞ
0350デフォルトの名無しさん
2008/08/24(日) 21:36:03[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] その他の制限:なし
よろしくおねがいします。
0351デフォルトの名無しさん
2008/08/24(日) 21:47:30#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;
}
0352デフォルトの名無しさん
2008/08/24(日) 21:53:20ありがとうございます。
0353デフォルトの名無しさん
2008/08/25(月) 01:42:06読み込んで記憶するだけでいいの?
それとも内部でグラフを作るの?
0354sage
2008/08/25(月) 02:09:56グラフはアウトプットしなくてもよいのですが
まずリスト形式で作成すると同時に
枝情報をヒープに格納して(最大ヒープサイズは枝の数である50)
ヒープから短い枝順に順次データを取り出し
クラスカルのアルゴリズムに従って、最小全域木を求めます。
最終的には最小全域木の
ある任意の点Αから、点50までの最短経路を求める問題になります。
おそらく出題者は、グラフを先に作ったうえで
問題にしたっぽいです。
グラフはwinnyの開発画面みたいなやつです。
あぷりますね。
0355347
2008/08/25(月) 02:26:40http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7647.txt
0356347
2008/08/25(月) 02:29:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7646.zip
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7647.zip
[2] 問題文(含コード&リンク):
「苦しんで覚えるC言語」の第1部13(全ページリンクフリー)
http://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
となってしまいます。
よろしくお願いします。以下、プログラム全文と実行画面です。
#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
0359デフォルトの名無しさん
2008/08/25(月) 04:02:49> scanf("%d\n",&array[i]);
scanf("%d",&array[i]);
0361234
2008/08/25(月) 09:09:51また、ご協力お願いします。
0362デフォルトの名無しさん
2008/08/25(月) 11:01:55言語は?
0363347
2008/08/25(月) 11:17:57C言語でもC++でもOKです。
自分はVC++使ってたんですけど
引数のエラーが出て
関数がうまく扱えないので
C使ってBorlandでやってまス。
ファイルの読み込み処理で、入力した名前のファイルがある場合はある、ない場合はないと
表示させるプログラムを作っていますが、自分が作成したコードではダメだしをくらいました。
以下、コードです。
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です。
0365デフォルトの名無しさん
2008/08/25(月) 11:37:53filename がバッファオーバーフローする危険性がある
fclose(NULL) する危険性がある
scanf に渡す引数の型が一致していない
あとこのレベルだとどうでもいいことだが
排他処理をしている場合 fopen でファイルの存在を確定することはできない
自分でも、ちょっと調べてみたのですが、
どうやら、fclose(NULL)している模様です。
この場合の対策などはないのでしょうか?
0367デフォルトの名無しさん
2008/08/25(月) 12:10:24fpがNULLかどうかチェックしてるだろ。
そのNULLじゃない方に入れたらいいべ。
0368デフォルトの名無しさん
2008/08/25(月) 12:52:581.scanfのところの&がいらない。
2.ファイルがない場合はfcloseする必要がない。
そのとおりに変更して提出しました。
>>368
scanfを使用した場合どのような問題が起こるか説明しろといわれました。
上で言われた、バッファオーバーフロー云々でいいのだろうか?
いろいろ、調べてみたが解釈の仕方が様々でよくわからなかった・・・。
0371デフォルトの名無しさん
2008/08/25(月) 14:21:560372デフォルトの名無しさん
2008/08/25(月) 14:26:00scanf("%[^\n]", a);
これでよかった気がするがうるおぼえ。
0373デフォルトの名無しさん
2008/08/25(月) 14:37:45こういうやり方があったのか知らんかった。
'\n'をスキャン対象から除外すればいいのか。
0374デフォルトの名無しさん
2008/08/25(月) 15:07:11リターンキーが無視できない、バッファオーバーラン、空白が読み取れない
これらの問題を解決したすばらしいscanf
scanf("%19[^\n]%*[^\n]", filename);
0375デフォルトの名無しさん
2008/08/25(月) 15:24:28getsは回避手段がないのでだめだめな関数
scanfも>>364の使い方だとgetsと変わらない
20文字以上入力されたらバッファーがあふれる
0376デフォルトの名無しさん
2008/08/25(月) 15:31:41scanf(%20s,filename);とか
文字数制限しないとバッファオーバーランするみたいですね。
勉強不足でした・・・(´・ω・)
0377デフォルトの名無しさん
2008/08/25(月) 15:34:09scanf(%20s,filename);とか
文字数制限しないとバッファオーバーランすんですね。
勉強不足でした。(´・ω・)
0378デフォルトの名無しさん
2008/08/25(月) 15:34:190379デフォルトの名無しさん
2008/08/25(月) 16:28:420380デフォルトの名無しさん
2008/08/26(火) 12:56:45データをすべて読み込むところまでしかできてない
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7651.txt
0381234
2008/08/26(火) 14:41:03ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7652.txt
と、無事完成させることができました(関数にしたほうがいいかも)
そして次の課題もご協力おねがいしたいのですがよろしいですか?
256、16、モノクロ対応
◆仕様
・各ビット数のビットマップも読み込めるようにする。
・<windows.h>は使用しない
◆ポイント
・読み込んだデータを24ビットに展開させる。
あと以前の色を文字で表示するのは
0x000000FF=青
0x0000FF00=緑
0x00FF0000=赤
0x00FFFFFF=白
0x00000000=黒
だったようです。失礼しました。
0382デフォルトの名無しさん
2008/08/26(火) 20:14:28>>380 は有向グラフで書いてるけど、問題は無向グラフ?
0383347
2008/08/26(火) 20:46:46すごく参考になりました。
ありがとうございます!
>>382
あくまでも、私個人の考えなのですが;
ある点A(これは学生の出席番号でした) から50までの最短経路の長さとその途中に通った点を求めるのが、
この問題の最終的な目標です。(奥行優先探索を使うといいと教師は言ってました。)
今回はグラフを書くこと自体が目的ではないので、有向、無向、どちらでも大丈夫です。
まぁ、最短経路なので、無向、有向どちらかといえば、一番近い距離を制約なしに
進める無向の方がいいかもしれません。
あと、データの各枝の長さがすべて異なっていれば、最小木が一意に定まりますが、
今回のデータは、そうでないので、作り方によっては、最小木が何本か作れるかもしれないです。
0384デフォルトの名無しさん
2008/08/27(水) 09:47:14「自分で考えた最高のクラスを創ってこい」
というのが出ました。
どんなのを作っていいか全く見当がつきません。
だれか知恵を貸してください。
0385384
2008/08/27(水) 10:01:33クラスの継承は必ず使えとの事です
0386デフォルトの名無しさん
2008/08/27(水) 10:43:430387デフォルトの名無しさん
2008/08/27(水) 10:54:19夢のようなクラス(学級)ですね!
でもそっちのクラスじゃないです;;
class xxxx{
private:
int aa:
public;
xxxx();
とかのクラスです。
0388デフォルトの名無しさん
2008/08/27(水) 11:02:060389デフォルトの名無しさん
2008/08/27(水) 11:04:29private:
static const int lv = 99;
public:
int Attack(void){ return lv*100; }
};
こういうことか
0390デフォルトの名無しさん
2008/08/27(水) 11:14:460391デフォルトの名無しさん
2008/08/27(水) 11:15:330392デフォルトの名無しさん
2008/08/27(水) 16:42:00[2] 問題文:
http://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] 期限: 本日中
よろしくお願いします。
0393デフォルトの名無しさん
2008/08/27(水) 17:09:55何故自分までadd配列に入った結果になってるんだ?
0394デフォルトの名無しさん
2008/08/27(水) 17:11:210395デフォルトの名無しさん
2008/08/27(水) 17:24:19#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;
}
0396デフォルトの名無しさん
2008/08/27(水) 17:24:46int 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;
}
0397396
2008/08/27(水) 17:26:440398デフォルトの名無しさん
2008/08/27(水) 17:34:04ソート使って無くね?
0399デフォルトの名無しさん
2008/08/27(水) 17:49:170400392
2008/08/27(水) 18:51:58>>395
returnを複数使うという事を習っていないのですが
return 1; の部分を使わないとすればどういう風になるのでしょうか?
お手数かけますがお願いします。
0401デフォルトの名無しさん
2008/08/27(水) 19:01:05if(in>=2 && in<=100) {
//return 0の前の行まで
}
return 0;
0402 ◆mM5kCiKYnA
2008/08/27(水) 21:49:48[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日
0403デフォルトの名無しさん
2008/08/27(水) 22:11:47あなろぐ?
0404 ◆mM5kCiKYnA
2008/08/27(水) 22:59:12時計とかでもあると思うんですけど。
そこはあまり深く考えなくても大丈夫ですので。
0405デフォルトの名無しさん
2008/08/28(木) 01:07:23[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日
0407デフォルトの名無しさん
2008/08/28(木) 02:36:20何をすればいいのかいまいちわからん。
それやるのに配列使わなく無いか?
それとも、表示するだけではなくて保存しておく必要があるのか?
0408デフォルトの名無しさん
2008/08/28(木) 02:41:40数値を正確に書けよ。イミフだ
未満とか以下の表現も必要
0409デフォルトの名無しさん
2008/08/28(木) 06:18:35こんなもんでいかがッスか?
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7656.txt
0410デフォルトの名無しさん
2008/08/28(木) 07:58:360411デフォルトの名無しさん
2008/08/28(木) 08:19:35[1] 確率論
[2]
NxNの行列の逆行列を出すプログラムをつくれ。
Nは10以上30以下である。
[3] 環境
[3.1] Linux
[3.2] gcc
[3.3] 言語:C
[4] 期限:明日にかわるくらいまでには
0412デフォルトの名無しさん
2008/08/28(木) 09:00:58glutでいいよね?
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7657.txt
0413デフォルトの名無しさん
2008/08/28(木) 09:56:020414デフォルトの名無しさん
2008/08/28(木) 10:13:16シュミレーターの受信バッファに書き込む?
カウント値?
パルス信号?
問題の意味が分からない
0415デフォルトの名無しさん
2008/08/28(木) 10:15:15Numerical Recipes in C でも読んでろ
0416デフォルトの名無しさん
2008/08/28(木) 11:16:290417デフォルトの名無しさん
2008/08/28(木) 19:02:35LU分解,Gauss-Jordan法,特異値分解
好きなのでググれ
0418デフォルトの名無しさん
2008/08/28(木) 22:30:14すいません。説明が言葉足らずでしたね。
>>408
たしかに。。。これからは気をつけよう。
>>409
おかげさまでどうにか期限までに課題を終わらせる事ができました。
本当に助かりました。ありがとうございました。
0419デフォルトの名無しさん
2008/08/29(金) 03:32:50[2]住所録の作成
名前・住所・年齢・メアドを一つのレコードとする住所録システム
レコードの登録・削除・レコード中の各項目の更新・レコード中の各項目によるレコード検索
ファイルへの書込みと読込の6機能
配列は使えない
[3]OS:Windows 言語:C
[4]08/08/31
0420デフォルトの名無しさん
2008/08/29(金) 03:57:29ちょっwwwwwww
0421デフォルトの名無しさん
2008/08/29(金) 03:59:370422デフォルトの名無しさん
2008/08/29(金) 04:06:21固定長レコードな住所録の方が好きだ。
0423デフォルトの名無しさん
2008/08/29(金) 04:11:131レコードは256Byte固定長にして、各レコードは区切り文字で区切ればいいのか。
ちょっとやってくる。
0424デフォルトの名無しさん
2008/08/29(金) 04:26:260425デフォルトの名無しさん
2008/08/29(金) 04:56:17レコード検索は部分一致でやるの?
その場合、複数件の該当レコードがあったときどうすんの?
0426デフォルトの名無しさん
2008/08/29(金) 05:40:40とりあえず登録と表示できるやつを作ってみた
#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;
}
0427デフォルトの名無しさん
2008/08/29(金) 08:18:44住所録関係なら配列は使えないだろ?
勉強しなおせ
0428デフォルトの名無しさん
2008/08/29(金) 10:35:12○使わない
0429デフォルトの名無しさん
2008/08/29(金) 10:37:460430デフォルトの名無しさん
2008/08/29(金) 13:00:390431デフォルトの名無しさん
2008/08/29(金) 13:02:041文字づつメモリ上に領域を確保してポインタを繋げていかないといけないんですね?
0432デフォルトの名無しさん
2008/08/29(金) 13:02:57しっ、知ったか初心者に障っちゃだめ、また屁理屈を言い出して
それでも配列じゃないって言い出すから。
0433デフォルトの名無しさん
2008/08/29(金) 13:49:00int size;
};
0434デフォルトの名無しさん
2008/08/29(金) 15:02:10[2] 問題文(含コード&リンク): 多倍長整数の除算(100桁まで)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限: 出来れば明日中
[5] その他の制限: 形式としてclassは必ず使う。
よろしくお願いします。
0435デフォルトの名無しさん
2008/08/29(金) 21:51:05その手の問題は未解決になる可能性大
ここのスレの住人は文字列を逆順にしたり、並べ替えたりする
なんの役にもたたないようなプログラムばかり書いてるからw
0436デフォルトの名無しさん
2008/08/29(金) 21:52:40煽ればやってくれるとでもwww
記憶にある限り少なくともCの範囲では過去にやったよ
0437デフォルトの名無しさん
2008/08/29(金) 22:00:350438デフォルトの名無しさん
2008/08/29(金) 22:03:25ググレカス
0439デフォルトの名無しさん
2008/08/29(金) 23:16:290441デフォルトの名無しさん
2008/08/30(土) 02:09:15前にあったとか、wwwを探せとか・・・
やっぱり、”10個の整数の和を求めるプログラムを教えて下さい”位がちょうどいいかw
0442デフォルトの名無しさん
2008/08/30(土) 02:25:06やり方じゃなくてタイプするのが面倒なだけのコードなんて、誰も興味ないだろ。
0443デフォルトの名無しさん
2008/08/30(土) 02:30:500444デフォルトの名無しさん
2008/08/30(土) 02:36:570445デフォルトの名無しさん
2008/08/30(土) 02:37:44書けるかどうかじゃなくて、手持ちの教科書に載ってるしな・・・
0446デフォルトの名無しさん
2008/08/30(土) 02:39:38んじゃ、それを丸々書けば良いだろwwww
0447デフォルトの名無しさん
2008/08/30(土) 02:41:55メモリの許す限り無限長までやればいいの?
0448デフォルトの名無しさん
2008/08/30(土) 02:42:38面白みがなくて、タイプするのが面倒。
最初から言ってるだろ?
0449デフォルトの名無しさん
2008/08/30(土) 02:43:05何スレか前にintを10進数4桁とみなして計算するようなやつを見た気がするぞ。
加算だか除算だかは覚えてないが。
速度を度外視していいんなら、単純に減算を繰り返すやつを無理矢理クラスに押し込めれば完成。
はい、やる価値無し。次。
0450デフォルトの名無しさん
2008/08/30(土) 02:43:47整数の除算って言ってるし、100桁とも書いてあるぞ?
0451デフォルトの名無しさん
2008/08/30(土) 02:44:12正直すまんかった
0452デフォルトの名無しさん
2008/08/30(土) 02:44:26適当に桁を決められるようにするとか、もちろん、それも
実行している環境が許す範囲内ということにはなるけどね。
>>448
ごちゃごちゃうるせーよ、答える気が無いなら失せろや
昼夜逆転生活の頭のイカれたひきこもり
0453デフォルトの名無しさん
2008/08/30(土) 02:44:58あぼーんしとこうぜ。
0454デフォルトの名無しさん
2008/08/30(土) 02:45:02自己紹介乙
0455デフォルトの名無しさん
2008/08/30(土) 02:50:29なんで自分の価値観を語ってるの?w
>>1読める?読めない?聖徳(ry
0456デフォルトの名無しさん
2008/08/30(土) 02:56:11こういう計算をするってこと?
0457デフォルトの名無しさん
2008/08/30(土) 03:02:13オレもさすがに二度目は面倒だ
0458デフォルトの名無しさん
2008/08/30(土) 03:07:52ググったら何かあったけど?
>>453
目の前の本を書き写すことも出来ない小学生は寝ろよw
0459デフォルトの名無しさん
2008/08/30(土) 03:12:04問題文も読めないヤツが、ちゃちゃ入れてただけか・・・
0460デフォルトの名無しさん
2008/08/30(土) 03:12:590461デフォルトの名無しさん
2008/08/30(土) 03:16:12必死に自分がやらないことをアピールしてらw
お子ちゃま〜〜とっとと寝ろよ、難しい年頃の厨房w
0462デフォルトの名無しさん
2008/08/30(土) 03:38:29> あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
0463デフォルトの名無しさん
2008/08/30(土) 04:41:54>複数件あった場合は何件該当しましたという表記でお願いします。
件数だけでいいんですか?該当したレコードを選択して表示できたりしないでいいんですか?
もしそうなら、それって検索の意味が全く無いですね。
できるようにする必要があるなら該当レコードへのポインタを配列に入れて検索結果の保存を
したいんですが、配列は使ってはいけないんですよね?
配列を使ってはいけない、という制限は一体何のためにあるんですか?バグを増やすためですか?
0464デフォルトの名無しさん
2008/08/30(土) 08:02:11はやく夏休み終わればいいのに。
0465デフォルトの名無しさん
2008/08/30(土) 10:19:25多分リストとか二分木とかを使えってことじゃないかと
046647
2008/08/30(土) 10:48:06>>73
>>80
皆様方ありがとうございました。
参考にさせて頂いて取り敢えずプログラム作れました。
結果も16通りでました。解説も書けたところで、
これから提出します。
約1月振りに覗いてみたら、数時間で解答が出てたので
びっくりでした。
0467
2008/08/30(土) 11:59:13[2] 問題文(含コード&リンク):http://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] その他の制限:学校で習う程度にライブラリを使用してくれれば有難いです。
口頭で言ったものを文章にしたので上手く伝わっていなかったらすみません。
0468デフォルトの名無しさん
2008/08/30(土) 13:31:41こんな感じでいかがでしょう?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7665.txt
0469
2008/08/30(土) 14:03:27データを追加してファイルを上書きしたあとにsyouhin_1.txtというファイルに綺麗に出力するのですが・・・
そこの部分もお願いしたいのですが。。。
0470デフォルトの名無しさん
2008/08/30(土) 14:58:44修正したよ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7666.txt
0471デフォルトの名無しさん
2008/08/31(日) 12:12:47[2] 問題文(含コード&リンク): Windows上で動作するアクションゲームを製作せよ
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: 指定なし
[3.3] 言語: C++
[4] 期限:2009年4月1日
[5] その他の制限: OpenGL又はDirectXを使うこと
0472
2008/08/31(日) 14:17:14ありがとうございました。
たすかりました。
0473デフォルトの名無しさん
2008/09/01(月) 08:55:56プログラムよりモデルデータやモーションデータのほうがキモになるから無理
0474デフォルトの名無しさん
2008/09/01(月) 09:18:19期限長いな
0475デフォルトの名無しさん
2008/09/01(月) 13:10:01[2] 問題文(含コード&リンク): 多倍長演算
100桁以内の整数(10進数)を2つ入力し
その二つの足し算引き算の結果を表示せよ。
表示方法は4桁ごとにスペースを入れること。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC++
[3.3] 言語: C
[4] 期限: 2008年9月4日まで
入力と表示だけは出来ましたが肝心の足し算引き算
の仕方がわかりません。どなたかお願いいたします。
入力と表示だけ書いたソースを一応はっときます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7674.txt
0476デフォルトの名無しさん
2008/09/01(月) 13:22:19過去スレたどれよ
0477デフォルトの名無しさん
2008/09/01(月) 16:02:49char* 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;
}
0478デフォルトの名無しさん
2008/09/01(月) 16:03:58char* 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;
}
0479デフォルトの名無しさん
2008/09/01(月) 16:05:02if (*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);
}
0480デフォルトの名無しさん
2008/09/01(月) 16:46:30[2] 問題文(含コード&リンク):
10進数の-10を8進数・16進数に変換するプログラムを書きなさい
配列を使用する場合の要素数は16とする
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: 指定なし
[3.3] 言語: C
[4] 期限:2008年9月3日
[5] その他の制限: ポインタなどは少し話題に上がった程度の習得状況です
よろしく御願い致します。
0481デフォルトの名無しさん
2008/09/01(月) 16:56:19char buf[16];
sprintf(buf, "%x", -10);
sprintf(buf, "%o", -10);
}
0482デフォルトの名無しさん
2008/09/01(月) 17:24:29返信、ありがとうございます。
問題の書き方が言葉足らずだったようです。
ttp://www.orchid.co.jp/computer/cschool/bin.html の
上のプログラムのような計算をし、かつ負数を取り扱えるような
ソースを書きたいのです。
0483デフォルトの名無しさん
2008/09/01(月) 17:38:28int 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;
}
}
0484ぱそこん
2008/09/01(月) 18:16:422問題文;抽選プログラム(定員、募集人数をキーボードから入力し、乱数を発生させて数値の重複のないように定員分のランダムな数値を求める。
そして、その発生した数値を昇順と、発生した順にそれぞれ出力する。)
3環境
4OS:widows xp またはLinuxでもok
5期限:できれば明日中(本当に急いでます!)
6その他;flg、do while文は必ず用いる。
C言語かなりの初心者です。
0485デフォルトの名無しさん
2008/09/01(月) 20:33:27格納し表示させよ。
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);
}
[2] 問題文:http://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] その他の制限: 標準ライブラリのみ使用
よろしくおねがいします。
0487デフォルトの名無しさん
2008/09/01(月) 20:58:08repcharが文字列でないからじゃないかな
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;
}
0489
2008/09/01(月) 22:37:27>>468
>>470
でやってもらったのですが、構造体を使えとさらに指示が出まして…
構造体を使ってやっていただきたいです。
ファイル処理はバイナリではなく、w,r,a,(a+)などでお願いします。
0490抽選プログラム
2008/09/01(月) 22:48:16[2]問題文;抽選プログラム(定員、募集人数をキーボードから入力し、乱数を発生させて数値の重複のないように定員分のランダムな数値を求める。
そして、その発生した数値を昇順と、発生した順にそれぞれ出力する。)
[3]環境:gcc
[4]OS:widows xp またはLinuxでもok
[5]期限:できれば明日中(本当に急いでます!)
[6]その他;flg、do while文は必ず用いる。
C言語かなりの初心者です。
0491デフォルトの名無しさん
2008/09/01(月) 23:11:110492デフォルトの名無しさん
2008/09/01(月) 23:42:48http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7681.c
鬱だ死
0493抽選プログラム
2008/09/02(火) 00:14:50よかったらプログラムに書いてあるコメントを日本語で書いていただけないでしょうか汗
英語分からないんです涙
0494デフォルトの名無しさん
2008/09/02(火) 00:22:020495ロベ
2008/09/02(火) 09:33:09[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] その他の制限:特になし
よろしくお願いします
0496デフォルトの名無しさん
2008/09/02(火) 10:02:190497デフォルトの名無しさん
2008/09/02(火) 10:37:37別に難易度高くないから調べてみたら?勉強になるし。
0498デフォルトの名無しさん
2008/09/02(火) 11:57:01[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)
------------------
高次項・三角関数・合成関数に対応させるのが条件です
0499デフォルトの名無しさん
2008/09/02(火) 21:32:48ログイン後はユーザの新規登録・削除・変更、一覧と紹介(絞込み)が可能なもの。
�@ユーザID/パスワード入力
�Aユーザテーブルチェック・エラー処理・メニュー処理へ
【出力画面】
Uidを入力してください
○○
Pwdを入力してください
○○
Uid: ○○
Pwd: ○○
担当者: ○○
会社コード: ○○
アクセス区分: ○○
e-mail: ○○
1.照会(絞込み) 2.一覧 3.新規、変更、削除 4.ログアウト
終了しますか? (y,n)
【テキストの内容】
会社コード 担当者 ユーザID アクセス区分 e-mail
001 山田 太郎 u001 1 [email protected]
002 山田 花子 u002 2 [email protected]
003 田中 次郎 u003 3 [email protected]
というようなプログラムにします。
頑張りましたがどうしても無理でした。。
申し訳ないですが、どうかよろしくお願いしますm(__)m
[2.1] OS:WindowsXp
[2.2] Visial C++
[2.3] 言語: C++
[3] 期限:2008年9月3日
0500デフォルトの名無しさん
2008/09/03(水) 00:23:04ひまなので
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逡ェ逶ョ繧偵�繝ェ繝ウ繝");
}
}
}
}
}
0501デフォルトの名無しさん
2008/09/03(水) 00:24:20using 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番目をプリント");
}
}
}
}
}
0502デフォルトの名無しさん
2008/09/03(水) 00:37:15コラw
0503デフォルトの名無しさん
2008/09/03(水) 09:51:540504デフォルトの名無しさん
2008/09/03(水) 17:34:530505デフォルトの名無しさん
2008/09/03(水) 17:38:27高いよ
0506デフォルトの名無しさん
2008/09/03(水) 17:43:19このスレずっとさかのぼってみてみるといい。
0507デフォルトの名無しさん
2008/09/03(水) 17:56:44他力本願で情けないのですが今の僕のレベルではお手上げ状態です(>_<)
0508デフォルトの名無しさん
2008/09/03(水) 18:42:400509デフォルトの名無しさん
2008/09/03(水) 19:37:34それはできません(>_<)どうか本当にお願いします(>_<)
0510デフォルトの名無しさん
2008/09/03(水) 20:12:17マジレスすると、その機能を無料で作ってくださいとかありえない。
0511デフォルトの名無しさん
2008/09/03(水) 20:28:16そうですか…。自力で作るしか方法は無いのですね。
わかりました、ご指摘いただいてありがとうございましたm(__)m
0512デフォルトの名無しさん
2008/09/03(水) 20:33:200513デフォルトの名無しさん
2008/09/03(水) 22:46:57[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] 期限:日付変更辺りまで
どうか宜しくお願いします。
0514デフォルトの名無しさん
2008/09/03(水) 23:02:30#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;
}
0515デフォルトの名無しさん
2008/09/03(水) 23:27:08回答ありがとうございます。
ですが()を2重にしたり、NULLやreturn 0;以外のreturnの使い方を習っておりません・・・。
他にどんな書き方があるか聞いても良いでしょうか?
0516デフォルトの名無しさん
2008/09/03(水) 23:32:39if((fp_in=fopen(filename_in, "r"))==NULL) return 1;
↓
fp_in=fopen(filename_in, "r");
if(fp_in==NULL) return 0;
0517デフォルトの名無しさん
2008/09/03(水) 23:44:50ほう・・・カッコを外すと1が0になるのか・・・
0518デフォルトの名無しさん
2008/09/03(水) 23:52:070519デフォルトの名無しさん
2008/09/04(木) 01:48:04揚げ足とることに必死で515をちゃんと読めてないw
0520デフォルトの名無しさん
2008/09/04(木) 07:47:02↓
if(!fp_in) return 0;
0521デフォルトの名無しさん
2008/09/04(木) 09:52:49なぜわざわざ可読性を下げる?
0522デフォルトの名無しさん
2008/09/04(木) 10:00:030523デフォルトの名無しさん
2008/09/04(木) 10:01:270524デフォルトの名無しさん
2008/09/04(木) 11:50:530525デフォルトの名無しさん
2008/09/04(木) 12:05:34うちのコーディング規約でもif (!hoge)だし。
0526デフォルトの名無しさん
2008/09/04(木) 12:17:11このスレは経験値低すぎる人が質問するスレだから不適切だな
0528デフォルトの名無しさん
2008/09/04(木) 12:22:510529デフォルトの名無しさん
2008/09/04(木) 15:53:060530デフォルトの名無しさん
2008/09/04(木) 17:38:15[2] 問題文(含コード&リンク):URLの“第12回目”の中にある一番下(課題1)の
問題。 URL→http://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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 関数とかは習っていません。
どうか宜しくお願いします(><)
0531デフォルトの名無しさん
2008/09/04(木) 17:42:39面倒でも問題はテキストに起こそうぜ。
君の大学がばれるぞ。
で、JAVA???
0534デフォルトの名無しさん
2008/09/04(木) 18:24:00スレタイ読んで来ような。
ほしいのはこっちだろ?
http://pc11.2ch.net/test/read.cgi/tech/1212085079/
0536デフォルトの名無しさん
2008/09/04(木) 19:49:480537デフォルトの名無しさん
2008/09/04(木) 23:32:130538デフォルトの名無しさん
2008/09/05(金) 01:06:40教授に怒られることもできない。匿名の2CHでこそっと聞いて。ちなみにJava板で解答げっとしてたよ、こいつ
0539デフォルトの名無しさん
2008/09/05(金) 01:08:060540504
2008/09/05(金) 01:16:42亀レスすみません
宿題なんですけど、問題を解くのではなくてプログラムを作る宿題なんです…
ちょっと1から読んで来ます(;´Д`)
0541デフォルトの名無しさん
2008/09/05(金) 04:49:32[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://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] その他の制限: (ポインタの最初の段階まで習っています)
0542デフォルトの名無しさん
2008/09/05(金) 09:50:32#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);
}
0543デフォルトの名無しさん
2008/09/05(金) 09:51:50問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;
}
0544デフォルトの名無しさん
2008/09/05(金) 09:53:01問2
#include <stdio.h>
int main(void)
{
char str[5]="abcde";
char *p;
p=str;
while(*p)
putchar(*p++);
return 0;
}
0545デフォルトの名無しさん
2008/09/05(金) 09:54:17問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;
}
0546543-545
2008/09/05(金) 10:02:470547デフォルトの名無しさん
2008/09/05(金) 10:14:30よくあることだぜ。
むしろ、普通は数字直接入力なんてしないからな。
0549デフォルトの名無しさん
2008/09/08(月) 13:10:28[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] その他の制限:特にありませんが、アルゴリズムや考え方についての解説があると助かります。
よろしくお願いします。
0550デフォルトの名無しさん
2008/09/08(月) 14:52:44数学の問題じゃねーか
数式よろ
0551デフォルトの名無しさん
2008/09/08(月) 15:27:46#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; }
0552デフォルトの名無しさん
2008/09/08(月) 17:33:15ちょ、おまw
0553デフォルトの名無しさん
2008/09/08(月) 18:04:00[2] 問題文(含コード&リンク):
http://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
復元作業とはいえ間に合うか不安なのでお願いします
0554デフォルトの名無しさん
2008/09/08(月) 18:45:220555デフォルトの名無しさん
2008/09/08(月) 20:45:430556デフォルトの名無しさん
2008/09/08(月) 20:51:10やらせようとしている内容は察しがつくが
問題文が気持ち悪いな
表現のゆらぎが尋常じゃない。統一しろよと
0557デフォルトの名無しさん
2008/09/08(月) 20:52:58脳が溶けた
0558デフォルトの名無しさん
2008/09/08(月) 21:35:46親戚の子も母も許してやれよ?
その寛大な気持ちが、将来のお前の資産になる。
あぁ、母親はやらせくれるだろうし、親戚の子はお前を大切に育ててくれるのだから。
0559デフォルトの名無しさん
2008/09/08(月) 21:36:38イミフ
0560デフォルトの名無しさん
2008/09/08(月) 21:41:33読み:イミフ
0561553
2008/09/08(月) 22:11:40http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7699.txt
1と2を終わらせて3に入ったものの、この有様で…。
USB吹っ飛ばされたショックで焦りすぎました、夜風にあたって頭冷やしてきます。
>>555
USB内で完結させてしまったのが敗因でした。
やり直しから大人しくHDDで作業→USBでコピー、の形を取ることにしました。
0562デフォルトの名無しさん
2008/09/08(月) 22:21:00頑張ってコメントを書いているようだが内容が的外れ
最初は誰でもそんなもんだろうけど
0563デフォルトの名無しさん
2008/09/08(月) 22:23:57一応、先頭にプログラムの目的と製作日付、製作者の魔羅サイズは記入するようにしているけど・・・
0564デフォルトの名無しさん
2008/09/08(月) 22:30:24標準時?最大時?現在時?
0565デフォルトの名無しさん
2008/09/08(月) 22:49:25・ループから抜けるにはbreakを使うとよい
・一致文字列チェックでp[j]をみてるが、高頻度で見てはいけないところを
みるようになっている。それを防ぐために、配列pの各要素をNULLで初期化
しておいて、NULLじゃないところだけ一致チェックをするとよい
・一致した文字に対応する文字列件数を加算 の処理がcnt[n]++;
となっているが、cnt[j]++;では?
0566デフォルトの名無しさん
2008/09/08(月) 22:51:11みてはいけないとこはみてなさそうだった。ごめん。
0567デフォルトの名無しさん
2008/09/08(月) 22:57:21いい感じと思うけどなぁ。
丸投げして自分の考えと全く異なるコードを提出するより
可能ならばもう一回作って提出できる方がいいなと思う。
その途中で過去の自分のコードを改善できることもあるし。
別に丸投げが悪いといってるわけではなくて、時間があれば
そういうこと(作り直し)をしてみたらいいんじゃない?程度。
0568デフォルトの名無しさん
2008/09/08(月) 22:57:45データ復旧させたほうが早いかも
がんばれ!
0569デフォルトの名無しさん
2008/09/08(月) 23:59:34double 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) について解く
//
0570デフォルトの名無しさん
2008/09/09(火) 01:39:52課題6だけ。
出力と、main()のループを抜けるロジックがアレだけど、
眠いんでそっちで調整して。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7700.zip
0571デフォルトの名無しさん
2008/09/09(火) 02:34:31[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);
0572デフォルトの名無しさん
2008/09/09(火) 02:36:07printf("名前を入力してください。:");
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;
}
0573デフォルトの名無しさん
2008/09/09(火) 06:19:46何が分からんのか分からんのだが。
> 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にしかならん。
ならば
身長、体重も小数点扱える型で定義するか、キャストしてから割り算せい。
0574デフォルトの名無しさん
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);
とりあえずこれで。
0575デフォルトの名無しさん
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);
にすると小数点以下を無くして書き込む。
0576デフォルトの名無しさん
2008/09/09(火) 14:00:240577デフォルトの名無しさん
2008/09/09(火) 15:04:48[2] 問題文(含コード&リンク):http://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ファイルでシートごとに問題が分かれています。よろしくお願いします。
0578デフォルトの名無しさん
2008/09/09(火) 16:23:52unsigned 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);
}
ポインタを使って文字列を逆から表示させる課題があるのですが、
上のプログラムのどこを変更すればポインタを使ったプログラムになるでしょうか?
よろしくお願いします。
0579デフォルトの名無しさん
2008/09/09(火) 16:38:12>>541
過去スレ全部とは言わない。
せめてこのスレ位読んできて。
0580デフォルトの名無しさん
2008/09/09(火) 19:23:13ツッコミの手本を見せてください><
0581デフォルトの名無しさん
2008/09/09(火) 22:41:15丸投げかよ
0582デフォルトの名無しさん
2008/09/09(火) 23:17:10問題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 );
}
0583デフォルトの名無しさん
2008/09/09(火) 23:35:36問題2
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7706.zip
0584583
2008/09/09(火) 23:40:08・typedefを消去
・string1 s1を消去
・strign2 s2を消去
・s1,s2をそれぞれstring1、string2に置換
0585デフォルトの名無しさん
2008/09/10(水) 01:06:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7707.lzh
0586デフォルトの名無しさん
2008/09/10(水) 16:51:46[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://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] その他の制限: (ポインタの最初の段階まで習っています)
0587デフォルトの名無しさん
2008/09/10(水) 17:26:11>>542以下じゃないのか?
0588デフォルトの名無しさん
2008/09/10(水) 18:50:24問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;
}
0589デフォルトの名無しさん
2008/09/10(水) 18:51:30問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;
}
0590デフォルトの名無しさん
2008/09/10(水) 18:52:16問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;
}
0591デフォルトの名無しさん
2008/09/10(水) 18:54:14問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;
}
0592デフォルトの名無しさん
2008/09/10(水) 23:33:43問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;
}
0593デフォルトの名無しさん
2008/09/10(水) 23:35:29- printf(save);
+ printf("%s", save);
0594デフォルトの名無しさん
2008/09/10(水) 23:37:13- unsigned str_length(const char str[])
+ unsigned str_length(const char *str)
- void str_rev(const char str[]){
+ void str_rev(const char *str){
0595デフォルトの名無しさん
2008/09/11(木) 05:17:31[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++どちらでも可
※スレ違いだったらゴメンなさい
0596デフォルトの名無しさん
2008/09/11(木) 05:36:160597デフォルトの名無しさん
2008/09/11(木) 12:59:590598y
2008/09/11(木) 14:51:28文字列を数値に変換して並び替えを行うプログラムを作っているんですけど
文字列を数値に変換をして並び替えを行った結果、
先頭の数字0がなくなった状態で並び替えがされていました。
先頭の数字0がなくならない状態で並び替えを行う方法を教えてください。
お願いします。
例)
先頭の数字0がなくならない並び替え
並び替え前 並び替え後
00159 0101
130 → 130
0101 00159
先頭数字0がなくなった並び替え
並び替え前 並び替え後
00159 101
130 → 130
0101 159
0599デフォルトの名無しさん
2008/09/11(木) 15:04:37文字列と数値の構造体にして数値でソートして文字列を表示
0600y
2008/09/11(木) 15:19:06するとはなんですか?
プログラムにするとどうなりますか?
教えてください。
0601デフォルトの名無しさん
2008/09/11(木) 15:25:520602デフォルトの名無しさん
2008/09/11(木) 15:30:30#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;
}
0603デフォルトの名無しさん
2008/09/11(木) 19:55:20う〜ん、直値は見なかったことにしよう
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7710.c
0604デフォルトの名無しさん
2008/09/12(金) 11:54:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7713.txt
0605604
2008/09/12(金) 12:02:29あと、data.txtの内容は整数限定で
10桁以上の数値に関しては無しの方向で
0606デフォルトの名無しさん
2008/09/12(金) 12:10:08ポインタの配列で出来るのに何でわざわざ構造体にしてんの?(numdataとか要らないし)
strotol(atoi)で出来るのに何でわざわざToNumDataとか作ってんの?
なんでそんなど素人の分際で人に教えようとしてんの?
0608デフォルトの名無しさん
2008/09/12(金) 12:14:520609604
2008/09/12(金) 12:16:230610606
2008/09/12(金) 12:27:54http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7714.txt
○2度読みする必要なし。
○構造体もイラネ。
○ToNumDataってatoiでいいじゃん。
○malloc+strcpyってstrdupでいいじゃん。
○比較関数はローカルなんだからstaticつけろよ。
○比較関数の引数宣言が変だったから直しといた。
○関数はトップダウン順に(main→cmp)書いた方が見やすい。プロトタイプ宣言を惜しむな。
○こういうツールはホントはstdinから読むべきなんだけど、data.txtから読みたいみたいだから尊重しといたぞw
0612デフォルトの名無しさん
2008/09/12(金) 15:17:18strdupはC言語標準の関数じゃないし。
いちいちC言語の規格を無視する理由になる程便利でもないし。
使わないほうがよくね?
あとreallocの結果がNULLの時にメモリリークしてるぜ。
printf(buffer[i])は文字列の中に%があると
破綻するからデータに%しかなくても使うのはよくないprintf("%s",...)にしなさい。
それに比較関数のポインタをキャストするのはよくない。
関数ポインタのキャストは動作するか保障されてない。
素直に比較関数の中でvoid*をキャストしろ。
比較関数で減算使ってるけど、
値がでかいとオーバーフローとかアンダーフローする可能性がある。
素直に比較しろ。
0613デフォルトの名無しさん
2008/09/12(金) 15:47:46[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] その他の制限:特にないです。
よろしくお願いします。
0614デフォルトの名無しさん
2008/09/12(金) 15:52:49こんなうるさい奴と仕事したくない・・・・
0615デフォルトの名無しさん
2008/09/12(金) 16:01:35ていうか仕事だともっと細かく突付くよ。
潰せる問題点はできる限り早めに潰したほうが望ましいし。
イチャモン付けるだけもなんなので自分も書いてみた。
もう面倒だし、これでよくね?
色々と無視してるけど。
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]);
}
よい子の皆はこのコードは悲惨なので真似しないでねー
0616デフォルトの名無しさん
2008/09/12(金) 18:22:02http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7717.txt
座標は整数で入力するようにした。
3番目の問題はよくわかんなかったので解いてません。
0617デフォルトの名無しさん
2008/09/12(金) 18:35:09[2] 問題文(含コード&リンク):
文字判定でスペースが入力されたら 「空白です」 と表示させたい
[3] 環境
[3.1] OS: Windows
[3.2] VC6.0
[3.3] 言語: C
[4] 期限: 無期限
0618デフォルトの名無しさん
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)
0619デフォルトの名無しさん
2008/09/12(金) 20:07:16http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7719.cpp
0620デフォルトの名無しさん
2008/09/12(金) 20:20:23void You::Attack()をint You::Attack()に(宣言もint Attack()に訂正)
int You::Attack()の最後にreturn a;
void Shishou::Attacked(int SAttacked)内のaを全てSAttackedに
0621デフォルトの名無しさん
2008/09/12(金) 20:36:02>>620
レスありがとです><
こんな簡単なことに時間を割いてもらって大変申し訳なかったです
でもおかげで助かりました!どうもありがとう!
0622デフォルトの名無しさん
2008/09/12(金) 20:42:17Cなんてばぐったら致命的な損害及ぼすFA、医療、航空などにつかわれてっから
あめーもんじゃーねーぞ。
0623デフォルトの名無しさん
2008/09/12(金) 20:55:03どこをみてそういったの?
0625デフォルトの名無しさん
2008/09/12(金) 21:34:02puts("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));
}
0626デフォルトの名無しさん
2008/09/12(金) 21:59:38msg.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];
で出来るのかな、と思いましたが余裕で無理でした。
どなたか方法を知っていればお願いします。
0627デフォルトの名無しさん
2008/09/12(金) 22:03:03というわけで後は誰か任せた。
0629デフォルトの名無しさん
2008/09/12(金) 22:12:51strtolでもいいけどNUL文字を自分で入れないと駄目ジャン。
むしろsscanfのほうが使いやすいんじゃない?
0630626
2008/09/12(金) 22:18:31どなたかちょろっと書いてくださると助かるんですが・・・。
0631デフォルトの名無しさん
2008/09/12(金) 22:33:59unsigned 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;
}
0632デフォルトの名無しさん
2008/09/12(金) 22:49:49sscanf(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]);
0634デフォルトの名無しさん
2008/09/12(金) 23:07:04>>631と>>632の何が違うか理解してから使ってね。。。
0635デフォルトの名無しさん
2008/09/14(日) 02:01:11#include <stdio.h>
int main( void )
{
char ch;
puts( "1文字だけ入力してください。" );
ch = getc();
switch( ch ){
case ' ':
puts( "空白です" );
default:
break;
}
return( 0 );
}
0636あおい
2008/09/14(日) 17:52:30"LF"を"CR+LF"に変換できるようなソースを教えてください。
ロジックとしては、
1文字ずつ読み込み、"LF"じゃなかったらそのまま出力し、"LF"だったら"CR+LF"にして出力する
のようなものが思いつくのですが、C言語は経験が無くて・・・。
また処理時間がシビアに要求されていて、なるべく処理時間が早いソースができればと思っています。
0637あおい
2008/09/14(日) 17:57:58外部サーバ(OSは不明)から改行コード"LF"のテキストファイルが
HULFT6を使用して送られてきます。
こちら側はWindows2003サーバで受け取り、そのテキストファイルを読み込んで
データ異常チェック・複数ファイルの結合といった処理を行います。
その際、改行コード"LF"では不都合かと思い、"CRLF"に一度変換してから処理に回そうと考えているのです。
C言語に詳しい方どうか助けてください。
0638あおい
2008/09/14(日) 18:04:12改めて書き直します。
【質問テンプレ】
[1] 授業単元: 改行コード変換
[2] 636&637参照
[3.2] VC 6.0
[3.3] 言語: C
[4] 期限: 2008年09月15日22:00まで
どうかお願いします。
0639デフォルトの名無しさん
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 使った方が少しだけ速いかもしれないが
簡明さでは劣る。
0640デフォルトの名無しさん
2008/09/14(日) 18:14:48俺ってばか。
0641あおい
2008/09/14(日) 18:27:38とても助かりました。
もう一つだけ教えていただいていいでしょうか?
改行コード"LF"と"CR"ってC言語上では何になるのでしょうか?
"CR"は"\r"?
ホントに初心者で申し訳ないのですが、
教えていただいたソースに簡単なコメントを添えていただけると助かります。
0642デフォルトの名無しさん
2008/09/14(日) 18:32:510643デフォルトの名無しさん
2008/09/14(日) 18:36:58ほとんど、ネットの転送時間に依存して書き換え速度は無視できる
0644デフォルトの名無しさん
2008/09/14(日) 18:40:00の方が早いんじゃないの?
0645あおい
2008/09/14(日) 18:43:52ファイルを送ってくる相手は別会社なので、あまり柔軟な要求は聞いてくれません。。。
最大20ファイルほどを1ファイルずつ連続で送ってきます。
1ファイルにはデータレコードのみで4レコード入っています。
受け取ったファイルを5分ごとにまとめて編集し、1ファイルに集約します。
そんなシステムを要求されているのですが・・・。
仕組みは考えられてもCに詳しくないので困っているんです。
0646デフォルトの名無しさん
2008/09/14(日) 18:44:11そのあと処理に0.5秒掛かれば合計で5.5秒。
もし32Kbyte届いたとして、それを書き換える時間は次のデータが届くまでには終わっているだろう。
0647デフォルトの名無しさん
2008/09/14(日) 18:45:400648デフォルトの名無しさん
2008/09/14(日) 18:50:24ローカルファイルを書き換えるという方法しかないね。
簡単な方法だと、
nkf.exe -Lw -c inputfile > outputfile
でいいのでは?
0649デフォルトの名無しさん
2008/09/14(日) 19:00:34間にあわなければ、C言語を使ったら
0650デフォルトの名無しさん
2008/09/14(日) 19:03:000651デフォルトの名無しさん
2008/09/14(日) 19:10:19>最も速く書き換えられる
なにを?
0652デフォルトの名無しさん
2008/09/14(日) 19:11:53スレッドを用意して、5M+αのバッファを2〜4個持つ。
空いているところへデータと分割位置を渡して処理をさせる。
処理後に出力ルーチンへ渡す。
出力ルーチンは0番から順に書き込み、バッファとスレッドを解放する。
0653デフォルトの名無しさん
2008/09/14(日) 19:13:07500Mのテキストファイルの改行コードを最も高速で変換するプログラムです。
0654デフォルトの名無しさん
2008/09/14(日) 19:22:420655デフォルトの名無しさん
2008/09/14(日) 19:24:430656デフォルトの名無しさん
2008/09/14(日) 19:25:22基本的にLFは'\n'でCRが'\r'だと思って問題ない。
>>653
そういう次元の話だと、もはやアルゴリズムよりいかにCPUを使い倒すかって問題になる。
0657デフォルトの名無しさん
2008/09/14(日) 19:27:420658あおい
2008/09/14(日) 20:12:02改行コード'LF'のテキストを'CR+LF'に変換する、
一番シンプルで処理速度が期待できるCのソースを教えてください。
よろしくお願いします。
0659デフォルトの名無しさん
2008/09/14(日) 20:15:27というので良いと思う。スレッド使っても速くなるかは微妙。
0660デフォルトの名無しさん
2008/09/14(日) 20:39:27変換する対象はファイルでいいの?
0661デフォルトの名無しさん
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;
}
0662デフォルトの名無しさん
2008/09/14(日) 20:45:39一文字ずつ読んだら鈍いし、それは間違えてないか?
0663デフォルトの名無しさん
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;
}
0664661
2008/09/14(日) 20:51:30一文字づつ読んだら遅い?オーケー、おまえが速いと思うプログラムを書いてみて、
オレのと速度比較してみ。そのうえで、おまえのプログラムのほうが速かったら、
そのとおりでしたと認めるよ。
あと、間違えてると思うんならその箇所を指摘してくれ。単に、「間違えてないか?」
と言われても「どこが?」と聞き返すしかないぞ。
0665デフォルトの名無しさん
2008/09/14(日) 20:59:290666デフォルトの名無しさん
2008/09/14(日) 21:07:400667デフォルトの名無しさん
2008/09/14(日) 21:11:19確認してみたら、setvbufでバッファを大きくしても、ぜんぜん速くならなかったような記憶がある。
0668662
2008/09/14(日) 21:16:16>>661でgetchar()っていうのは、ファイルも開いて無くて使えますか?
>>663でstdinて (ここ)にくるやつですか? ***.exe (ここ)
0669デフォルトの名無しさん
2008/09/14(日) 21:19:510670662
2008/09/14(日) 21:24:17#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);}
0671662
2008/09/14(日) 21:28:28プログラムの工夫のポイントは、一度も\rが出てこなかったら、コピーは作らず
元のバッファをそのまま出力するところと、|r以外の連続する文字列はmemcpyで一気に移すところです。
しかし、ほとんど手間が掛かっているところはHDDアクセスのようです。
バッファを増やしても、アクセスランプが点滅しっぱなしなので。
0672デフォルトの名無しさん
2008/09/14(日) 21:30:210673デフォルトの名無しさん
2008/09/14(日) 21:30:39話の本筋とはずれるんだが、
動的にメモリを2Mも確保するのが怖いのは俺だけ?
別に怖い理由があるとかではないんだがなんとなく漠然と…。
0674デフォルトの名無しさん
2008/09/14(日) 21:34:02スタックに確保するほうが怖いだろ
0675662
2008/09/14(日) 21:34:050676デフォルトの名無しさん
2008/09/14(日) 21:35:340677デフォルトの名無しさん
2008/09/14(日) 21:38:27どこで動的に確保してる?
0678673
2008/09/14(日) 21:40:20いつもなんとなく怖いからせいぜい2kくらいまでしか確保してなかった…
今度からはもっと大胆にとってみる
0679662
2008/09/14(日) 21:44:082Mだと約60秒、8Mだと約70秒掛かりました。
ただし8MはコンパイラをBCCからVC++に変更しました。
VC++2008はなかなか性能が良いと経験的に判っているのでバッファ増やしたら速くなると思ったのですが。
0680デフォルトの名無しさん
2008/09/14(日) 21:50:110681662
2008/09/14(日) 21:52:42でもFire File Copy で単純にコピーしてみると29秒で済みます。
処理時間のほとんどがディスクアクセスに費やされるなら、もっと速くできるはずです。
0682あおい
2008/09/14(日) 21:53:47変換する対象はファイルです。
拡張子は無しですが、メモ帳で開けるのでバイナリではなくテキストです。
ただ、1レコードに複数の項目があって、カンマ区切りになっています。
それが1ファイル内に最大4レコードあります。
速くて何よりシンプルなソースだと助かります。
初心者なものでホントにすいません。。。
0683あおい
2008/09/14(日) 21:55:520684デフォルトの名無しさん
2008/09/14(日) 21:58:27実メモリを8Mも積んでないからじゃね? 遅くなるの。
0685デフォルトの名無しさん
2008/09/14(日) 21:58:290686デフォルトの名無しさん
2008/09/14(日) 21:59:33情報小出しキター!!!!
0687デフォルトの名無しさん
2008/09/14(日) 22:00:26L2/L3キャッシュの容量超えてない?<8M
0688デフォルトの名無しさん
2008/09/14(日) 22:00:59Fire File Copy では15M確保しましたよ。そしたら29秒です。
読み込みバッファ8Mとコピー先バッファ約10Mで併せて合計18Mくらいの確保ですが
Fire File Copyの確保量とほぼ同じです。
0689デフォルトの名無しさん
2008/09/14(日) 22:04:24偉い人にはそれが
0690デフォルトの名無しさん
2008/09/14(日) 22:05:04>>662のデータで>>661の処理時間どれくらいになった?
参考までに聞かせてくれ。
1文字ずつ読んで、あそこまで強気になれる時間かどうか知りたい。
0691デフォルトの名無しさん
2008/09/14(日) 22:05:460692684
2008/09/14(日) 22:06:28いまどきメモリを8M積んでないPCとかあるわけないか。
0693デフォルトの名無しさん
2008/09/14(日) 22:15:29あとディスクアクセス以外の時間を計ってみたら3秒ほどしか使ってませんでした。
ほとんど入出力のアクセスの問題です。APIで直接操作したらいいかもしれません。
0694デフォルトの名無しさん
2008/09/14(日) 22:23:54新聞のログですがWindowsなのでSjisで改行は\r\nです。
0695デフォルトの名無しさん
2008/09/14(日) 23:05:06試してみた
512MB の乱数で生成したテキストデータ ( A-Za-z0-9!#$%&'()=^;:][/.,<>?_}*{\n を等確率 )
>>661 が 50sec or 36sec
>>663 が 41sec or 15sec
>>663 (バッファを2MBに変更) が 36sec or 12sec
>>670 が 36sec or 12sec
それぞれ一回目の実行と二回目以降の所要時間が大幅に違う
二回目以降は明らかにキャッシュヒットしてる速さ
0696デフォルトの名無しさん
2008/09/14(日) 23:13:53memcpyで一気に写す>>670は一文字ずつよりかなりはやいはずです。
0697デフォルトの名無しさん
2008/09/14(日) 23:32:59コンパイラ何使った?
もし、VC++ 2005以上なら_CRT_DISABLE_PERFCRIT_LOCKS定義した結果も計ってよ。
0698デフォルトの名無しさん
2008/09/14(日) 23:34:09Windowsで661のコードはあまり意味ない気がする。
0699デフォルトの名無しさん
2008/09/14(日) 23:35:46CなどはOSのキャッシュも使い、内蔵キャッシュも使っているだろうから
ディスクアクセスが頻繁だと時間が掛かると思う。
WinAPIでOSのキャッシュ無効に出来るからそれで計ったらいい速度になると思う。
0700695
2008/09/14(日) 23:38:21gcc -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;
}
0701697
2008/09/15(月) 00:41:31tx やってみた。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だった。
0702デフォルトの名無しさん
2008/09/15(月) 00:54:50いいぞ、もっとやれ。
0703デフォルトの名無しさん
2008/09/15(月) 00:59:350704デフォルトの名無しさん
2008/09/15(月) 01:07:29void 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);
}
0705デフォルトの名無しさん
2008/09/15(月) 01:11:31その小出しによって攪乱されるあなたの方がちょっとどうかしてるのでは
0706デフォルトの名無しさん
2008/09/15(月) 01:32:57仕様不明確はかなりめんどくさい
0707デフォルトの名無しさん
2008/09/15(月) 03:18:420708デフォルトの名無しさん
2008/09/15(月) 04:20:290709デフォルトの名無しさん
2008/09/15(月) 14:05:37[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まで
ビットフィールドへの変換もいまいち分かりません。
よろしくお願い致します。
0710デフォルトの名無しさん
2008/09/15(月) 14:39:06なんかサーバ落ちてる
0711デフォルトの名無しさん
2008/09/15(月) 16:26:34[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…となるようです。
よろしくお願いします。
0712デフォルトの名無しさん
2008/09/15(月) 18:23:28double 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;
}
0713デフォルトの名無しさん
2008/09/15(月) 20:05:58[2] 西暦と月を入力し○年○月○日を出せるようにする
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual studio
[3.3] 言語: C++
[4] 期限: 9月16日 11:30
[5] その他の制限:とくにありません
よろしくお願いします
0714デフォルトの名無しさん
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;
}
0715デフォルトの名無しさん
2008/09/15(月) 22:38:37[2] 西暦と月を入力しそのつきのカレンダーを表示させる
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual studio
[3.3] 言語: C++
[4] 期限: 9月16日 11:30
[5] その他の制限:とくにありません
すいません間違えてました
よろしくお願いします
0716デフォルトの名無しさん
2008/09/15(月) 23:02:050717デフォルトの名無しさん
2008/09/15(月) 23:25:37#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;
}
0718デフォルトの名無しさん
2008/09/16(火) 00:41:23ありがとうございます
助かりました
0719デフォルトの名無しさん
2008/09/16(火) 02:39:45#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;
}
エラーチェックとか追加!
0720デフォルトの名無しさん
2008/09/16(火) 15:17:32宜しくお願いします。
0721デフォルトの名無しさん
2008/09/16(火) 15:36:03int 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);
}
0722デフォルトの名無しさん
2008/09/16(火) 16:02:07[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だけで作る。それと対人
0723デフォルトの名無しさん
2008/09/16(火) 16:05:020724デフォルトの名無しさん
2008/09/16(火) 16:17:52問題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> 必要
0725デフォルトの名無しさん
2008/09/16(火) 16:30:12[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] その他の制限: 制限なし
0726デフォルトの名無しさん
2008/09/16(火) 17:26:34#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;
}
0727デフォルトの名無しさん
2008/09/16(火) 20:01:07[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の長方形の数が変わっても対応できるようにお願いします
分かりにくい文章ですみません・・・よろしくお願いします
0728デフォルトの名無しさん
2008/09/16(火) 20:06:37正しいのは
a{1} = [100, 200; 200, -300; 100, -300; 200, 200]';
a{2} = [1, 2; 2, 2; 1, 1; 2, 1]';
です
0729デフォルトの名無しさん
2008/09/16(火) 20:09:55[2] 問題文:文字列をchar型のポインタとして受け取り、そのポインタから10文字か、
NULL文字が現れるまで画面に1文字ずつ表示する関数を作成しなさい。
画面に1文字表示するたびに改行を入れなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: 指定なし
[3.3] 言語: C
[4] 期限:9月17日午前6時
[5] その他の制限: 制限なし
お願いします。
0730デフォルトの名無しさん
2008/09/16(火) 20:38:29int i;
for(i=0;;i++){
if(str[i]=='\0' || i<10)break;
printf("%c\n",str[i]);
}
}
コンパイルしてねーから凡ミスとか知らね。
0731727
2008/09/16(火) 23:02:05スレ汚してごめんなさい
0732デフォルトの名無しさん
2008/09/16(火) 23:35:18[2] 100文字以内の文字列をキー入力し大文字/小文字を反転して表示せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual studio
[3.3] 言語: C++
[4] 期限: 9月23日
[5] その他の制限:配列[101]を使用。+32 -32で文字の変換を行う
全くのシロウトですいません;
よろしくお願いします
0733デフォルトの名無しさん
2008/09/16(火) 23:46:07プログラムを始めようと思い、いろいろ調べましたが、
Borland C++ Compiler というソフトがいいらしいことはわかりました。
が、PCにすでにMicrosoft visual c++ 2005 Redistri butableや、
Microsoft Visual Studioといったものが入っているのですが、
これではできないのでしょうか?
スレ汚してすみません。。。
0734デフォルトの名無しさん
2008/09/16(火) 23:48:47using 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;
}
0735デフォルトの名無しさん
2008/09/16(火) 23:50:29使えるはずだけど、Visual Studioじゃいやなの?
http://park6.wakwak.com/~wmasa/prog/bcc/index.htm
0736デフォルトの名無しさん
2008/09/17(水) 00:11:34cin >> str;
ってスペースとれるっけ?
0737デフォルトの名無しさん
2008/09/17(水) 00:24:55using 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;
}
0738デフォルトの名無しさん
2008/09/17(水) 00:55:55いいんですけど、どこから起動するのか分かりません。プログラムファイル内の
ヴィジュアルスタジオのファイルを覘いてもASP.TLBというファイルが一つあるだけです。
Borland C++は会員登録が面倒なのと、使えればヴィジュアルスタジオほうを使いたいです。
0739デフォルトの名無しさん
2008/09/17(水) 01:15:38ttp://www.forest.impress.co.jp/article/2007/12/18/vs2008express.html
[2] 問題文(含コード&リンク):http://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]どうかお願いいたします。
0741デフォルトの名無しさん
2008/09/17(水) 08:43:10スタートから起動できるよ
0742デフォルトの名無しさん
2008/09/17(水) 09:05:52[2] 画像の平滑化を、移動平均フィルタとメディアンフィルタを用いて行うプログラム(それぞれ一つづつ)の作成
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:NetBeans
[3.3] 言語: C
[4] 期限: 9月19日 12:30
[5] その他の制限:とくにありません
プログラミング苦手で全く分かりません…よろしくお願いしますm(__)m
0743デフォルトの名無しさん
2008/09/17(水) 10:28:03>>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文字は最後の最後で独立して指定したいのですが
どこでどう指定したらいいのかよくわかりません
ほかにも間違いがあったら指摘お願いしマス。。
スレ汚しですいません;;
0744デフォルトの名無しさん
2008/09/17(水) 11:51:07CとC++は書き方が変わるから、正確に申告汁。
0745デフォルトの名無しさん
2008/09/17(水) 12:17:18scanf("%s",&str);
は間違い
0746デフォルトの名無しさん
2008/09/17(水) 12:41:26配列へのポインタは先頭の要素を指すだろうし
0747デフォルトの名無しさん
2008/09/17(水) 14:13:34[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;
}
}
0748デフォルトの名無しさん
2008/09/17(水) 14:30:14scanf("%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;
}
0749デフォルトの名無しさん
2008/09/17(水) 14:43:425個発生させる意味がよくわからないんだけど・・・
#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;
}
0750デフォルトの名無しさん
2008/09/17(水) 15:05:121:6と表示されたら、1が6回出たということですが、
この6回出たというのは、全体の何パーセントということになるのでしょうか。
0751デフォルトの名無しさん
2008/09/17(水) 15:14:09↓
printf("%5d:%5d times, %f %%\n",i+1,count[i],(double)100*count[i]/(5*N));
0752デフォルトの名無しさん
2008/09/17(水) 15:58:34助かりました。
もし、よろしければ100*count[i]/(5*N));という式を
どういう考えで導いたのか教えていただけないでしょうか。
数学的質問で申し訳ありません。(100を掛けるのは%に直すためなのは分かります)
0753デフォルトの名無しさん
2008/09/17(水) 16:05:410754デフォルトの名無しさん
2008/09/17(水) 16:55:32i+1はcount[i]回現れる。
i+1が現れる統計的な確率はcount[i]/5N。
パーセントにすると(count[i]/5N)x100
(double)は計算式に表れる数がすべて整数なので、分子をdouble型にキャストしてあげないと小数点以下が切り捨てられてしまう。
0755デフォルトの名無しさん
2008/09/17(水) 17:08:23失礼しました;;
>>745
>>748
ありがとうございます
助かりました
また試験前に足を運ばさせていただくかもしれませんので
そのときにまたよろしくお願いします。
0756デフォルトの名無しさん
2008/09/17(水) 23:05:56ありがとうございます。
納得できました。
0757デフォルトの名無しさん
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);
}
これで、コンパイルしても成功しません。
なぜでしょうか??
0758デフォルトの名無しさん
2008/09/19(金) 17:03:17エラーメッセージ読めよ
0759757
2008/09/19(金) 17:20:00エラーメッセージを見てもなぜエラーが発生するかわかりませんでした。
7:宣言が正しく終了していない(関数 main )
9: 未定義のシンボル h(関数 main )
10: 未定義のシンボル f1(関数 main )
11: 未定義のシンボル f2(関数 main )
17: 未定義のシンボル ans(関数 main )
0760デフォルトの名無しさん
2008/09/19(金) 17:20:470761デフォルトの名無しさん
2008/09/19(金) 17:34:29型名 変数名;
=はいりませんね
0763デフォルトの名無しさん
2008/09/19(金) 18:24:43と言いたいのが最近多い気がするけど昔からか?
0764デフォルトの名無しさん
2008/09/19(金) 18:27:550765デフォルトの名無しさん
2008/09/19(金) 18:28:130766デフォルトの名無しさん
2008/09/19(金) 18:43:55むしろ敷居は下がっただろ
0767デフォルトの名無しさん
2008/09/19(金) 19:05:35スレ違いだってことだ
宿題丸投げじゃねーじゃん
0768デフォルトの名無しさん
2008/09/19(金) 19:13:36C++、コンパイラはgcc、動かすのはlinux上です。
データ構造の動的確保についてなのですが
すでに自分で作った mvector というデータ構造があります。
mvectorを宣言するときは
mvector mvec(DIM); //DIMはベクトルの次元を指すint型
という感じです。mvectorは事実上ただの配列やvectorと似ていますが少し機能追加(算術計算など)しています。
ここでmvectorの配列(二次元配列のような感じ)を動的確保したいのですがどうやればいいかよくわかりません。
最初は適当に
head = new (mvector(DIM))[data]; //headは先頭ポインタを受け取る子、dataは配列の数
としたのですが普通にエラーです。 mvector(DIM)[data]もエラーです。
引数をもつ子の配列というのはどう確保すればよいのでしょうか。よろしくお願いいたします。
0769デフォルトの名無しさん
2008/09/19(金) 19:15:350770デフォルトの名無しさん
2008/09/19(金) 19:44:030771デフォルトの名無しさん
2008/09/19(金) 22:51:01各要素の引数付きコンストラクタを呼ぶことは出来ない。
デフォルトコンストラクタが呼ばれる仕様。
0772デフォルトの名無しさん
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;
}
0773デフォルトの名無しさん
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;
0774デフォルトの名無しさん
2008/09/19(金) 23:28:48別途メンバ関数で割り当てできるようにするのが
一番スマートかもしれない。
mvector *head = new mvector[data];
for(int i=0; i<data; i++) head[i].alloc(DIM);
...
delete[] head;
0775デフォルトの名無しさん
2008/09/20(土) 12:14:38ありがとうございます。にわかに理解できない部分もありますが勉強になります。ちょっと要勉強というか要解読です。
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;}
}
長々と申し訳ないですが、もう少しだけお願いいたします。
0776デフォルトの名無しさん
2008/09/20(土) 12:20:25んでコンストラクタではなく>>774のように初期値を後から与える
vectorならresize()が使えるから後からサイズを変えてもいいし
0777デフォルトの名無しさん
2008/09/20(土) 23:51:58[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7728.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: ボーランド
[3.3] 言語: C
[4] 期限: 明日中
どうかお願い致します。
0778775
2008/09/21(日) 00:12:02本当にありがとうございます。助かりました。
また困ったことが会ったらよろしくお願いいたします。
0779デフォルトの名無しさん
2008/09/21(日) 12:20:54#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;
}
0780デフォルトの名無しさん
2008/09/21(日) 12:22:45#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;
}
0781デフォルトの名無しさん
2008/09/21(日) 12:34:37#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;
}
0782デフォルトの名無しさん
2008/09/21(日) 14:47:15ありがとうございます
(1)(2)(3)すべて実行すると、出力に「Usage: 自分のPCの名前 filename_in filename_out」と表示されましたが
書き込み用のファイルを確認した所、値が書き込まれておらず「・・・・」と点が並んでいるだけです
何故でしょうか・・・?
0783デフォルトの名無しさん
2008/09/21(日) 17:14:29バイナリエディタで開け
0784デフォルトの名無しさん
2008/09/21(日) 21:13:4301 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
となっていてきちんと正常でした。お手数かけましてすみません
ありがとうございました!
0785デフォルトの名無しさん
2008/09/22(月) 10:24:120786デフォルトの名無しさん
2008/09/22(月) 17:57:52[2] 問題文:auto関数とstatic関数の違いが分かるプログラムを作成しなさい、ただしfor文を使用する
[3] 環境
[3.1] OS:Win
[3.2] 任意
[3.3] 言語: C
[4] 期限: 2008年9月25日13:00まで
できればプログラムは短くコンパイルして結果が長くならないようなものでお願いします
0787デフォルトの名無しさん
2008/09/22(月) 18:05:580788786
2008/09/22(月) 18:40:59関数じゃなくて変数でした^^;
0789デフォルトの名無しさん
2008/09/22(月) 18:48:57#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;
}
こんなんでいいか?
0790デフォルトの名無しさん
2008/09/22(月) 18:50:12#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;
}
0791デフォルトの名無しさん
2008/09/22(月) 19:19:29あり
やっぱりC勉強するんだったら家に環境整えたほうがいいのかな
0792デフォルトの名無しさん
2008/09/22(月) 19:45:420793デフォルトの名無しさん
2008/09/22(月) 19:53:22sshとかで学校につなげてプログラミングするとか手段はあるぞ。
0794デフォルトの名無しさん
2008/09/23(火) 00:01:13[2] 問題文(含コード&リンク): http://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日
よろしくお願いします
0795デフォルトの名無しさん
2008/09/23(火) 01:25:27[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した後からの処理でいいので教えてもらえると幸いです。
0796デフォルトの名無しさん
2008/09/23(火) 01:48:26[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、四則演算+-*/のみ習いました。シンプルな回答がベストです。
宜しくお願い致します。
0797デフォルトの名無しさん
2008/09/23(火) 03:15:03#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;
}
0798デフォルトの名無しさん
2008/09/23(火) 03:53:24http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7732.txt
エラー処理省きまくった。
0799798
2008/09/23(火) 03:57:54http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7733.txt
>>798は無視で。
0800798
2008/09/23(火) 04:02:30もうぐだぐた。
>>799を訂正。
stack[count++] = line;
→
if ( ( count == 0 ) || ( stack[count - 1] != line ) ) {
stack[count++] = line;
}
0801デフォルトの名無しさん
2008/09/23(火) 08:04:34[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までにメール
まったくわかりません。よろしくです
0802デフォルトの名無しさん
2008/09/23(火) 09:40:04#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;
}
0803デフォルトの名無しさん
2008/09/23(火) 15:20:03[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、+-*/%のみで簡潔に作成
0804デフォルトの名無しさん
2008/09/23(火) 16:10:264はIV、IIIIどっち(減算則も考慮するのか)
0805デフォルトの名無しさん
2008/09/23(火) 16:20:17#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;
}
0806デフォルトの名無しさん
2008/09/23(火) 18:47:34>>804 早速の対応有難うこざいます。
void funcなどは習っていないため、出来ればvoid main()で始まる形に
していただけると有り難いのですが…。よろしくお願いします。
0807デフォルトの名無しさん
2008/09/23(火) 18:58:27>if、printf、scanf、+-*/%のみで簡潔に作成
forやwhileもだめなんだよね
0808デフォルトの名無しさん
2008/09/23(火) 19:33:32とりあえず関数にまとめてた部分を展開しておいたよ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7734.txt
0809デフォルトの名無しさん
2008/09/23(火) 19:34:580810デフォルトの名無しさん
2008/09/23(火) 22:53:42[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・プロトタイプ関数まで既習
0811デフォルトの名無しさん
2008/09/23(火) 22:55:560812デフォルトの名無しさん
2008/09/23(火) 22:56:38そのデータの取り込み方は自由なの?
ソースに埋め込んじゃっておk?
標準入力にすべき?
0813デフォルトの名無しさん
2008/09/23(火) 23:10:020814デフォルトの名無しさん
2008/09/23(火) 23:12:00標準入力でお願いします
0815デフォルトの名無しさん
2008/09/23(火) 23:27:520816795
2008/09/24(水) 01:52:00考えてもらいありがとうございます。
しかし、そのプログラムだと
#include <stdio.h>
int main(void)
{
int a = 0;
printf("aは%dです",a);
/*コメント1
/*コメント2*/
/*コメント3
return 0;
}
/*プログラム終わり*/
となったときに「/*コメント1」の行も検出してしまう
と思ったのですが、平気でしょうか?
わざわざ考えてもらったのに
文句が多くてすみません。
0817デフォルトの名無しさん
2008/09/24(水) 02:05:03[2] CSVファイルを構造体へ全て格納後、別ファイルへ出力せよ。
(CSVファイルフォーマットは任意とし、行数は可変とする)
[3] WIN/gcc/C
[4] 2008/09/26
CSV読み込み、出力は出来たのですが……
CSVの中身を一度全て格納しなければならず、そこで困っております。
構造体の配列を定義して、足りなくなったらreallocして行けばいいのしょうか?
0818デフォルトの名無しさん
2008/09/24(水) 02:16:40読み込みができてるならそのサイズでmallocすればいいじゃないか
0819デフォルトの名無しさん
2008/09/24(水) 02:28:36なんと言いますか、C++などのArrayみたいなことをしたいのです。
構造体の配列にCSVファイルを全部保存したいのですが、
ファイル行数が可変のために、行数に応じて構造体の配列数を増やして行く方法しかないのかなと疑問に思っております。
ファイルが大きいとreallocするときに時間がかかりそうなので……
0820デフォルトの名無しさん
2008/09/24(水) 02:35:32Cで可変長配列的なことしたいなら、malloc/reallocするしかないよ。
今回の件なら、最初に一度ファイル全体を空読みして、行数だけ数えてから行数分mallocして、
2度目のファイル読みで格納ってすれば、reallocの無駄は省ける。
けど、代わりにファイル2度読みのコストがかかるから、どちらのコストをとるかだね。
0821デフォルトの名無しさん
2008/09/24(水) 02:41:490822デフォルトの名無しさん
2008/09/24(水) 02:42:450823デフォルトの名無しさん
2008/09/24(水) 02:47:520824デフォルトの名無しさん
2008/09/24(水) 02:54:00やはり可変だと、メモリ確保し続けるか、必要分を確認してとかではないと
辛いみたいですね、ありがとうございます。
>>821
無駄なメモリ領域を出来るだけ省きたいのです
>>822
特にはないですが、ポインタの配列にするほうがいいでしょうか?
>>823
Cにリストってありましたっけ?
0825デフォルトの名無しさん
2008/09/24(水) 02:55:32たらなくなったら10Kずつ増やしていく
0826デフォルトの名無しさん
2008/09/24(水) 03:00:4910Kに満たないと勿体なくないですか?
気分の問題だと思うのですが、ピッタリにしたいんです。
>>823
リストを調べました、リスト構造のことで間違いないでしょうか?
難しそうですが、これならやりたいことが出来そうです。
ありがとうございました。
>レスしてくださった方々へ
malloc/reallocなら簡単そうですが、やはりコスト的な問題があるようなので、
難しそうですがリスト構造を勉強して、それで対応してみます。
深夜にもかかわらず、助けていただいてありがとうございました。
0827デフォルトの名無しさん
2008/09/24(水) 03:02:49reallocをそんなに嫌わないであげてください><
0828デフォルトの名無しさん
2008/09/24(水) 03:04:37そしたら、あらかじめファイルサイズを求めておいて、バイナリでそのまま読み込めよ
ぴったりだぞ
0829デフォルトの名無しさん
2008/09/24(水) 03:05:42これは実装依存だが、malloc(13);とかやったとしても実際の確保領域は16バイトだったりするよ。
嫌なら要素一回ずつreallocするしかないけど、パフォーマンスが落ちるし、無駄が出るよ。
0830デフォルトの名無しさん
2008/09/24(水) 03:07:09可変にこだわる意味がわからないのだが
ところでC++のArrayってなんだ?
std::vectorのことならかなり豪快にメモリ確保してるぞ
0831デフォルトの名無しさん
2008/09/24(水) 03:13:060832デフォルトの名無しさん
2008/09/24(水) 03:17:55行数増えた場合大変なことになりそうなのです
>>828
ファイルそのままだと使いづらいじゃないですか……
って確かに、そう考えると10Kつづ確保して行ってもいい気がしてきました。
>>829
mallocは指定した分だけ確保だと思ってました。
実際は(多少?)誤差があるんですね、勉強になりました。
>>830
それのことです。
なるほど……便利だと思ってたのですが、裏では結構あくどいことしてるんですね。
0833デフォルトの名無しさん
2008/09/24(水) 10:42:40あくどいっつーかきっちり確保するよりおおむね効率がいいからだな
誤解するなよ
0834デフォルトの名無しさん
2008/09/24(水) 14:07:01[2] 問題文(含コード&リンク):太陽系プログラム
planet.cのプログラムを以下のように発展させよ。
�@オブジェクトの色を変更する
�Aオブジェクトをソリッドにする
�B他のオブジェクト形状を使用する。(例:惑星を立方体にする)
�C隠面処理を行う。
�D惑星に(その惑星の周囲をまわる)衛星をつける。
�E2個のパーツを組み合わせたオブジェクトを作る。(例:土星)
�F色、光沢などの表面属性を時間経過で変化するようにする。(例:時間とともに色が自動的に変化する)
�G複数の軌道面がある。
///planet.c///
http://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日
丸投げです。よろしくお願いいたします。
0835デフォルトの名無しさん
2008/09/24(水) 16:19:494までやった
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7736.c
0836デフォルトの名無しさん
2008/09/24(水) 17:14:47誤差というべきではない。
0837834
2008/09/24(水) 17:28:33提出の条件が�Gまで完成したプログラムですので、
できれば�Gまで作って頂けませんでしょうか。
せっかく作って貰ったのに、すいません・・・
0838デフォルトの名無しさん
2008/09/24(水) 17:38:09へーおじさんびっくりだわ
0839デフォルトの名無しさん
2008/09/24(水) 17:59:170841798
2008/09/24(水) 22:42:13そういうのを検出するプログラムじゃないの?
/*コメント1の行の検出はNGで
/*コメント3の行の検出のみやれってこと?
その場合、検出しなきゃいけない行の基準がわからないんだけど?
>>795で示している例でも/*コメントから始まって、プログラム終わり*/で
コメントはちゃんと閉じているよね?
0842デフォルトの名無しさん
2008/09/24(水) 23:19:18[2] 問題文(含コード&リンク):
「t[5]に5つの整数が格納されている。これを昇順にソートするプログラムを示せ。
ソートのアルゴリズムは何でもよい事とする。」
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:CPad for Borland C++ Compiler
[3.3] 言語:C++
[4] 期限:9/25まで
これをバブルソートで作る場合のプログラムをお願いしますm(_ _)m
0843デフォルトの名無しさん
2008/09/24(水) 23:30:07#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;
}
こんなんでいかが?
0844デフォルトの名無しさん
2008/09/24(水) 23:54:04ありがとうございます><
0845795
2008/09/25(木) 23:03:51ごめんなさい。
説明不足だったかもしれません。
一応、
>>795の最初のほうに書いてあるように
「コメントが関数内で閉じられているかチェックする」
ようにしないといけないんです。
それがどうしても難しくてわからないんです。
本当に質問する立場でえらそうにしてごめんなさい。
どうやったら、関数内でコメントが閉じられているか判断できるでしょうか?
0846デフォルトの名無しさん
2008/09/26(金) 09:47:53printf("/*\n");
とか出てきたら破綻する。
0847デフォルトの名無しさん
2008/09/26(金) 15:06:54[2] 問題文(含コード&リンク):ポーカーのプログラム製作
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
[3.3] 言語:C++
[4] 期限:特になし
[5] その他の制限:C++であること
ない脳みそで考えたのですが、JOKERの効果と役の設定がわかりません。
今の所製作してあるプログラムの駄目出しもお願いします。
0848デフォルトの名無しさん
2008/09/26(金) 15:11:00srand((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;
0849デフォルトの名無しさん
2008/09/26(金) 15:11:52if(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));}
0850デフォルトの名無しさん
2008/09/26(金) 15:27:420852デフォルトの名無しさん
2008/09/26(金) 15:50:51これはひどい
0853デフォルトの名無しさん
2008/09/26(金) 16:53:37[2] 問題文(含コード&リンク):
数値が文字列として開業で区切られたデータファイル(例:音楽をA/D変換により取り込んだデータ)
の処理を考える。データファイルがデータのみである場合に、その
データファイルに含まれるデータ総数を数えるプログラムを作成しなさい。
[3] 環境
[3.1] OS:fedora
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:9月末
よろしくお願いします
0854デフォルトの名無しさん
2008/09/26(金) 17:01:31#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;
}
0855デフォルトの名無しさん
2008/09/26(金) 17:06:40ありがとうございます!
0856853
2008/09/26(金) 17:29:40[1] 授業単元:文字列の操作
[2] 問題文(含コード&リンク):
各人の氏名を、性と名にわけてキーボードからの入力で2つの変数に格納し
2つの文字列を連結することで、性と名の区切りに1つの空白を入れて
表示するプログラムを作成しなさい。
[3] 環境
[3.1] OS:fedora
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:9月末
0857デフォルトの名無しさん
2008/09/26(金) 17:37:25#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;
}
0858853
2008/09/26(金) 17:42:29ありがとうございます!助かりました!
0859795
2008/09/27(土) 02:32:05誰か
>>795
のソースを作ってくれないでしょうか。
ここ数日、考えても本当にわからなくて。
0860デフォルトの名無しさん
2008/09/27(土) 03:17:27どういうものを作ればいいか分からない
もう少し分かりやすく説明してくれないかな
0861デフォルトの名無しさん
2008/09/27(土) 03:25:21もうちょいパターンを洗い出して整理してはどうか。まずそこが出来てないように思う。
/* OK パターン */
/*
/* OK パターン */
hoge("/* OKパターン */");
int main(void)
{
/* NG パターン
return 0;
}
/*
こんなもん??
0862デフォルトの名無しさん
2008/09/27(土) 04:02:28普通コンパイラなんかだと最初にコメントを除去するからな。
コメントそのものとコードとの位置関係をチェックするのか…。
0863デフォルトの名無しさん
2008/09/27(土) 04:16:05宿題レベルの問題じゃないと思うけどね。
>>859
コメントの中に"}"があれば関数が閉じてない可能性は高くなるけれど
以下のプログラムを入力した場合どんな出力になってほしい?
void main(void)
/* {が関数の始まり */
{
/* }まで関数の処理を記述する (}を含むけれど正しいコメント) */
/* 関数の返り値 (コメント閉じ忘れで本来検出したい部分)
return 0;
}
/* プログラムの終了 */
0864デフォルトの名無しさん
2008/09/27(土) 04:31:28関数と構造体と配列の初期化と単なるブロックの { } を区別するのはそれこそパーサーになってしまう。
とりあえずは全部ひっくるめて { } とコメントだけに注目して作ったほうがいいと思う。
0865デフォルトの名無しさん
2008/09/27(土) 04:39:48C言語で関数をブロックでくくる事ってできたっけ?
0866デフォルトの名無しさん
2008/09/27(土) 12:09:45配列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);
}
?の部分がわかりません。
お願いします。
0867デフォルトの名無しさん
2008/09/27(土) 12:20:070868デフォルトの名無しさん
2008/09/27(土) 12:22:37ありがとうございました。
0869デフォルトの名無しさん
2008/09/27(土) 12:37:030870デフォルトの名無しさん
2008/09/27(土) 14:10:17グローバルな領域に何も無い空文(;だけ)があっても
エラーにならないよ。
int main()
{
・・・
}; /* 関数の終わりと空文と解釈 */
0871デフォルトの名無しさん
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] その他の制限:特に無し
0872795
2008/09/27(土) 19:14:40そうですね。
>>861さんのいうように
/* OK パターン */
int main(void)
{
/*
/* OK パターン */
hoge("/* OKパターン */");
}
int main(void)
{
/* NG パターン
return 0;
}
/*
int main(void)
{
/* NG パターン
return 0;
}
*/
の5パターンで考えています。
本当に難しすぎますよね。
課題出した先生も難易度高すぎだと思いました。
0873デフォルトの名無しさん
2008/09/27(土) 19:31:26つ {で+1 }で-1
0874デフォルトの名無しさん
2008/09/27(土) 19:33:120875デフォルトの名無しさん
2008/09/27(土) 19:49:41int main(void)
{
/*}
int hoge(void)
{
/* } */
return 0;
}
0876デフォルトの名無しさん
2008/09/27(土) 20:42:46#define END }
みたいにされてたり、
その後で#undef BIGINされてたりして、
で、それらが#ifdefやら#ifndefやらに囲まれてて、
その間にパズルみたいにコメントがはりめぐらされたりしてるどうしようもないコードも
面倒みなきゃいけないならプリプロセッサ部分も作らなきゃいけないから大変だな。
0877デフォルトの名無しさん
2008/09/27(土) 21:31:44対象ファイルを読みながら/**/で囲まれた部分を
検出したら囲まれた部分は出力せず
その直後の行まで別ファイルに書き出し、
その時点でそのファイルを子プロセスで
Cコンパイラにコンパイルさせ、エラーコー
ドがunexpected endof fileでなければ
コメントエラーであると判断して、
その行を出力する
でオK?
0878デフォルトの名無しさん
2008/09/27(土) 21:34:25そこを作る課題だろうが。
0879デフォルトの名無しさん
2008/09/27(土) 21:43:18[2] 問題文(含コード&リンク):
ファイルを読み込んで読み込んだファイルが
C言語の文法に合致しているかチェックするツールを
作る。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語:C
[4] 期限: 本日中
[5] その他の制限: 制限は特にありません。
[6]備考:fopenした後からの処理でいいので教えてもらえると幸いです。
0880デフォルトの名無しさん
2008/09/27(土) 21:46:58難易度高いな
0881デフォルトの名無しさん
2008/09/27(土) 21:54:100882デフォルトの名無しさん
2008/09/27(土) 22:01:400883デフォルトの名無しさん
2008/09/27(土) 22:11:52難易度高いぞそれ
つshellexec
0884デフォルトの名無しさん
2008/09/27(土) 22:15:27プリプロセッサを展開させるならboost::waveがあるぞ
0885デフォルトの名無しさん
2008/09/27(土) 22:16:42宿題の期限が土曜って
0886デフォルトの名無しさん
2008/09/27(土) 22:37:00#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;
}
0887デフォルトの名無しさん
2008/09/27(土) 23:15:07その問題は例えば「{}」の数があってるかだけ数えるとか
そんな条件ついてたりしないか?
じゃなきゃ無理だろ
0888デフォルトの名無しさん
2008/09/28(日) 01:01:38最近作ったがコードが見つからない。
作る時間もないのでその時のことを。
構造体とキューを使うとすぐできた。
0889デフォルトの名無しさん
2008/09/28(日) 01:11:22http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7739.txt
自力でここまでやってみましたが、うまく実行できません。
それに、このプログラムでは、「氏名」を必須、他の項目は空白で良しという条件が満たされてません。
何卒アドバイスのほうをよろしくお願いします。
0890デフォルトの名無しさん
2008/09/28(日) 01:51:530891デフォルトの名無しさん
2008/09/28(日) 09:36:29宿題ぐらいのレベルなら、入力部を
int c = 0;
while (c == 0){
printf("氏名 >> ");
fgets(data[n].name, N, stdin);
c = strlen(data[n].name);
data[n].name[c] = '\0'; //最後の改行をNULL文字にする
}
で十分でしょう。
0892デフォルトの名無しさん
2008/09/28(日) 10:18:51たいした問題じゃないけどそれだとN-1文字以上読み込んだときに一文字減るね
0893893
2008/09/28(日) 10:46:03[2] 問題文(含コード&リンク):
※長いのでこの書き込みの下に分けて書き込みします。すみません。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:不明
[3.3] 言語:C
[4] 期限: 明後日
[5] その他の制限: ないです。
[6]備考:C言語を習ったことがないです。C++を大学1年次に半年だけ授業でやりました。
今回の実験内容はTMS320C6713 DSKボードを使用して、マイク入力した音声を正弦波に変換し、
スピーカで出力するまでのプログラムの流れをPCを操作しながら学ぶというものでした。
上記の問題をパワーポイント2枚にまとめなければならないので、このプログラムの解説をお願いいたします。
特に/* main */以下をできる範囲でお願いいたします。
0894893
2008/09/28(日) 10:52:40以下のプログラム中の割り込み処理についてマイクからスピーカまでのデータの流れに沿って説明せよ。
/* 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;
0895893
2008/09/28(日) 10:54:25void 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が今回与えられたソースの全てです。
0896デフォルトの名無しさん
2008/09/28(日) 10:54:580897834
2008/09/28(日) 14:34:10明日の昼12時まででしたら、提出遅れの形で提出できますので、
>>834 どうかお願いいたします。
配点大きな課題ですので、本当に困ってます…
よろしくお願いします。
0898デフォルトの名無しさん
2008/09/28(日) 14:37:020899デフォルトの名無しさん
2008/09/28(日) 15:07:040900デフォルトの名無しさん
2008/09/28(日) 15:19:590901デフォルトの名無しさん
2008/09/28(日) 15:55:21よくわからんが、軌道計算とかもするの?
0902834
2008/09/28(日) 16:15:15最近始めたので、まだ教員の配布資料しか手元にありません。
その資料にもOpenGLの特徴とか投影法?の仕組みしか載っていませんので、
プログラムについては完全にお手上げ状態です…
今夜にでも書店行って、買い足そうと思います。
>>901
軌道計算とは何でしょうか?
一応、明日までに教員の前で作成したプログラムを実行し、
�Gまでの条件が満たされた動画であればOKという課題です。
適当な返事ですみません…
0903デフォルトの名無しさん
2008/09/28(日) 16:20:070904デフォルトの名無しさん
2008/09/28(日) 16:35:05少なくとも問題に軌道面という単語はあるのだが。
0905デフォルトの名無しさん
2008/09/28(日) 19:07:59[2] 問題文(含コード&リンク): c言語で読み出しファイルからファイル位置と読みだすバイト数を指定し読み出
し、違う名前のファイルに書き出すプログラムを作成せよ。ただし読み出しファイル、読みだすデータ位置、読みだすバイト数
書き出すファイル名はDOS窓で指定できるようにすること。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: 不明
[3.3] 言語: c
[4] 期限: 2008年9月28日23:59まで
[5] その他の制限: 大学一年レベルの簡単でなるべく分かりやすいように書くこと。
0906デフォルトの名無しさん
2008/09/28(日) 19:30:46大学1年レベルって結構高レベルな気がするんだけど
初めてC言語習いましたってレベルのことなのか?
0907デフォルトの名無しさん
2008/09/28(日) 19:34:34ちなみに当方は前期の講義をまったく覚えておらず何もできない状態です。
0908デフォルトの名無しさん
2008/09/28(日) 19:39:54#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;
}
0909デフォルトの名無しさん
2008/09/28(日) 19:53:390910デフォルトの名無しさん
2008/09/28(日) 22:06:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7740.c
無駄に長いかも
0911834
2008/09/28(日) 22:35:36確認しましたが�F�Gは難しいので、
省いても良いそうです。減点ですけど…
�Cまでは作って頂けましたので、残り�D�Eお願いできませんでしょうか。
0912デフォルトの名無しさん
2008/09/28(日) 22:44:19ルール合ってるか分からん、表示その他結構色々適当、C++じゃない、
といった感じなんで参考にもならんかもですが。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7741.txt
0913デフォルトの名無しさん
2008/09/28(日) 23:20:47こんな方法があったんですね。只今用語を調べながら
どうなっているか理解に努めています。ありがとうございました。
0914デフォルトの名無しさん
2008/09/28(日) 23:32:12[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++
長文申し訳ありません。
よろしくおねがいいたします。
0915デフォルトの名無しさん
2008/09/28(日) 23:35:20n>8
n/8
0916デフォルトの名無しさん
2008/09/29(月) 00:21:15じゃないかな
0917デフォルトの名無しさん
2008/09/29(月) 00:31:21glColor3d((double)year / 360.0, (double)day / 360.0, 1.0);
0918デフォルトの名無しさん
2008/09/29(月) 00:39:21ttp://ziddy.japan.zdnet.com/qa4345093.html
0919914
2008/09/29(月) 00:51:400920デフォルトの名無しさん
2008/09/29(月) 00:51:51http://pw137.cs.ie.u-ryukyu.ac.jp/repos/complex_back/OpenGL_sample/p4-MovingPlanet.c
0921デフォルトの名無しさん
2008/09/29(月) 00:57:17ちょうど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
どうかよろしくおねがいします
0922デフォルトの名無しさん
2008/09/29(月) 01:26:34ネットワークのルートアドレスとネットマスク、そしてチェックしたい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)
}
長文で申し訳ありません。よろしくおねがいします
0923デフォルトの名無しさん
2008/09/29(月) 02:05:40ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7742.txt
とりあえず全部満たしたんじゃないかな
二個のオブジェクトで作ったのは、みかんっぽいなにか
0924デフォルトの名無しさん
2008/09/29(月) 02:19:26�C
�B
�A
�@
0925デフォルトの名無しさん
2008/09/29(月) 02:26:32>return(root 空欄�@ 空欄�A)==(root 空欄�B 空欄�C)
ここ問題あってる?
return(root 空欄�@ 空欄�A)==(address 空欄�B 空欄�C)
じゃない?
だとしたら
& mask & mask
0926922
2008/09/29(月) 02:30:48925さまのおっしゃる通りに間違えていました
ただしくは
ネットワークのルートアドレスとネットマスク、そしてチェックしたい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)
}
でした
0927デフォルトの名無しさん
2008/09/29(月) 09:33:57(・・・)内の文字は、そのまま出力する。
ただし\に続く数字3文字は8進数として、バイナリ出力する。
<・・・>内の文字は、2桁ごとに16進数としてバイナリ出力する。
0からFに現れない文字は無視する。
0928デフォルトの名無しさん
2008/09/29(月) 17:14:36[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←今ここ)
よろしくお願いします。
0929デフォルトの名無しさん
2008/09/29(月) 17:17:10>>805
>>808
関数ならってないなら>>808でどうぞ
0930デフォルトの名無しさん
2008/09/29(月) 17:20:27どうもありがとうございました。
0931834
2008/09/29(月) 17:57:31条件の多い課題をありがとうございました。
配点が大きな課題だったので何とか提出でき、助かりました。
本当にありがとうございます。
0932デフォルトの名無しさん
2008/09/29(月) 21:59:29[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] その他の制限:ポインタはまだ習ってないです。
条件が多いですが、よろしくお願いします。
0933デフォルトの名無しさん
2008/09/29(月) 22:04:45関数つかわなくてもいい?
0934デフォルトの名無しさん
2008/09/29(月) 22:06:310935912
2008/09/29(月) 22:21:58wiki見たら随分ルール間違ってた……
一応作り直してみたもののやっぱりルールに不安あり。
全然参考にならんかもですがまあ一応ってことで。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7743.txt
0936デフォルトの名無しさん
2008/09/29(月) 23:23:37ポインタはまだ習ってませんが、使用してもかまいません。
0937デフォルトの名無しさん
2008/09/29(月) 23:31:13#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;
}
いまいちよくわからんがこういうことでいいのかなぁ・・
0938デフォルトの名無しさん
2008/09/29(月) 23:34:22s[16+1] じゃね?
0939デフォルトの名無しさん
2008/09/29(月) 23:37:50scanf("%16s", s);
なのにか?
0940デフォルトの名無しさん
2008/09/29(月) 23:39:41終端に \0 がはいる
0941デフォルトの名無しさん
2008/09/29(月) 23:45:21ほんとだ、試したり調べたらそうだった
ごめんなさい
0942デフォルトの名無しさん
2008/09/30(火) 10:40:14cydwinで、argvをつかって テキストファイル名を
引数としてわたして、ファイルの読込とファイルへ
の書込みをするプログラムを作成しました。
作成したいもの
このプログラムを呼び出シェルの作成シェル実行時の
引数を読込と書込みのファイル名を指定する
実行内容、エラーなどすべてのログをログファイルに
残す。
以上ですおねがいします
期限 10月1日
0943デフォルトの名無しさん
2008/09/30(火) 11:39:09課題2.getsを使用し文字列(10字程度)をキーボードから入力する。
入力した文字列を前後逆転した文字列を画面表示する。
○表示画面イメージ
入力文字列 : abcde → ”入力文字列 : ”はprintf abcdeはgetsで入力
逆転文字列 : edcba →printfで画面表示
期限 今日中
0944デフォルトの名無しさん
2008/09/30(火) 11:41:03>>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;
}
0945デフォルトの名無しさん
2008/09/30(火) 12:01:39たぶんシェルスクリプトを書いて欲しいだけのように見える。
--hoge.sh--
#!/bin/sh
./a.out $@ >logfile 2>&1
0946デフォルトの名無しさん
2008/09/30(火) 12:03:42[2] ○以下のプログラムを作成して下さい。
課題2.getsを使用し文字列(10字程度)をキーボードから入力する。
入力した文字列を前後逆転した文字列を画面表示する。
○表示画面イメージ
入力文字列 : abcde → ”入力文字列 : ”はprintf abcdeはgetsで入力
逆転文字列 : edcba →printfで画面表示
[3] 環境
[3.1] OS Windows
[3.2] コンパイラ名とバージョン: わかりません
[3.3] 言語: C
[4] 期限:今日中
[5] その他の制限:表示画面イメージを参照してください。
テンプレを使ってなかったので、書き直しました。
よろしくお願いします
0947デフォルトの名無しさん
2008/09/30(火) 13:27:37#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;
}
0948デフォルトの名無しさん
2008/09/30(火) 15:12:17いまさらだが、こういう場合ってバイトオーダー関係しないの?
0949デフォルトの名無しさん
2008/09/30(火) 15:13:43その設問に関係あるとは思えないけど、どのへんが?
0950デフォルトの名無しさん
2008/09/30(火) 15:20:20算術シフト演算はバイトオーダー関係ないけど、
例えば、addressが 192.168.0.1 を数値化したものだとして、address & 0x000000ff は
バイトオーダによって 192 または 1 になるんじゃないかなって思ったんだけど。
0951デフォルトの名無しさん
2008/09/30(火) 15:29:42& 0x000000ff が下位2バイト取ると勘違いしてた。
ぼけててほんとごめん。
0952デフォルトの名無しさん
2008/09/30(火) 15:35:36[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] その他の制限:
ネット上にある連立方程式のプログラム(?)をつかわずにやれとのことですが気にしないでいいです
変な問題なのですがどなたかお願いします
0953デフォルトの名無しさん
2008/09/30(火) 16:25:43sinのも似たようなもんだよ
#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);
}
0954デフォルトの名無しさん
2008/09/30(火) 16:30:12IPとして扱うならネットワークバイトオーダー(ビッグエンディアン)だろう
address & 0x000000ff は192になる
0955デフォルトの名無しさん
2008/09/30(火) 16:35:240956801
2008/09/30(火) 16:43:44コンパイルしてみた結果動くようです。
で、このプログラムはどういった動作をするものでしょうか?
結局よく分からなくて適当書いて提出しました。
とはいえ、取り敢えずどうもありがとうございました。
0957デフォルトの名無しさん
2008/09/30(火) 16:54:16関数名見ただけで何してるかわかるけど
0958946
2008/09/30(火) 19:18:33main()
{
char str[10];
gets(str);
printf("入力文字列:");
puts("str");
printf("逆転文字列:");
}
こんな感じかな?
全然わかんない・・・・
文字を逆転するのもどうしたらいいのかわからないし・・・・
誰か助けてください
0959946
2008/09/30(火) 19:21:260960946
2008/09/30(火) 19:32:07習ってるのは
#include<stdio.h>
main()
みたいな感じで、main()をいじる方法はならってないです。
int main(〜)じゃない方法で出来ないでしょうか?
後最後のreturn 0;というのもまだ習っていません。
>>958みたいな感じではこのプログラムは作れないんでしょうか?
連レス失礼しました。
0961デフォルトの名無しさん
2008/09/30(火) 19:37:28#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");
}
説明するのもめんどくさいからこれで
0962デフォルトの名無しさん
2008/09/30(火) 19:39:56>>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]=*
のように表示するプログラムをつくるという意味です(ヒストグラム)
ポインタは使用してもかまいません。必ず配列の受け渡しを行っていることが前提です。
どなたかお願いします。
0963デフォルトの名無しさん
2008/09/30(火) 20:12:11while(適当に) histo[input_value]++;
と、詰めて、
for (i=0; i<10; i++) {
while(histo[i] != 0) {
printf("*");
histo[i]--;
}
printf("\n");
}
という感じに出力すればよいのではないかな。
0964デフォルトの名無しさん
2008/09/30(火) 20:20:03ありがとうございます。すごく助かりました
0965デフォルトの名無しさん
2008/09/30(火) 21:05:31すいません下のランダムの方がうまくいかないのですが
0966デフォルトの名無しさん
2008/09/30(火) 21:35:57どううまくいかないんだろう。
永久ループに見せかけていつかそのうち見つかるってアレじゃないのかな。
0967デフォルトの名無しさん
2008/09/30(火) 21:36:36rand() / 〜 じゃなくて rand() % (〜) の間違いだと思う
0968デフォルトの名無しさん
2008/09/30(火) 21:42:38【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題を片付けます 115代目
http://pc11.2ch.net/test/read.cgi/tech/1217741118/
0970デフォルトの名無しさん
2008/09/30(火) 22:24:22ありがとうございます。配列の受け渡しはどのようにすればよいのでしょうか。
0971デフォルトの名無しさん
2008/09/30(火) 22:34:48何に渡すの?別にmainだけでいいのでは。
というか内部関数作って配列渡そうとするとポインタ使うことになっちゃうよ
諸々を検討して、ああ、void main ってことなんだなって理解してたのに。
0972971
2008/09/30(火) 22:36:19どこを関数化するんですか?
0973デフォルトの名無しさん
2008/09/30(火) 23:06:32入力した0〜9までの個数を*で表示する部分を関数化です。
0974デフォルトの名無しさん
2008/09/30(火) 23:21:26mainで
show_histogram(histo);
として、
void show_histogram(int *data) {
/* 出力処理 */
}
という関数を作ればよいのではないかな。
0975デフォルトの名無しさん
2008/10/01(水) 00:05:23void xxxxx(int data[10]) {
/* 中身 */
}
は習った気がする。
0976デフォルトの名無しさん
2008/10/01(水) 00:11:27void 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;
}
という感じにすればよいのでしょうか。
0977952
2008/10/01(水) 00:43:26for文でまわしても結果がでてこないのとsinxのxはラジアンで扱ったほうがいいのかどうか(どっちでやってもうまくいかなかったんですが)わかりません
どなたかできる方いたら教えていただけないでしょうか?よろしくお願いします
0978デフォルトの名無しさん
2008/10/01(水) 00:45:22double f(double x){
return sin(x)+x-1;
}
として、あとはニュートン法でも二分法でも
0979952
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);
}
}
0980952
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;
}
}
}
0981デフォルトの名無しさん
2008/10/01(水) 01:30:50#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;
}
0982デフォルトの名無しさん
2008/10/01(水) 01:39:01>>963 には入力データを配列に詰める処理と、表示処理を書いているんだけど
なぜ >>937 のエッセンスを微妙に混ぜてしまったの?
分からないままとりあえず組み合わせて
> という感じにすればよいのでしょうか。
と締めくくるのは、クマーAAを生むのに必要な技術であって、プログラムを組むには必要ないよ。
0983デフォルトの名無しさん
2008/10/01(水) 01:56:40void 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禁止なので入力チェックは本当にわかりません><
0984デフォルトの名無しさん
2008/10/01(水) 07:29:23C/C++の宿題を片付けます 116代目
http://pc11.2ch.net/test/read.cgi/tech/1222813731/
0986デフォルトの名無しさん
2008/10/01(水) 13:51:59[2] 問題文(含コード&リンク):
http://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日まで]
0987986
2008/10/01(水) 13:56:340988デフォルトの名無しさん
2008/10/01(水) 13:56:54>>715-719とかにあった気がする
0989デフォルトの名無しさん
2008/10/01(水) 14:39:25[2] 問題文: 二分法を用いて√2の近似値を求めるプログラム
[3] 環境
[3.1] OS: Windows/
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: [2008年10月2日まで]
[5] その他の制限:特になし
0990デフォルトの名無しさん
2008/10/01(水) 15:10:20乙!
>>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
0991デフォルトの名無しさん
2008/10/02(木) 16:03:28データをコマンドライン上で受け渡しはできないのでしょうか?
それともtxtデータなどで外部出力したものを読み取るしかないのでしょうか。
0992デフォルトの名無しさん
2008/10/02(木) 16:11:49LinuxでもWindowsでも引数つきでプログラム起動は出来るだろう
0993デフォルトの名無しさん
2008/10/02(木) 16:15:070994991
2008/10/02(木) 16:30:53ありがとうございました。
0995デフォルトの名無しさん
2008/10/02(木) 20:05:420996デフォルトの名無しさん
2008/10/02(木) 20:06:280997デフォルトの名無しさん
2008/10/02(木) 20:10:55ストライクゾーンが狭いからしょうがないけど
0998デフォルトの名無しさん
2008/10/02(木) 20:23:240999デフォルトの名無しさん
2008/10/02(木) 20:24:431000デフォルトの名無しさん
2008/10/02(木) 20:26:111000ならオレ様勝手にレベルアップ
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。