C言語なら俺に聞け(入門編)Part 91
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/10/26(水) 07:17:36.14★前スレ
C言語なら俺に聞け(入門編)Part 90
http://hibari.2ch.net/test/read.cgi/tech/1317249060/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 152代目
http://hibari.2ch.net/test/read.cgi/tech/1312201995/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
★ぬるぽ。
長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/
0002デフォルトの名無しさん
2011/10/26(水) 12:45:27.85codepadが重い場合は
http://ideone.com/
0003デフォルトの名無しさん
2011/10/26(水) 19:34:51.18あれって他のプログラムが使ったカスだったりすんのかな?
もし他のプログラムが"host=xxxxx,user=name,password=****" ってなログインクエリを
作って終了してたとして、自分のプログラムで1GBぐらいヒープを確保してuserとかpasswordとか
転がってるか探したら見つかったりすんのかな?今まで見たことは無いけどWindowsとかなら理屈上ありうる?
もしそんな事が有りうるんなら、確保したメモリにパスワードとか書き込んでたなら、
メモリ解放前にシコシコ上書き削除が必要だよね。
0004デフォルトの名無しさん
2011/10/26(水) 19:38:09.28そういうのがあった時代はとうに過ぎた
0005デフォルトの名無しさん
2011/10/26(水) 19:39:59.86台数近似なんて知らないんでテキトーに組んでみたけど
前スレ>>992と結果が違うよ。どーなってんの?・3・オレ
0006デフォルトの名無しさん
2011/10/26(水) 19:43:52.29今入ってるあのゴミは何?
Windowsが毎回ゴミを詰め込んで初期化してるの?
0007デフォルトの名無しさん
2011/10/26(水) 19:46:18.13プログラムが強制終了する関数なのは知ってますが
ifで条件分岐したらこのexit(1)使わなくてもいいんでは?
0008デフォルトの名無しさん
2011/10/26(水) 19:54:04.10main以外の関数でプログラムを終了できる。
0009デフォルトの名無しさん
2011/10/26(水) 19:58:25.78メインはatexitなんかで終了処理させるために使うな。
あとはIOバッファのフラッシュをやらせたい時とか。
0010デフォルトの名無しさん
2011/10/26(水) 19:59:53.63それは知っている
0011デフォルトの名無しさん
2011/10/26(水) 20:18:43.82必ずmainまで戻るならexit使わなくていいよ
0012デフォルトの名無しさん
2011/10/26(水) 20:27:44.650013デフォルトの名無しさん
2011/10/26(水) 20:31:10.49int main(void){
char str[256],*p=str;
int i, l;
printf("in = ");
scanf("%s", str);
i=l = strlen(str);
while(i--) {
*(p+l)=*p;
*(p+l+1)='\0';
printf("%s\n",++p);
}
return 0;
}
というプログラムを組んでいただいたのですが、どうなっているのかさっぱりわかりません。
具体的にはstrlenがどんな働きをするのかと、
a=b = strlen(str);
while(a--) {
*(p+b)=*p;
*(p+b+1)='\0';
printf("%s\n",++p);
この部分が一体全体どうなっているかわかりません。教えてください。
pには文字が入っているはずなのに、どうして*(p+b+1)='\0'のように数字を足すことができるのでしょうか。
また、a=b=strlen(str)とaも文字が入っているはずなのに、a--と数字のように扱えるのはなぜですか?
初歩的な質問で申し訳ありませんが、お願いします。
0014デフォルトの名無しさん
2011/10/26(水) 20:31:26.74exitを使わないと困る時ってある?
0015デフォルトの名無しさん
2011/10/26(水) 20:34:29.780016デフォルトの名無しさん
2011/10/26(水) 20:36:24.12それは例えばどんな時?
0017デフォルトの名無しさん
2011/10/26(水) 20:50:21.24pには文字(char)が入ってるんじゃなくて、文字が入ってるメモリ領域のアドレスが入ってる。
これはポインタと言われてるんだが、Cの入門書でも読めばかなりのページを割いて説明してると思うよ。
ここで質問するよりまず入門書を読むことをお勧めする。
あなたはまだ質問以前の段階だと思う。
0018デフォルトの名無しさん
2011/10/26(水) 21:00:05.79strlenの戻り値は文字列の長さなんで、strの内容が"abc¥n"だったら、
a=b=strlen(str);
でaとbに整数値の3が入る。
char *p=str のpには、str領域の先頭アドレスが入る。(文字ではない)
勘違いし易いのは、
・宣言時のchar *p は「文字列のポインターのp」
・実行時の*p、例えば....=*p;
の場合は「アドレスpにあるデータ内容(文字など)」を意味してる、という事。
char *p より、char* pの方が直感的だとは思うが、
char* p;
char s[10];
を1行にまとめる際に、
char* p,s[10];
としてしまっては、
*がs[10]にも掛るのかの区別がつかないから、
char *p,s[10];
という表記になっている。
0019デフォルトの名無しさん
2011/10/26(水) 21:01:23.08strlenは、文字列の長さを取得する関数。"abcde"なら、5。
while(a--) {
*(p+b)=*p; strの最後にstrの先頭文字'a'をセット(strはabcdea)
*(p+b+1)='\0'; str最後+1に'\0'をセット(strはabcdea\0)
printf("%s\n",++p); strの2文字目から表示("bcdea")
}
whileでstrの文字数(つまり5回)繰り返しながら、表示開始位置をずらしていく。
こんな感じ?
0020デフォルトの名無しさん
2011/10/26(水) 21:09:59.20極めてメモリ容量が限られていて、無駄なランタイムライブラリを減らしたい時。
Cの規格通りコンパイルするとmainからプログラムが始まる。
でも、実際のプログラム開始点は、mainじゃなくスタートアップコード。
ランタイムライブラリを切り離してプログラムをコンパイルすると、
このスタートアップコードから書くことになる。
このスタートアップコードがどんな作りかは、規格外なのでコンパイラやOSによるけど、
Windowsなんかは、void __cdecl WinMainCRTStartup( void )って関数を用意する事になる。
この関数は戻り値はvoidなんで当然値を返せない。
こういう時、exitが入ってる最小限のライブラリだけリンクし、exitを使って戻り値を返す事ができる。
0021デフォルトの名無しさん
2011/10/26(水) 21:39:34.68・mainに戻る前に実行したくない後処理がある場合
・while(1){...} とか無限ループになってる場合。
0022デフォルトの名無しさん
2011/10/26(水) 22:30:37.30strが0x00008000〜0x000080FFに配置されているとすると、
p = str (= &str[0]) = 0x00008000
strに"xxxxx\0"が先頭から入っていれば、b = strlen(str) = 5
p+b+1 = 0x00008006で、*(p+b+1)は0x00008006の中身 (= str[6])
処理時間の長い演算処理のプログラムか何かで、デバッグの為に途中で終了させたい時にも使うな。時としてデバッガよりも手っ取り早いからね。
0024デフォルトの名無しさん
2011/10/26(水) 22:48:57.16・ファイルが無いとか開けないとか致命的なエラーがあってこれ以上処理を継続しても意味が無いとき
・そもそもmain()から他のライブラリのmainloop()なりを呼んでmain()に返ることがなくイベントドリブンで動かすようなとき
0025デフォルトの名無しさん
2011/10/26(水) 23:05:48.88毎回消してる
0026デフォルトの名無しさん
2011/10/26(水) 23:06:06.15|―|―|―|
|A|B|C|
|―|―|―|
という感じに表示(A,B,Cは空白)させたとして、A,B,Cのどこかにキーボードから入力させることってできますか?後、その入力したものを判別(数値や値の特定)させることはできますか?
適切なライブラリを利用すれば充分可能です。
0028デフォルトの名無しさん
2011/10/26(水) 23:12:18.79いや、ライブラリを使わずにしたいんだが…
0029デフォルトの名無しさん
2011/10/26(水) 23:21:29.560030デフォルトの名無しさん
2011/10/26(水) 23:41:33.850031デフォルトの名無しさん
2011/10/26(水) 23:47:15.21またわざわざRAMに情報を格納しなくちゃいけないんですかぁぁぁぁぁぁ
0032デフォルトの名無しさん
2011/10/26(水) 23:52:12.76これはWindowsのAPIの領域だな。
特にコンソール系はドキュメント化されてないのが多いから必然的に海外のページを漁る必要がある。
前に自前のcursesライブラリ作った時に参考にしたが、これなんかは勉強になるよ
http://www.catch22.net/sites/default/source/files/setconsoleinfo.c
0033デフォルトの名無しさん
2011/10/27(木) 00:00:27.17autoconfに関して、ライブラリー、ライブラリーパス、ヘッダーファイルの存在、ヘッダーファイルのパスを確認するスクリプトは、
みなさんどのように書いてますか?
codepadでconfigure.inの簡単な実例をお願いします。
0034デフォルトの名無しさん
2011/10/27(木) 00:01:30.270035デフォルトの名無しさん
2011/10/27(木) 00:24:56.19何十年前の発想よw
0036デフォルトの名無しさん
2011/10/27(木) 00:28:47.950037デフォルトの名無しさん
2011/10/27(木) 00:29:54.06UNIXの話だけど、forkの時にメモリの内容を子プロセスにコピーする、っていうじゃ
ないですか。とするとmallocして確保する領域は、親のプロセスのメモリ内容のコピーに
なってたりしないのかな?
メモリ内容のクリアが発生するとしたら、誰がいつどこでどのように... おっとスレチ気味?
0038デフォルトの名無しさん
2011/10/27(木) 00:29:59.570039デフォルトの名無しさん
2011/10/27(木) 00:40:17.85そういうのは文字列として読み込んでから処理したほうが楽だぞ
0040デフォルトの名無しさん
2011/10/27(木) 00:41:04.61最初からscanf()で配列に入れないのはなんで?
0041デフォルトの名無しさん
2011/10/27(木) 00:54:00.84ちょっと前に書いた奴、libtools使うようにしてある
http://codepad.org/0FB7OdGG
configure && makeの世界へようこそ、ここら辺を参考にしてね
http://www.02.246.ne.jp/~torutk/cxx/automake/automake.html
http://www.bookshelf.jp/texi/libtool/libtool-ja.html
http://www.geocities.jp/fut_nis/
0042デフォルトの名無しさん
2011/10/27(木) 01:05:02.51こんな感じかな。
みんなが言うようにそのまま文字列で処理した方が良いと思うけど・・・
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
char buf[256];
char *s = &buf[sizeof buf];
int neg=0, radix=10;
scanf("%d", &i);
*--s = '\0';
if (i<0){
neg = 1;
i = -i;
}else
neg = 0;
do{
*--s = (i % radix) + '0';
i /= radix;
}while (i>0);
if (neg) *--s = '-';
printf("%s\n", s);
return 0;
}
0043デフォルトの名無しさん
2011/10/27(木) 02:04:52.65ありがとうございます!
0044デフォルトの名無しさん
2011/10/27(木) 02:36:22.41sprintf…
0045デフォルトの名無しさん
2011/10/27(木) 02:54:22.19しかし 42 は呪われている!
MP が足りない!
0046デフォルトの名無しさん
2011/10/27(木) 03:42:47.33char sz[]="abcd";
sz[2]='_';
の様に書きえることが出来るのですが、
charのポインタの場合、どの様すれば書き換えることが出来るのでしょうか?
char* psz="abcd";
psz[2]='_';/*エラー*/
0047デフォルトの名無しさん
2011/10/27(木) 03:49:50.86前者はcharの配列が用意されて、その中にabcdっていう4つの文字(文字列)が入ってる。
後者はabcdという文字列リテラルへのポインタ。
文字列リテラルは文字列と違って定数なので変更できない。
0048デフォルトの名無しさん
2011/10/27(木) 04:09:02.10sprintf使ったらscanfで読むのと同じになるじゃん。
最初からscanfを使わない事から、多分何か理由があって使わないのかなと考えただけ。
0049デフォルトの名無しさん
2011/10/27(木) 05:07:38.97char sz[]="abcd";と
char *sz="abcd";って
どっちも'a'の格納されているアドレスが
szという変数に入るから、あとは読み書き
自由なんじゃないの?
0050デフォルトの名無しさん
2011/10/27(木) 05:19:19.69>>47であってる
昔は、環境によっては
char *p = "abcd";
に対して
p[2] = 'x';
などとするのは可能な場合もありました。
しかし >>47 のとおり、文字リテラルを書き換えることができない場合もあります。
できないことがあるのだったら、
char a[] = "abcd";
a[2] = 'x';
と書くのが無難です。
だれか規格引用よろ。
0052デフォルトの名無しさん
2011/10/27(木) 05:27:38.20> できない場合もあります。
情報量0だな。
0053デフォルトの名無しさん
2011/10/27(木) 05:38:53.720054デフォルトの名無しさん
2011/10/27(木) 05:40:01.500055デフォルトの名無しさん
2011/10/27(木) 06:15:53.74かといって最新版にしないとセキュリティホールがあるし…
まったく改善しようという気配が見られない所がさすがJIS。
0056デフォルトの名無しさん
2011/10/27(木) 06:37:20.88ってんだから格納してあるリテラルを書換えたら整合性なくなっちまうのは当然
0057デフォルトの名無しさん
2011/10/27(木) 07:24:37.81文字列リテラルの型はconst char[]なので書き換えてはダメ。
>>49>>51
DOSの頃はメモリ保護をしていないので書き換えることができた。
しかし文字列リテラルはread onlyで有ることを期待されて、最適化しても良いので、
同コード内の別の"abc"が同じ領域を割り当てられることが有り、その場合誤動作
してしまう。
0058デフォルトの名無しさん
2011/10/27(木) 07:31:43.87fork()したら同じページがCoWとかでマップされてんだろうけど、
exec()したあとはついてこないでしょ。
タイミングはOSとかランタイムの実装によるんじゃないの?
0059デフォルトの名無しさん
2011/10/27(木) 11:00:26.24それは流石に、Adobe Readerの問題だろ。
0060デフォルトの名無しさん
2011/10/27(木) 14:34:14.890061デフォルトの名無しさん
2011/10/27(木) 14:36:39.60fgetsや、getcなどを使うと、読み込めるまで待ちますが、
読み込み待ちを行わない方法はないのでしょうか?
何がしたいかと言うと、デバイスファイルの接続先の機器が固まることがあり、
一定間隔でファイルを読めない場合は、固まってるので、機器の初期化実行後、再度読み込みを開始したいのです。
0062デフォルトの名無しさん
2011/10/27(木) 14:38:24.740063デフォルトの名無しさん
2011/10/27(木) 14:45:30.13最初に5を入力したら、どうなるのが良い?
0064デフォルトの名無しさん
2011/10/27(木) 14:48:06.11つ[select()]
0065デフォルトの名無しさん
2011/10/27(木) 14:49:43.75買えって言ってる行間が読めないか?
/* あのぼったくり価格を肯定したくはないが */
0066デフォルトの名無しさん
2011/10/27(木) 15:56:30.82最大最小は無いと出れば問題無いです
0067デフォルトの名無しさん
2011/10/27(木) 16:00:35.755以外の数字の範囲は?
マイナス値が入力される可能性は?
0068デフォルトの名無しさん
2011/10/27(木) 16:14:51.55最小値記憶用変数にINT_MAXで初期化(型により臨機応変に)。
数値入力→入力が5ならループ抜ける→最大値、最小値と比較して保存orスルー→入力に戻る
ループ抜けたあと、最大値、最小値に変化が無い or 最小値>最大値 なら
"最大最小は無い"と出力
0069デフォルトの名無しさん
2011/10/27(木) 16:16:20.44[2] 問題文(含コード&リンク): bmp、jpg形式の画像の輝度値を表示させるプログラムを作成せよ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc opencv
[3.3] 言語: C
[4] 期限: 2011年10月29日まで
[5] 以下のURLの画像のような、元々の白黒画像を白と黒の輝度値を表示した画像に変換したいのですが、どうしていいか
全く分からなくて、困っています
http://mcm-www.jwu.ac.jp/~physm/buturi07/robo/genri02.html
画像だけ載せることができればいい課題なので、最悪このような事を行えるソフトウェアがあればいいのですが
ネットでたくさん検索を行ったのですが、私の浅知恵のせいか、よく分かりませんでした
ヒントだけでもいいので、よろしくお願い致します
0070デフォルトの名無しさん
2011/10/27(木) 16:30:25.47ttp://opencv.jp/
0071デフォルトの名無しさん
2011/10/27(木) 16:47:21.93その画像を、pgmのテキスト形式で保存してテキストエディタで開く。
pgmのテキスト形式で保存できるツールは例えばIrfanViewやImageMagickがある。
ついでに言えば、スレ違い。
0072デフォルトの名無しさん
2011/10/27(木) 17:04:01.85授業の課題です。。。
全然分からないんで解説付きでお願いします。
0073デフォルトの名無しさん
2011/10/27(木) 17:05:20.21宿題スレへどうぞ。
007446
2011/10/27(木) 17:48:03.44char* sz="0000000000"とあるのを"0000111111"に変更したいと思い、
質問させていただいたのですが、解決方法はchar sz[]="0000000000"しかない、
と言うことで合っていますでしょうか?
0075デフォルトの名無しさん
2011/10/27(木) 17:56:58.18sz="0000111111";
もできるさ
0076デフォルトの名無しさん
2011/10/27(木) 18:16:12.280077デフォルトの名無しさん
2011/10/27(木) 18:41:06.32b ^= 63;
これで。
0078デフォルトの名無しさん
2011/10/27(木) 18:41:57.690079デフォルトの名無しさん
2011/10/27(木) 19:08:09.53増加比率5.2
の
人数52人のクラスのN年後を予想することってどうすればいいでしょうか?
0080デフォルトの名無しさん
2011/10/27(木) 19:12:44.3852*pow(5.2, N)
0081デフォルトの名無しさん
2011/10/27(木) 19:21:55.13for i in N
p <- p * 5.2
0082デフォルトの名無しさん
2011/10/27(木) 19:27:13.820083デフォルトの名無しさん
2011/10/27(木) 19:28:13.6962*pow(1.016, N)
0084デフォルトの名無しさん
2011/10/27(木) 19:32:37.11出るときがありできないんですけど、解決法はありますか?
0085デフォルトの名無しさん
2011/10/27(木) 19:43:28.45指定したパスをここに書くと、解決しそうな予感
0086デフォルトの名無しさん
2011/10/27(木) 20:34:05.92今度は人口のプログラムで何年後に人口比率が1,6%の時に
人口が80億になるかを図るプログラムを作っているのですが
何となくこういう感じで作ってみたのですが
うまくいきません
どうしたらいいでしょうか?
#include<stdio.h>
#include<math.h>
int main(void)
{
int n,a;
for(a=0;a<n;a++)
a=560000000*pow(1.016,n);
if(a>=10000000000)
printf("%d",i);
return 0;
}
0087デフォルトの名無しさん
2011/10/27(木) 20:37:11.87対数を使えばおk
0088デフォルトの名無しさん
2011/10/27(木) 20:37:39.99intであらわすことができるのは大抵42億まで。
long long int使え。
0089デフォルトの名無しさん
2011/10/27(木) 20:38:46.20int a = 10000000000;
printf("%d\n",a);
0090デフォルトの名無しさん
2011/10/27(木) 20:38:49.30int だとオーバーフローする
0091デフォルトの名無しさん
2011/10/27(木) 20:39:10.05doubleでもいいぞ。
009269
2011/10/27(木) 20:47:35.78>>71
スレ違い失礼しました、どこで聞くべきでしたかね?
ありがとうございます、アスキーコード形式で保存したところ
無事に輝度値の数値化に成功しました
ただ、どこがどの輝度値を表しているか分からないので
そこは自力でなんとかしてみたいと思います
0094デフォルトの名無しさん
2011/10/27(木) 21:06:08.71#include<math.h>
int main(void)
{
long long int a;
for(a=0;a<n;a++)
a=560000000*pow(1.016,n);
if(a>=10000000000)
printf("%d",n);
return 0;
}
こうしてみたのですが
どうしたらいいでしょう?
0095デフォルトの名無しさん
2011/10/27(木) 21:10:45.520096デフォルトの名無しさん
2011/10/27(木) 21:16:26.16#include<math.h>
int main(void)
{
long long int a;
int a;
for(a=0;a<n;a++)
a=560000000*pow(1.016,n);
if(a>=10000000000)
printf("%d",n);
return 0;
}
人口のプログラムで何年後に人口比率が1,6%の時に
人口が80億になるかを図るプログラムを作っているのですが
何となくこういう感じで作ってみたのですが
うまくいきません
どうしたらいいでしょうか?
全然上手くいかないです
0097デフォルトの名無しさん
2011/10/27(木) 21:19:48.79#include<math.h>
int main(void)
{
long long int a;
int n;
for(n=0;;n++) {
a=560000000*pow(1.016,n);
if(a>=10000000000ll) {
printf("%d, %lld\n", n ,a);
break;
}
}
return 0;
}
0098デフォルトの名無しさん
2011/10/27(木) 21:30:16.33int main(void)
{
double a = 560000000;
int n;
for (n = 1; ; n++) {
a *= 1.016;
if (a >= 10000000000.0) {
printf("%d, %f\n", n ,a);
break;
}
}
return 0;
}
0099デフォルトの名無しさん
2011/10/27(木) 21:31:55.131.6%ずつで、56億→80億に何年かかるか、なら
#include<stdio.h>
int main(void)
{
int c=0;
double a=56;
while (a<=80) {
a*=1.016;
c++;
}
printf("%d",c);
return 0;
}
実行結果:23
0100デフォルトの名無しさん
2011/10/27(木) 21:37:23.290101デフォルトの名無しさん
2011/10/27(木) 21:39:01.05本質的でない所に拘ってると、伸びないよ。
0102デフォルトの名無しさん
2011/10/27(木) 21:44:23.02・関数として書いてあるforループ内の動作上のメッセージをウィンドウ中に表示させる
というのをやろうと思ってます。
ボーランドのC++スターターで試してみると簡単に作れるのですが、PCはVC++経験のみの私には
操作が分かりずらいのと、GUIライブラリ(?)充実版は高価でにっちもさっちもでした。
VC++で再挑戦したいので、この程度をカバーしているお勧めの本(英語でも可)やサイトを
ご存知でしたら教えてください!
0103デフォルトの名無しさん
2011/10/27(木) 21:53:00.37Gtk+やQtがおすすめ
0104デフォルトの名無しさん
2011/10/27(木) 22:15:49.62int n=ceil(log(1.0e+10/5.6e+8)/log(1.016));
0105デフォルトの名無しさん
2011/10/27(木) 22:16:12.910106デフォルトの名無しさん
2011/10/27(木) 23:46:56.670107デフォルトの名無しさん
2011/10/28(金) 00:10:42.330108デフォルトの名無しさん
2011/10/28(金) 00:13:54.71>GUIライブラリ(?)充実版は高価で
VCの方が高価だと思うんだが…
0109デフォルトの名無しさん
2011/10/28(金) 12:01:10.61一応、また俺流の訳を載せておきます。
最初の文は、おそらく、
char *p = "abc";
char *q = "abc";
のような場合、必ずしも p != q であるとは言えないということだと思います。
6.4.5 String literals
6 It is unspecified whether these arrays are distinct provided their elements have the
appropriate values. If the program attempts to modify such an array, the behavior is
undefined.
(文字列リテラルにより初期化される)これらの配列が、適切な値の要素を持っているならば、
これらの配列が各々異なるものであるかは特定されない。
プログラムがこのような配列の変更を試みると、動作は未定義である。
0110デフォルトの名無しさん
2011/10/28(金) 12:52:37.31そのような配列を修正しようとした場合のふるまいは未定義です。
0111デフォルトの名無しさん
2011/10/28(金) 12:59:50.48p != q であっても関係ないわけで
0112デフォルトの名無しさん
2011/10/28(金) 13:03:19.16そもそも書き換えられないからダメ。環境によっては領域外アクセスで終了する。
仮に書き換えられる環境だとしたら、
p[2] == 'd'であると同時にq[2] == 'd'となるかもしれないということ。
0113デフォルトの名無しさん
2011/10/28(金) 13:04:00.000114デフォルトの名無しさん
2011/10/28(金) 13:05:33.51Qtって無料で使えるの?
0115デフォルトの名無しさん
2011/10/28(金) 13:25:12.17昔ゃそんなメモリ管理なんてなかったんだよ。つーか、今でも組み込みだとないこともある。
それはそうと、>109は同じ文字列のみに限定しないと思う。
例えばchar * p = "abc"; char * q = "bc";とするとq == p + 1になった。
0116デフォルトの名無しさん
2011/10/28(金) 13:28:22.83組み込みならなおさら、ROMに置いたりするだろ。
0117デフォルトの名無しさん
2011/10/28(金) 13:34:03.10else >>109-110 よ、未定義になる理由はそこじゃない。>>113 が当たらずも遠からず
0118デフォルトの名無しさん
2011/10/28(金) 13:42:32.34110は超訳してみただけだよ。
英語に関しては超絶アホだから間違ってるだろうけどね。
0119デフォルトの名無しさん
2011/10/28(金) 14:21:15.28char *a = "abc";
a[1] = 'd';
printf("abc");
でadcと出たことがあったなぁ。
0120デフォルトの名無しさん
2011/10/28(金) 15:00:31.11char *p="abc";
printf("%s\n",p);
p[1]='-';
printf("%s\n",p);
-----出力-------
abc
abc
----------------
ROM上に配置?
0121デフォルトの名無しさん
2011/10/28(金) 15:14:54.22やっていいかどうかじゃなく不定。「プログラマは何でも知っている」がCの原則。
不定な結果が欲しいからプログラマはそうするのであってコンパイラはそれに従うのみ。
0122デフォルトの名無しさん
2011/10/28(金) 16:13:54.540123デフォルトの名無しさん
2011/10/28(金) 19:09:15.71"abc"は .rodata に配置される。
0124デフォルトの名無しさん
2011/10/28(金) 19:10:59.02それが同じ文字列か違う文字列かは内緒、という話。
0125デフォルトの名無しさん
2011/10/28(金) 19:13:24.41*p を p[] に変えてみれば、挙動の違いと意味をよく理解できるはずだ。
0126デフォルトの名無しさん
2011/10/28(金) 20:05:06.75C machineで実行したら
abc
a-c
と出力されて、TestM()を2回実行すると
abc
a-c
a-c
a-c
と出力された。
環境依存だな。
0127デフォルトの名無しさん
2011/10/28(金) 20:13:59.80ポータブルなコードを書くためには特定の実装の動きを仮定したらダメよって事。
0128デフォルトの名無しさん
2011/10/28(金) 20:21:58.04いってるけどこれ異常に凄くないですか?
端末が起動してなくても操作できるんですか?
0129デフォルトの名無しさん
2011/10/28(金) 20:34:52.150130デフォルトの名無しさん
2011/10/28(金) 20:47:15.11ネットワークってUNIXの場合無線は無理ですか?
0131デフォルトの名無しさん
2011/10/28(金) 20:58:37.310132デフォルトの名無しさん
2011/10/28(金) 21:06:31.670133デフォルトの名無しさん
2011/10/28(金) 21:09:29.56配列の最大値を求めたくて
下のプログラムを作ったのですが,うまく動作しません。
for( maa=1 , qxr = qxxr[0] ; maa < 10; maa++) {
if( qxr < qxxr[maa] ) {
qxr = qxxr[maa];
qxxxr = maa;
}
}
printf("最大のq*rは%dのとき%f\n",qxxxr,qxr);
最大のq*rは0のとき0
と表示されるのですが間違っているところがわかれば教えてください。
配列は下のような感じです.
qxxr[0]=40.800000
qxxr[1]=41.600000
qxxr[2]=0.000000
qxxr[3]=0.000000
qxxr[4]=40.000000
qxxr[5]=0.000000
qxxr[6]=0.000000
qxxr[7]=40.000000
qxxr[8]=0.000000
qxxr[9]=0.000000
0134デフォルトの名無しさん
2011/10/28(金) 21:15:36.14その辺のパソコンもリモートで操作できるよ。
起動してなくてもという点についてはネタなのかどうかわからんが、マジックパケット投げてから操作すればいい
0135デフォルトの名無しさん
2011/10/28(金) 21:18:21.88思うんですが、個人同士のパソコンで、遠くにいる相手のパソコンを動かす
時にそのパソコンが起動しているのって不自然じゃないですか?
思うに、Unixとかの場合は何百台のパソコンが一つの特定の場所(オフィス)
とかに存在していて、その場所に存在する管理者の制御の元で起動しており、
遠く離れた人がそのパソコンにアクセスできるような状況が自然だと思うの
ですがどうでしょうか?
0136デフォルトの名無しさん
2011/10/28(金) 21:22:02.19unixはもともと高性能サーバーを中心に据えて、複数の低価格端末で共有利用する仕組みだよ。
0137デフォルトの名無しさん
2011/10/28(金) 21:22:30.79前段 操作したいパソコンは起動していないのが自然ってこと?なら前述のとおり。
後段 起動してるなら操作できるよ。
どこが疑問なのかがわからん。
0138デフォルトの名無しさん
2011/10/28(金) 21:23:53.97逆。
そういうのがイヤだからUNIXが誕生した。
0139デフォルトの名無しさん
2011/10/28(金) 21:26:30.85操作したいパソコンが起動していなくても、管理者が遠地のクライアントの
アクセスに対し端末を開放するのは自然だと思います。
でも、個人同士で、例えば机の引き出しに眠っているUnix搭載PCが起動せずに
リモートで操作される何てあり得ないじゃありませんか?
起動していても操作される何てあり得ませんが。
0140デフォルトの名無しさん
2011/10/28(金) 21:28:50.45よくわからないが、君が勉強している本には起動していない端末を操作することができる、と書いてあるのかい?
それに、管理者が開放するってのは、管理者が電源をわざわざ入れているってことかい?
0141デフォルトの名無しさん
2011/10/28(金) 21:29:08.32え?
0142デフォルトの名無しさん
2011/10/28(金) 21:34:46.01良く分からない・・
でも、遠隔操作されているパソコンってどんな状態なんですか?
画面付いてゴースト人間が操作してるみたいな感じになってますか?
0143デフォルトの名無しさん
2011/10/28(金) 21:34:52.800144デフォルトの名無しさん
2011/10/28(金) 21:37:35.71ありますか?
0145デフォルトの名無しさん
2011/10/28(金) 21:39:51.970146デフォルトの名無しさん
2011/10/28(金) 21:40:26.52そっからかよ。
広義の話をすれば2chに書き込んでる時点で2chのサーバを遠隔操作してるわけだが。
0147デフォルトの名無しさん
2011/10/28(金) 21:48:33.96でも2chの場合は、巨大サーバだから情報を発信できるし、プロバイダも
あるから個人からもアクセスできると思うんです。
Unixってしかも20年くらい前ですよね?Unixは通信が便利というけど
技術的にそんな高いんかと。
後Unixのネットワーク系はインターネットなんですか?
VPNとか聞いた事ありますが。
0148デフォルトの名無しさん
2011/10/28(金) 21:53:32.13C言語スレに来るような人なら普通は知っているものだけど、
インターネットはUNIXから生まれた。
今もネットワーク機器はUNIXで動いている。
WindowsやLinuxでも同様のことが出来るけど、UNIXの足元にも及ばない。
特にWindowsはダメだな。
って言うか俺がインターネットの設計者だったりする。
当時3歳だったが、その国の日常語なら5分で理解する天才なのでね。
0149デフォルトの名無しさん
2011/10/28(金) 21:55:50.46めし、風呂、寝る
0150デフォルトの名無しさん
2011/10/28(金) 21:58:33.600151デフォルトの名無しさん
2011/10/28(金) 22:01:21.46君のパソコンも世界に情報を発信できるし、世界の個人ユーザからアクセスされることもできるよ。
多分だけど、適当に仕入れてきた情報をまだ理解できてないんだと思う。
で、なんでこのスレでそれ聞いたん?
0152デフォルトの名無しさん
2011/10/28(金) 22:08:35.81マジか!?
インターネットの父ってこの前死んだんじゃなかったっけ?
天国から?
0153デフォルトの名無しさん
2011/10/28(金) 22:11:50.40ルーターやプリンタはnetBSDが多いって聞いたな
テレビやBDデッキはlinuxが多いみたいだけど
0154デフォルトの名無しさん
2011/10/28(金) 22:12:42.61IP v6 が初めて実装されたのがBSD UNIXですよ。
ttp://www.ipv6style.jp/jp/special/kame/20051121/index.shtml
こんなの使わないでしょ。
ttp://www.yamdas.org/column/technique/ipv6_1.html
そこに最近 USAGI Project による検証試験が行なわれ、「Linux の IPv6 プロトコルスタックの実装は、他の OS のものと比べて、著しく品質が劣ったもの」という分析結果が出た。
0155デフォルトの名無しさん
2011/10/28(金) 22:12:45.06アクセスするにはそういう契約が必要では?
Unixの場合は、Unix同士、契約している端末同士のネットワークでしょ?
もし自由にアクセスできるなら、パソコン侵入し放題じゃないw
ファイル共有ソフトのキンタマウイルスとかそういう以前の問題じゃないw
0156デフォルトの名無しさん
2011/10/28(金) 22:13:09.96彼は13歳になる前に死んだんだよ。。。
0157デフォルトの名無しさん
2011/10/28(金) 22:16:43.96DMRのことかな。インターネットの父ともいえるけれど。
ちなみに村井さんはご健在だった。もしかしてと思ってちょっとあせった。
>>155
そういう契約ってなんぞ。
現に俺は今自宅じゃないところから、自宅のPCで起動しているJaneを使って書き込んでいるよ。
0158デフォルトの名無しさん
2011/10/28(金) 22:18:15.07じゃぁ何で君は俺のPCに侵入できない?
0159デフォルトの名無しさん
2011/10/28(金) 22:19:08.66リモートデスクトップでぐぐってきてくれ。
0160デフォルトの名無しさん
2011/10/28(金) 22:19:35.700161デフォルトの名無しさん
2011/10/28(金) 22:20:03.57安いルータとかはLinuxが多いらしいじゃん。
Ciscoなんかは独自OSだよね。
0162デフォルトの名無しさん
2011/10/28(金) 22:20:17.50そりゃ自分のPCには遠くから自分で操作できるのも何か可能っぽい感じはするよw
0163デフォルトの名無しさん
2011/10/28(金) 22:23:50.20なんで村井が出てくんだよw
0164デフォルトの名無しさん
2011/10/28(金) 22:24:06.82ネットワーク機器、特にルータならCisco(IOS)が主流だよ。
やっぱりここは答える方も初心者なのか?
よく分からないなら書き込まなけりゃ良いのに…
0165デフォルトの名無しさん
2011/10/28(金) 22:24:13.15アクセス権限ってあるでしょ。
0166デフォルトの名無しさん
2011/10/28(金) 22:29:55.21ああ、UNIXシステムはどこの馬の骨とも知れない人が適当なマシンを操作できると思ってたの?
0167デフォルトの名無しさん
2011/10/28(金) 22:31:03.65つーか、UNIX/インターネットの世界ではそれは常識(だった)
0168デフォルトの名無しさん
2011/10/28(金) 22:31:53.76家庭用の範囲である程度かじった程度なんじゃないのかな。
IOSってiPhoneの!?ってなりかねんよw
0169デフォルトの名無しさん
2011/10/28(金) 22:32:21.71いや無理だと思うけど、君らが可能っぽい体で反応したからさ・・
0170デフォルトの名無しさん
2011/10/28(金) 22:32:27.760171デフォルトの名無しさん
2011/10/28(金) 22:33:05.030172デフォルトの名無しさん
2011/10/28(金) 22:34:25.70クラック、クラックっていうけど具体的手法いえる奴ほとんどいないな。
不正アクセスっていう言葉は良く聞くけど、それはログインできるサーバ
にIDとパスを不正に取得して入るとかそういう意味のアクセスがほとんどだよね。
0173デフォルトの名無しさん
2011/10/28(金) 22:37:11.76質問をまとめようぜ。んで、くだ質に行っちゃいなよ。
0174デフォルトの名無しさん
2011/10/28(金) 22:39:30.58どれも同じような内容しか書いてなくないですか?
ソートならクイックだのマージだの・・シェルだのシェーカーだの
知ってるし・・って感じです。
もっと多く知りたいんですが・・
0175デフォルトの名無しさん
2011/10/28(金) 22:40:40.560176デフォルトの名無しさん
2011/10/28(金) 22:42:39.37同じような内容だからタイトルも似通ってるんじゃね?w
0177デフォルトの名無しさん
2011/10/28(金) 22:45:37.35> QNXのシステムは非常に小さく、フロッピーディスク1枚に納まってしまう。そして非常に高速であり機能的にも完備されている。
> 1990年代中盤、Quantum社は市場がPOSIXモデルに素早く移行しつつあるのを見て、カーネルの互換性を高めるための書き換えを決定した。
> そしてリリースされたのが QNX 4 である。
> 同時に QNX 用のX Window Systemも用意された。QNX 4 ではUNIX用ソフトウェアの移植が容易となり、
> Cisco の IOS-XR (IOSの新バージョン)は QNXベースである。
UNIXの定義
現実には、UNIXは以下に示す4種類の条件をひとつでも満たすOSを指す言葉として使われている。
1.UNIXの商標を管理する団体The Open Groupより、同団体が定義したSingle UNIX Specificationを満たすことの認証を受けたOS。
2.ベル研究所で開発されたオリジナルのUNIX及び、オリジナルのUNIXの派生OSとしてベルの認可を得た過去のOS。
3.オリジナルのUNIXを起源にもつOS。
4.POSIXなどのUNIXに関連する規格をみたす、UNIX互換なOS。
4で判断するとLinuxもIOSもUNIX
かなとおもったけど違うか。
0178デフォルトの名無しさん
2011/10/28(金) 22:47:37.56そんなお前にはこれが最適。
The Art of Computer Programming
0179デフォルトの名無しさん
2011/10/28(金) 23:09:58.58さんきゅー
日本語版もあったw
ゲーム作りたいんですよねー
ゲーム作るのもアルゴリズム考える力必要ですか?
0180デフォルトの名無しさん
2011/10/28(金) 23:41:31.52http://codepad.org/K3eFBuJv
0181デフォルトの名無しさん
2011/10/28(金) 23:46:56.57トイプログラムのうちはアルゴリズムを余り知らなくても組める。
やって面白いゲーム作ろうとすると、色々盛り込みたくなる。
問題は、処理時間がかかるようになつたり、コード量が増えて修正の手間が増え、バグ発見が難しくなること。
適切なアルゴリズム→処理高速化、再利用出来るコード→見通しのいいコードが理想だが、「適切なアルゴリズム」を選ぶためには、まずは当然アルゴリズムを知っておく必要がある。
この辺は鶏と卵の関係だから、高度なゲーム作りにトライしつつ、アルゴリズムの本とかを漁る事にぬると思う。
まず着手するのが手っ取り早いです。必要な知識は作っていくうちにおいおいわかってくると思います。
>ゲーム作りたいんですよねー
うらやましいですね。「まず創めること」がなにより一番難しいんですよね。
0183デフォルトの名無しさん
2011/10/28(金) 23:56:57.590184デフォルトの名無しさん
2011/10/28(金) 23:59:54.080185デフォルトの名無しさん
2011/10/29(土) 00:00:38.32一般的なのを沢山読むよりはやりたい方向に突っ走る方が良い気がする。
0186デフォルトの名無しさん
2011/10/29(土) 00:01:38.550187デフォルトの名無しさん
2011/10/29(土) 00:04:43.790188デフォルトの名無しさん
2011/10/29(土) 00:07:05.75>ゲーム作りたいんですよねー
に対してだろ。
余命幾許もないってことなんかな。
0189デフォルトの名無しさん
2011/10/29(土) 00:08:03.05早打ちスーパー囲碁みたいな思わぬところに乱数使うのは別として
0190デフォルトの名無しさん
2011/10/29(土) 00:09:08.190191デフォルトの名無しさん
2011/10/29(土) 00:09:14.87年とるといろいろ億劫になるんだよ
0192デフォルトの名無しさん
2011/10/29(土) 00:19:18.62確率的アルゴリズムはそれだけで一大分野だよ
0193デフォルトの名無しさん
2011/10/29(土) 00:51:52.84分散処理と混同してないか?
0194デフォルトの名無しさん
2011/10/29(土) 00:54:01.35Multicsも知らんのか?
0195デフォルトの名無しさん
2011/10/29(土) 00:57:51.86VAX11とかの頃はまだVT100とかのダム端末いっぱいぶら下げてみんなで使ってたんだよ。
0196デフォルトの名無しさん
2011/10/29(土) 00:59:29.95とりあえず「UNIXカーネルの魔法」読んどけ。
0197デフォルトの名無しさん
2011/10/29(土) 01:04:25.16表面上、UNIXはコマンドの命名法まで含めた多くの領域で Multics の影響を示している。
しかし設計思想は全く異なっており、可能な限りシステムを小さく保とうとしていた。
つまり、Multics で最も問題と思われた部分で違いを見せたのである。
"Unix"という名称(元々は「Unics」)は「Multics」からの連想である。
Multics の M が「multiplexed」(多重化)であるのと逆に、UNIX の U は「uniplexed」(単一化)だと噂された。
より現実的で直接的な手法を選び、Multicsを否定した設計者の思想がにじみ出ていると言えよう。
0198デフォルトの名無しさん
2011/10/29(土) 01:11:46.720199デフォルトの名無しさん
2011/10/29(土) 01:12:09.54MULTICS
...
高価なコンピューターを、1台で何台分にも使うことの出来るこのシステムは非常に注目されます。
...
UNIX
...
AT&T はMULTICS の開発が失敗に終わりそうだと見るとすぐに撤退を決めました。しかし、AT&Tから参加していた Ken は、
MULTICS に未練を感じていました。
なぜなら、彼は MULTICS で作成した「宇宙旅行ゲーム(Space Travel)」を非常に気に入っていたのです。
MULTICSプロジェクトから撤退してしまった今では、あの面白いゲームが遊ぶことが出来ません。
...
彼は、ゲームのために MULTICS のようなシステムを PDP-7 で作ることにしました。
しかし、MULTICS ほどのものは必要ありません。どうせ趣味なのですから。
そこで、彼は MULTICS のなかから気に入った機能だけを選び出して、小さな一人用システムを作り上げ、UNIX と名付けます。
UNI とは、「ひとつの」という意味で、MULTI の対義語でした。つまり、このシステムは MULTICS のパロディ版なのです。
...
その反面、複数人数で使うためのセキュリティ機構などは無視された作りとなっていました。
もともとゲームが遊べれば十分でしたから、セキュリティなんて不要なのです。
しかし、この UNIX システムは、彼一人で使うにはもったいないシステムでした。
彼は快く仲間の研究者にシステムを開放します。
彼らのグループはこのシステムに手を加え続け、十分実用になるシステムに育て上げます。
そして、セキュリティは甘いながらも、結局複数人数が同時に使えるシステムへと発展を遂げるのです。
0200デフォルトの名無しさん
2011/10/29(土) 01:25:02.930201デフォルトの名無しさん
2011/10/29(土) 01:28:52.65こちらで聞きます。
jpegファイルをCで読み込んで、mjpegのAVIファイルの作成をしたいいです。
色々みてると、AVIフォーマットはそれほど難しくなさそうですが、
わかりやすいHPを見つけられません。
jpegtoaviというオープンソースPGを落としてコンパイルしてみたのですが、
なんかうまく動かないです。引数の問題?
うまく動かせた人いらっしゃいますか?
また、1から実装するとして、わかりやすいHPないでしょうか?
0202デフォルトの名無しさん
2011/10/29(土) 01:42:25.820203デフォルトの名無しさん
2011/10/29(土) 01:49:23.76こういう話題になると調子に乗ってクソ長い書き込みをするおっさんどもは困るねw
それも大概はググったら簡単に出てくる内容でつまんねーし。
0204デフォルトの名無しさん
2011/10/29(土) 01:57:44.51おっさんじゃなくて実際に触ったことないお子様なんじゃないの?
0205デフォルトの名無しさん
2011/10/29(土) 02:01:35.13宿題程度の質問と、こういうCと直接関係ない話題なら馬鹿みたいにレス付くのにね。
0206デフォルトの名無しさん
2011/10/29(土) 02:05:54.17まあ俺もたいしたレスはしてないが。
0207デフォルトの名無しさん
2011/10/29(土) 02:06:57.480208デフォルトの名無しさん
2011/10/29(土) 02:14:01.64そういうのはこっちで聞いた方が良いんじゃね?
Cの範疇越えてるし。
画像処理 その13
http://hibari.2ch.net/test/read.cgi/tech/1301896601/
0209デフォルトの名無しさん
2011/10/29(土) 02:21:15.53そんなスレが。。。
ありがとうございます。移動します。
では。
0210デフォルトの名無しさん
2011/10/29(土) 02:23:45.890211デフォルトの名無しさん
2011/10/29(土) 09:26:43.24作成にあたって、Qtを試したことがあるけど、自分には分かりづらくて資料が相対的に少なく挫折しました。
主観で
Qt:無料、資料が少ない、分かりづらい、高環境、高デザイン
BC++:外販ライブラリ高め、資料一応ある、分かり安い、低環境、低デザイン
VC++:MSDN(?)問題外に高いし必要ない、資料豊富、普通の分かりやすさ、高環境、普通デザイン
だった。
Gtk+ってQtと関連してたと思うけど、まだ触ってないので、これから試してみます。
0212デフォルトの名無しさん
2011/10/29(土) 10:25:37.11レス番アンカー位しとけよ
こんなとこでスレ違いの質問してる糞みたいな初心者の意味不明のIDE評価なんて要らん。
0213デフォルトの名無しさん
2011/10/29(土) 11:48:50.11Qtは知らないけど、
>MSDN(?)問題外に高いし必要ない
MSDNオンラインで何か不満でも?
個人的にはVCLがわかりやすくて好きだった。
MFCは触りたくないが、今ならC#で.NETを操作する方が良いのでは?
全般的にどういうものを作りたくて評価しているか不明。
VC++でどういう点が不満になる?
それで使いたい外販ライブラリって何?
どっちにしてもWindowsプログラミング板に行くべきかな。
0214デフォルトの名無しさん
2011/10/29(土) 12:05:44.57"何が分からないのか分からない"レベルは論外としても
自分が使っているツールや参考にしてるページなんかの説明もせずにいきなり質問する人が多い。
こちらに読心力を要求するような難度の高い質問もあるしw
0215デフォルトの名無しさん
2011/10/29(土) 12:16:24.400216デフォルトの名無しさん
2011/10/29(土) 12:22:34.210217デフォルトの名無しさん
2011/10/29(土) 12:31:15.730218デフォルトの名無しさん
2011/10/29(土) 12:52:33.90そのMSDNの話じゃないでしょう
0219デフォルトの名無しさん
2011/10/29(土) 13:06:10.42えーっ、個人でMSDNサービス購入するって話?
VC++という製品の話と全く繋がらないのだけれど。
今から製品レベルの開発をするのなら、BCBの選択はありえないし、
外販ライブラリ(input manとかスプレッドシートなどかな?)
といい、どういうレベルで話をしているのかさっぱり見えないが。
0220デフォルトの名無しさん
2011/10/29(土) 13:40:29.82でしょうね
0221デフォルトの名無しさん
2011/10/29(土) 13:48:54.74それがいやなら回答者の立場で質問(聞け)スレへ来るなよ、迷惑な偽善だ
M$ のインシデント対応でさえ客にイミフはつきものと理解しているのに
回答義務のない者がそこまでガタガタ言って何になる
0222デフォルトの名無しさん
2011/10/29(土) 14:07:32.47プログラムをお勉強中の人間の質問と、お客様質問室へ寄せられる質問と同列に語るなよ。
0223デフォルトの名無しさん
2011/10/29(土) 14:10:32.700224デフォルトの名無しさん
2011/10/29(土) 14:15:23.690225デフォルトの名無しさん
2011/10/29(土) 14:17:23.30質問者がまともにアンカーつけてないので迷走してるけど多分
>>102
>>103
>>211
の流れだと思うんで、やりたいことは自作アプリ用のGUI作成みたい。
所謂コントロール部品のことをGUIライブラリとか言ってるからややこしくナットル。
ただ、ポトリペタのRAD開発をやりたそうでもあるので、そこら辺を明確にしろと言いたい。
ついでにスレ違いとも…
0226デフォルトの名無しさん
2011/10/29(土) 14:24:50.43>>102をよく読んでみると、API使ってウィンドウ表示させたいんじゃなくて、
単にテキストボックスみたいなのに文字列を表示させようとしてるだけみたいだな。
0227デフォルトの名無しさん
2011/10/29(土) 14:38:57.05用語が通じてない悪寒
0228デフォルトの名無しさん
2011/10/29(土) 14:48:46.82いまだにM$だなんて書いてる奴だもんな
無視しとくのが一番と思う
0229デフォルトの名無しさん
2011/10/29(土) 14:58:41.37printf("Apple\r");
usleep(2000000);
printf("Orange\r");
usleep(2000000);
printf("Grape\n");
としてみたのですが、最後の結果が「grapee」となってしまいます。
「Grape」のみ、正しく表示させるにはどのようにすればよいのでしょうか。
0230デフォルトの名無しさん
2011/10/29(土) 15:00:56.71printf("Grape \n");
0231デフォルトの名無しさん
2011/10/29(土) 15:06:40.000232デフォルトの名無しさん
2011/10/29(土) 15:25:36.550233デフォルトの名無しさん
2011/10/29(土) 15:33:43.94エスケープシーケンスってNT系のコマンドプロンプトじゃ使えないんじゃないの?
あれってなんで使えなくなったのかなぁ・・未だに理解不能。
0234デフォルトの名無しさん
2011/10/29(土) 15:47:50.07ansi.sys
0235229
2011/10/29(土) 16:04:00.14ありがとうございました。
0236デフォルトの名無しさん
2011/10/29(土) 16:18:07.870237デフォルトの名無しさん
2011/10/29(土) 17:26:02.48(質問者が環境を提示していないのに)特定の環境に依存した回答するなよ。
0238デフォルトの名無しさん
2011/10/29(土) 17:47:16.81使えるぞ
何せ「エスケープシーケンス」だからな
0239デフォルトの名無しさん
2011/10/29(土) 18:02:02.350240デフォルトの名無しさん
2011/10/29(土) 18:02:14.710241デフォルトの名無しさん
2011/10/29(土) 18:15:49.900242デフォルトの名無しさん
2011/10/29(土) 18:31:00.910243デフォルトの名無しさん
2011/10/29(土) 18:34:54.210244デフォルトの名無しさん
2011/10/29(土) 19:16:58.59ゲームの3DCG処理や人工衛星の姿勢制御とかに使える
0245デフォルトの名無しさん
2011/10/29(土) 20:36:46.35y=ax+b
ここにaは行列、x,y,bはベクトル
0246デフォルトの名無しさん
2011/10/29(土) 20:40:46.27#define ALLCARDS 52
int card[ALLCARDS];
void shuffle(){
srand((unsigned)time(NULL));
for(i=0; i<52; i++){
do{ rand()を使って0~51の乱数を生成してカードを指定 }while( フラグが立ったカードだったらやり直し )
使ったらカードにフラグを立ててマークしておく
}
}
int main(){
int i; for(i=0; i<100; i++){
//関数shuffleを呼び出してシャッフルされたカードデッキを作成
//手札のカードを5枚抽出して出力
} return 0;
}
文字数の関係で大幅に省略しましたが、こんな感じでトランプカードをシャッフルして山札を生成し、
その中から手札5枚を抽出して表示するという行程を100回繰り返すプログラムを作りました。
ですが1回あたりのループにかかる秒数が1秒を大きく下回るので、srand((unsigned)time(NULL));で生成されるシードが
毎回同じになってしまい、結果、生成される手札のカードも毎回同じになってしまいます。。。
どうすればいいのでしょうか?どなたか分かりましたら助けて下さい・・・
0247デフォルトの名無しさん
2011/10/29(土) 20:42:35.75srand は一回だけ呼ぶようにすればおk
0248デフォルトの名無しさん
2011/10/29(土) 20:51:35.44おおおおおお、なるほど・・・!!
0で初期化したグローバル変数を適当に作ってshuffle関数の呼び出しの度にカウントが1増えるようにし、
値が0の時だけsrand(ry)を実行するようにしたらうまくいきました!!
素早いヘルプほんとうに助かりました・・ありがとうございます!!
0249デフォルトの名無しさん
2011/10/29(土) 21:09:02.85いやmain関数で一回だけ呼べばいいじゃん
0250デフォルトの名無しさん
2011/10/29(土) 22:04:55.52例えば3個の要素からなる集合{a,b,c}でa,b,cは0〜24の任意の数をとるとします。
また一方で{0+i,3+i}(i<=24,i++)のものをredと定義します。
そして、{a,b,c}の中で部分集合{a,b}{b,c}{c,a}がすべてredであるような{a,b,c}の数はいくつであるか計算する方法を教えてください。
0251デフォルトの名無しさん
2011/10/29(土) 22:26:35.310252デフォルトの名無しさん
2011/10/29(土) 22:28:31.520253デフォルトの名無しさん
2011/10/29(土) 22:37:24.78宿題スレで聞いてみたら?
0254デフォルトの名無しさん
2011/10/29(土) 22:46:36.32#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *getstr() {
char buf[100] = "test";
return buf;
}
int main() {
int j=0;
char *s;
while(j++<5){
s = getstr();
printf("%s\n", s);
}
return 0;
}
5回、"test\n"が出力されるのを期待してるんですけど第一回目の
出力が私の環境(Linux+gcc)だと0x04になります。原因は何なのでしょうか?
0255デフォルトの名無しさん
2011/10/29(土) 22:51:11.02ローカル変数のアドレスを返してるからじゃろ
0256デフォルトの名無しさん
2011/10/29(土) 22:57:17.500257デフォルトの名無しさん
2011/10/29(土) 23:21:04.31ローカル変数だと何故マズいんでしょうか?
また改善策としては何があるのでしょうか?
グローバル変数にしちゃうとchar *getstr()と意義が無くなりそうだし…
0258デフォルトの名無しさん
2011/10/29(土) 23:22:45.440259デフォルトの名無しさん
2011/10/29(土) 23:24:11.09>>255,256,258
ありがとうございます!
0260デフォルトの名無しさん
2011/10/29(土) 23:31:26.720261デフォルトの名無しさん
2011/10/30(日) 00:15:02.93節子、それ線形変換やない。
0262デフォルトの名無しさん
2011/10/30(日) 00:17:39.57行列やベクトルに限らないよ
0263デフォルトの名無しさん
2011/10/30(日) 00:22:49.100264デフォルトの名無しさん
2011/10/30(日) 00:27:50.930265デフォルトの名無しさん
2011/10/30(日) 00:30:33.880266デフォルトの名無しさん
2011/10/30(日) 00:31:22.950267デフォルトの名無しさん
2011/10/30(日) 00:38:25.01違う。
0268デフォルトの名無しさん
2011/10/30(日) 00:52:52.400269デフォルトの名無しさん
2011/10/30(日) 01:11:15.15>5回、"test¥n"が出力されるのを期待してるんですけど第一回目の
>出力が私の環境(Linux+gcc)だと0x04になります。原因は何なのでしょうか?
この疑問に「直接」答えると、
printf() が一番最初に呼ばれるときに初期化の処理でスタック領域を使って、
getstr() 内の buf が割り当てられた領域を壊すから。
二度目以降はそれが発生しないから buf の内容が壊されない。
ちなみに自分の環境では -O3 を付けると「うまく」動きましたw それはなぜかというと...
0270デフォルトの名無しさん
2011/10/30(日) 10:22:09.25「うまく」ってこういう意味…?
0271デフォルトの名無しさん
2011/10/30(日) 11:22:46.02int *pでなくとも
int* pでいけると聞きました。
下のほうがしっくり来るので
常に下で書こうと思うのですが何か問題はあるでしょうか?
0272デフォルトの名無しさん
2011/10/30(日) 11:36:02.20int* a, b;
と書いたときに勘違いしなきゃいいけどな
0273デフォルトの名無しさん
2011/10/30(日) 11:42:09.07環境超依存な話をしているので違う環境で違う動作になっても不思議ではない。
C言語としての正しさも超越してるしねw
ちなみに自分の環境では-O3にするとwhileループのアンローリングとgetstr()の
インライン展開が行われて、 文字列の領域がつぶされずに済んでいる模様。
なので、もしここら辺を制御するコンパイラーオプション(インライン展開の方が本質的)
があったら使ってみるといいかもw
0274デフォルトの名無しさん
2011/10/30(日) 11:46:48.08Macだと
$ gcc -Wall -ansi main.c
main.c: In function 'getstr':
main.c:7: warning: function returns address of local variable
$ ./a.out
$ gcc --version
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
こんな感じに*sに何もない。こんなのは処理系依存で、これに何かを期待しても無意味では?
0275デフォルトの名無しさん
2011/10/30(日) 11:50:19.52返り値の格納先が指定されているかどうか判断する方法ってありますか?
0276デフォルトの名無しさん
2011/10/30(日) 12:04:12.350277デフォルトの名無しさん
2011/10/30(日) 12:07:20.040278デフォルトの名無しさん
2011/10/30(日) 12:08:20.330279デフォルトの名無しさん
2011/10/30(日) 12:15:36.17他は何で書いても良い
0280デフォルトの名無しさん
2011/10/30(日) 12:19:57.30言語自体はもう習得済みならその言語で作れ。
CとC++どちらが楽かと聞かれればC
0281デフォルトの名無しさん
2011/10/30(日) 12:52:25.04>これに何かを期待しても無意味では?
馬の耳に念仏を唱えても無意味ということですね、わかります。
0282デフォルトの名無しさん
2011/10/30(日) 13:21:50.15■アドレス空間も32bit
■Byte単位でのメモリアクセスが可能
以上の条件で、アドレス0x800000番地と0x800001番地の各ビットを全て1にするプログラムを記述せよ。
課題でもらった問題なのですが、解けずに困っています。
そもそもC言語って、こちら側でアドレスを指定していじることが出来るんでしょうか?
ご助力願います。
0283デフォルトの名無しさん
2011/10/30(日) 13:32:48.26p[0] = p[1] = 0xff;
0284デフォルトの名無しさん
2011/10/30(日) 13:32:50.51#define Y (*(volatile unsigned char *)0x800001)
int main(void) {
X = 0xFF ;
Y = 0xFF ;
return 0 ;
}
0285デフォルトの名無しさん
2011/10/30(日) 13:46:40.270286デフォルトの名無しさん
2011/10/30(日) 13:55:17.06当方Hello Worldを返すところからのレベルです
0287デフォルトの名無しさん
2011/10/30(日) 13:57:37.56http://www.google.co.jp/search?q=vc%2B%2B+dll+%E4%BD%9C%E6%88%90
0288デフォルトの名無しさん
2011/10/30(日) 14:01:49.69レスありがとうございます。実行してみたところ、
2行目、値を代入する部分でエラーが起こりました。
でも、ポインタ型でキャストすればアドレスの代入はできるんですね。
0289デフォルトの名無しさん
2011/10/30(日) 14:04:28.91普通の環境ではエラーになるのが正しい。
組み込み用途とか、OSのカーネルなんかでデバイスがメモリにマッピングされてるような状況では
アドレスを直接指定したアクセスが必要。
0290デフォルトの名無しさん
2011/10/30(日) 14:08:40.980291デフォルトの名無しさん
2011/10/30(日) 14:14:34.47そうだとしたら、実行してエラーが出てもコンパイルさえ通ればOKなのかもしれませんね。
0292デフォルトの名無しさん
2011/10/30(日) 14:16:07.900293デフォルトの名無しさん
2011/10/30(日) 15:04:22.09全般的に何言っているか不明。
「返り値の格納先が指定されている」ってどういう状態の事を言ってる?
戻り値の方がvoidでは無い関数なら、関数コールしたときに戻り値用の領域を
実行系が確保してくれる。だから戻り値の型がvoidかそうでないかを見れば良い。
そういうことを言っているのか?
0294デフォルトの名無しさん
2011/10/30(日) 15:16:42.16それ問題文の欠陥だな
1 を書き込むと 0 になるポートとか実際あるし (負論理とかでなく)
0295デフォルトの名無しさん
2011/10/30(日) 16:21:21.23while (fgetws(data, 1000, fp) != NULL)
{ /* スペース.を区切りに文字列を抽出 */
tp = wcstok( data, L"()" );
wcscat(text,tp);
while ( tp != NULL ) {
tp = wcstok( NULL,L"()" );
wcscat(quetext,tp);
}
とすると
保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。
と出ます。どうすればいいでしょうか?
0296デフォルトの名無しさん
2011/10/30(日) 16:27:15.410297デフォルトの名無しさん
2011/10/30(日) 18:52:40.45zeromemoryとかメモリ系の関数がいくつもあるようなのですがどれが良いでしょうか?
0298デフォルトの名無しさん
2011/10/30(日) 18:56:11.780299デフォルトの名無しさん
2011/10/30(日) 18:56:57.330300デフォルトの名無しさん
2011/10/30(日) 21:12:18.02strcpy()でいいよ。
単にstr[0] = 0; でもいいけど。
0301デフォルトの名無しさん
2011/10/30(日) 22:41:35.36>普通の環境ではエラーになるのが正しい。
単純に 0x800000 あたりが書き込めるような環境だったらとりあえずエラーにならないと
思うけど、そういう環境は「普通」じゃないということですか?
0302デフォルトの名無しさん
2011/10/30(日) 22:46:54.24いじめないでやれよw
0303デフォルトの名無しさん
2011/10/30(日) 23:01:05.30sscanf( moji , "a-z 0-9A-Z,;" )みたいに
wscanfで(moji,L"あ-ん ;、。亜-和")みたいにするにはどうすれば良いですか?
0304デフォルトの名無しさん
2011/10/30(日) 23:04:12.560305デフォルトの名無しさん
2011/10/30(日) 23:15:49.58”あいう かきく 赤医”みたいな文字列を一つとして抜き出したいのですが
どうすれば良いでしょうか?間にスペースと文字が何個あるかわからないけど最初と最後は日本語で終わります
0306デフォルトの名無しさん
2011/10/30(日) 23:25:26.07そのままで文字列1つじゃないか。
0307デフォルトの名無しさん
2011/10/30(日) 23:31:27.29L"あいう かきく 赤医"
ってのがあって結果が
const wchar_t* hoge[3];
hoge[0] = L"あいう";
hoge[1] = L"かきく";
hoge[2] = L"赤医";
みたいになりゃいいの?
0308デフォルトの名無しさん
2011/10/30(日) 23:33:22.05勢い余って書いちゃったけどメンドクサイから訂正しなかった。
実際は、
・そのアドレスが書けないような場所ならその場でエラーになる。
・書けるけど何かに使われてるところを爆撃したのなら、後から予期しないエラーの原因になる。
・書けて、特に使ってないような場所を爆撃したのなら、特に何も起こらない。
そんな感じでよろしいでしょうか?
0309デフォルトの名無しさん
2011/10/30(日) 23:50:14.54struct all{
int a;
char *b[128];
}
みたいな感じに書くことってできる?
0310デフォルトの名無しさん
2011/10/30(日) 23:52:57.190311デフォルトの名無しさん
2011/10/30(日) 23:57:18.15できないと思った根拠が知りたい
0312デフォルトの名無しさん
2011/10/31(月) 00:03:19.23じゃあこれを例えばscanfとかで引用するときはどう書けばいい?
>>311
いや、こんな感じのプログラム組んでてちょっと詰んだからどうすればいいのかと思って
0313デフォルトの名無しさん
2011/10/31(月) 00:07:05.220314デフォルトの名無しさん
2011/10/31(月) 00:11:44.23未定義・・・ですらない
アプリで好きにやってちょ、の一言
0315デフォルトの名無しさん
2011/10/31(月) 00:15:31.69struct data{
int num;
char name[128];
char *sub[128];
};
int main(int argc, char *argv[])
{
struct data all[50];
scanf("%s", ○○); //sub[128]で文字列受け取り
printf("%s", △△); //scanfで受け取ったものを標準出力
return 0;
}
みたいなプログラムだったら○○の中には何を入れたらいい?
0316デフォルトの名無しさん
2011/10/31(月) 00:17:41.95>scanfとかで引用するときは
引用ってなんじゃ?
エスパーすると、とにかくscanfの引数に型を合わせる必要があるので
struct all{
int a;
char *b[128];
} hoge;
scanf("%s", hoge.b);
だな。
0317316
2011/10/31(月) 00:23:27.72あれ、よく見ると文字列格納したいメンバの型がちょっと変。
struct data{
int num;
char name[128];
char *sub[128]; // → char sub[128];
};
が正解じゃない?ってか、char sub[128];のつもりで
scanf("%s", hoge.b);って答えていた。
char *sub[128]; だったら
all[0].sub[0] = "hoge";
みたいな感じ。
0318デフォルトの名無しさん
2011/10/31(月) 00:24:51.26ポインタの配列に文字列を入れたいの?
型を間違ってるんじゃない?
0319デフォルトの名無しさん
2011/10/31(月) 00:25:42.59void tukuttakannsuu(* m_hairetu){m_hairetuなんとかなんとか }
どっかで tukuttakannsuu(*hairetu);
これってちゃんとポインタを渡す効率の良い書き方になってますか?
0320デフォルトの名無しさん
2011/10/31(月) 00:27:36.340321デフォルトの名無しさん
2011/10/31(月) 00:29:30.28へんな省略すんなよ。何がなんだかだぞ。
void func(char *p) { p[0] とかなんとか}
char a[20];
func(a);
こんな感じならよい。*hairetuを渡そうとしている時点で、相当な勘違いをしていると思う。
0322デフォルトの名無しさん
2011/10/31(月) 00:49:41.630323デフォルトの名無しさん
2011/10/31(月) 01:00:08.11#include<stdio.h>
struct data{
int num;
char *name[128];
char *sub[128];
};
int main(int argc, char *argv[])
{
struct data all[50];
printf("出席番号を入力してください:");
scanf("%d", &all[0].num);
printf("名前を入力してください:");
scanf("%s", &all[0].name[0]);
return 0;
}
こういう感じってこと?
0324デフォルトの名無しさん
2011/10/31(月) 01:10:29.81ちゃんとポインタを理解しろ
char sub[128];にして
scanf("%s", all[0].name);だ
0325デフォルトの名無しさん
2011/10/31(月) 01:11:35.36char name[128];にして
scanf("%s", all[0].name);だ
0326デフォルトの名無しさん
2011/10/31(月) 01:54:55.34できたわthx
もう一つ質問なんだが
#include<stdio.h>
struct data{
int num;
char name[128];
};
int main(int argc, char *argv[])
{
struct data all[50];
printf("出席番号を入力してください:");
scanf_s("%d", &all[0].num);
printf("名前を入力してください:");
scanf_s("%s", &all[0].name);
printf("%d番 %s", all[0].num, all[0].name);
fflush(stdin);
getchar();
return 0;
}
ってしたら%sの部分が表示されないんだがこれは何で?
0327デフォルトの名無しさん
2011/10/31(月) 01:57:18.76&all[0].name→all[0].name
配列名はすでにポインタだから
0328デフォルトの名無しさん
2011/10/31(月) 02:00:11.31scanf_s("%s", all[0].name);
にしても表示されないんだが
0329デフォルトの名無しさん
2011/10/31(月) 02:10:30.11struct data{
int num;
char name[128];
};
int main(void)
{
struct data all[50];
printf("出席番号を入力してください:");
scanf_s("%d", &all[0].num);
printf("名前を入力してください:");
scanf("%s", all[0].name);
printf("%d番 %s", all[0].num, all[0].name);
return 0;
}
これでちゃんと動いたが?
0330デフォルトの名無しさん
2011/10/31(月) 02:19:08.26ほんとだ…
scanf_s("%s", all[0].name); じゃ動かなかったのに
0331デフォルトの名無しさん
2011/10/31(月) 02:28:49.11VC++使ってないからよくわからんけどw
0332デフォルトの名無しさん
2011/10/31(月) 02:35:02.24ちなみに&を付けても同じアドレスを指すから、「一応」動くんじゃないだろうか。
確かに論理的に間違ってはいるけど。
0333デフォルトの名無しさん
2011/10/31(月) 02:54:45.76まじか面倒くせぇ
わざわざありがとう
0334デフォルトの名無しさん
2011/10/31(月) 03:52:51.540335デフォルトの名無しさん
2011/10/31(月) 04:21:34.960336デフォルトの名無しさん
2011/10/31(月) 04:24:59.65めんどくさいとかじゃなくて。なぜ_sを使うのかを見ないと。
バッファオーバーランしてもいいならいいけど。
>>332
一応じゃなく、動く。
0337デフォルトの名無しさん
2011/10/31(月) 04:29:16.91#include <stdio.h>
int main(void) {
char c[100][80];
int zenkaku, field, item, k, lead, i;
unsigned char u[] = "あいう アイウ a-z0-9A-Z,; かきく 赤医";
for(field = 0, item = 0, k = 0, i = 0; u[i] != '\0'; i++) {
lead = u[i];
if(lead == ' ') {
if(field && zenkaku) {
c[item++][k] = '\0';
k = 0;
}
field = 0;
continue;
}
field = TRUE;
zenkaku = 0;
if(0x81 <= lead && lead <= 0xFC) {
if(0xA1 <= lead && lead <= 0xDF) continue; /* 。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚ */
zenkaku = TRUE; /* シフトJISコードのいわゆる全角 */
c[item][k++] = (char)lead;
if(u[++i] == '\0') return 1; /* 2バイトめが無いエラー */
c[item][k++] = (char)u[i];
}
}
if(field && zenkaku) c[item++][k] = '\0';
for(i = 0; i < item; i++) puts(&c[i][0]);
return 0;
}
0338デフォルトの名無しさん
2011/10/31(月) 04:55:48.83そんな表現を弱めに書いたところをツッコまなくてもw
まあ、プログラム(の意味というかデータ型とというか)としては間違ってるんだし
「たまたま動く」とか言った方が適切ではないかと。
0339デフォルトの名無しさん
2011/10/31(月) 04:58:22.38文字列が空になったのってどう判定すればいいんでしょうか?
例えば
char *strptr = "ABCDE";
として,strptr,strptr+1,strptr+2・・・とポインタ演算の加算値を増やしながら出力していって
”ABCDE”→”BCDE”→"CDE"→"DE"→"F"→?
最後strptr+5になったところでとめたいのですが・・・
0340338
2011/10/31(月) 05:01:20.46strlenとかライブラリ関数を使って文字列の長さを測るのはナシの方向で・・・
0341デフォルトの名無しさん
2011/10/31(月) 05:01:47.86失礼しました
0342デフォルトの名無しさん
2011/10/31(月) 05:04:48.22FAQでも読んで寝てろ。
http://www.kouno.jp/home/c_faq/c6.html#12
0343デフォルトの名無しさん
2011/10/31(月) 05:06:52.650344デフォルトの名無しさん
2011/10/31(月) 05:39:59.58コンパイラはgcc4.4.5を使用しています。
char str[3][4] = {"abc","def","ghi"};
char (*ptr)[4];
ptr = str;
printf("%s\n",ptr + 1);
printf("%s\n",ptr[1]);
printfで文字列を表示させたいときはprintf("%s\n",文字列の先頭アドレス)
とすればいいんですよね?
printf("%s\n",ptr + 1);がdefと表示されるのはわかるのですが
なぜprintf("%s\n",ptr[1]);でもdefと表示されるのかわかりません。
ptr[1]は*(ptr + 1)と同じだから
printf("%s\n",ptr[1]);のptr[1]は先頭アドレス
の中に入っている内容(def\0)をアドレスとして見てしまうと思うのですが・・
よろしくお願いします。
0345デフォルトの名無しさん
2011/10/31(月) 05:48:06.380346デフォルトの名無しさん
2011/10/31(月) 06:09:00.36ptr[1]の型を再考すること
0347デフォルトの名無しさん
2011/10/31(月) 06:49:41.65ありがとうございます。
すみませんもう一点、文字列の一文字目を比較したいのですが
strncmpはナシで
str1[0] == str2[0]みたいに配列として添字指定するのもナシで
何か方法ありますでしょうか?
0348デフォルトの名無しさん
2011/10/31(月) 06:50:26.58>>346
*pをp[]のように変形出来るのって引数でのみでしたっけ?
プログラミングをやるの久しぶりで今手元にポインタ関連の本がないので
もし指摘していることとまったく違うこと言っていたらすみません。
0349デフォルトの名無しさん
2011/10/31(月) 07:11:59.06ptr[1]はchar[4]型だから問題無し
ptr[1][0]だと'd'をアドレスとしてみるからマズイかな
0350デフォルトの名無しさん
2011/10/31(月) 08:08:48.22お前みたいな奴は >>342 のようなレスを考えてるかもしれないとか思って
あらかじめ >>338 に「データ型」とか書いてやったのに、本当にそうきたかw トホホ。
0351デフォルトの名無しさん
2011/10/31(月) 08:35:24.93ptrはcharへのポインタ変数なのにptr[1]はchar[4]型・・?
だめだ、知識が足りないぽいです。
本屋行ってきます。
0352デフォルトの名無しさん
2011/10/31(月) 08:38:18.53違います
0353デフォルトの名無しさん
2011/10/31(月) 09:09:09.13例えばchar str[4];とした場合、strの型はchar*型でなく、char[4]型。
もし、これがchar*型なら、char *str;と同じになってしまう。
配列とポインタは違うものだという認識はお持ちだとは思いますが。
実行文の中では、char[4] → char* の変換をCが自動的に頻繁に行うので、
char*型だと錯覚しやすいです。
0354デフォルトの名無しさん
2011/10/31(月) 10:16:39.66みんなどうやって銀行丸めを実装してるんだろうか
0355デフォルトの名無しさん
2011/10/31(月) 10:39:39.42まじめに10進演算
0356デフォルトの名無しさん
2011/10/31(月) 11:16:14.37矢追町成増を思い出した
0357デフォルトの名無しさん
2011/10/31(月) 11:57:28.47+0.5してfloorと-0.5してceilが食い違ったら偶数の方を採用
でいいんじゃないの?
==でもいいんじゃないかな?
銀行丸めの特別な処理ってその時だから
0358デフォルトの名無しさん
2011/10/31(月) 13:31:41.840359デフォルトの名無しさん
2011/10/31(月) 13:47:52.490360デフォルトの名無しさん
2011/10/31(月) 14:01:33.75トホホ?
珍しい。キモさ全開だな。
0361デフォルトの名無しさん
2011/10/31(月) 14:23:22.73borlandC++compilerが計算してくれません。どこか間違ってるでしょうか。
#include <stdio.h>
int main(void)
{
int souhin1,kazu1,souhin2,kazu2,daikin,money,oturi;
double tax;
syouhin1=198;
kazu1=1;
syouhin2=138;
kazu2=2;
money=1000;
tax=1.05;
daikin=(int)((syouhin1*kazu1+syouhin2*kazu2)*tax);
oturi=money-daikin;
printf("お釣り%d円\n",oturi);
return 0;
}
1本198円の清涼飲料水1本と、1本138円の牛乳2本を購入し、
千円札で払った場合のお釣りを求めよ。
ただし、5%の消費税を追加し、お釣りの額は整数とする。
0362デフォルトの名無しさん
2011/10/31(月) 14:29:23.410363デフォルトの名無しさん
2011/10/31(月) 14:31:31.290364デフォルトの名無しさん
2011/10/31(月) 14:32:44.81ありがとうございます!
まったくyが抜けてるなんて気付きませんでした。。。
0365デフォルトの名無しさん
2011/10/31(月) 14:39:47.41コンパイラに説教されるだろ
0366デフォルトの名無しさん
2011/10/31(月) 15:31:04.150367デフォルトの名無しさん
2011/10/31(月) 15:37:25.83成り下がることが理解できているのにデータ型が云々言ってるからだめなんじゃないか?
0368デフォルトの名無しさん
2011/10/31(月) 16:00:40.41てかローマ字ならoturiじゃなくてotsuriだし、
kazuもkosuとかkosuuとかのわかりやすい表現使った方が誰が見てもわかりやすいしいいよ
0369デフォルトの名無しさん
2011/10/31(月) 16:01:45.920370デフォルトの名無しさん
2011/10/31(月) 16:10:02.64まだそれは考えなくていいと思うよ
0371デフォルトの名無しさん
2011/10/31(月) 17:25:59.040372デフォルトの名無しさん
2011/10/31(月) 17:27:27.200373デフォルトの名無しさん
2011/10/31(月) 17:43:07.76分子の状態密度という物を計算するために以下のようなプログラムを作りました。
しかし、for文が多くて見ずらく、他の分子への応用が効かないため
もっとシンプルなプログラムに書き換えたいのですが、初心者なもので良いアイデアが浮かびません。
具体的に言うと、下記のプログラムの様に〜量子と分けずに
何量子であっても計算できるようなプログラムを書きたいです。
皆さんの知恵を貸して下さい。
化学のスレッドで質問しようかと思いましたが、こちらの方が
よい解答が得られると考えこちらに質問させて頂きました。
スレ違いでしたらすいません。
ぜひ解答お願いします。
http://ideone.com/VvSFK
0374デフォルトの名無しさん
2011/10/31(月) 17:50:08.210375デフォルトの名無しさん
2011/10/31(月) 18:24:06.41普通
通じないやつは脳みそ蛆わいてる
0376デフォルトの名無しさん
2011/10/31(月) 18:43:51.78化学が専門なら、haskell覚え直した方が良いんじゃ無いか?
速度が気になるならhaskellコンパイラにcのソース吐かせてcコンパイラでコンパイルすれば良い
0377デフォルトの名無しさん
2011/10/31(月) 18:44:25.86n進数みたいな感じで処理させれば多重ループを組まなくてもいけそうじゃね?
i10についてやってみるとこんな感じ。
http://ideone.com/8Rzva
繰り上げる時だけ気をつけて回すだけで済むし、でかい配列を使い回せばいいし。
0378デフォルトの名無しさん
2011/10/31(月) 18:49:26.38!strcmpだとどういう考え方になるんですか?
二つの文字列が同じではない場合に0を返すってことであってますか?
0379デフォルトの名無しさん
2011/10/31(月) 18:52:15.00再帰呼出に書き換えたら所要時間6倍になったw
0380デフォルトの名無しさん
2011/10/31(月) 19:01:18.88JavaのJDKとどっちがいいですか?
JDKの場合グラフィック関係が最初から豊富な感じのイメージなんですが。
ゲーム製作関係のスレって過疎ってるんですよねー・・
2chってクリエイティブな人少ないの?すいませんね・・
0381デフォルトの名無しさん
2011/10/31(月) 19:03:10.650382デフォルトの名無しさん
2011/10/31(月) 19:04:42.13はい
>>379
できるなら末尾再起に。
>>380
Javaでできたゲームってあんまり見たことないような。
0383デフォルトの名無しさん
2011/10/31(月) 19:07:39.27ありがとうございます
0384デフォルトの名無しさん
2011/10/31(月) 19:08:53.48違う
!strcmp は常に 0
printf("%d", !strcmp);
0385デフォルトの名無しさん
2011/10/31(月) 19:13:05.13gcc+OpenGLで作られたゲームならlinux環境に腐る程
vc+DirectXで作られたゲームならwin環境に腐る程
0386デフォルトの名無しさん
2011/10/31(月) 19:13:25.60if (strcmp(a, b) == 0) { 〜 } と
if (!strcmp(a, b)) { 〜 } は同じ。
0387デフォルトの名無しさん
2011/10/31(月) 19:15:28.30>>384
わかってるくせにアスペみたいな事書いてもしょうがないだろ。
0388デフォルトの名無しさん
2011/10/31(月) 19:18:31.99お察しの通りifの条件式での!strcmpの扱いについてつまづいていたのでようやく分かりました
ありがとうございます
ほんとに助かりました‥‥
0389デフォルトの名無しさん
2011/10/31(月) 19:26:30.29再帰呼出に書き換えたもの
所要時間3倍くらい
http://ideone.com/kUOEw
max min n m の変更があるなら注意
元のソースコード に沿って hantei は 0 クリアしないようにしてある
0390デフォルトの名無しさん
2011/10/31(月) 19:30:29.23入力された整数が偶数なら2で割って、奇数なら3倍してから1足す
これが1になるまで繰り返すっていう内容なんですが、
#include<stdio.h>
int main(){
int n,count,s;
count = 1;
s = n/(count*2);
printf("自然数を入力して下さい。:");
scanf("%d",n);
if(n == 1){
printf("1\n");
}else{
for(;s == 1;count++){
if(s % 2 == 0){
printf("%d÷2=%d\n",s,s/2);
continue;
}else{
printf("%d×3+1=%d\n",s,s*3+1);
continue;
}
}
}
return 0;
}
動きません・・どこをどう直したら動きますか?
お礼は弾みます
0391デフォルトの名無しさん
2011/10/31(月) 19:40:32.67どこから突っ込んで良いのか。。。
取り敢えずnが初期化されてない
forじゃなく、whileを使え
それ以前にもう一回cの入門書やり直せ
0392デフォルトの名無しさん
2011/10/31(月) 19:42:35.01forで書けという制約付きでして(´;ω;`)
初学ですみません。。
0393373
2011/10/31(月) 19:42:51.10>>376
>>377
>>379
>>389
皆さん返信ありがとうございました。
特に377さん、389さん、わざわざプログラムを書いて頂きとても勉強になりました。
もっと勉強して自分でも書けるようになりたいと思います!!
また何かあれば質問するかもしれませんがその時はよろしくお願いします。
0394デフォルトの名無しさん
2011/10/31(月) 19:47:14.19一行一行、自分が何を意図しているのかコメント入れてみてよ
0395デフォルトの名無しさん
2011/10/31(月) 19:52:27.98まともなwindowsゲームを作成したいならVC++がオススメ
expressならタダだしね
最近のゲーム機は大体対応してるからプロも使ってる人が多い
(流石にexpressじゃないけど)
0396デフォルトの名無しさん
2011/10/31(月) 19:55:15.90宿題スレじゃねそれ
0397デフォルトの名無しさん
2011/10/31(月) 19:56:11.32fundumental が常に 0 以上であるという保証があるときに限り
>>389 のソースコードを
if(bxx_index>depth)
↓
if(freq>=max) return;
if(bxx_index>depth)
のように書き換えれば(48行目に挿入)すれば元よりも早くなるよ
0398デフォルトの名無しさん
2011/10/31(月) 19:57:41.31#include<stdio.h>
int main(){
int n,count,s;
count = 1;
s = n/(count*2);
printf("自然数を入力して下さい。:");
scanf("%d",n);//*nを入力
if(n == 1){
printf("1\n");//*1が入力されたら1表示してオワリ
}else{
for(;s == 1;count++){
あれ?自分でも訳わからんくなってきた・・・
0399デフォルトの名無しさん
2011/10/31(月) 19:58:40.76そっちあたりやす
すれ汚しすんませんした。。
0400デフォルトの名無しさん
2011/10/31(月) 20:01:49.35ゲームって部品集めて作るんじゃん。オブジェクト志向のjavaが適しているよね。
最初から一本筋で作らないでしょ。Cの場合ある程度一本道じゃん。
0401デフォルトの名無しさん
2011/10/31(月) 20:04:29.76何言ってるのか分かんない
0402デフォルトの名無しさん
2011/10/31(月) 20:09:45.99C言語って複雑な処理も全部一気に作らないとだめじゃないですか。
Javaの場合、少しずつ、少しずつ作れるでしょ?クラスごとに作るから。
0404デフォルトの名無しさん
2011/10/31(月) 20:13:02.15そりゃ貴方が下手だから。
0405デフォルトの名無しさん
2011/10/31(月) 20:22:19.530406デフォルトの名無しさん
2011/10/31(月) 21:28:01.46Javaでクラスごとに書いても、きちんと分割して設計できてないと結局同じ
逆に、ちゃんとした設計ができてれば、Cで書こうがJavaで書こうが「少しずつ作れる」
まあオブジェクト指向にしやすくなってるのはJavaだけどね
0407デフォルトの名無しさん
2011/10/31(月) 21:46:18.490408デフォルトの名無しさん
2011/10/31(月) 21:50:41.06それだけでオブジェクト指向プログラミングになれば、苦労はしないよ。
Javaだとクラス定義が必須になるが、だからといってOOPらしい
プログラムになるかは、また別の話。
例えばJavaやC#で全てをクラスフィールドとかにしていると、それはもうOOPとは言えない。
とりあえずマルチプルインスタンスが扱えるようになってれば、OOPらしいとは
言えるかも。
0409デフォルトの名無しさん
2011/10/31(月) 21:53:13.65>>402だが見方してくれてありがとう、やっぱゲーム作るのはJavaかC#しかないんだよな・・
0410デフォルトの名無しさん
2011/10/31(月) 21:55:33.52プロもみんな使ってるC++オススメ
0411デフォルトの名無しさん
2011/10/31(月) 21:56:10.42君にはRPGツクールがおすすめ
0412デフォルトの名無しさん
2011/10/31(月) 22:00:11.54ゲームボーイはCやぞ
PSはC++なんかな
JavaやC#では碌なゲームは作れないと相場が決まっている
0413デフォルトの名無しさん
2011/10/31(月) 22:05:38.57そうでない言語でも「複雑な処理も全部一気に作らないとだめ」なんてことはない
0414デフォルトの名無しさん
2011/10/31(月) 22:06:38.990415デフォルトの名無しさん
2011/10/31(月) 22:07:48.87お前さん何か勘違いしているぞ。
私は>>402は的外れだと言っている。
Cでもモジュール単位でプログラムが可能。OOPも不可能ではない。
少なくともOOP的な設計は十分できる。
JavaやC#だからといってOOPに沿ったプログラムが出来るわけじゃない。
常にヘボは恐ろしいプログラムを書く。言語は関係ない。
それがわかっていないお前さんは危ないぞ。
>>412
>JavaやC#では碌なゲームは作れないと相場が決まっている
それは作るゲーム次第。描画の速さやレスポンスが問題にならないなら
JavaやC#でもいいんじゃないの。ノベルゲームとか、ポーカーとかなら。
アクションゲームやシューティングなら低レベルAPIが使えないと、
まともなゲームになりそうにないな。XNAってC#やVBで実用的に使えるんだっけ?
まぁ普通はVC++使うんだろうな。
0416デフォルトの名無しさん
2011/10/31(月) 22:12:11.29携帯アプリぐらいしか思いつかんな
C#は・・・まったく知らん
何かC#で作られた多少なりとも有名なゲームってあるのか?
0417415
2011/10/31(月) 22:14:02.16それなら、C#が一番のおすすめになるわ。
.NETで実用的な速度が出るくらいハード、ソフト環境が整ってきたってことか。
それなら富豪的アプローチでOK.
いい時代になったもんだ。
※完全にCの話ではなくなっているね。
0418デフォルトの名無しさん
2011/10/31(月) 22:23:40.32Cだけで書いてるのにめっちゃオブジェクト指向だぞw
0419デフォルトの名無しさん
2011/10/31(月) 23:08:37.46まさに
アセンブラで構造化じゃないコード書いてたときに絡んできた元 COBOLer と
恐ろしく希薄な議論(口論)にくたびれ果てたことがある
ダミーセクションなんて序の口で無条件分岐だけで作る再帰や SVC 風のシーケンスとか
読みもしないで自説を一方的に喚くだけで、邪魔以外の何者でもなかった
「何を考えることができるかを決められ凝り固まった人」の相手は特別手当ほしい
0420デフォルトの名無しさん
2011/10/31(月) 23:10:48.35思いますが・・プログラマーの性でしょうか?
0421デフォルトの名無しさん
2011/10/31(月) 23:16:36.24ポインタのポインタじゃなくて普通にポインタ使えよって思っちゃうんだけどなんでポインタのポインタなんかあるの?
0422デフォルトの名無しさん
2011/10/31(月) 23:19:15.000423デフォルトの名無しさん
2011/10/31(月) 23:20:04.51directXのラッパーであってると思うが。
.NETのコード部は遅いが、unsafeで書かれた部分はそうでもないってことでしょ。
int main(int argc, char **argv)
0425デフォルトの名無しさん
2011/10/31(月) 23:24:13.09*p
*(*p)
これって結局指し示してる場所は同じなんだから*pでよくね?って思っちゃうんだよ!なぜか!
0426デフォルトの名無しさん
2011/10/31(月) 23:28:18.940427デフォルトの名無しさん
2011/10/31(月) 23:30:03.590428デフォルトの名無しさん
2011/10/31(月) 23:31:42.580430デフォルトの名無しさん
2011/10/31(月) 23:58:31.39そう、働かないとならないケースに出会うまでは働かなくてよい
0431デフォルトの名無しさん
2011/11/01(火) 00:01:39.72よお割れ厨
0432デフォルトの名無しさん
2011/11/01(火) 00:12:55.65つまり遅延評価だな。
0433デフォルトの名無しさん
2011/11/01(火) 00:14:12.02#include <stdlib.h> /* long int strtol(const char *s, char **endptr, int radix); */
int main(void)
{
char *p;
long la;
la = strtol("1234567890円", &p, 10);
printf("la = %ld\n%s at p\n", la, p);
return 0;
}
0434デフォルトの名無しさん
2011/11/01(火) 00:16:24.83http://hibari.2ch.net/test/read.cgi/linux/1320073565/
0435デフォルトの名無しさん
2011/11/01(火) 00:18:55.14(C++でなくC言語でコンパイルしてるからな念のため)
setjmp(ErrorEntry)
とすると変数ErrorEntryに値がセットされなかったが
setjmp(Env)
とすると変数Envに値がセットされた
これってコンパイラのバグかな?お前らのコンパイラではどうなってますか?
0436デフォルトの名無しさん
2011/11/01(火) 00:30:48.49キャラ等オブジェクトは真四角の小ポリゴン、デフォのテクスチャは粗い、
その分動きは細かく普通のマシンで充分速い、描画farは64bit環境推奨、mod大流行
とかがjavaの功罪か
0437デフォルトの名無しさん
2011/11/01(火) 00:34:29.410438デフォルトの名無しさん
2011/11/01(火) 00:59:43.40んじゃあ
無限ループとして動くforの使い方
for(;;)
これを使って、後は自分で考えろ
0439デフォルトの名無しさん
2011/11/01(火) 01:05:19.46配列の配列のポインタとかで
0440デフォルトの名無しさん
2011/11/01(火) 01:11:06.081.(配列の配列)のポインタ
2.配列の(配列のポインタ)
そもそも配列の配列とは?多次元配列?
0441デフォルトの名無しさん
2011/11/01(火) 01:14:29.10*p
*(*p)
の評価結果は違うぞ。
pと*pが指している場所は違うからな。
0442デフォルトの名無しさん
2011/11/01(火) 01:18:58.681)char a[3][5];
2)char a[5][3];
3)char *a[5];
4)char (*p)[5];
5)char **p;
1)charの配列[要素数5]の配列[要素数3]
2char)配列[要素数3]の配列[要素数5]
3)charを指すポインタの配列[要素数3]
4)charの配列[要素数5]をさすポインタ
5)charを指すポインタを指すポインタ
0443デフォルトの名無しさん
2011/11/01(火) 01:29:19.63配列とポインタは密接に関わってるから、どっちも正しい
0444デフォルトの名無しさん
2011/11/01(火) 01:42:51.49一番バグりやすい部分でもあるけど
他の言語でこれをしようとしたら例えばC#ではポインタが使えるが
Marshallクラスがないと不便だし
0445デフォルトの名無しさん
2011/11/01(火) 02:26:27.47どこが罪なの
0446デフォルトの名無しさん
2011/11/01(火) 02:28:10.77後者は配列のポインタの配列と表現する
0447デフォルトの名無しさん
2011/11/01(火) 08:26:21.14関数の戻り値が成否判定に使われてポインタを返して欲しいのに出来ないとき。
#define bool int
BOOL xxx(void **Pointer){
...
*Pointer=malloc(...);
...
return TRUE;
}
...
void *Po;
BOOL b=xxx(&Po);
...
0448デフォルトの名無しさん
2011/11/01(火) 09:52:09.70↓
*(*(a + x) + y)
じゃあこれもポインタのポインタってこと?!
これならわかる!
0449デフォルトの名無しさん
2011/11/01(火) 11:28:13.45int *pa=&a; /*int型ポインタ変数*/
int **ppa=&pa; /*int型ポインタのポインタ変数*/
0450デフォルトの名無しさん
2011/11/01(火) 11:30:56.21type a[][] なのか
type (*a)[] なのか
type *a[] なのか
type **a なのか区別が付かない
0451デフォルトの名無しさん
2011/11/01(火) 11:42:21.610452デフォルトの名無しさん
2011/11/01(火) 11:43:41.14聞けば聞くほどわからなくなるからとりあえず頭の隅に押しやって発酵させてみるよ
0453デフォルトの名無しさん
2011/11/01(火) 11:56:10.75ポインタ値=アドレス値
でいいのかな?
0454デフォルトの名無しさん
2011/11/01(火) 11:59:16.55また、実際のアドレス値がポインタの値とは限りません。
0455デフォルトの名無しさん
2011/11/01(火) 12:02:31.890456デフォルトの名無しさん
2011/11/01(火) 13:08:25.48で、ポインタの値とは当然「指し示す先」のことだな。
値としてポインタの値を持つ変数がポインタ変数であり、
特に必要がなければNULL以外のポインタの値は意識する必要がない。
まして今の大抵の環境ではアドレスがどこであるか知ったところで大して役に立たないしね。
0457デフォルトの名無しさん
2011/11/01(火) 13:57:13.00クラックするのに役立つよ
0458デフォルトの名無しさん
2011/11/01(火) 14:09:04.900459デフォルトの名無しさん
2011/11/01(火) 14:34:08.28入力された数列を最大値と最小値を入れ替えて左から順に並べた状態にするのはどうしたらいいでしょう?
0460デフォルトの名無しさん
2011/11/01(火) 14:43:14.910461デフォルトの名無しさん
2011/11/01(火) 15:05:31.580462デフォルトの名無しさん
2011/11/01(火) 15:27:38.580463デフォルトの名無しさん
2011/11/01(火) 15:38:53.18scanf("%d",&n);
a[n]++;
0464デフォルトの名無しさん
2011/11/01(火) 15:42:08.190465デフォルトの名無しさん
2011/11/01(火) 15:45:19.02int型変数を指す時
int *pって宣言するのはどうして?
どうせ関節参照してるとバイト数も必要になるのかな
0466デフォルトの名無しさん
2011/11/01(火) 16:07:21.120467デフォルトの名無しさん
2011/11/01(火) 16:08:39.42型(int *)のポインタを指すポインタなら、型は(int **)だね。
>>465
日本語でOK。
ポインタがint型の変数を指すときint * pと宣言する理由を聞いているのなら、そういう言語規約だから。
ポインタに型情報が必要な理由を聞いているのなら、デリファレンスするときにそれが必要だから。
「関節参照」とは何かは判らんが、ポインタが持っている情報はバイト数ではなくて型であることに注意。
勿論、型情報にはバイト数も含まれるがそれが全てではない。
0468デフォルトの名無しさん
2011/11/01(火) 16:18:38.32な。
夕食にカレーライスを作ってほしいといわれたのですがどうしたらいいでしょう?
せめてカレーライスの作り方を教えてほしいとかいってほしいよな
0469デフォルトの名無しさん
2011/11/01(火) 17:05:13.210470デフォルトの名無しさん
2011/11/01(火) 17:26:13.93レスの内容をそのままコードに置き換えるだけ
0471デフォルトの名無しさん
2011/11/01(火) 18:10:47.80日本語って、おまえが言葉遣い変だよ
(int *)p はキャスト式で、「念のため」書いた括弧で意味が変わってしまう典型だ
int *p;
↑
これでは「まだ」 int 型のオブジェクトを指していないわけで
そんな理解じゃ >>464-465 みたいな質問をする人の相手はできない
間接は正式な JIS X3010 用語でカタカナ表記してるおまえのほうが質問者よりおかしい
ポインタがアドレス以外の情報をいささかでも持つかのような説明も不適切
0472デフォルトの名無しさん
2011/11/01(火) 18:13:16.920473デフォルトの名無しさん
2011/11/01(火) 18:17:32.710474デフォルトの名無しさん
2011/11/01(火) 18:25:29.65それはコンパイラが知ってるだけで、ポインタの値自体とは無関係では。
0475デフォルトの名無しさん
2011/11/01(火) 18:57:31.11実際ポインタ使わないといけなくなる時が来たら理解できるようになるから安心しろ
逆にいえばその時が来ないならそれはポインタを使わなくてもできる事ってことだ
効率や速度は別として
0476デフォルトの名無しさん
2011/11/01(火) 19:05:05.76まあその通りなんだけど、課題で指定されてるのも、よく見かける。
0477デフォルトの名無しさん
2011/11/01(火) 19:18:23.71そのからみでアセンブラの初歩的なところはみんな通って来てたんだよね。
だから、スタックやらヒープやら、オブジェクトのメモリ上での表現みたいな話もわかるし、
ポインタなんかも自然に理解できた。
単純なコードなら、それがどんな雰囲気にコンパイルされるかも想像できたり。
昨今は抽象的なところから入っちゃうから難しいんだよな。
Cはあんまり抽象的な言語ではないのに。
0478デフォルトの名無しさん
2011/11/01(火) 19:19:02.32間接と関節の話かとばかり
0479デフォルトの名無しさん
2011/11/01(火) 19:21:37.06● 挿入・削除の時間コストの都合で配列よりリスト構造を選択
● 戻り値以外にいっぱい値を戻したいので、関数の引数経由で呼び出し元に伝える
0480デフォルトの名無しさん
2011/11/01(火) 19:36:15.89http://codepad.org/jV80gYnJ
これの25行目のforループでセグるんですが、iが3回回ったら変な止まります。
理由と解決法を教えていただけませんか
0481デフォルトの名無しさん
2011/11/01(火) 19:37:16.870482デフォルトの名無しさん
2011/11/01(火) 19:41:00.32それは何か変だよ。
int *p;で宣言される変数pは、型「int型へのポインタ」を持つ。
なので、自分が指す先がint型であるという情報を持っている、
と言って良いと思う。
それにはコンパイラも実際の値も関係ないんじゃないかな。
で、ある瞬間にpが持っているアドレスにあるオブジェクトが
本当にintか、という情報は持ってない。
まぁ言葉遊びか。
0483デフォルトの名無しさん
2011/11/01(火) 19:43:06.08ループの中の
test = (int* *)realloc(test,j*sizeof(int*));
いらないんじゃないの?
0484デフォルトの名無しさん
2011/11/01(火) 19:44:46.52コンパイル時に決まる静的な情報だっていう意味で使った。
0485デフォルトの名無しさん
2011/11/01(火) 19:46:30.26同じようにこれ は ペン ですを取得するにはどうすれば良いですか?
0486デフォルトの名無しさん
2011/11/01(火) 19:51:03.840487デフォルトの名無しさん
2011/11/01(火) 19:58:18.52理解すると「こういうことだからだよ!としか言えないよ!簡単なことじゃんか理解してくれ」
どっちも正しいから責められない
単純なことなのに理解させるのが難しいから理解するのも難しい
0488デフォルトの名無しさん
2011/11/01(火) 20:09:52.730489デフォルトの名無しさん
2011/11/01(火) 20:11:21.0319行目の時点で、test[0], test[1], ... test[20] まで malloc() の返り値が入っている。
1回目の 23 行目(j = 1) で、realloc(test, 1 * sizeof(int *)); によりtest[0] のみ realloc() 後でも意味をもつが、test[1], test[2] test[3] ...... の値は胡散霧消したといってよい。
私の環境では偶然 test[1], test[2] の値は保存されていたが、test[3] 以降の値は 23行目の後でぐちゃぐちゃになっていた。
0492デフォルトの名無しさん
2011/11/01(火) 20:36:04.69とりあえず、自分がPCになったつもりで1行ずつ実行してみれば、
小規模なプログラムなら大抵のバグはつぶせるよ。
0493デフォルトの名無しさん
2011/11/01(火) 20:56:56.83循環論法な説明しか聞けなくなったら質問か相手を変える機転がいるんだよ
初心者と先輩の差は常に一定ではなく逆転することがあるし
まったく逆転できないようであれば適性の問題かも知れない
0494デフォルトの名無しさん
2011/11/01(火) 21:02:39.100495デフォルトの名無しさん
2011/11/01(火) 21:07:49.06例えばマリオがジャンプするような動作をプログラミングで作れたら最高ですが、
結局プログラミングというより画力でしょうか?
0496デフォルトの名無しさん
2011/11/01(火) 21:08:55.82×胡散霧消
○雲散霧消
0497デフォルトの名無しさん
2011/11/01(火) 21:09:44.040498デフォルトの名無しさん
2011/11/01(火) 21:14:42.05先輩は初心者に戻れないってことさ
分かっちゃうと「あれ、なんでこんなことで悩んでたんだろ」ってなっちゃう
そこで初心者とすれ違っちゃう
先輩であって先生なわけではないからそれは当たり前なんだけどね
自分がただ理解することと他人に教えるための理解はまた違うんじゃないかな
0499デフォルトの名無しさん
2011/11/01(火) 21:21:03.46メモリマップトファイルを共有メモリ上のみではなく、ディスク上の実際のファイルにも適用したい場合、
文字列でしか使えないのでしょうか?
たとえば、
PBYTE pbyte;
hFile = CreateFile(省略,"C:\test.txt");
CreateFileMapping(hFile,省略);
pbyte = (PBYTE)MapViewOfFile(省略)
は、実際のディスク上のファイル(test.txt)にも、文字列を書き出せるため、成り立つことがわかるのですが、
構造体のようなデータ形を共有メモリで扱いたい場合、
typedef sturct{int i, char c, char }SHARED_DATA;
SHARED_DATA *sData;
hFile = CreateFile(省略,"C:\test.txt");
CreateFileMapping(hFile,省略);
sData = (SHARED_DATA *)MapViewOfFile(省略)
とした場合、実際のディスク上のファイル(text.txt)を利用したメモリマップトファイルは利用可能なのでしょうか?
文字列でないため、ファイルにどのようにデータが書き込まれるのかが理解できないため、どなたか解説してください。
0500デフォルトの名無しさん
2011/11/01(火) 21:25:17.88確かにそれは分かります。
3D演算技術があれば2Dが映える感じしますよね。
ただ体は2Dがいいです。
0501デフォルトの名無しさん
2011/11/01(火) 21:38:01.190502デフォルトの名無しさん
2011/11/01(火) 21:58:02.47できるので気にせずどうぞ。
0503デフォルトの名無しさん
2011/11/01(火) 21:59:16.582Dだと基本が簡単な分【味付け】に力を注ぐのに多くを割きたい。
3Dは理的、2Dは工的なイメージが勝手にあるw
0504デフォルトの名無しさん
2011/11/01(火) 22:05:06.54理系脳なら2Dゲームでも3Dで扱ったほうが作りやすい
0505デフォルトの名無しさん
2011/11/01(火) 22:11:45.320506デフォルトの名無しさん
2011/11/01(火) 22:14:46.95画面奥行き方向で管理すべきものが存在するんだから そこに次元割いても悪くないっしょ?
わざわざ自前で奥から順に描画していく?
0507デフォルトの名無しさん
2011/11/01(火) 22:19:05.520508デフォルトの名無しさん
2011/11/01(火) 22:30:32.36どうしてでしょうか?
0509デフォルトの名無しさん
2011/11/01(火) 22:32:57.31ptr[i]==L' '
0510デフォルトの名無しさん
2011/11/01(火) 22:35:34.460511デフォルトの名無しさん
2011/11/01(火) 22:36:51.51部分一致じゃだめで完全一致でないと 0 戻さない
0512デフォルトの名無しさん
2011/11/01(火) 22:45:28.80あぁ、面白そう・・
大学の授業じゃそこまでやらんだろうな・・
>>506
それは2Dの話ですか?
2Dなんて、基本的な事は誰でもできると思うので、そこから先の見栄えを
いかに機能を駆使して作るかですよね。
何も考えずに作ったら、ペラペラの切り絵が動いてるお芝居にしか見えないと
思うから。
0513デフォルトの名無しさん
2011/11/01(火) 22:46:56.710514デフォルトの名無しさん
2011/11/01(火) 22:52:37.76>>511
ありがとうございました!
0515デフォルトの名無しさん
2011/11/02(水) 13:21:51.65そういえば、ポインタのポインタはメモリのコンパクション(≒メモリの整理整頓)に
使われることがある。
おおざっぱに説明すると、
例えば char **p, char *q, q = malloc(), p = &q; とすると malloc した領域は *p で
参照できる。ここで仮にシステムがメモリの内容の整理整頓をして q の値がそれに
伴い変更を受けても、p の値は変更する必要がなくかつ *p でメモリの内容を参照
できる。みたいな。
0516デフォルトの名無しさん
2011/11/02(水) 14:46:18.220517デフォルトの名無しさん
2011/11/02(水) 15:15:11.01昔のMacOSのメモリマネージャはそれだった。
リロケータブルブロックをマスターポインタが指し、ハンドルがマスターポインタを指す。
システムは必要に応じてリロケータブルブロックを移動してマスターポインタを更新。
そんな感じ。
0518デフォルトの名無しさん
2011/11/02(水) 15:42:33.96今時はアドレスが仮想化されているからこんなややこしい仕掛けは必要なくなったが。
0519デフォルトの名無しさん
2011/11/02(水) 16:27:14.9551→15
149→941
7412→2147
という感じです
0520デフォルトの名無しさん
2011/11/02(水) 16:31:45.70#include <stdio.h>
int reverse_num(int num)
{
int ret=0;
for(;num>0;ret=ret*10+num%10,num/=10)
;
return ret;
}
int main(void)
{
printf("%d\n", reverse_num(51));
printf("%d\n", reverse_num(149));
printf("%d\n", reverse_num(7412));
return 0;
}
0521デフォルトの名無しさん
2011/11/02(水) 16:39:06.740522デフォルトの名無しさん
2011/11/02(水) 16:55:14.87int main(void) {
rev("51"); putchar('\n');
rev("149"); putchar('\n');
rev("7412"); putchar('\n');
return 0;
}
0523デフォルトの名無しさん
2011/11/02(水) 21:59:58.89( )
l l
↑縦20横30くらいのマップ上でこいつをキーボードのAを押せばジャンプして地面まで落下、
Sを押せばマップ上を右へ、Dを押せば左へ行くプログラム教えてください。
0524デフォルトの名無しさん
2011/11/02(水) 22:02:49.93特別な技術は必要ないよ
0525デフォルトの名無しさん
2011/11/02(水) 22:22:52.82C言語という枠内で作るならちょっと無理かもね
環境依存であればあるいは
0527デフォルトの名無しさん
2011/11/02(水) 22:31:23.34なぜ、よりによってCでそれをやろうとするのか。。。。
haskellなどの関数型言語またはスクリプト言語でtoStringしてreverseでええやん
0528デフォルトの名無しさん
2011/11/02(水) 22:32:54.01つ スレタイ
0529デフォルトの名無しさん
2011/11/02(水) 22:53:48.900530デフォルトの名無しさん
2011/11/02(水) 23:16:31.77char str[5];
sprintf(str, "%d", 1000000");
上記の場合、エラーにならずstrに"1000000"が入るようですが
strに対してrealloc等でメモリの再確保が行われているのでしょうか?
0531デフォルトの名無しさん
2011/11/02(水) 23:19:29.650532デフォルトの名無しさん
2011/11/02(水) 23:21:08.26sprintf(str, "%d", 1000000);
0533デフォルトの名無しさん
2011/11/02(水) 23:22:02.35してない。
けどchar str[5];なら8バイト確保してるだろうからかろうじてメモリ破壊は起こってない可能性がある。
char str[5];
char cBuf=1;
とかやってるとcBufの値が書き換えられる可能性がある。
0534デフォルトの名無しさん
2011/11/02(水) 23:25:11.630535デフォルトの名無しさん
2011/11/02(水) 23:27:14.09やはり危険なのですね。
0536デフォルトの名無しさん
2011/11/03(木) 03:45:55.110537デフォルトの名無しさん
2011/11/03(木) 05:21:12.97いや、その場合 cBuf には影響はないよね、普通。
0538デフォルトの名無しさん
2011/11/03(木) 05:24:06.65char str[5];
0539デフォルトの名無しさん
2011/11/03(木) 07:27:19.15C machineだと>533 ではstrの5バイト後にcBufが来た。
0540デフォルトの名無しさん
2011/11/03(木) 07:29:46.11http://hibari.2ch.net/test/read.cgi/linux/1312512594/
1:上から目線で住人へ因縁付ける。
2:住人から完全論破される。
3:「またひとつ賢くなった」と捨て台詞
マジQZって、なんで、こんなに人を不快にできるの?
いちいちイライラさせるのは、何?素なの?嫌がらせなの?
linux板なのにnotepadとか例に挙げてるし、notepadと言いながらなぜか全員を見下して強気なQZ見てると、
痛すぎというか、見てるこっちが恥ずかしい気持ちになるし、論破されたら「”また”賢くなった」とか、いちいちイラつかせるし…マジ迷惑。精神的ブラクラだわ。
QZを巣から出すなよマジで。つーかモリタポスレで隔離しといてくれよマジで…不快すぎる。
0541デフォルトの名無しさん
2011/11/03(木) 08:15:22.16やれやれ
http://hibari.2ch.net/test/read.cgi/linux/1312512594/717-723
http://hibari.2ch.net/test/read.cgi/linux/1312512594/725
http://hibari.2ch.net/test/read.cgi/linux/1312512594/734-737
ごく普通の流れですけれども?
>linux板なのにnotepadとか例に挙げてるし、
linux板なのに「未チェックバッファ」というマイクロソフト用語を使っている点を遠まわしに指摘して
あ げ た
だけなのですが。
>マジ迷惑。精神的ブラクラだわ。
効果があったようでなによりです。
目的は達成されました。
0544デフォルトの名無しさん
2011/11/03(木) 12:51:55.33>linux板なのに「未チェックバッファ」というマイクロソフト用語を使っている点を遠まわしに指摘して
どこがマイクロソフト用語だよ。
あ、回答は要らんよ。鬱陶しいから。
へえ?
じゃ、'unchecked-buffer' という単語がマイクロソフトのセキュリティパッチ名で言及されている以外の例、および
マイクロソフトのセキュリティパッチ名で使われている場合とそれ以外との場合との比率がを示していただければ、説得力のあるご意見になるかと思います。
>鬱陶しいから。
この単語こそ QZ の餌であることを、まだご理解いただけていないようですね。青いですね。
0546デフォルトの名無しさん
2011/11/03(木) 13:29:43.91■自己愛性人格障害者 被害者スレ■ 26人目
http://toki.2ch.net/test/read.cgi/utu/1316139405/
このスレ読んでみろ
Qにそっくりな暴れ方をしている奴がどんな被害を受けたか克明に書いてある
★自己愛性人格障害の特徴 25人目★
http://toki.2ch.net/test/read.cgi/utu/1318550092/
このスレを読むとQが自己愛性人格障害である事がはっきりと分かる
0547デフォルトの名無しさん
2011/11/03(木) 13:32:31.430548デフォルトの名無しさん
2011/11/03(木) 13:35:28.181:最初から全て把握していた。じつは知っていた。
2:あえてnotepadと発言することで、暗に「未チェックバッファーはマイクロソフト用語だ」と指摘してあげていたのだ!教育してやった。
なにこの後出しじゃんけん。完全にこじつけだろ。無理ありすぎ。
QZって細かい嘘ばっかり吐くけど、なんなの?癖なの?
0549デフォルトの名無しさん
2011/11/03(木) 13:35:58.930550デフォルトの名無しさん
2011/11/03(木) 13:39:12.69>細かい嘘ばっかり吐くけど、なんなの?癖なの?
それがナルシストの最大特徴
自己矛盾を指摘されるのが大嫌いでそれを回避するためだったらどんな嘘でも平気でつく
しかも本人は嘘をついた事を全く自覚してないというからたちが悪い
0551デフォルトの名無しさん
2011/11/03(木) 14:01:50.000552デフォルトの名無しさん
2011/11/03(木) 14:23:39.410553デフォルトの名無しさん
2011/11/03(木) 14:32:16.37いくら無職とは言っても犯罪を犯すなよな
朝鮮人みたいな事をすんな
あ、もしかして在日チョン?
0554デフォルトの名無しさん
2011/11/03(木) 14:40:08.790555デフォルトの名無しさん
2011/11/03(木) 14:45:14.270556デフォルトの名無しさん
2011/11/03(木) 15:32:51.54いくらなんでもQだけをNGにすると影響が大きい
0557デフォルトの名無しさん
2011/11/03(木) 16:52:34.24CreateSolidBrushで作ったブラシを格納した場合って
DeleteObjectは必要?
0558デフォルトの名無しさん
2011/11/03(木) 16:56:37.960559デフォルトの名無しさん
2011/11/03(木) 17:01:32.650560デフォルトの名無しさん
2011/11/03(木) 17:01:36.53スレ住人のレベルがな・・残念
だが!ゆっくりしていってね!!!
0561デフォルトの名無しさん
2011/11/03(木) 17:42:45.590562デフォルトの名無しさん
2011/11/03(木) 18:39:29.34そのあとはだれも(゚�听)イラネなので、Deleteしないと延々、デスクトップヒープを食っている。
アプリケーションメモリじゃなく、デスクトップヒープ(要するにシステムリソース)を食う。
デスクトップヒープはメインメモリよりもずっと小さいので
浪費するとあっという間に新しいアプリケーションを起動できなくなったり
起動はできたけどメニューが表示されないとか
すげぇいい加減なバグを発生する(エラーにならないからすごい)。
0563デフォルトの名無しさん
2011/11/03(木) 19:00:23.09>The system automatically deletes class background brushes
>when the class is unregistered by using UnregisterClass.
>An application should not delete these brushes.
だがスレ違い
0564デフォルトの名無しさん
2011/11/03(木) 19:12:50.910565デフォルトの名無しさん
2011/11/03(木) 19:17:48.200566デフォルトの名無しさん
2011/11/03(木) 19:18:35.41こういうこと?
0567デフォルトの名無しさん
2011/11/03(木) 19:39:49.25もちろん。C言語では確保と開放は常にセットだ
GetStockObject(WHITE_BRUSH)みたいな場合もちゃんと開放しないとダメだぞ
0568デフォルトの名無しさん
2011/11/03(木) 19:54:20.68ストックオブジェクトって解放する必要あった?
0569デフォルトの名無しさん
2011/11/03(木) 20:03:11.03みんな冗談で書いてる。>>563以外は全部ウソだからw
0570デフォルトの名無しさん
2011/11/03(木) 20:10:44.03とりあえずWM_DESTROYで解放するようにしたんだけど・・・
0571デフォルトの名無しさん
2011/11/03(木) 20:12:55.23http://hibari.2ch.net/test/read.cgi/tech/1318439361/
0572デフォルトの名無しさん
2011/11/03(木) 21:28:12.04本人様がわざわざ貼ってる>>542の流れを見れば、これが後だしじゃんけんであることは明らかだよ。
うそをつき始めると取り返しがつかない人生を送る好例。
0573片山博文MZ
2011/11/03(木) 21:28:48.700574デフォルトの名無しさん
2011/11/03(木) 21:34:48.35いろんなスレに沸いててますますうざい。
餌をやるな
0576デフォルトの名無しさん
2011/11/03(木) 21:38:41.38素直にもらって喜んどけ
0577デフォルトの名無しさん
2011/11/03(木) 21:43:58.940578デフォルトの名無しさん
2011/11/03(木) 22:02:01.840579デフォルトの名無しさん
2011/11/03(木) 22:09:24.60QUEUESIZEを 1024*1024*20にすると容量が大きすぎるせいか処理できなくなる
1024なたいけたがキューがオーバーフローしてしまった
web上で動かせるcodepadでやってみたがfgets使ってるから入力できない
かといって開発環境いれるのめんどくせー
web上でCの動作確認できるところないか
0580デフォルトの名無しさん
2011/11/03(木) 22:17:47.130581デフォルトの名無しさん
2011/11/03(木) 22:19:57.16fgetsを代替関数に置き換えて、配列からデータ入力するようにしてみたら?
0582デフォルトの名無しさん
2011/11/03(木) 22:22:55.43codepadで勉強とかマゾ過ぎる
0583デフォルトの名無しさん
2011/11/03(木) 22:28:08.11だからダメだってw
プログラミングWindows 5.3.6 ペンの作成・選択・削除
>・作成したGDIオブジェクトは最終的に必ず削除する。
>・有効なデバイスコンテキストに選択されているGDIオブジェクトを削除してはならない。
>・ストックオブジェクトを削除してはならない。
さらに>>563が書かれているMSDNのページ(5割以上が日本語未訳の素晴らしいサイト)
http://msdn.microsoft.com/ja-jp/site/ms633576
答え。システムが自動で削除するので、アプリケーション内でデリートしてはダメ。
0584デフォルトの名無しさん
2011/11/03(木) 22:30:35.01簡単なのですぐできました。
そこでカーマイケル数のフェルマー判定で素数を求めたいのですが、実装はどうなりますか?
なかなか難しくてよく分かりません。理論は分かるのですが上手くいきません。
0585デフォルトの名無しさん
2011/11/03(木) 22:39:41.76プログラムはわかるのですがうまくいきません。
0586デフォルトの名無しさん
2011/11/03(木) 22:45:03.96すいませんw
フェルマー判定は、単純なmod≡0を示す数式で、カーマイケル数は
not素数であるのにも関わらずフェルマー判定からは陽が出る擬似素数の事です。
0587デフォルトの名無しさん
2011/11/03(木) 22:49:57.220588デフォルトの名無しさん
2011/11/03(木) 22:53:37.62codepadは知らんが、ideoneなら入力も指定できるよ。
0589デフォルトの名無しさん
2011/11/03(木) 23:03:32.29いやwww
素数判定のアルゴリズムだと思うのですが・・Wiki見てくださいよ。
カーマイケルを予約的にストックするならtime関数とかも使わないといけないから
擬似素数==カーマイケル数の条件配置が散乱しやすいんですよね。
エラストテネスの篩は、どこの参考書にも載ってて飽きました・・
この方法以外で素数を求めたいんですよ。
0590デフォルトの名無しさん
2011/11/03(木) 23:16:48.94なんで俺らがアルゴリズムを調べにゃならんの?
C言語の質問に落とし込んでから出直せ。
0591デフォルトの名無しさん
2011/11/03(木) 23:19:53.27フェルマーテストで非合成数 & (ストックしといたカーマイケル数でない)もの
を素数としたいって事?
time関数の必然性が判らない。
あと、Wikipediaのつもりなら正確に書いた方がいい。
0592デフォルトの名無しさん
2011/11/03(木) 23:26:52.43フェルマーテストっていう項目に、ほれプログラムしろっていう感じで書いてあるね。
おれはメンドクサイし無能だから遠慮しとくけど、この通りに書けばいいんじゃね?
0593デフォルトの名無しさん
2011/11/03(木) 23:29:59.62宿題スレとかの方がいいんじゃないか?
0594デフォルトの名無しさん
2011/11/04(金) 00:01:15.68ソースファイルをコンパイルするとき、
インクルードファイルが無くても、ワーニングもエラーも出力されないが、
動作させると、異常終了する場合があります。
異常終了するプログラムに、ヘッダファイルをインクルードするだけで、
本文は触ってないのに異常終了がなくなります。
これはなぜですか?
0595デフォルトの名無しさん
2011/11/04(金) 00:03:22.93プロトタイプ宣言があると型の変換をしてくれたりするから
0596デフォルトの名無しさん
2011/11/04(金) 00:09:44.80そういう理由なのですか。
理由がわからず、一日無駄に調べてました。
ちなみにプロトタイプ宣言が無ければエラーを出すような、
コンパイル指定はできるのでしょうか?gccですが。
0597デフォルトの名無しさん
2011/11/04(金) 00:26:50.920598デフォルトの名無しさん
2011/11/04(金) 00:29:51.02-Wall とかすればたくさん説教してくれる。
0599デフォルトの名無しさん
2011/11/04(金) 00:50:56.800600デフォルトの名無しさん
2011/11/04(金) 00:53:00.440601デフォルトの名無しさん
2011/11/04(金) 00:53:30.920602デフォルトの名無しさん
2011/11/04(金) 01:06:56.81エラー処理は難所の一つ
0603デフォルトの名無しさん
2011/11/04(金) 01:24:15.87あとで一気に整形しながら書きたかったのに
ってCの話題じゃなかった、ごめんぬ
0604デフォルトの名無しさん
2011/11/04(金) 01:24:54.94まったくうまく動かない。unsigned long int型 u がある場合、
u & 1 == 0 が常に false になってしまったりするぞ^^
u - 1 == u + 1 も常に false だし^^;;;;;;;
bool isPrimeMillerRabin( unsigned long int p, int k ) {
if ( p == 2 ) { return true; } // 2は素数
if ( p < 2 || !( p & 1 ) ) { return false; } // 2よりも小さいまたは(2以外の)偶数なら計算するまでもなし
srand( ( unsigned )time( NULL ) );
// p - 1 = pow( 2, s ) * d, s > 0 において、最初の奇数dを見つける。
unsigned long int d = p - 1;
while ( !( d & 1 ) ) {
d /= 2;
}
for ( int n = 0; n != k; ++n ) {
unsigned long int a = std::rand() % ( p - 2 ) + 1;
unsigned long int t = d;
unsigned long int y = modpow( a, t, p );
while( t != p - 1 && y != 1 && y != p - 1 ) {
y = modpow( y, 2, p );
t *= 2;
}
if ( y != p - 1 && !( t & 1 ) ) {
return false;
}
}
return true;
}
0605デフォルトの名無しさん
2011/11/04(金) 01:35:57.48何を言っているのかさっぱり判らんが、srand()は乱数系列の初期化だから通常一回だけ行なえばいい。
つーか、乱数系列の種にtime()を使うと、1秒経過するまで常に同じ系列で初期化するのでrand()の値が一定になってしまう。
0606585,604
2011/11/04(金) 01:36:05.88一応作ってみたけど、正しく動くかは不明瞭^^;
http://codepad.org/5lKN9XlZ
0607585,604
2011/11/04(金) 01:37:31.41あ、いや、そこじゃなく、unsigned long intは値が大きくなると
なぜか正しく論理演算や真偽値判定ができなくなる( visual c++2010にて)ってこと
まぁ、intの範囲内なら正しく動くからいいかな、とw
0609デフォルトの名無しさん
2011/11/04(金) 01:46:26.43ってことで
u & 1 == 0
↓
u & (1 == 0)
こうなってるんだろ
0611デフォルトの名無しさん
2011/11/04(金) 01:48:54.13難所であり、クリアしても特典がほとんどない、という無間地獄
C は諦めることから出発して成功した言語
BASIC とは方向性は違えど、この点では兄弟のようなもの
0612デフォルトの名無しさん
2011/11/04(金) 01:54:56.36>>602は処理系を作る場合の話だろ。
0613デフォルトの名無しさん
2011/11/04(金) 04:48:55.31http://bellard.org/jslinux/
これでできるよ
0614デフォルトの名無しさん
2011/11/04(金) 09:32:22.51というC言語のソースを教えてください。
本気で困ってるんでお願いします。
0615デフォルトの名無しさん
2011/11/04(金) 10:17:57.47if( str[i] == 'A' )A++;
か
counter[ str[i] ]++;
みたいなことをグルグル回せばいいんじゃね?
0616デフォルトの名無しさん
2011/11/04(金) 10:41:26.88Cは機械がやるべきさまざまな事柄を全部人間に押し付けてるからな。
i=i++が未定義とかホント人間様を舐めてるよな
0617デフォルトの名無しさん
2011/11/04(金) 11:15:57.070618デフォルトの名無しさん
2011/11/04(金) 12:17:43.83>i=i++
これって何したいの?
0619デフォルトの名無しさん
2011/11/04(金) 12:38:17.62++演算子の副作用完了点がこの文の最後にあるため、果たして i に代入される値が
++する前の物なのか++した後の物なのかそこまで規定されていない
そこでこの書式そのものの動作結果を未定義とした
0620デフォルトの名無しさん
2011/11/04(金) 12:41:05.13事実上禁止したわけだろうな
0621デフォルトの名無しさん
2011/11/04(金) 12:49:27.840622デフォルトの名無しさん
2011/11/04(金) 12:55:47.74これってどうなるの?と聞いていればそれでいいだろうけど。
>>618の何したいの?ってのは、
>>616が当然だと思っている結果がどういうものなのか聞いてるんだと思うよ。
0623デフォルトの名無しさん
2011/11/04(金) 13:11:07.80これってどうなん
0624デフォルトの名無しさん
2011/11/04(金) 13:20:57.98これはいいだろ
副作用完了点が2つあり一つはカンマ、一つは文末のセミコロンで、カンマ演算子の
方が先に評価されるために i に代入される値は 0 と一意に決まる
0625デフォルトの名無しさん
2011/11/04(金) 13:28:42.720626デフォルトの名無しさん
2011/11/04(金) 13:29:03.13なわけねーだろ
カンマ演算子が返す値は最後に評価された値だぞ
だからこれも未定義
0627デフォルトの名無しさん
2011/11/04(金) 13:42:51.24i = (i++, i);
これならきまるということ。
0628デフォルトの名無しさん
2011/11/04(金) 14:01:40.11こういうことがやりたいのかと想像
0629デフォルトの名無しさん
2011/11/04(金) 14:31:33.800630デフォルトの名無しさん
2011/11/04(金) 14:56:05.05現在のiの値に1が加算され、iに代入される。
こんな感じで合ってる?
0631デフォルトの名無しさん
2011/11/04(金) 14:56:10.14j = (i++, i); がしたいんじゃないの?ということなら、j = ++i; で何の問題もない。
ほかに意図があるのなら書いてもらえないか
0632デフォルトの名無しさん
2011/11/04(金) 15:16:02.410633デフォルトの名無しさん
2011/11/04(金) 15:19:37.02機械がやるべきことは指令に忠実に動くことで
指令を間違えたら、むしろそのとおり間違えるべき
勝手に気を利かせる機械はかえって使いづらい
Int main みたいな某社の思想がその典型
>>618
その疑問が正解
イミフを文法上書けてしまうことを防ごうとしていないだけで
いやがる人はいるが、そいつらの言うとおりしてもロクなことになってない
0634デフォルトの名無しさん
2011/11/04(金) 15:25:44.84どのレスに反応したんだ?>>631?
0635デフォルトの名無しさん
2011/11/04(金) 15:29:14.110636デフォルトの名無しさん
2011/11/04(金) 15:31:05.22って書いたとき、AやBで発生する副作用はカンマ演算子によって都度完了されるけど、
最後のCについてはセミコロンによって完了するってことなの?
つまり、
A;
B;
i = C;
と等価?
0637デフォルトの名無しさん
2011/11/04(金) 15:37:47.40そうだよ
0638デフォルトの名無しさん
2011/11/04(金) 15:54:21.37なので>>623はアウトで>>627はOKなのかぁ。
0639デフォルトの名無しさん
2011/11/04(金) 15:58:06.52そう。
副作用完了点てやつだ。
もし、興味があれば規格書でも読めばいい。
0640デフォルトの名無しさん
2011/11/04(金) 16:04:40.46p[i] = q[i];
++i;
++j;
速度的にほぼ同じなら分けて書くほうがいいよね
なんで1行で書こうとするん?
0641デフォルトの名無しさん
2011/11/04(金) 16:11:02.550642デフォルトの名無しさん
2011/11/04(金) 16:14:34.42JISひらけなかったもので確認した次第
>>632は落ちついたんだろうか
0643デフォルトの名無しさん
2011/11/04(金) 16:14:57.41そんなあなたにアセンブラ
0644デフォルトの名無しさん
2011/11/04(金) 16:15:05.400645デフォルトの名無しさん
2011/11/04(金) 16:19:12.500646デフォルトの名無しさん
2011/11/04(金) 16:19:54.11JISのページ、Adobe Readerを最新にすると見られないよな。
どうなってんの?
0647デフォルトの名無しさん
2011/11/04(金) 17:51:40.39昔のCPUはそこまで1命令でできたりする方向に進化したりもしてたんだよ。
オプティマイザもあてにできない時代もあったしね。
まぁ昔話はいいとしても、1行で書いた方が見やすいしくだならないバグも
入りにくいってメリットもある。
0648デフォルトの名無しさん
2011/11/04(金) 17:52:33.98ググって出てきても信用できない方ですか。
いろいろ大変そうですね。
0649デフォルトの名無しさん
2011/11/04(金) 18:06:32.92ググって出てきても信用はできないだろ普通
0650デフォルトの名無しさん
2011/11/04(金) 18:11:49.800651デフォルトの名無しさん
2011/11/04(金) 18:20:34.39マイクロコード全盛だったもんな
今じゃ全部RISC命令に分解してから実行した方が速くなってる
ハードウェア化するにはその方が回路設計が楽になる
0652デフォルトの名無しさん
2011/11/04(金) 18:20:54.87って鼻から悪魔飛び出したりはしないの?
0653デフォルトの名無しさん
2011/11/04(金) 18:21:31.020654デフォルトの名無しさん
2011/11/04(金) 18:24:32.21i の繰り上げのタイミング、j の繰り上げのタイミング がクリティカルになってない
p[i++] = i; だと 右辺 i 参照前に繰り上げ〜右辺 i 参照後に繰り上げ
と完了点までの範囲内に自分自身が居る
0655デフォルトの名無しさん
2011/11/04(金) 18:35:32.02すいません前からここにいるドンキーコングオタクです^^;
0656デフォルトの名無しさん
2011/11/04(金) 18:35:44.73後置インクリメントは式の中で自分自身を2回使っちゃらめって覚えとけばとりあえず問題ない。
そして、>>640の疑問の通り、最近のコンパイラは賢いから、まさに一行で書く意味はないよねって
C++では普通に。
0657デフォルトの名無しさん
2011/11/04(金) 18:40:44.390658デフォルトの名無しさん
2011/11/04(金) 18:41:00.06他人がメンテするソフトはやめて欲しい。
いや、まじで。
0659デフォルトの名無しさん
2011/11/04(金) 18:42:46.77だめだ、完了点とかよくわかってないからな
JIS規格読んでこようと思ったら見れなかったでござる。
0660デフォルトの名無しさん
2011/11/04(金) 18:49:18.280661デフォルトの名無しさん
2011/11/04(金) 18:50:54.42「ここまでにはインクリメントを終わらせなさい」 って定義してるのが完了点
0662デフォルトの名無しさん
2011/11/04(金) 18:52:51.98買うと8万だかするんだよね。
JIS規格には著作権ないはずなのに著作権を主張してコピーさせないし。
挙句に最新のAdobe Readerだと見れない。
さすがは巨大な天下り団体。仕事しなさ加減は世界最高レベル。
0663デフォルトの名無しさん
2011/11/04(金) 18:54:18.94これ早いでしょうか?
0664デフォルトの名無しさん
2011/11/04(金) 18:59:23.87それはいくらなんでも遅すぎじゃないか?
0665デフォルトの名無しさん
2011/11/04(金) 19:06:31.62うそェ・・
strcmp使うしかないですよね?
0666デフォルトの名無しさん
2011/11/04(金) 19:09:07.1920万個のクイックソートでも一分くらいかかるんじゃないの?10年くらい前だと。
機種詳しい人教えて。
0667デフォルトの名無しさん
2011/11/04(金) 19:12:20.18qsort と strcmp 使った方が早いんじゃね?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define WORD_NUM 200000
#define WORD_LEN_MAX 10
int main(void)
{
static char word[WORD_NUM][WORD_LEN_MAX+2];
long i, j;
for(i=0;i<WORD_NUM;i++){
for(j=0;j<WORD_LEN_MAX;j++){
word[i][j]=(rand()%26)+'A';
}
word[i][j]='\0';
}
qsort(word, WORD_NUM, sizeof(word[0]), strcmp);
for(i=0;i<WORD_NUM;i++) puts(word[i]);
return 0;
}
0668デフォルトの名無しさん
2011/11/04(金) 19:15:01.43遅いかな?1.73205081・・・・・・
0669デフォルトの名無しさん
2011/11/04(金) 19:15:49.8920万要素もある配列宣言すると、スタックエラーでるでしょwww
heapから呼び出さないと。
0670デフォルトの名無しさん
2011/11/04(金) 19:17:40.45見ようとしたら
X3010_01.pdf
15.9 MB (16,748,724 バイト)
MD5:9723FF3B1BD26AF5D5109BF57EC09E44
と普通に保存できたので
いったんローカルに保存してから
適当なビューワーで見ればいんじゃない?
0671デフォルトの名無しさん
2011/11/04(金) 19:18:03.47ああ、何を言われてもググらないと心配になっちゃう方ですか。
お察しします。
0672デフォルトの名無しさん
2011/11/04(金) 19:20:06.93よし、そのブラウザと詳しいダウンロード方法を教えるんだ。
いや、教えてください。お願いします。(´・ω・`)
0673デフォルトの名無しさん
2011/11/04(金) 19:22:22.57ちょうど>>667的なコード作って試してみてたけど、i7-2600K 4.5GHzで
0.05秒くらいだね。
0674デフォルトの名無しさん
2011/11/04(金) 19:22:54.80十年前だと PentiumIII がすでに出てたころだろ
CPU周波数が 500MHz、周波数効率が 0.3 とすれば
今のCPUの 150MHz 相当になる
メモリに全部のるなら
20倍程度の差しかでないんじゃね?
0675デフォルトの名無しさん
2011/11/04(金) 19:23:50.55static ついてるっしょ
0676デフォルトの名無しさん
2011/11/04(金) 19:25:17.6810年前ならpen4じゃね
0677デフォルトの名無しさん
2011/11/04(金) 19:31:17.61もちろん面倒だからstrcmp使って。
0678デフォルトの名無しさん
2011/11/04(金) 19:33:59.51適当なビューアで見れる?
0679デフォルトの名無しさん
2011/11/04(金) 19:39:07.96開平方で求めたら早くなるよ
0680デフォルトの名無しさん
2011/11/04(金) 19:52:56.99bcコマンドでやってみたけど、1.7秒くらいだった。@i7-2600K 4.5GHz
http://blue21.ddo.jp/man/man2html.html?lang=ja&cmd=1+bc
0681デフォルトの名無しさん
2011/11/04(金) 19:58:41.71勘違いしてたみたい
落とせたつもりになってたけど前に落としたファイル見てたわ
ttp://www1.axfc.net/uploader/Li/so/113224
0682デフォルトの名無しさん
2011/11/04(金) 20:00:35.23後eは求め方自体がわからんw
円周率は100万桁、たった10分で出力するプログラム作った。
FFT駆使したw、作るのに1か月かかったぜ・・
0683デフォルトの名無しさん
2011/11/04(金) 20:01:28.35うん。そのファイル、最新版Adobe Readerじゃ読めないからw
0684デフォルトの名無しさん
2011/11/04(金) 20:02:16.67Superπ104万桁なら8秒だが。@i7-2600K 4.5GHz
0685デフォルトの名無しさん
2011/11/04(金) 20:04:47.33100万桁10分って、頑張ったほうですかね?
Cプログラム歴4年です。
0686デフォルトの名無しさん
2011/11/04(金) 20:08:05.890687デフォルトの名無しさん
2011/11/04(金) 20:12:55.34いーなー4.5GHz w
今2ch見てるノーパソ(Mac)で走らせてみたら、1万桁だとなかなか帰ってこない。
1000桁までは割と速いんだけど。これってどういうスケーリングだっけ?
0688デフォルトの名無しさん
2011/11/04(金) 20:19:51.47>後eは求め方自体がわからんw
もしかして基本的な数学の知識もなくコードを書いているの?
0689デフォルトの名無しさん
2011/11/04(金) 20:22:08.80この知識を生かして業務系のアプリ(RDBにデータを入れたり出したり集計したりするだけのプログラム)を
何十万行も書く不定期な仕事を何年か前にリストラされて以来のニートだからな。
0690デフォルトの名無しさん
2011/11/04(金) 20:23:24.27間違ってる?
0691デフォルトの名無しさん
2011/11/04(金) 20:25:52.45むずいなww
0692デフォルトの名無しさん
2011/11/04(金) 20:26:53.16x 以下の素数の数は、x/log(x) で近似できる。
らしいから平均間隔は広がる傾向にあるね
0693デフォルトの名無しさん
2011/11/04(金) 20:46:11.10昔はキャッシュから引っ張ってこれたけど今はロックが掛かってて
ローカルコピーを見ても見れないよ
これと同じでC++11のJIS版も買うしかない
0694デフォルトの名無しさん
2011/11/04(金) 20:53:59.42悪徳商法だとしか思えないよね。
0695デフォルトの名無しさん
2011/11/04(金) 20:58:13.31まあいいけど
0696デフォルトの名無しさん
2011/11/04(金) 21:05:24.300697デフォルトの名無しさん
2011/11/04(金) 21:05:43.190698デフォルトの名無しさん
2011/11/04(金) 21:10:17.01円周率は何で√と違って早く求めれるんだろ。
0699デフォルトの名無しさん
2011/11/04(金) 21:27:18.530700696
2011/11/04(金) 21:36:22.41http://codepad.org/2BZ0PleK
0701デフォルトの名無しさん
2011/11/04(金) 21:40:32.26高校数学で習うけど、文系はやんないんだっけか
0702デフォルトの名無しさん
2011/11/04(金) 21:40:47.66高速化しても1秒かー
100万桁だと1分40秒か
うーん、もっと早くならないかな?
0703デフォルトの名無しさん
2011/11/04(金) 21:44:23.01>>700 のコードはO(n^2)で計算量が増えるから
そんなもんじゃすまないよ
0704デフォルトの名無しさん
2011/11/04(金) 21:49:50.85フーリエ変換使わないの?
0705デフォルトの名無しさん
2011/11/04(金) 21:52:38.230706デフォルトの名無しさん
2011/11/04(金) 21:55:49.05mbi_sqrt()だけ計ったら0.4秒だった。@i7-2600K 4.5GHz
0707デフォルトの名無しさん
2011/11/04(金) 21:56:39.76πを求めることよりは断然あるな。
0708デフォルトの名無しさん
2011/11/04(金) 22:01:00.91√3ごときが膨大な時間かかるとかwww
0709デフォルトの名無しさん
2011/11/04(金) 22:02:21.980710デフォルトの名無しさん
2011/11/04(金) 22:05:09.49円周率1万桁と、平方根1万桁だと後者の方が相対的に膨大な時間かかるんだよ。
0711デフォルトの名無しさん
2011/11/04(金) 22:14:55.470712デフォルトの名無しさん
2011/11/04(金) 22:16:28.38そうなのかぁ
ひどいねこれは
0713デフォルトの名無しさん
2011/11/04(金) 23:21:26.230714デフォルトの名無しさん
2011/11/05(土) 02:42:47.26極限値を数値的に求めるってかw
普通にe^xのテーラー展開でx=1にすればいいでしょ。
もっと収束の速い級数とかあるかもしれんがとりあえず。
0715デフォルトの名無しさん
2011/11/05(土) 04:47:07.63Aの座標は、Xは10、Yは10だとする。
Bの座標は、Aに0.001だけ足した座標だとする。Bの座標は、Xは10.001、Yは10.001。
A座標とB座標の差は、Xの差は0.001、Yの差は0.001
このYの差を、Xの差で割ると、線の傾き(Xが1増える事に、Yがいくつ増えるか?)がわかる。
0.001 / 0.001 = 1
0716デフォルトの名無しさん
2011/11/05(土) 04:50:07.93> JIS規格には著作権ないはずなのに著作権を主張してコピーさせないし。
「著作権ないはず」っていうのはどういう理屈なの?
0717デフォルトの名無しさん
2011/11/05(土) 04:51:08.68Xが3の時のY座標は
Y = 2^3 = 8
Xを0.001だけ増やした時のY座標は
Y = 2^3.001 = 約8.005
この時のY座標の差は 8.005 - 8.000 = 0.005
Xの差が0.001で、Yの差が0.005なので、この時の瞬間的な線の傾きは 0.005 / 0.001 = 5
だいたい、Xが1増えるごとに、Yが5づつ増える傾き。
この2^x乗の時の値8と、その瞬間の傾き5とでは、数字がかなり違う。8と5。
0718デフォルトの名無しさん
2011/11/05(土) 04:54:48.74e^x した時の値と、その瞬間の傾きは同じになる。
たとえば
e^3の値が約20.08
3を0.001だけ増やした場合は20.10
この差は0.02。
この瞬間の傾きは 0.02 / 0.01 で 20となる。
値も20で、その時の傾きも20。不思議な数。それが
0719デフォルトの名無しさん
2011/11/05(土) 04:57:00.330720デフォルトの名無しさん
2011/11/05(土) 05:52:54.33規格と規格書の違いが分かってないんだよ。
0721デフォルトの名無しさん
2011/11/05(土) 06:04:26.75この方法で一旦画像を取り出して読むことが出来てる。
http://d.hatena.ne.jp/SaitoAtsushi/20101218/1292656982
GhostScript で PostScript 形式に変換すると単に四角を描画する命令になってるみたいなので、
それを適当に編集するというのもひとつの手かもしれない。
0722デフォルトの名無しさん
2011/11/05(土) 06:33:18.99>この瞬間の傾きは 0.02 / 0.01 で 20となる。
先生、なりませーんw
というかその傾きどうこうって話つまんないからもういいでーす。
せめて QZ にしてくれ。Q を NGワードにしたくない。
0724デフォルトの名無しさん
2011/11/05(土) 07:19:52.98そりゃあたりまえ、f = exp(x) において df/dt = f だ。
ってことをいいたいのか?
それはそうと、2年7ヶ月間商品投資をやって20% 利益がでたが、これって年利に換算するといくらくらいになるのか?
0726デフォルトの名無しさん
2011/11/05(土) 07:34:25.90xをtでえっ?
0727デフォルトの名無しさん
2011/11/05(土) 07:38:36.420728デフォルトの名無しさん
2011/11/05(土) 11:06:19.89間違えた上に聞きもしない自慢話なんかしやがって
せめてQZにしてくれへんか。NGワードにできひんやろ?
0730デフォルトの名無しさん
2011/11/05(土) 11:25:34.65そうすれば誰もNGしない
0731デフォルトの名無しさん
2011/11/05(土) 11:26:53.680732デフォルトの名無しさん
2011/11/05(土) 12:02:38.57unsigned long long int skytree731() {
return 1;
}
0733デフォルトの名無しさん
2011/11/05(土) 12:27:40.205.1.2.3 Program execution
2 Accessing a volatile object, modifying an object, modifying a file, or calling a function
that does any of those operations are all side effects, which are changes in the state of
the execution environment. Evaluation of an expression may produce side effects. At
certain specified points in the execution sequence called sequence points, all side effects
of previous evaluations shall be complete and no side effects of subsequent evaluations
shall have taken place. (A summary of the sequence points is given in annex C.)
volatileオブジェクトにアクセスすること、オブジェクトを変更すること、ファイルを変更
すること、もしくは、これらの操作のどれかを行う関数を呼ぶことは、全て副作用である。
副作用とは、実行環境の状態が変化することである。式の評価は副作用を伴うかもしれません。
順次実行している中で、副作用完了点(sequence points シーケンスポイント)と呼ばれる
ある特定の場所では、それ以前の評価によって起こる全ての副作用は完了していなければない。
そして、副作用完了点では、それ以降に続く評価によって起こる副作用が生じてはならない。
(付録Cに副作用完了点の要約が提供されている)
6.5.17 Comma operator
2 The left operand of a comma operator is evaluated as a void expression; there is a
sequence point after its evaluation. Then the right operand is evaluated; the result has its
type and value. If an attempt is made to modify the result of a comma operator or to
access it after the next sequence point, the behavior is undefined.
コンマ演算子の左のオペランドはvoid式として評価される。この評価の後に副作用完了点がある。
その後、右のオペランドが評価される。結果は、右のオペランドの型とその値である。
コンマ演算子の結果の変更を試みたり、次の副作用完了点の後にそれにアクセスすることを試みると、
その動作は未定義である。
0734デフォルトの名無しさん
2011/11/05(土) 13:58:32.11誤:結果は、右のオペランドの型とその値である。
正:結果は、右のオペランドの型とその値を持っている。
以下のように注釈に、「コンマ演算子は左辺値を生じない」とあるので、誤訳のほうでは
結果が左辺値になる可能性もあるので、訂正します。
95) A comma operator does not yield an lvalue.
コンマ演算子は左辺値を生じない
0735デフォルトの名無しさん
2011/11/05(土) 14:12:04.530736デフォルトの名無しさん
2011/11/05(土) 16:33:26.94switchはコンパイラがジャンプテーブル作るときもあるって書いてあったけど
そのジャンプテーブルを自分で作れば一番早いですか?
0737デフォルトの名無しさん
2011/11/05(土) 17:01:30.13環境とかデータによってちがうから一概にいえない。
実測が基本。
0738デフォルトの名無しさん
2011/11/05(土) 17:12:50.97公的な文書は、税金でつくられているから著作権はない
0739デフォルトの名無しさん
2011/11/05(土) 17:22:24.32「DIN(ドイツ標準協会)の規格を無断借用した出版社をDINが著作権侵害訴訟で訴えたところ、
連邦通常裁判所と連邦憲法裁判所で規格の著作権が認められず、請求が棄却された」
「米国においても、第5巡回区連邦控訴裁判所と連邦最高裁判所で国家規格が法律に準ずるとして著作権が否定された」
日本工業規格 − Wikipedia
0740デフォルトの名無しさん
2011/11/05(土) 17:27:26.37(平成に入ってJIS規格に関する法律が変わったんだよね)
それはともかくとして、うちの環境では見られない(´・ω・`)
マックとかだったら見られるのかな…
0741デフォルトの名無しさん
2011/11/05(土) 17:30:50.00民間の原案作成者(著作権者)が規格の販売売り上げに応じた報酬をちゃんと受け取っていれば
「著作権がある」とする話の辻褄は合いそうなんだけど、そういう事実は無いということ?
0742デフォルトの名無しさん
2011/11/05(土) 19:39:24.670743デフォルトの名無しさん
2011/11/05(土) 22:05:31.49そんなことで悩む以前にまずプロファイルを取れ。
ほとんどの場合、お前が思っている所以外が遅さの原因だから。
0744デフォルトの名無しさん
2011/11/05(土) 22:11:28.340745デフォルトの名無しさん
2011/11/05(土) 22:12:02.070746デフォルトの名無しさん
2011/11/05(土) 22:42:16.000747デフォルトの名無しさん
2011/11/05(土) 23:33:44.99勝手にコピーして再販してもいいのか?
0748デフォルトの名無しさん
2011/11/05(土) 23:46:46.07>>そりゃあたりまえ、f = exp(x) において df/dt = f だ。
あたりまえ?
なんで?
0749デフォルトの名無しさん
2011/11/05(土) 23:50:59.73これはひどいw 高校出てなくても勉強くらいはしようや
0750デフォルトの名無しさん
2011/11/05(土) 23:55:43.710751デフォルトの名無しさん
2011/11/06(日) 00:00:20.22コピーはダメ。
編集というかレイアウトには著作権がある。
スキャナで読み込んで、レイアウト変えて印刷すれば再版できる。
法律の条文自体には著作権は認められないから。
0752デフォルトの名無しさん
2011/11/06(日) 00:00:27.090753デフォルトの名無しさん
2011/11/06(日) 02:45:39.70struct AnyVec *next;
struct AnyVec *prev;
int type;
void *data;
} AnyVec;
こんなvector<boost::any>相当の構造体を引数として受ける
void myprintf(AnyVec* v) {}
な関数があったとして
そのままprintfに流し込むにはどんな方法がありますか?
できればインラインアセンブラ以外のやり方が知りたいです
0754デフォルトの名無しさん
2011/11/06(日) 03:57:23.73>こんなvector<boost::any>相当の構造体
0755デフォルトの名無しさん
2011/11/06(日) 05:23:41.08その構造体はリストだからとかそういうツッコミはしないからな
0756デフォルトの名無しさん
2011/11/06(日) 05:25:30.57どっちみちprintf()が扱えるのは引き数の羅列だからvprintf()に渡すしか。
で、vprintf()ならフォーマット文字列を自分で生成して引き数をmalloc()かなんかした領域に詰め替えてやればなんとかなるかも。
0757デフォルトの名無しさん
2011/11/06(日) 06:32:59.44やりゃ出来るだろうけど書式指定を全て賄おうとしたら労力半端なくね?
環境ごとに切り分けてインラインアセンブラで書いたほうがマシな気がする
たしかにlinkedlistだね
>>756
その線でやってみる
ありがとう
0758デフォルトの名無しさん
2011/11/06(日) 07:54:45.600759デフォルトの名無しさん
2011/11/06(日) 10:53:27.58もうパット見では理解不能な代物になるのでは・・・。
0760デフォルトの名無しさん
2011/11/06(日) 11:00:26.33まずは最低でも基本情報を通過してからコードを書け
それまでは一切のコーディングを禁止するべきだ
0761デフォルトの名無しさん
2011/11/06(日) 11:17:12.960762デフォルトの名無しさん
2011/11/06(日) 11:18:55.490763デフォルトの名無しさん
2011/11/06(日) 11:22:16.090764デフォルトの名無しさん
2011/11/06(日) 11:26:52.130765デフォルトの名無しさん
2011/11/06(日) 11:31:30.180766デフォルトの名無しさん
2011/11/06(日) 11:33:33.570767デフォルトの名無しさん
2011/11/06(日) 11:44:41.180768デフォルトの名無しさん
2011/11/06(日) 11:50:15.13デーモンやゾンビがいっぱいいます
0769デフォルトの名無しさん
2011/11/06(日) 11:53:39.18ちょっとでもおもしろいと思ってるのかね。
0770デフォルトの名無しさん
2011/11/06(日) 11:55:08.26俺はいくつか見てきたぜ
0771デフォルトの名無しさん
2011/11/06(日) 11:57:57.62映像と音の他にアウトプットにプラスαが必要だと思うよ具体的に何が必要化は知らんけど
0772デフォルトの名無しさん
2011/11/06(日) 11:58:32.030773デフォルトの名無しさん
2011/11/06(日) 12:07:37.110774デフォルトの名無しさん
2011/11/06(日) 12:08:34.410775デフォルトの名無しさん
2011/11/06(日) 12:10:47.13んで、結婚して数ヶ月すると性格がオバ藩化して、やがて悪魔になる
0776デフォルトの名無しさん
2011/11/06(日) 12:14:30.19まずは現実の召喚儀式で悪魔が本当に呼べないとだめだろう
0777デフォルトの名無しさん
2011/11/06(日) 12:23:37.98知識もないやつが出てくるなよ。
0778デフォルトの名無しさん
2011/11/06(日) 12:32:12.830779デフォルトの名無しさん
2011/11/06(日) 12:34:03.340780デフォルトの名無しさん
2011/11/06(日) 12:47:24.98それはハードエンジニアがクソなだけ。
0781デフォルトの名無しさん
2011/11/06(日) 13:33:22.140782デフォルトの名無しさん
2011/11/06(日) 13:40:18.46ノートPCでクアッドコアCPU乗せてるやつとか
0783デフォルトの名無しさん
2011/11/06(日) 13:53:12.190784デフォルトの名無しさん
2011/11/06(日) 13:55:44.950785デフォルトの名無しさん
2011/11/06(日) 13:59:49.32専門用語が一般人にはアナクロに感じられるたまによくある例。
0786デフォルトの名無しさん
2011/11/06(日) 14:06:07.92効率よくCPUのトランジスタを動作させると言うより、
効率よくCPUのロジック回路を動作させると言うべきじゃないの?
0787デフォルトの名無しさん
2011/11/06(日) 14:09:15.34ちょっとスレ違いな上にくだらなすぎなのでもういい?
0788デフォルトの名無しさん
2011/11/06(日) 14:23:15.560789デフォルトの名無しさん
2011/11/06(日) 14:28:09.59プログラムジャンクて、
DELキーが爆薬の発火装置に直接繋がってたんじゃね?
PC自体を改造して
0790デフォルトの名無しさん
2011/11/06(日) 15:19:38.24たぶんあれ発火装置に直接じゃなくてDELキーで発火させるフラグを遠隔でONにしてると思う
まわりくどいけど遠隔で直接ボンだとその場にいない可能性があるからね。
つーかPC組むときにあの爆弾気づくよなぁ、BTOかメーカー品かなのかな?
脱線ついでだけど スーパーコンピューターの演算能力でビルの空調関係に負荷をかけて爆発させるというスーパーハカーが
0792デフォルトの名無しさん
2011/11/06(日) 21:07:52.39strcmp(&maze[i][j]," ") == 0 でも
maze[i][j] == " "でも
だめなんだ
どんな方法がありますかね?
0793デフォルトの名無しさん
2011/11/06(日) 21:10:38.53その変数 maze は char maze[3][5]; のような類か?
だとするなら、
maze[i][j] = ' '; でなければチャックできない。
(半角スペースをシングルクォートで囲っていることに注意)
0794デフォルトの名無しさん
2011/11/06(日) 21:11:14.540795デフォルトの名無しさん
2011/11/06(日) 21:16:25.92つstrchr
0796デフォルトの名無しさん
2011/11/06(日) 21:17:35.420797デフォルトの名無しさん
2011/11/06(日) 21:29:43.37解決したわ
サンクス
0798デフォルトの名無しさん
2011/11/06(日) 22:57:17.340799デフォルトの名無しさん
2011/11/06(日) 23:03:41.85要素数が0のリストのこと
0800デフォルトの名無しさん
2011/11/06(日) 23:25:56.76fp = fopen(wkFileName , "wb");
if(fp != NULL)
{
fwrite( buff, 1,1024, fp );
fclose(fp);
}
と、書き込むと、fcloseの処理に5分ほどかかります。
一度書き込みを行うと、それ以降は、
再びオープンして書き込んでも一瞬で書き込みは終了します。(PG落とすとまた5分・・・)
これはなぜでしょうか?
0801デフォルトの名無しさん
2011/11/06(日) 23:36:54.07viでファイル書き込もうとして、固まりますね。。。
読むのは関係なしに即時行えるのですが、書くのはダメみたいです。
スレ違いみたいです。
すんまそん。
0802デフォルトの名無しさん
2011/11/06(日) 23:39:22.76セキュリティきつくし過ぎておかしくなってないか?
0803デフォルトの名無しさん
2011/11/06(日) 23:41:02.67まさかD大生?
0804デフォルトの名無しさん
2011/11/07(月) 06:37:55.11JISのサイトの話なら、Adobe Readerを8以下に落とせば見られる。
0805デフォルトの名無しさん
2011/11/07(月) 08:03:21.720806デフォルトの名無しさん
2011/11/07(月) 08:09:32.280807デフォルトの名無しさん
2011/11/07(月) 08:20:46.660808デフォルトの名無しさん
2011/11/07(月) 09:45:25.23ありがとう
(; ・`д・´) ナ、ナンダッテー!! (`・д´・ ;)
どこまで腐ってるんだJISは・・・・
無料だから文句言えないか
ところでpdftkというフリーソフトを使うとゴニョゴニョ
0809デフォルトの名無しさん
2011/11/07(月) 12:44:22.38多分最初のforの中があやしいと思いますがどう間違えてるかわかりません
ttp://pita.st/n/ortv1279
0810デフォルトの名無しさん
2011/11/07(月) 12:49:02.26二つ目のforの中でi*iやってるけど
そこはseisu[i]*seisu[i]じゃねぇのか?
0811デフォルトの名無しさん
2011/11/07(月) 15:26:12.64呼び出し先の、プロセスの作りが悪いため、
メインプログラムがsignul 11で落ちるなんてことありますか?
しかも呼び出したプロセスはそのまま継続されるとかありますか?
0812デフォルトの名無しさん
2011/11/07(月) 15:33:15.78メインプログラムが悪い確率 99.9%
0813デフォルトの名無しさん
2011/11/07(月) 16:51:51.693要素に限定した場合、ソートするよりも速いものがあれば教えてください。
0814デフォルトの名無しさん
2011/11/07(月) 17:20:00.040815デフォルトの名無しさん
2011/11/07(月) 17:45:19.05これをマクロにしたようなものを使えば早くなるかもしれない
int median(int a, int b, int c)
{
if(a>b)
{
if(c>a) return a;
if(c>b) return c;
return b;
}
else
{
if(c>b) return b;
if(c>a) return c;
return a;
}
}
0816デフォルトの名無しさん
2011/11/07(月) 17:57:00.210817デフォルトの名無しさん
2011/11/07(月) 18:08:19.32英語圏ならストールマンでいいとおもう
0818デフォルトの名無しさん
2011/11/07(月) 18:19:17.08http://translate.google.com/translate_tts?tl=en&q=Stolzmann
0819デフォルトの名無しさん
2011/11/07(月) 20:56:54.00{
Y=0;
v=1;
for(i=0; i<strlen(a);i++)
{
v=v/(a[i]*(i+1));
for(j=0; v<1; j++)
{
v=v*10;
}
}
X=v*7000;
for(i=0; i<strlen(a);i++)
{
Y=Y+a[i]*i;
}
ハッシュ関数ですが、こんな感じでOKですか?
文字列に対するハッシュ。
0820デフォルトの名無しさん
2011/11/07(月) 21:09:54.710821デフォルトの名無しさん
2011/11/07(月) 21:14:15.80>>819のコードでやってること理解できますか?
0822デフォルトの名無しさん
2011/11/07(月) 21:18:34.110823デフォルトの名無しさん
2011/11/07(月) 21:49:08.79例えば?かなり良くないですか?
0824デフォルトの名無しさん
2011/11/07(月) 21:58:46.550825デフォルトの名無しさん
2011/11/07(月) 22:01:04.20XとY?
0826デフォルトの名無しさん
2011/11/07(月) 22:08:47.230827デフォルトの名無しさん
2011/11/07(月) 22:13:55.23うん、かなり良くないね。
0828デフォルトの名無しさん
2011/11/07(月) 22:20:01.85int X;
if(strlen(a)>=2)
{
Y=0;v=1;
for(i=0; i<strlen(a);i++)
{
v=v/(a[i]*(i+1));
for(j=0; v<1; j++)
{v=v*10;}}
X=v*7000;
for(i=0; i<strlen(a);i++)
{Y=Y+a[i]*i;}
j=0;
if(heap[X].x==0){heap[X].x=X; heap[X].y=Y; tangosu++;}
else if(heap[X].x!=0)
{while(!(heap[X+j].x==X&&heap[X+j].y==Y)){
if(heap[X+j].x==X&&heap[X+j].y==Y)break;
if(heap[X+j].x==0){heap[X+j].x=X;heap[X+j].y=Y;tangosu++;break;}
j++;}}}
0829デフォルトの名無しさん
2011/11/07(月) 22:29:32.230830デフォルトの名無しさん
2011/11/07(月) 22:36:53.65double ですよ。
X,Yはint
0831デフォルトの名無しさん
2011/11/07(月) 22:38:02.50intだよ
0832デフォルトの名無しさん
2011/11/07(月) 22:49:11.11最高のハッシュ関数だよ。
0833デフォルトの名無しさん
2011/11/08(火) 00:13:37.68配列名は代入式の右側にあるときは先頭の要素のアドレスと見なされるが、
左側にいるときはそうではないということで合っているでしょうか?
0834デフォルトの名無しさん
2011/11/08(火) 00:24:34.650835デフォルトの名無しさん
2011/11/08(火) 00:25:58.40配列は単にポインタに減衰するだけです。
そして配列名は定数なので左辺値になれません。
0836デフォルトの名無しさん
2011/11/08(火) 00:55:27.29???
0837デフォルトの名無しさん
2011/11/08(火) 01:05:45.04式中で配列名は、次を例外として「配列の先頭要素を指すポインタ」に変換される。
・sizeofのオペランド
・&のオペランド
char配列に対する初期化子の文字列リテラルも例外
配列名は代入できない左辺値。
→正確に言うと代入可能な左辺値に配列名は含まれない。
0839813
2011/11/08(火) 08:36:11.86こちらは〆させていただきます。
0840813
2011/11/08(火) 11:27:06.520841デフォルトの名無しさん
2011/11/08(火) 15:24:41.22ある整数があるときそれを一つ上の一番近い2の乗数にしたいのですがいい方法はありますか?
シフト演算子で一つ増やして上位ビット以外を0にすればいいんでしょうがうまい方法がよくわかりません
例 3→4 33→64 128→128
0842デフォルトの名無しさん
2011/11/08(火) 15:47:41.67int hoge(int n)
{
int ret;
for(ret=1;ret<n;ret<<=1)
;
return ret;
}
0843デフォルトの名無しさん
2011/11/08(火) 16:08:25.75ありがとうございます。複雑に考えすぎてました
0844デフォルトの名無しさん
2011/11/08(火) 16:59:27.23http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2
0845デフォルトの名無しさん
2011/11/09(水) 03:17:03.690846デフォルトの名無しさん
2011/11/09(水) 17:18:17.26自作したら引数いっぱいでごちゃごちゃします。
0847デフォルトの名無しさん
2011/11/09(水) 17:33:09.46exit()
0848デフォルトの名無しさん
2011/11/09(水) 18:08:46.110849デフォルトの名無しさん
2011/11/09(水) 18:34:06.300850デフォルトの名無しさん
2011/11/09(水) 18:37:04.84ガベージコレクション(笑)
0851デフォルトの名無しさん
2011/11/09(水) 18:43:19.980852デフォルトの名無しさん
2011/11/09(水) 18:48:02.150853デフォルトの名無しさん
2011/11/09(水) 19:10:46.060854デフォルトの名無しさん
2011/11/09(水) 19:23:41.100855デフォルトの名無しさん
2011/11/09(水) 19:23:56.86そういう必要が生じたのなら、設計を見直すべき。
基本的に、malloc() や free() ってのは、
あっちこっちで気まぐれにホイホイ呼ぶような処理じゃない。
0856デフォルトの名無しさん
2011/11/09(水) 19:46:47.32いいことがあるというより、しないと悪いこと(メモリが足りなくなる)が起きるので
それを回避するために開放しなければならない。
0857デフォルトの名無しさん
2011/11/09(水) 20:41:34.85せいにして放置するのですけど、どうしたらいいですか?
0858デフォルトの名無しさん
2011/11/09(水) 20:47:17.290859デフォルトの名無しさん
2011/11/09(水) 20:47:36.53その断片化で何か不都合が起きてるの?
0860デフォルトの名無しさん
2011/11/09(水) 21:20:40.320861デフォルトの名無しさん
2011/11/09(水) 21:21:32.04857がハゲる
0862デフォルトの名無しさん
2011/11/09(水) 21:36:38.320863デフォルトの名無しさん
2011/11/09(水) 21:54:03.310864デフォルトの名無しさん
2011/11/09(水) 22:00:24.23長時間連続運転するサーバーとか、いろんな用途で使われるライブラリとか、
特別な用途に限られるんじゃないの。
0865デフォルトの名無しさん
2011/11/09(水) 22:06:53.080866デフォルトの名無しさん
2011/11/09(水) 22:16:19.06>長時間連続運転するサーバーとか、いろんな用途で使われるライブラリとか
以外の、コマンドラインツールとか、毎日再起動するサーバーとかでは、
想定用途の範囲で問題になるほど断片化が進まなければ、
必ずしも絶対根絶しなきゃいけないってわけじゃないんじゃないの?って話。
0867デフォルトの名無しさん
2011/11/09(水) 22:18:01.820868デフォルトの名無しさん
2011/11/09(水) 22:19:35.750869デフォルトの名無しさん
2011/11/09(水) 22:20:05.22わかります。
0870デフォルトの名無しさん
2011/11/09(水) 22:22:17.97ある程度の規模なら、再起動がどうとかよりも
まず、いつコンデンサが火を噴いてもいいように構成するのが当たり前で、
そのように構成されていれば、再起動なんていつでもできる
0871デフォルトの名無しさん
2011/11/09(水) 22:24:11.68でも、別に再起動しないと停止するわけじゃないけど、
毎日再起動する運用になってるサーバなんていくらでもあるだろ。
0872デフォルトの名無しさん
2011/11/09(水) 22:26:07.05>>871 は >>867 宛てね。
0873デフォルトの名無しさん
2011/11/09(水) 22:26:11.740874デフォルトの名無しさん
2011/11/09(水) 22:31:22.00>必ずしも絶対根絶しなきゃいけないってわけじゃないんじゃないの?
って発想が、メモリ断片化を気にしないプログラマが育つ苗床になってる予感
0875デフォルトの名無しさん
2011/11/09(水) 22:46:08.37メモリ断片化を気にしない人は、
>想定用途の範囲で問題になるほど断片化が進まなければ、
なんてことは考えないよ。
0876デフォルトの名無しさん
2011/11/09(水) 23:05:13.17倍くらいあれば断片化してもどうにかなるだろ
0877デフォルトの名無しさん
2011/11/09(水) 23:07:40.060878デフォルトの名無しさん
2011/11/09(水) 23:13:10.16>>857
の質問意図が、「プログラマに断片化を放置せずに解決するようにさせるにはどうしたらいいですか?」
という意味なら、答えは簡単だ。
PM がタスクの優先順位を変えて、溜まってるユーザからの機能追加とかの要求とかを
全部棚上げして、断片化の解決を最優先でやれ、と指示すればいい。
もう、マ板の話題だな。
0879デフォルトの名無しさん
2011/11/09(水) 23:16:03.20どう解決したらよいですか?
0880デフォルトの名無しさん
2011/11/09(水) 23:21:23.400881デフォルトの名無しさん
2011/11/09(水) 23:22:52.800882デフォルトの名無しさん
2011/11/09(水) 23:36:54.67char buf[BUFSIZE]
fgets(buf, BUFSIZE, stdin)
で取得した文字列の先頭のアドレスをほかの関数に受け渡す方法がわかりません。
具体例を示していただけると助かります。
ご指南お願いします。
0883デフォルトの名無しさん
2011/11/09(水) 23:41:03.46そこかしこでallocator使われるのに(コンテナ、文字列、etc…)どうすりゃいいの?/(^o^)\
0884デフォルトの名無しさん
2011/11/09(水) 23:44:08.680885デフォルトの名無しさん
2011/11/09(水) 23:48:14.38vectorもstringも動的確保だよ^^;;;
0886デフォルトの名無しさん
2011/11/09(水) 23:50:34.28例えば、puts(buf);とでもすればputs()にbufを渡せる。
0887デフォルトの名無しさん
2011/11/09(水) 23:51:36.430888デフォルトの名無しさん
2011/11/09(水) 23:51:52.87今のC言語ってそんなものがあるのか
0889デフォルトの名無しさん
2011/11/09(水) 23:54:15.12問題だと認識していて放置さえしなきゃどうにかできるつもりでいるんなら
お前が解消しろよ。
そもそも解消する術をお前が知らないというのなら放置されてようがされてまいが
結果は同じなんだろ。
0890デフォルトの名無しさん
2011/11/09(水) 23:54:59.87それと同じのがオーダリングテーブルの実装で必要になったから考えたことあるわ。
あらかじめmallocで巨大なメモリーを確保しといて、そこから自作mallocでアドレスを配布してくだけ。
この自作mallocは非常に単純な作りで、単に配列のシークアドレス(初期状態は先頭アドレス)を返し、シークアドレスを確保分だけすすめるだけ。
個別のfreeは存在しない。
全体のメモリーの開放は、単にシークアドレスを先頭に戻すだけ。
これで次からは再び、自作mallocで、この領域を先頭から再利用できる。
0891デフォルトの名無しさん
2011/11/09(水) 23:57:08.42http://www.google.co.jp/search?q=region+allocator
0892デフォルトの名無しさん
2011/11/10(木) 00:42:13.82全部アセンブラでやれ。
0893デフォルトの名無しさん
2011/11/10(木) 01:01:20.050894デフォルトの名無しさん
2011/11/10(木) 01:03:12.590895デフォルトの名無しさん
2011/11/10(木) 01:04:56.94GoogleだってAndroidやChromeのカーネルの部分はアセンブラで組んでるし
0896デフォルトの名無しさん
2011/11/10(木) 01:06:58.990897デフォルトの名無しさん
2011/11/10(木) 02:19:21.15これ豆な。
0898デフォルトの名無しさん
2011/11/10(木) 02:21:44.150899デフォルトの名無しさん
2011/11/10(木) 02:35:16.140900デフォルトの名無しさん
2011/11/10(木) 02:36:18.17アセンブラでもピザデブ的プログラミングはできるが? 要はやってる奴の根性でしかない
0901デフォルトの名無しさん
2011/11/10(木) 09:01:41.99UNIX では、メモリ関係のシステムコールを含め、OSがほとんどCで書かれてるから、
この問題に関する限りそれは意味ないぞ。
(Cコンパイラもライブラリも大部分Cで書かれてるはず)
0902デフォルトの名無しさん
2011/11/10(木) 11:54:10.53まさかCで書かないとシステムコールを呼べないとか思ってないだろうなw
0903デフォルトの名無しさん
2011/11/10(木) 12:23:19.73というか、 >>901 の内容からそういう疑問が出てくる
キミの脳の健康が心配だ。
0904デフォルトの名無しさん
2011/11/10(木) 12:23:46.650905デフォルトの名無しさん
2011/11/10(木) 13:42:28.060906デフォルトの名無しさん
2011/11/10(木) 13:54:22.05一番の問題は、マニュアルを C ベースで書かれてしまうこと
アセンブラ使いにとっては頭の中でコンパイルしながら読まされるのがつらい
0907デフォルトの名無しさん
2011/11/10(木) 14:02:08.39それがつらいレベルでアセンブラ使いとかw
0908デフォルトの名無しさん
2011/11/10(木) 14:18:43.150909デフォルトの名無しさん
2011/11/10(木) 14:29:12.280910デフォルトの名無しさん
2011/11/10(木) 14:57:40.580911デフォルトの名無しさん
2011/11/10(木) 15:24:33.940912デフォルトの名無しさん
2011/11/10(木) 16:50:12.51けっこうトリビアがびしばし出るんだが、知らずに済んでるお幸せな方はいいね
0913デフォルトの名無しさん
2011/11/10(木) 17:14:23.840914デフォルトの名無しさん
2011/11/10(木) 17:19:59.30こういう事ってできないんですか?
0915デフォルトの名無しさん
2011/11/10(木) 17:23:20.85できるよ
0916デフォルトの名無しさん
2011/11/10(木) 17:29:51.26やり方を教えていただけませんか?
0917デフォルトの名無しさん
2011/11/10(木) 17:36:08.51& とか * とか追加すればいいよ
0918デフォルトの名無しさん
2011/11/10(木) 17:45:18.18allocate(n,&hoge,&hoged);
void allocate(int n, int **hoge, double **hoged)
{
printf("error1\n");
*hoge = malloc(sizeof(int)*n);
*hoged = malloc(sizeof(double)*n);
printf("error2\n");
}
0919デフォルトの名無しさん
2011/11/10(木) 17:58:56.170920デフォルトの名無しさん
2011/11/10(木) 18:00:54.92将棋の筋読みCでやると高速だろww
0921デフォルトの名無しさん
2011/11/10(木) 18:03:46.390922デフォルトの名無しさん
2011/11/10(木) 18:06:00.590923デフォルトの名無しさん
2011/11/10(木) 18:11:13.360924デフォルトの名無しさん
2011/11/10(木) 18:34:52.86それは、吐いたコードの速度ではなく、コンパイル速度では?
コンパイル速度はpascalの足元にも及ばない
0925デフォルトの名無しさん
2011/11/10(木) 18:37:12.57Wikipediaな。
0926デフォルトの名無しさん
2011/11/10(木) 18:40:17.01こいつは何が言いたいの?
0927デフォルトの名無しさん
2011/11/10(木) 18:43:04.54美wiki。な
0928デフォルトの名無しさん
2011/11/10(木) 18:47:29.200929デフォルトの名無しさん
2011/11/10(木) 18:49:47.560930デフォルトの名無しさん
2011/11/10(木) 18:50:08.67+-----
| また、コーディング上の“自由度”が非常に高い。
| そのため良くも悪くも“何でも出来てしまう”パワフルさは多くのプログラマの支持を集める一方で、
| セキュリティー脆弱性や潜んだバグによる想定外の動作、
| コンパイラによる最適化の難しさ(そのためCはコンパイラ言語として決して高速ではない)といった欠点の原因ともなっている。
ですって。
0931デフォルトの名無しさん
2011/11/10(木) 18:59:25.88ttp://upload.wikimedia.org/wikipedia/commons/1/16/Don%27t_abbreviate_as_Wiki.png
0932デフォルトの名無しさん
2011/11/10(木) 19:04:33.16Includeとかを注意すれば防げるものが多いけど、C++などで油断するとコンパイルに数分かかることもある。
0933デフォルトの名無しさん
2011/11/10(木) 19:08:24.11今どきのCPUならそんなに重要じゃないな
C++になると糞遅くなるのでLLに逃げたい気持ちも分からなくはない
0934デフォルトの名無しさん
2011/11/10(木) 19:11:15.550935デフォルトの名無しさん
2011/11/10(木) 19:17:27.28って宣言して、
printf("Hello!\n");
printf("&s",str);
printf(str);
の三つの出力を確認したら、三つとも
Hello!
って出力されたんだですけど、この三つの結果を、類推される
printf関数の処理の流れに基づいて説明せよ
ってのを教えて下さい。
0936デフォルトの名無しさん
2011/11/10(木) 19:18:15.46裏を返せば、最適化しやすい書き方もできる訳で・・・
構造体のメンバの順番変えるだけでメモリ節約とか
0937デフォルトの名無しさん
2011/11/10(木) 19:18:49.84printf は
Hello!
を出力する関数である
0938デフォルトの名無しさん
2011/11/10(木) 19:20:07.33LLじゃ無くても、Cとアセンブラのソース吐ける言語処理系は多いよ
Haskellも吐けるし、Delphiも確か吐けた
0939デフォルトの名無しさん
2011/11/10(木) 19:20:31.50アプリケーションソフト起動するときに、1分くらいかかるとやる気失せるだろ。
0940デフォルトの名無しさん
2011/11/10(木) 19:22:46.212番目は”&s”って出力されるだろ
どうせ%sの打ち間違いだろうけど
0941デフォルトの名無しさん
2011/11/10(木) 19:25:04.91C++コンパイラならともかく、Cコンパイラは気にするほど遅く感じない
Cのコードの拡張子を.cと.cppで比較してみれ
0942デフォルトの名無しさん
2011/11/10(木) 19:25:39.95>printf("&s",str);
何したいか、教えて
0943デフォルトの名無しさん
2011/11/10(木) 19:28:02.45%sもまずいだろw 半角%sにしなきゃ
引数の一番目が文字列で渡されてるとかそんなとこじゃね?
0944デフォルトの名無しさん
2011/11/10(木) 19:29:08.400945デフォルトの名無しさん
2011/11/10(木) 19:31:01.42すいません、二番目は
printf("%s",str);
です
0946デフォルトの名無しさん
2011/11/10(木) 19:34:59.17知ってるよw
細けーこた良いんだよwww
0947デフォルトの名無しさん
2011/11/10(木) 19:36:11.34一回目は結構待たされる。
二回目以降は変更したファイルのみコンパイルされるから、あまり待たないで済む
0948デフォルトの名無しさん
2011/11/10(木) 19:38:45.61VCなら、ビルドでmakeとCコンパイラ、隣家の仕事をまとめてやってくれる。
0949デフォルトの名無しさん
2011/11/10(木) 19:52:57.43まわしてるんだよ。
確かに数100万行クラスになると工夫しても最初とか数十分かかることもあってやって
られないとは思うが。
0950デフォルトの名無しさん
2011/11/10(木) 20:02:57.79VCでMFC使うと普通に最初は5分近く待たされるがな…
ただウィンドウ表示するだけのアプリで・・・
Core i5でだぞ・・・
0951デフォルトの名無しさん
2011/11/10(木) 20:07:42.17自分のプログラムの部分だけの最適化だとすばやいけど
0952デフォルトの名無しさん
2011/11/10(木) 20:10:54.080953デフォルトの名無しさん
2011/11/10(木) 20:47:35.86dylibが対象ではなく現在の実行プロセスに含まれる関数を,文字列から取得することはできないのでしょうか?
実行時に動的に呼び出す関数を変更したいため必要なのですが……
0954デフォルトの名無しさん
2011/11/10(木) 20:54:53.23名前で索引付けしたテーブルを持ってればいいじゃん。
0956デフォルトの名無しさん
2011/11/10(木) 21:31:08.20DLLとかsoとかならできるよ
0957デフォルトの名無しさん
2011/11/10(木) 21:31:25.54まじか。最近VCは使ってないがそんなことはなかったと思うが。
ひょっとしてMFCもソースからコンパイルになってたりするのか?
それならまぁわかる。MFCでかいから。
0958 忍法帖【Lv=2,xxxP】
2011/11/10(木) 21:35:54.91c++でBMIの計算プログラムを作っているのですがcの値がおかしくなってしまいます。
どこが悪いのでしょうか?
#include<stdio.h>
int a;
int b;
int c;
int d;
int e;
int main(void){
while(1){
printf("BMI計算\n");
printf("体重を入力ください。\n");
scanf("%d",&a);
printf("身長を入力ください。\n");
scanf("%d",&b);
c=(a/(b*b))*10000;
printf("あなたのBMIは%.1fです。\n",c);
if(c<18.5)
{
printf("あなたは痩せ気味です。\n");
}else if(c>=18.5 && c<25)
0959 忍法帖【Lv=2,xxxP】
2011/11/10(木) 21:37:17.71続き
{
printf("あなたは標準体重です。\n");
}else if(c>=25 && c<30)
{
printf("あなたは若干太り気味です。\n");
}else if(c>=30 && c<40)
{
printf("あなたは太りすぎかもしれません。\n");
}else if(c>=40)
{
printf("ジャンボすぎる体型ですねww\n");
}
printf("もう一度やりたい場合は1を押してください。\n");
scanf_s("%d",&d);
if(d!=1)
{
break;
}
}
printf("お疲れ様でした。\n");
getchar();
getchar();
}
0960デフォルトの名無しさん
2011/11/10(木) 21:37:38.870961デフォルトの名無しさん
2011/11/10(木) 21:38:47.37マジ。
自分も最初使ったとき、ウィザードが作ったコードを編集しないで実行で、こんなに待たされると思ってなかったw
0962デフォルトの名無しさん
2011/11/10(木) 21:53:21.82オブジェクトファイルをTPPっていうディレクトリに出したいんだけど
TPP/%.o : %.c
hogehoge
ってやればいいって書いてあったんですがカレントディレクトリにオブジェクトファイルができます。どうすればいいですか?
0963デフォルトの名無しさん
2011/11/10(木) 21:57:13.660964デフォルトの名無しさん
2011/11/10(木) 21:58:13.18-o $@
を使う
0965デフォルトの名無しさん
2011/11/10(木) 22:04:51.48例えば ${CC} -c $<
みたいな感じです
0966デフォルトの名無しさん
2011/11/10(木) 22:07:02.42明示的に-o で出力ファイル名指定してないといけないってことですか?
0967デフォルトの名無しさん
2011/11/10(木) 22:10:45.78コンパイラにも教えてあげないと
0968962
2011/11/10(木) 22:12:41.730969 忍法帖【Lv=2,xxxP】
2011/11/10(木) 22:13:38.42この件ですが無事に解決しました
0970デフォルトの名無しさん
2011/11/10(木) 22:54:03.580971デフォルトの名無しさん
2011/11/10(木) 22:55:19.88C言語なら俺に聞け(入門編)Part 92
http://hibari.2ch.net/test/read.cgi/tech/1320933306/
0972デフォルトの名無しさん
2011/11/10(木) 23:39:23.23乙
0973デフォルトの名無しさん
2011/11/11(金) 00:12:32.37gcc の最適化が甘いのはそんな理由じゃないんだけどね
0974デフォルトの名無しさん
2011/11/11(金) 00:16:22.90時代時代の目一杯のスペックでも全然足りないのにさ
今日もサンディの 4.5G にキレたし
0975デフォルトの名無しさん
2011/11/11(金) 00:19:17.34Cより最適化しやすい言語ってのが何なのか気になるな…
理論的には高速化しにくいx86が金に物言わせて現実には逆転してるのと同じで、金に物言わせたIntel Cコンパイラが最適化で勝ってるとか、そんな落ちが有りそうな気もするが
0976デフォルトの名無しさん
2011/11/11(金) 00:19:22.69今でもFPGAのコンパイルは3時間くらいかかるからCのコンパイル時間に文句言うなよ
0977デフォルトの名無しさん
2011/11/11(金) 00:36:31.50あくまで理屈上だが、コンパイルフェーズについては、Cより例えばJavaのほうが最適化し易い。
と書くと、トランスレート、コンパイル、インタープリトを区別してない者からツッコミ来るな。
ここで注意が必要なのは、「JavaソースからJVM用コードへのコンパイル」と
「CソースからCPUコードへのコンパイル」との比較だという事。
JVM実装の性能とか、C特有のテクニックを駆使したコードの利点とかを含んでいない。
0978デフォルトの名無しさん
2011/11/11(金) 00:53:26.61特にCではポインタが何を指してるのかの解析が
非常に難しいので、Intel C++とかでも
適切なプラグマやコンパイルオプションを組み合わせないと性能が出ないとか、
そういったケースはある
0979デフォルトの名無しさん
2011/11/11(金) 00:54:51.14うん、ハード屋の忍耐力には脱帽するわ。
いい加減な性格なのでハード屋は無理。趣味だけにしとくw
>>977
そりゃポインタもなければそうだろうさ。
0980デフォルトの名無しさん
2011/11/11(金) 01:12:45.26ネットワーク分散コンパイルなんか進行状況がグラフで出て前世紀のデフラグをぼーっと見てる感覚に浸れる
0981デフォルトの名無しさん
2011/11/11(金) 01:49:05.60最低級のアセンブリ言語を最適化するのって難しそうじゃんw
0982デフォルトの名無しさん
2011/11/11(金) 01:55:49.25→コンパイラの守備範囲が広い
→ 多様なケースを満遍なく最適化するのが難しい
だと思う。
0983デフォルトの名無しさん
2011/11/11(金) 02:00:46.02実態はCPUの方も、Cに合わせて来た部分もあるけどね。
0984デフォルトの名無しさん
2011/11/11(金) 02:30:50.88FORTRANのfor文とCのfor文ではFORTRANの方がずっと並列化しやすい。
などなど。Cは最適なコードをプログラマが書けるものと推定する。
0985デフォルトの名無しさん
2011/11/11(金) 02:51:45.91C Processing Unit と言われかねない。
>実態はCPUの方も、Cに合わせて来た部分もあるけどね。
?
そんな事実はないと思うのですが。80x86系では、どの部分が「Cにあわせてきた」のでしょうか?
0987デフォルトの名無しさん
2011/11/11(金) 03:06:15.17μOP は主にCPU 内のパイプラインのためでは?どこが C言語と関係あるんです?
0989デフォルトの名無しさん
2011/11/11(金) 03:11:37.61おまえさ、コテ外せよ
こんなに長いあいだスレにいてそのレベルだと思うと嫌悪感が先に出て
答える気がしなくなるからさ。
名無しなら、まだ初心者かもしれないと思うからまともなレスがつくと思うぞ。
0990デフォルトの名無しさん
2011/11/11(金) 03:14:35.63μOP は主にCPU 内のパイプラインのためでは?どこが C言語と関係あるんです?
>実態はCPUの方も、Cに合わせて来た部分もあるけどね。
こんな事実は金輪際ありません。霧
0993デフォルトの名無しさん
2011/11/11(金) 03:16:19.780994デフォルトの名無しさん
2011/11/11(金) 03:16:35.20ここあんまり長くないんだけど前から?
いや、知ってる人答えなくてもいいよ。レスが無駄だから。
まぁもうすぐ1000だからどっちでもいいけど。
0995デフォルトの名無しさん
2011/11/11(金) 03:17:47.96妄想癖でもあるのか?
0996デフォルトの名無しさん
2011/11/11(金) 03:18:55.12>実態はCPUの方も、Cに合わせて来た部分もあるけどね。
?
そんな事実はないと思うのですが。80x86系では、どの部分が「Cにあわせてきた」のでしょうか?
0997デフォルトの名無しさん
2011/11/11(金) 03:22:43.800999デフォルトの名無しさん
2011/11/11(金) 03:24:20.49別に?
うーん。RISC のやりかたは、CPU 内の様々なからくり(パイプラインとか投機実行とか)のためであって、C言語のため、という気はあまりしないのですが、でも少しは意識しているのかもしれませんね。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。