1 :
デフォルトの名無しさん :
2012/09/09(日) 11:08:29.85
テンプレ改変乙
二次元配列の変数を関数に入れてmain()で使うことってできる? できるなら具体的にどうなりますか
7 :
◆5bhYRM1Rdk :2012/09/09(日) 21:02:10.06
ヒープ deleteminの関数作成がわかりません
問題文:ヒープの最小値を取り除く、deletemin関数を作成せよ。
空の配列にinsertを複数実行することでヒープ条件を満たすヒープを構成する。
これにdeleteminを実行することで最小値を抽出せよ。
最小値を抽出した後、一次元配列がヒープ条件を満たすように再構成せねばならない。プロトタイプ宣言は以下とする。
int deletemin(int a[], int *n);
質問:関数deleteminについて調べてはみたんですが何をしているのか分からないものばかりだったので質問させてください。
ヒープの最後のノードを根に持ってきて、右のノードと左のノードを比べて小さい値のノードの方と比較して
最後から持ってきたノードの値の方が大きければ交換するというの
繰り返して最小ヒープを再構成したいのですが、どうすればいいのかわかりません。
サイトなどみても分からなかったのでど素人でも分かるように説明お願いします。
自分のソース
http://ideone.com/vvLM6
あ〜あ、マルチかぁ。 元々宿題っぽいから、スレチだし。
?
11 :
◆5bhYRM1Rdk :2012/09/10(月) 01:03:07.35
>>8 すれ違いではないと思うんですが。
あちらは問題を丸投げするスレですが、こっちのスレはC言語ならなんでも聞いていい
わけですよね。だから最後に説明をといってるんですが。
書いたコードなんですが、コンパイルは通るのですが出力されません。
ソース
http://ideone.com/ckedm
まずは質問する前にGNUスタイルの出来損ないみたいな書き方を直して欲しい
num[k]とnum[i]の数値の交換をするためにビット演算を使ったら、なぜか上手いこと動かない。 どこに原因が有るのか? int i,j,k,temp; int *num; /*numの値の取得と幾つかの処理*/ num[k] ^= num[i]; num[i] ^= num[k]; num[k] ^= num[i]; この部分が temp=num[k]; num[k]=num[i]; num[i]=temp; だと普通に動く。 環境は OS:Linux コンパイラ:gcc 4.7
>>14 k == i になる可能性を考えていなかった。
if(num[k]^num[i])
{
num[i]^=num[k];
num[k]^=num[i];
num[i]^=num[k];
}
こうしたら上手いこと動いた。
16 :
デフォルトの名無しさん :2012/09/10(月) 02:29:30.82
printfのメッセージを外部ファイル化したいのですが、タブや改行などの書式解釈が上手くいきません。 自前で\nを0x0aなどに置換しないとダメなのでしょうか? --formatText.txt-- \\t[\t]\\t[\t]%%d[%d]\\n\n(ここでEOF) --main.c-- #include <stdio.h> int main() { FILE *fp; char szBuf[256]; if(NULL == (fp = fopen("formatText.txt", "r")) ){ printf("open error\n"); return -1; } printf("希望"); strcpy(szBuf, "\\t[\t]\\t[\t]%%d[%d]\\n\n"); printf("<<<"); printf(szBuf, 999); printf(">>>\n"); printf("現実"); fgets(szBuf, 256, fp); printf("<<<"); printf(szBuf, 999); printf(">>>\n"); return 0; } --実行結果-- 希望<<<\t[ ]\t[ ]%d[999]\n >>> 現実<<<\\t[\t]\\t[\t]%d[999]\\n\n>>>
17 :
デフォルトの名無しさん :2012/09/10(月) 02:30:04.48
>>16 printf() の実行時にはあくまでも書式指定のうち % がからむものしか解釈しない。
\nとか\\ とかは、コンパイル時に解釈されるものだ。
自前で置換するしかないでしょうね。それか、自前で \x を展開するルーチンを書くか。
>>16 printfのメッセージと引数は蜜結合しているので、分離することは良くない。
クラッシュするプログラムが簡単に出来あがるので、設計をやりなおすべき。
Qzとかいうクズのいう事は信用しないように。
>>19 ×蜜結合
○密結合
まあそれもそうだ。設定ファイルがまずいと警告なしにクラッシュするのはよくないね、確かに。
>>18-20 ありがとうございます。
コンパイル時に書式解釈されるということで、実行時解釈は規定外ということ納得しました。
PGしながら、オーバーフロー実行狙いの言語ファイルを作られそうだなとは思っていました。
(対策は思いつかなかったので善意に期待して放置でしたが…)
今回はコンソールアプリを作成したので公開しようと思い、どうせなら英語化も簡単に出来る仕組みにしようかな、というのが目的でした。
内部に2種の文字を持ち、実行後にus/jpのコマンドで切り替えるなどに路線変更を検討してみます。
>>21 Windows ならリソースを切り替える仕組があるし、GNU の gettext という手もある。
ごく簡単なものならプログラム内で場合分けしてもいいと思うけど、
その場合でも既存のものがどういう方式になっているのかを参考にするのは悪くない。
>20がやろうとしてい事って幾つかのソフトウェアであるlangフォルダの直下にあるファイルのような事か? 7-zipの場合、たしかlangフォルダの下に言語ファイルが置いてあったな。 それがどのように動いているかは分からない。
自作でstrlenとstrcatの関数を作っていて、両方とも関数化はまだですが 一応できましたが、何故かstrlenで、*aにヌル文字が何故か代入されています *(a+1)以降はそんな事が起こらず、何故aにヌル文字が代入されてしまうのでしょうか? またこの二つの関数はこれで大丈夫でしょうか? #include<stdio.h> int main(void){ char a[16]="abcdefh"; char *b="ijk"; int c=0; char d=0; while(*a!='\0'){ printf("%c\n",*a); c++; *a=*(a+c); } printf("文字列の長さは%d\n",c); *a='a'; while(1){ *(a+c)=*(b+d); c++; d++; if(*(b+d)=='\0'){ break;} } printf("%s\n",a); return 0;}
>>24 >何故aにヌル文字が代入されてしまうのでしょうか?
c++;
*a=*(a+c);
この2行、特に後ろのほうのせいだが、何をさせたかったの?
自分でもよくよく考えると何をさせたかったのかわからなくなる部分がちらほらありますね アドバイスどおりに短く書き直して、関数化してみました 26さんのソース見ているとfor文の中で全部してしまうことすらできるんですね 単純にループさせるための条件を書くためだけかと思ってました int strlen_func(char*a){ int c=0; while(*(a+c)!='\0'){ c++;} printf("文字列の長さは%d\n",c); return c; } void strcat_func(char*a,char*b,int c){ int d=0; while(*(b+d)!='\0'){ *(a+c)=*(b+d); c++,d++; } printf("%s\n",a); }
ああ疲れた
>>27 一般的な関数を作るときは、strlen後の復帰値をstrcatに使用するような流れ限定な引数(strcatの[int c])は無いほうが良いです。
無駄なようでもstrcatの引数は文字列2個だけにして、strcatの中でstrlenを使って文字列終端を取得させる方がきれいです。
あとstrcatのバグですが、文字列bの結合で'\0'が出たら終わるため'\0'の代入がされていません。
文字列aの初期化状態によっては終わりの無い文字列が表示されます。
例えば以下の状態だと出力結果は"abcdefghxxxxxxxx"となります。これはすぐに終端がある、まだマシな例です。
int main(){
char sz1[32];
char sz2[32];
int len;
strcpy(sz1, "xxxxxxxxxxxxxxxx");
strcpy(sz1, "abcde");
strcpy(sz2, "fgh");
len = strlen_func(sz1);
strcat_func(sz1, sz2, len);
return 0;
}
30 :
16 :2012/09/10(月) 20:12:39.18
>>22-23 「既存のものがどういう方式」というのを調べられるレベルに無いので、
リソースやgettext、オープンソースなど具体例を示して頂けたので勉強になりました。
今回は小規模アプリなので、単体に2種文字持ちで実行時任意切り替えが妥当なようです。
ありがとうございました。
31 :
デフォルトの名無しさん :2012/09/10(月) 20:29:31.66
c言語諦めたんですがプログラミング会社にも営業部とかってありますか? 一応理系の企業に就職したいです。(※プログラミングは出来ない.....)
32 :
デフォルトの名無しさん :2012/09/10(月) 20:38:07.61
スレタイも読めないようじゃどこも無理。
33 :
デフォルトの名無しさん :2012/09/10(月) 20:42:00.70
>>32 ティッシュ配りも無理ですかね?
面接落とされまくってて落ち込んでます。
君が人事なら 君に数十万の月給を払いたいと思うかね そんな価値は無い
35 :
デフォルトの名無しさん :2012/09/10(月) 21:07:52.17
>>34 価値の無い人間のほうが多いと思いますが?
多い少ないは関係が無い 君には価値が無い
37 :
デフォルトの名無しさん :2012/09/10(月) 21:34:48.37
>>36 じゃぁ努力したい。
どうすればいい?マジレス希望。
欝じゃないけど気弱なんで。
板違いだ消えろ
Cじゃなくてもプログラミング言語いっぱいあるだろ
ふっほっ
42 :
デフォルトの名無しさん :2012/09/10(月) 22:03:56.80
>>39 ヒントくれ。
会社設立は資本金1円からでも始められる事は知ってる。
プログラミング言語を売るってのは良いの?
外国でしか使われてないプログラミング言語を日本でしか
流通させないことを条件に権利を貰うみたいな。
でそれを企業に提供するみたいな。
43 :
デフォルトの名無しさん :2012/09/10(月) 22:09:07.71
起業した会社の成功率0.3% アフィリエイト成功率より低い
言語を売る=コンパイラorインタプリタを売るってことになるんだよな
言語を売る=解説本を売る&講演会&ワークショップ&(洗脳)セミナー&…… ついでにGUI構築環境とかも有料 基本的なコンパイラ&インタプリタは無料
46 :
デフォルトの名無しさん :2012/09/10(月) 22:30:14.81
解説本かぁいいねぇ でもあれって出版の利権とかコネでもあるの? 当たり前の事しか書いてないクソみたいな本が棚に並んでたりするし しかも著者女だったりするしwwww
そのクソ本や女にできる事すらやれてないんだよな、笑ってる奴って
48 :
デフォルトの名無しさん :2012/09/10(月) 22:34:06.39
パソコン教室くらいしかないな。 でもC言語教えてるパソコン教室なんて無いし隙間かもね
c言語諦めた人間が他人に教えるなんて発想はしないわな QZじゃあるまいし
100行くらいは書けるけど 1000行超えると書けないから挫折 書いたこと忘れる
C言語って実装中何行くらい記憶(把握)してればいいの?
前スレで質問したものです。 ポインタを使って配列をコピーするにはどうしたらいいですか?
53 :
デフォルトの名無しさん :2012/09/10(月) 22:50:39.63
54 :
46 :2012/09/10(月) 22:51:33.17
>>52 え?
配列をコピーするなら
for(i=0; i<=N; i++)
a[i]=b[i]で良いだろ。
うちの会社はSIerだけど営業課長がいるよ。勿論給料も一般職のPGよりいいよ。 しっかり利益を上げることができる見通しを提示できるのなら就職も不可能ではないよ。
>>51 関数一個。だから、関数は100行程度に抑えるべき。
今までの流れを見て利益を出せるような人間に少しでも見えたのかね
58 :
46 :2012/09/10(月) 22:55:57.97
そもそも配列をコピーするって意味がよくわからんね
なんで?
60 :
46 :2012/09/10(月) 22:59:58.61
配列って時点でポインタ関係ないでしょ 配列って静的なメモリの確保だから
静的に確保されたメモリだと、なぜポインタ関係ないの?
静的、動的かんけいないよ
はい
配列とポインタのクソみたいに密接な関係を知らないとは…… モグリか?
ありがとう。
67 :
46 :2012/09/10(月) 23:10:16.60
そもそも配列はコピーできない strcpyを使うと面倒だ 配列は配列にコピーすれば良い
>>58 たとえば、Javaなら
a = b;
でコピーできる
69 :
46 :2012/09/10(月) 23:17:13.53
例えば char *s="abcd" char *t="efgh"って あって strcpy(s,t)とする意味は全く無い。 エラーでやすいしばかげてる。 k=s; s=t; t=k; としたら指す実態は入れ替わっている。
memcpy
>>67 > そもそも配列はコピーできない
> 配列は配列にコピーすれば良い
コピーできるのかできないのかどっちだよ。ばーーーーーーーーーーーーーーーか。
配列は、メモリのかたまりとして利用できるのだ(飛び地があるとして利用するのではない。線形リストは、とびとびでもよい) だから(インデクスでアドレスを計算できるから)、一発でアクセスできる。
>>54 一個ずつコピーしてもできるけど、
memcpy()でコピーするのは、配列の特徴をいかしている。
配列の特徴とは
連続している。
サイズが既知。
ポインタも 配列っぽくできるよね。 char *s s[0] s[1]
文字列リテラルが書き換えられる仕様になってればポインタも配列も同じ
でも殆どbuiltin関数なんて使われてない
何のはなししてるの?
>>78 shine78()
{
int *a;
int b[20];
a += 10;
b += 10;
}
cc 78.c
78.c: In function 'shine78':
78.c:6: error: invalid operands to binary +
>>68 んー、違うような気がします。Java で配列コピーする完結したコード例を示してみては?
ばぶー
ちゃーん!
Javaの配列はオブジェクトだからa=bでコピーできるわけないわな やってることはCの int a[] = {1, 2, 3}; int *b = a; と似たようなもんだ
うわぁ……
>>68 そういうのあるけど、コピーということばは適切ではない(コピーしてない)
Cは、はっきりしてるなぁ。コピーするときは、memcpy()
#define STRING_SIZE 10 #include <stdio.h> #include <string.h> void go_off(char *p) { char b[STRING_SIZE] = "go off"; memcpy(p, b, sizeof(b) ); } int main(void) { char a[STRING_SIZE]; go_off(a); printf("%s (%d bytes)\n", a, strlen(a) ); return 0; }
なんだこれ
>>88 JavaだってコピーするならSystem.arraycopy()だからたいして変わらんよ
93 :
デフォルトの名無しさん :2012/09/11(火) 12:32:52.61
forkとかってC言語の関数じゃないの?
unixのシステムコールだろ
95 :
デフォルトの名無しさん :2012/09/11(火) 13:11:33.67
>>93 質問するときはfork(2)とセクションまで書くといいよ
97 :
デフォルトの名無しさん :2012/09/11(火) 13:45:49.14
C言語に関係ない文字はシステムコールといっとけば良いという風潮
どういう揚げ足とりなのか読めなくて悔しい
悔しいね
うほ
101 :
デフォルトの名無しさん :2012/09/11(火) 18:13:43.87
メモリ=レジスタ? C言語でアドレスの話するときメモリメモリってなるけど
プログラマって基本クーラーのかかったオフィス? それとも実機が置かれている工場みたいな倉で作業?
なんでメモリとレジスタの違いが分からないアホが首突っ込んでくるんだ 調べろよks それもできない低脳なら 回線切って小学校からやりなおせ
>>101 レジスタはCPUの中にあり、メモリはCPUの外に存在する、と考えるのが普通
本当に小学校に行くと通報されるから注意な
はふ
さあ、揚げ足取りはよ!
メモリは基本的に端を考えなくてOK? チューリング機械の無限に長い一本のテープを考えればOK?
アルゴリズムは基本難しいからね
メモリアルゴリズムと実装アルゴリズムは全然違う
違うね
C言語クソ過ぎ 仮数関数機能すらない
機能すらないね
他の言語のコンパイラとか そこでのまさに仮数関数機能そのものは C言語で作られていたりする その辺りはどう思う
116 :
デフォルトの名無しさん :2012/09/11(火) 19:23:39.56
文法規則は分かるが応用できない 基礎が大事なんてうそやったんや!
関数名のつけ方ってどうしてる? プログラム名に添え字付けるだけじゃだめ? sample.c void sample1(void) char sample2(int a, int b) *int sample3(a[3]) ライクな感じ
仮数じゃなくて仮想ね 純粋仮想関数すらないってプロトタイプにも程がある。 もっと凝れよな。
別の言語使えよw
C言語って当たり前の機能しかない 関数なんて概念誰でも思いつくだろ
思いつくだろうね
思いつかなかったときは自分で作ったらええんか
後出しで思いつくとか言ってるヴァカがいるスッドレは この臭いスレですか?
プログラミングしててどうしても分からない事があれば放置していいの? 昨日システム管理・監査に関わるプログラミングのバイトに受かったんですが 明日から来てくれといわれました。 仕事内容は現場で当日から教わるそうです。
/* TODO: とりあえず放置 */ ってコメント書いとけばおk
多分
>>124 の仕事は
>>125 が書き散らした「/* TODO: とりあえず放置 */」
の部分を埋める作業だなwww
/* TODO: やっぱり放置 */
で全て完了だwww
金銭的支払いも放置されるからな、
気をつけろよwww
>>125 もしそのコメントを書き忘れるもしくわ
プライドが許さない場合はどうすれば良いですか
130 :
デフォルトの名無しさん :2012/09/11(火) 20:33:09.39
仕様書に書いてある文章の意味が分からない場合誰に聞けばいいの?
そのような時は是非とも我々に訊いてみてください 我々はいつもあなたのような迷える子羊たちのために いつでも救いの手を差し伸べるでしょう さあC言語という名前の宗教に今こそ入信すべき時です 門戸は誰にでも開かれております
仕様書も読めないような奴・会社は仕事受けないでほしいよな 出来ない奴は徹夜しようが何しようが出来ないんだから、発注側の苦労が増えるだけ
134 :
デフォルトの名無しさん :2012/09/12(水) 06:56:46.81
徹夜しようが出来ない? kwsk
あー、そういう奴にはろくに仕様書も書けない発注先を紹介したいわ。 「旧プロジェクトのソースを参考につけます」と言いつつ、 「詳細の仕様はないので旧プロジェクトを(バグも含めて)踏襲してください」って話になって、 「動かないようでは困ります」ってもう、いい加減にしろとしか。
136 :
デフォルトの名無しさん :2012/09/12(水) 07:17:52.70
発注先??
プログラムかけないからSEになりましたって奴らは氏んでしまえ
SEって応用情報処理の資格持っててとかシステム管理・開発に関するスペシャリストだろ? 資格の本見たけどプログラムコードみたいなのはほとんどなくて リスク管理とかマネージメントとかプロジェクト規模の話ばかりだった。 すげーとおもたわ。
そりゃSE:プログラマーの比率は1:20だからな
140 :
デフォルトの名無しさん :2012/09/12(水) 09:35:30.02
ファイル操作系の関数を使用してファイルからデータをよみだしたいと思っているのですが、 よみだすファイル自体をもコンパイルする事って可能ですか? それともバイナリデータを格納した変数をしようするしかないですか?
>>140 できるよ
C言語コンパイラを組み込むよりは lua みたいな組み込み用言語を使ったほうが楽
…これは噛み合ってるのかな
午後のコーダのインストーラって、そんな感じのことしてなかったっけ?
すいません。ファイル書き込みの時間を短縮したいと思ってるんですが、 以下のような構造のデータをfwrite一発で全書き出ししたいんですがどうしたらいいでしょうか typedef struct { int val; char* text; }DATA; DATA data[100] = { { ... }, { ... }, (データが100個ある) }; textデータのサイズは可変でポインタでなく中の実データをファイル出力したいんですが、 fwrite一発でやるにはどうしたらいいでしょうか
一旦書き込むデータの全サイズを計算して UC* save_data; とかに保存し直した後で fwriteとかしかないすかね
一旦メモリ上にファイル内容と同じになるものを書き出して fwrite 一発って方法ならいけるが面倒くさい fwrite の代わりに fputc で書けば fwrite の回数は 0 回でいけるが、ぐっと低速化するw
保存しなおしてfwrite一発とfwriteを何回も発行するのとどっちが早いかな
text の内容量が多い → 個別のが早い text の内容量が少ない → 一発のが早い
ついでに言えば。 書き出すデータ量<バッファサイズ ならfwrite()の回数は何回でも関係ないな。fflush()またはfclose()時に書かれるから。 書き出すデータ量>>バッファサイズ の場合もfwrite()の回数はどうでもいいな。書き出す処理自体がボトルネックになるから。
まじすか。fputcでも速度変わらないですか
ケースバイケース
fputc() も fwrite() も FILE *fp を引数に持つ点ではどっちもどっちかもしれませんね。
実測重要。 今時の複雑なシステムを把握しようとするだけ無駄。
実測とはいうものの手元の環境だけで結論を出すのも‥‥ その昔 smartdrv.exe の存在だけでもえらい違いというか fd, fp の差はなかったかと。 それはそうと、ついにossの smartdrv は現れなかったですね。いったいどういう実装だったのだろう‥‥
桜庭ななみ
文字リテラルの数値がASCII互換というのは規格で決まってるんですか?
いいえ
はい
関数の引数に配列あるとき、おまいらどう書いてるの? 例えばintの配列32個として int a[] int *a int a[32] (int *a)[32] 。。。他にも書き方あるかな?
そんな引数は使わない。
163 :
デフォルトの名無しさん :2012/09/13(木) 01:11:44.47
自己参照構造体について教えて頂けませんか?
void f(int (*a)[32]);
自己参照構造体を使ったリスト構造の一連の操作関数を参考書を何も見ずに書けるようになれば一人前だと思っていい
いやむしろ入門の第一歩 C言語坂を登りはじめたばかり
>>165 K&R2 の線形リスト書き方は初心者用でいつまでもそれでは糞ですよ、と
std::listみれば一発や
あっそ
BSD系の<sys/queue.h>がけっこう好き。
171 :
デフォルトの名無しさん :2012/09/13(木) 15:18:18.25
C言語プログラミングを大学で1年やって分かった3つの事 ・俺は絶対にSEにはなれない ・SEをやっている奴は脳の構造が天才である ・これに比べたらHTMLとCSSは糞みたいに簡単である ・単純につまらない ・用途が無い ・ホモ臭い ・女性はやらない ・空き缶拾いのほうがコスパ良い
#include <stdio.h> /* 引数void, 戻り値void の関数を指せるポインター */ typedef void (*fncptr)(void); void a(void) { printf("A"); } void b(void) { printf("B"); } void c(void) { printf("C"); } /* fncptr 型の関数が3個並んだ配列が引数の関数 */ void f (fncptr f[3]) { f[0](); f[1](); f[2](); } main() { /* 関数の配列を作成 */ fncptr v[3] = {a, b, c}; f(v); }
>>171 ホモ臭いって何だよ┌(┌ ^o^)┐ホモォ・・・
オタク臭いけどホモ臭いってのは初めて聞いた
ふっほっ
>>113 ないからクソなのか
作れるから素晴らしいのかを考えよう。
カリカリにチューンして組み上げるのがC
出来合いの既製品でプラモデルするのがお前の好み
F1カーと軽自動車の違い。
元からニコ動みたいな映像じゃねーか
日本科学未来館だし
――そして、25万年後……
二歩目でスレッド分割するなら2つ 三歩目でスレッド分割するなら5つ に分けられるけど 7x7 を4時間で解くのは無理ぽ
勘違いしてた 8x8 を4時間で解かなきゃいかんのか 全然かなわねーな
187 :
186 :2012/09/14(金) 22:16:01.89
188 :
163 :2012/09/15(土) 02:50:14.22
>165など で、結局説明はなし?
マイナス方向へ丸める除算の高速な方法を教えてください 今はこんな感じです(実際は三項演算子を使ったマクロにしてます) 0 除算については考えなくてもOKです // u が被除数 // l が除数 int div(int u, int l) { if(l>0) { if(u>=0) return u/l; return -((-u+l-1)/l); } else { if(u<=0) return u/l; return -((u-l-1)/(-l)); } }
>>188 ぐぐれば、いくらでも出てくるだろ。
そもそも、何から説明すればいいのからわからんし、全部説明しろよ、
とか思ってそうだから無視されてるんだろ。
>>189 何に使うの?
例えば定義域がわかっているならオフセットを足して計算とか、範囲が狭いなら
テーブルで持っておくとか。
>>191 ポリゴンの描画に使います
定義域は不定
範囲も不定
丸め方向が一方向でないとポリンゴンに穴があいてしまうのと
何度も呼ばれて結構な負荷(全体の20%程度)になってるので高速化したいというのが理由です
193 :
m_m :2012/09/15(土) 12:22:10.47
#include <stdio.h> int main(){ int a,b; a=10,b=10;printf("%d %d %d\n",a,b,b/a); a=10,b=9;printf("%d %d %d\n",a,b,b/a); a=10,b=1;printf("%d %d %d\n",a,b,b/a); a=10,b=0;printf("%d %d %d\n",a,b,b/a); a=10,b=-1 -9;printf("%d %d %d\n",a,b,b/a); a=10,b=-9 -9;printf("%d %d %d\n",a,b,b/a); a=10,b=-10-9;printf("%d %d %d\n",a,b,b/a); } /* 答えがマイナスになるようなら、分母の絶対値−1を、分子から引く*/
if (u^l&~(~0>1)) return~(~u/l); else return u/l;
>>192 ポリゴン描画なら定義域は画面範囲じゃん。
普通、画面座標系(0,0)-(w-1,h-1)でやるんでねーの?
196 :
m_m :2012/09/15(土) 12:57:31.75
>>194 計算結果が一致しない
>>195 最終的にはポリゴンの描画なんだけど
行列式の計算途中の数値だから範囲を限定できないんだ
>>197 画面座標に落とすまでは丸めないで計算すると思うんだが。
じゃあこれで 次の関数を完成させよ #define WIDTH 640 #define HEIGHT 480 char buf[HEIGHT][WIDTH]; void triangle(int x1, int y1, int x2, int y2, int x3, int y3, int c) { // (x1,y1) (x2,y2) (x3,y3) を頂点とする三角形を描画せよ // buf[y][x]=c とすることで点を打つことが出来る // x1,y1,x2,y2,x3,y3 の値域は -32000 〜 32000 である }
エスパーするとそのx1/y1...は画面座標系のつもりなのか? 普通は画面座標におさまるように前段階で計算するもんだが。 ちょっと基本をググるなりした方がいいぞ。
それに、もしそれがやりたいことなら32000オフセットかければ今やってる やり方でできるんじゃねーのか?
3D書くとき穴をあけたくなかったら0.375ずらしとけってGLの人が言ってた
203 :
デフォルトの名無しさん :2012/09/15(土) 15:47:06.36
32000足して正数の座標系にすればいいだけだな
>>200 図形はすべて画面外かもしれないし、一部だけ見えてるかもしれないし、全部入ってるかもしれない
205 :
189 :2012/09/15(土) 16:45:14.38
行列式を使わない方法を思いついたのでそっちで試してみます
ホントにCでやってのかなぁ?(疑惑)
ふっほっ
209 :
デフォルトの名無しさん :2012/09/16(日) 09:39:23.71
尖閣諸島には石油資源が豊富 ↓ 石油があると外国が侵略する理由になる また豊富な石油で電力を賄うと原発への依存度が下がる ↓ 原発を減らすと技術力がガクッと下がりさらに国防力も大幅下落する アメリカやフランスなどとの関係も悪くなり戦争リスクが高まる 結論 尖閣諸島を放棄することは国益
珍しくQZの意見に同意した
うまいこと返したな。 俺も感心したわ。
またQZの自演が始まったか
板違い
久しぶりにお邪魔します。 if文などの条件文で複数の条件を指定する時、 if ( 変数 == 値 || 変数 == 値 ) と書きますが、この時変数が同じ場合だとしても同じ変数を2度書くしか指定する方法はないのでしょうか? 分かりづらいと思うので、 if ( 変数 == 値1 , 値2 ) こういった感じに変数の複数の値から分岐させたい場合変数を1回の記述で済ます事は出来ないのでしょうか? 私の場合これが極端で if ( 変数x == 値1 || 変数x == 値2 || 変数x == 値3…(ry とする場合が多いのでこれらを1つの条件にまとめたいのですが可能ですか? ダメでも他に良い提案がありますか? よろしくお願いします
おまえさあ、くだらない自分勝手なソースの書き方やめろよ そんなにオレ様仕様がいいならオレ様言語でも作ったら?
>>216 こういった感じで可変長引数の関数で表現出来なくはない。
http://ideone.com/DNNKz Cの可変長引数は引数の個数を渡す必要があるのが不恰好な上に、
間違った値を指定してもコンパイラが検出できないのがダサい。
C++ ならもうちょっとマシな方法を用意できるんだけど。
>>216 Python なら if(x in [2, 3, 5, 7, 11]) { ... } とか if(10 <= x <= 20){ ... } とかできるから、
C言語でも言語仕様を変更すれば実現可能とは思うが、そんな要望はたいして多くな
いから、素直に書くか
>>218-219 みたいにするか、適当なプリプロセッサで作って変
換するとかすればいいと思うよ。
そういうのが欲しければもっと高レベルな言語やったほうがいいんじゃねーの
>>216 可変長引数マクロを駆使すれば出来るが、まんどうだからswitchの方がいい。
条件でbreakしたいならswitchじゃダメだけど。
switch (変数) { case 値1: case 値2: case 値3: 処理; break; } こういうことか
224 :
216 :2012/09/16(日) 21:13:10.96
>>217-223 みなさん早い回答ありがとうございますm(_ _)m
switch文で代用したいと思います。
ありがとうございました!
可変長引数ってのが何なのか分かりませんでした…(´・ω・`)
もうちょっと勉強します…orz
>>221 高レベル=習得が難しいアセンブラとかの事ですか?それとも高水準系ですか?
>>224 高レベル、ここではより人間の思考に沿った、書きやすいあるいは読みやすい、あるいは思考・アルゴリズムを反映する言語、ということになるかと思います。
計算機にさせるべき仕事や目的があってのプログラミング言語ですから、必要に応じて習得するなり、多少の時間と手間をかけて C で記述することを選択するなりいろいろ選択はあると思います。
ただ、C をある程度において習得することは、今後、別の言語を学ぶ際にも役立つでしょうね。
>>225 >計算機にさせるべき仕事や目的があってのプログラミング言語
お前がいうか?
226 :
デフォルトの名無しさん :2012/09/16(日) 22:19:55.45
お 前 が い う かwww
int a=1;
「ひな壇は韓流タレント中心に」という構想が一変、TV界と韓流の今 09/16 13:00
http://woman.infoseek.co.jp/news/entertainment/cyzowoman_16Sep2012_25106 日韓の関係悪化の影響により、韓流離れが加速する現在のテレビ業界。
しかし、2年ほど前には広告代理店を中心に「ゴールデンタイムの番組には韓国人タレントを使用する」流れが作られていたという。
現在は吉本興業所属の芸人が幅を利かせる“ひな壇タレント”を、そっくり韓流と入れ替えるという計画だったそうだ。
日本国内で、KARAや少女時代がブレークした2010年。
日本音楽事業者協会会長で「尾木プロ」社長の尾木徹氏が、K-POPアーティストの誘致に尽力したと伝えられていた。
そして同時期頃から、広告代理店やテレビ局上層部の間では、こんな“定説”が存在していたという。
「2011年以降は、ゴールデンのバラエティから、吉本芸人はほとんどいなくなります。
代わりにひな壇に座るのがK-POPアーティストや、韓流タレントたち。
安定してレギュラー番組を続けられそうなのは明石家さんま、島田紳助、ダウンタウンくらいで、その他の芸人たちは有名無名問わず降板させていこうという方針でした」(広告代理店幹部)
ところが3月の震災で、エンタメ業界は数カ月ほど停滞状態が続くことに。
その前後に日本デビューを果たしたK-POPアーティストや、バラエティに登場した韓流タレントも少なからず存在したが、テレビ出演者が大幅に入れ替わるといった事態に至ることはなかった。
「紳助は引退してしまったし、高岡蒼佑のフジテレビ韓流傾倒批判など想定外の事態はいくつも発生しました。
特にネット上でのフジテレビ批判は見過ごせるレベルの話ではなく、連日の抗議デモやスポンサー企業の不買運動など、韓流に対する不安要素ばかりが高まっていきました」(同)
そして今回の竹島問題で、韓流コンテンツへの傾倒に関して沈黙を貫いてきたテレビ各局も、方針を表明。
フジテレビは当面韓流ドラマの放送予定はないとし、またBS日テレの定例会見では赤座弘一社長が「韓国ドラマが多すぎるのではという声もある。
少なすぎるという声はないので、今後、(韓流ドラマを)少なくしていく方向になると思う」と発言したことも話題になった。
いくら学んでも、カスグラムしかかけないクズいう事は全然説得力が無いな。
230 :
216 :2012/09/17(月) 09:45:18.66
>>225 なるほど。分かりました。
とりあえず私はCをやっているのでこれでひとつのプログラムを作る力を身につけたら他の言語にもチャレンジしてみようと思います♪(=^^)/
ありがとうございました〜^∇^
悪いことは言わない最初はC#やっとけ まずC#でやって、これってCとかだとどうやるのかなって感じで勉強すれば、開発に必要なことをスムーズに習得できる C#は洗練されてて重要な機能は美しくまとまってるから、CやC++で勉強するときに生じるくだらない混乱がなく、PG入門、チュートリアルに最適なんだ
最初に楽なの覚えると後がつらいよw
問題ない 最初にもっとも難しい壁を越えようとするよりは、段階をつんで乗り越えるほうが賢い
まあちゃんとできる人にとっては順番はあまり関係ないかもね。 でも、C言語がもっとも難しい壁とか言ってたら色々とダメだろw
Cの何がムズカシイの
ポインタ。 参照さえあればどうかんがえてもいらないと思う。ポインタ演算は基本いらない。 malloc() の返り値で int &a = malloc(sizeof(int)) とか int &a = new int とかできないものか?
参照だと足したり引いたり出来ないし不便じゃね?
>>238 そのポインタ演算、あれば便利かもしれないけれどもそれは否定しないけれども、
基本的になくても「効率は落ちない」のではないかと、つつに考えておりまする。
C++ では確か void * の足し算引き算はできなかったはず。
>>239 そんなこと言い出したらC#なんかのモダンな機能も、
>あれば便利かもしれないけれどもそれは否定しないけれども、
>基本的になくても「効率は落ちない」のではないかと、つつに考えておりまする。
なんて事になっちゃいそう。
>>237 うーん。
その場合、確保失敗でのエラー通知方法が、例外しかなくなってしまうね。
c++
おっと、途中で書き込んでしまった。
>>237 うーん。
その場合、確保失敗でのエラー通知方法が、例外しかなくなってしまうね。
c++は良いとしても、cはどうなんだろうか。
malloc はともかく、fopen の返り値あたりはリファレンスでもいいかもしれない でも紛らわしいし、ポインタ一つの方がいい
>>237 参照だと、参照先の変更ができないけどそこはどうする?
VB みたいに参照変更用の演算(Set)が必要になるな
スレタイがあるだろう。
246 :
デフォルトの名無しさん :2012/09/17(月) 15:25:06.99
>>237 おまえさ、
int a; で済むことを
int& a = *new int; とかやってるの?
ジャイアントスイングで鉄柱に叩きつけて欲しいのか?
int Mdesukara; int &qz = Mdesukara;
>>246 int a; は int a; だろ…。
ポインタを参照で置き換える話なのに何言ってんだ?
バイナリの塊をチマチマ読む必要がないならポインタ演算はあんま必要ない
関数の中で fp を受けたいとき、つまりダブルポインタを使うような場面だと どうしても参照だとあれ…ってなっちゃうんだよな。 Java とか PHP とかやってるときにいつも迷う。というわけで個人的にはポインタ必須。
251 :
デフォルトの名無しさん :2012/09/17(月) 16:14:34.42
>>248 だからそのとおり
俺に言うな
水月に掌底でも欲しいのか?
あまり強そうな言葉を使うなよ 弱く見えるぞ
漫画の台詞を使うなよ バカに見えるぞ
エレガントなコードってどんなの? 技巧凝らすと読みづらいって言われるし 高等数学のようなエレガントさなの? ちょっと書いて見本みせてください。
256 :
デフォルトの名無しさん :2012/09/17(月) 17:07:38.57
>>252 そうか、じゃ 2W のレーザーで遠くからがいいか?
257 :
デフォルトの名無しさん :2012/09/17(月) 17:43:12.31
scanf関数に&が付くのは何でですか?
scanf()に積まれる引数はアドレスだから
scanfすらも覚えられないアホを弾く為の 懇切丁寧な門前払い
>>254 効率、短さ、分かり易さ のバランスじゃね
どれかを蔑ろにするとエレガントとは言われないだろう
見本は俺には無理
>>254 このコードをエレガントにして下さい、って感じでサンプルコード出せば盛り上がると思うぞ。
hello world をエレガントにして下さい
264 :
257 :2012/09/17(月) 21:57:37.44
>258 ありがとう。
いえいえ
>>237 int & o = *new int();
delete &o;
ポインタ変数は今は2バイトになってるんですか? (64bit版だと)
場合による
何が64bitなんだろうな
そこは任天堂がはるか昔に通過した地点だ
64bitのCPU向けに64bitのポインタが使えるコンパイラによって64bitのコードを吐かせる場合、64bitとなる
WindowsはLLP64 つまりintのみ32bit、あとは64bit
クロスコンパイラでクソなことをしでかすと クソなバイナリがとたんに吐き出される そしてあなたも会社から吐き出される まるで便所のクソのように
インディペンデンス・デイって映画で 宇宙人の船に外付けしてコンピュータウィルスを注入して 宇宙船の防御システムを機能不全にしていたんだけど あのウィルスってもともとはC言語で書かれていたものなのかな? 命令セットもなんなのかわかる?
ウィルス自体はそのシステム用のバイナリだろ そのシステムは機械語かも知れないし 宇宙人の言語そのものかもしれない そしてその手のコンパイラがあれば ナニ言語で書いてもいい 翻訳機なんだから
>>266 !!
コンパイル通りますね。感謝です。
参照変数にポインタの先の実体をみせておいて、その参照に対して単項 & 演算子をとると(本来可変・動的であるところの)ポインタ値が得られるのですね。
何かに使えないかなあ‥‥‥。
ただの勉強不足じゃん この分じゃC++11の右辺値参照とか全然分からないだろ
>>280 c++11なんて生きてるうちに到達できるかどうか‥‥勉強不足ですね
テメーに不足しているのは勉強じゃなくて、知能。
C++の話を出している奴ともども消え去れ
284 :
デフォルトの名無しさん :2012/09/18(火) 10:41:55.10
>>274 今やクロスでないほうが珍しい件について
void get_str(char* p_str) { p_str = (char*)malloc(6); strcpy(p_str, "hello"); } int main(void) { char* p_str; get_str(p_str); printf("%s\n", p_str); return 0; }
$ ./a.exe U牙]テ瑞瑞瑞瑞瑞振牙]テ瑞瑞瑞瑞瑞振牙 コンパイラがバグって増す
∩___∩ | ノ ヽ/⌒) あばばばばばば /⌒) (゚) (゚) | .| / / ( _●_) ミ/ ∩―−、 .( ヽ |∪| / / (゚) 、_ `ヽ \ ヽノ / / ( ● (゚) |つ / / | /(入__ノ ミ あばばっあびゃばびゃばば | / 、 (_/ ノ | /\ \ \___ ノ゙ ─ー | / ) ) \ _ ∪ ( \ \ \ \_)
void get_str(char** p_str) { *p_str = (char*)malloc(6); strcpy(*p_str, "hello"); } int main(void) { char* p_str; get_str(&p_str); printf("%s\n", p_str); return 0; } これだと動いたんですが、前者だとなんで駄目なんですか
290 :
デフォルトの名無しさん :2012/09/18(火) 11:21:52.85
char* をそっくり int と読み替えてみな printf の時点での p_str はどんな値になるか
なるほど、、ダブルポインタってやっぱり必要なんすね
>>282 よーくわかってます、足りない知能を(プログラミング分野限定でいいから)増やす方法ってないですかね、他人のソースを読むのはどうでしょうか?
むしろメモリポインタが必要だろ
友達と「同じ課題」でコーディングして出来の競っこすればいんじゃないの。 友達の知識じゃ物足りなくなったら先輩と競い、先輩が物足りなくなったら神と・・・ JAXAの創始者糸川さんの名言 人生で大切なのは、 失敗の歴史である。 目標に向かって、 一段ずつ階段を上っていく上で、 いちばん肝心なことは、 必ず、最初の一段を上るということである。 そしてまた次に一段上るということである。
295 :
デフォルトの名無しさん :2012/09/18(火) 13:54:04.69
成功に学ばないやつは永久に後追いを脱却することがない
成功に学ぶって何さ
うごいてるプログラムをなおすな!
typedef struct aaa { int a; } aaa; enum { xxx = (long) (&((aaa *)0)->a), yyy = (long) (&((aaa *)0)->a + 1), }; gcc4.2だとOK、VC2010だとyyyでコンスタントじゃないとエラー VCのバグ?
>>298 誰がそんなことしていいって言ったんだ?
しちゃいけないのか? なんで?
まあいいや。VCでもOKな回避方法見つけたから。 役にたたないクズ共だな。
便乗質問だけどenumにlong割り当ててもOKなの?
>>301 役立たずの上にうそつきか。生きてる価値ないな。
6.6 Constant expressions
7
- an address constant for an object type plus or minus an integer constant expression
>>305 まず、(aaa *)0はアドレス定数だ。
そして6.6-9で
> The array-subscript [] and member-access . and -> operators, the address &
> and indirection * unary operators, and pointer casts may be used in the
> creation of an address constant, but the value of an object shall not be
> accessed by use of these operators.
とあるので、&((aaa *)0)->aもアドレス定数だ。そして6.6-7の
> - an address constant for an object type plus or minus an integer constant expression
で&((aaa *)0)->a + 1もアドレス定数になるじゃねーか。
バカ、嘘吐き。死ね。
>>306 お前は前提からして間違ってるんだよ
バカバーカ
308 :
デフォルトの名無しさん :2012/09/18(火) 20:28:21.39
実際のところどうなのか興味あるので
>>307 も煽るだけじゃなくて根拠を示してクレヨン。
ちなみにうちのclangちゃんは文句言わなかったけど、
llvm-gccちゃんは同じようにyyyの方だけ怒った。
310 :
デフォルトの名無しさん :2012/09/18(火) 20:39:54.86
定数に定数を足しただけなのに怒るのは頭おかしいな
なぁにぃ
>>307 は引っ込みつかなくなって、必死で反論考えてる最中。
どんなバカな事言い出すか楽しみだ。
>>310 enum { yyy = (long) (&((aaa *)0)->a + 0)};
これでも怒る。vc2010ダメ杉だろ。
別に怒ってはいない。
ふっほっ
VCってマイクロソフトの独自仕様なんでしょ
原文はもってないけど、 JIS だと 6.6 の最後の方に「処理系は,定数式の他の形式を許してもよい」って書いてある。 GCC はこのルールを適用して許してるんじゃねーの。 -pedantic オプションを付けると警告は出すし。
a + 1 は &a[1]と等価であり、&, []ともに使ってよいとされている でも、VC2010では怒られるけどね。(long) &(&((aaa *)0)->a)[1] Anaddress constant is a null pointer, a pointer to an lvalue designating an object of static storage duration, or a pointer to a function designator; it shall be created explicitly using the unary & operator or an integer constant cast to pointer type, or implicitly by the use of an expression of array or function type. The array-subscript [] and member-access . and -> operators, the address & and indirection * unary operators, and pointer casts may be used in the creation of an address constant, but the value of an object shall not be accessed by use of these operators.
319 :
デフォルトの名無しさん :2012/09/19(水) 19:43:08.40
typedef struct aaa { int a; } aaa; enum { xxx = (long) (&((aaa *)0)->a), //vc=ok,gcc=ng yyy = (long) (&((aaa *)0)->a + 1), //vc=ng,gcc=ng zzz = ((long)&((aaa *)0)->a + 1), //vc=ok,gcc=ng ttt = offsetof(aaa, a) + 1, //vc=ok,gcc=ok }; 何ぞこれ?
>>319 gccのNGは別のエラーじゃないの? 規格上enumはintという事になってるから
(long)が許されないとか。
offsetofって 0を構造体のポインタにキャストして、メンバーアドレスと
構造体そのもののアドレスをchar *にさらにキャストした差だから、
xxx = (long) (&((aaa *)0)->a), //vc=ok,gcc=ng
が通らないのはおかしい。
322 :
デフォルトの名無しさん :2012/09/19(水) 21:00:26.43
>>320 いや int でも変わらん
ちなみに
-traditional では ok
-std=c89 では ng
-std=c11 では ng
-std=c++98 では ng
-std=c++11 では ok
324 :
デフォルトの名無しさん :2012/09/19(水) 21:34:02.38
うん
ISO/IEC 9899:2011というのが出てるの知らなかった 今まで9899:1999ばかり使っていた
>>326 _Generic キーワードはちょっと C らしくなくてやりすぎな気がしてた。
>>327 関数オブジェクトみたいなのをマクロで定義出来るのかな?まだ良く読んでないけど
さあ
プロ板
ププン酢たっぷりななみ寿司^^
すみません誠に聞き辛いのですが…、 3分前にC言語をやってみようと思い立った僕が、C言語を書く環境を整えるに当たり一体どのサイトから何をダウンロードしたらいいのでしょうか??
334 :
デフォルトの名無しさん :2012/09/20(木) 15:15:12.03
解りにくくてほんとにすみません。 とにかくC言語の事を何にも知らないのですが、ぜひC言語でちょっとしたプログラムでも組んでみたいんです。 でもそのプログラムを組むにしても何かしら(コンパイラ?)をどこかのサイトからダウンロードして来なきゃいけないわけですよね? その辺からヒントを頂きたいんです。 よろしくお願いします。
僻地なここに辿りつくのに最低限の資料すらググって調べられない時点で釣り
本屋で入門書の何冊かでも買ってくればいいのに
馬鹿用に手取り足取り方法を書いてあるじゃないか それでわからないのならMinGWなんて誰が教えても理解させるのは無理
△ 「メモ帳」などのソフト ◎ サクラエディタなどのテキストエディタ 基本的に、テキストエディタは、ワープロソフトではない
桜庭ななみ
(´・ω・`)…
346 :
デフォルトの名無しさん :2012/09/20(木) 21:39:02.19
>>340 path c:\mingw\bin;%path%
gcc --help
書き方覚えることに意味はないんだよ、憧れの君
(´・ω・`)…
struct tagLong { unsigned char force; unsigned char third; unsigned char second; unsigned char first; }; union longMember { long dword; struct tagLong t; }; こういう共用体があった場合 リトルエンディアンの場合 tagLongの並びは force、third、second、firstとするべきか first、second、third、forceとするべきか どっちがいいとか決まってますか? 別にどっちでもかまわないでしょうか?
それ以前にうにおんをそんな臭い使い方するなってことを肝に銘じておけ
>>849 キミの順序付けの定義による。背の高い順にならべ/背の低い順に並べ。
>>850 ネットワークをサポートするインクルードファイル見たことない初心者さんですか?
forceを使え
>>350 そんな変わった書き方ですかね?
まぁ自分の定義付けによるものならどっちでもよさそうな
感じですかね。
ちなみにfourthに修正しました。
>>353 first: 〔順序の〕一番(目)、第一
以下略
順序が定義されてなきゃ意味がないんだよ。マヌケ。
なんか朝からやたら攻撃的だけどカルシウム足りてる のかい? つーかプログラマーってこんなのしかいないのかよ。
どこの板も似たようなもんでしょ
プログラマというよりも人間なんてこんなのしかいないよ
エンディアンもそうだけど 構造体がどういう順で詰められるかもコンパイラ依存じゃなかったっけ そこまで含めて実際のメモリ上どうなるかを見たうえで名前を付ければいい バイトやビットって普通は下位から数えるよね?違うのかな
インド人にはアメリカのインド人とインドのインド人がいる エンディアンも同じ
>>360 > 構造体がどういう順で詰められるかもコンパイラ依存じゃなかったっけ
JISの規格書はタダで読めるんだから、ウソ書かないように。
知らないなら出しゃばらなきゃいいのに。
順序は規定されてるけど、どう詰められるかはコンパイラというか処理系依存だろ。
詰め方は処理系毎に指定する方法がある。 空きなく詰め込む指定ができないならば、役に立たないクズコンパイラ。 使う価値は無い。
>>364 Sparcや68000用のコンパイラは屑ですか。そうですか。
世の中x86のようにワード境界を跨いでワードアクセスできるような変態ばかりじゃないんですよ。
>>356 >353はアンカーを指摘しているんだと思うよ。
68000のコンパイラはパックできたよ。 つかパック出来ないとメモリマップドI/Oとか使えなくね?
ターゲットのCPUを議論しなくていいの?
うん、しなくて良い。バスエラーを回避するのは別の問題だから。
バイト単位にアクセスできるかってのと longとかの値を奇数アドレスに置けるかっていうのと混ざってる気がする。
>>369 アクセスするだけでアドレスエラーを出すようなコードを吐けって?
>>371 ワードサイズ以下のデータをパックする事と、ワードデータをワード
境界に置く事は別の話。
>>372 混同してると思ってるのはお前だけだと思うが。
混同してないなら
>>371 が致命的に間違っているという事。
struct {
char a, b, c, d;
};
これをパックした構造体にアクセスしてバスエラー起こすCPUが存在するのか?
やっぱり混同してるじゃんか。
>>364 は、
struct {
char a;
long b;
};
を隙間なくパックしろという話だろ。
そう思って踊っているのはお前だけ。
>>364 はオレだがそんな話はしていない。
>>376 > 空きなく詰め込む指定ができないならば、役に立たないクズコンパイラ。
いったいどんな話がしたかったんだよ。
>>377 なるほど、さすがC言語コンパイラだな。(w
>>378 >>364 に書いた通りだが、メクラか?
>>363 が詰め込み方は処理系依存と言い出したから、詰め込み方は指定できる、指定できないのはカスといった。
パックとアライメントを区別出来なくて、踊ったのがお前。
>>379 >
>>363 が詰め込み方は処理系依存と言い出したから、詰め込み方は指定できる、指定できないのはカスといった。
>パックとアライメントを区別出来なくて、踊ったのがお前。
char と long をパックしたら、(8bit マシンじゃなきゃ) アライメンとがそろわなくなるって話だろ。
混同してるのは、お前の方だ。
あと、#pragma の指定は処理系依存だぞ。
詰め込み方を指定できるかどうかは規格上で処理系依存 しかし、実質的には指定できてあたりまえで、詰め込み方を指定できない処理系はカス パディング無しの詰め込みで 要素内アライメントが狂うことはありえる 先頭要素がアライメント外になるかどうかは別の話 構造体サイズが必ずアライメント内になるかどうかは別の話? (最後尾要素に対する詰め物の有無)
charとlongをパックすると言い出したのはお前だけ。元のお題は
>>349 #pragmaはお前がSPARCや68000のコンパイラはパックできないとか言い出し
たからSUN Studioを反例として出しただけだ。
>>364 では「詰め方は処理系毎に指定する方法がある。」と言っている。
で、おまえが
>>365 で言い出した、パックできない屑コンパイラは実在するのか?
>>382 >>365 は、俺じゃねーよ。
自分以外は皆敵に見えるバカかよ。
> で、おまえが
>>365 で言い出した、パックできない屑コンパイラは実在するのか?
実在するかどうかは知らん、ただ規格で決まってないから、
> 詰め方は処理系毎に指定する方法がある。
とか言う奴はバカと言うだけのこと。
反論するなら、実在しないということを証明してからにしてくれ。
以下悪魔の証明
>>383 お前のようなマヌケが複数いるはずないが、ID出ない事を良い事に逃げるつもりなのだろう。
でも、ID出なくてもお前が
>>365 であることはそのマヌケっぷりが証明している。
以下、お前が
>>365 と同程度のマヌケであることの証明
パックできないコンパイラが仮に実在するならそいつは屑コンパイラというのが、
オレの主張なので不存在を証明する必要はない。
ンゴナロ「バロスwwwww」
コナコナンwww「バロスwwwwww」
バロウバロン「ンンンンコナwwwww」
>>386 完膚なきまでに叩きのめされる前に引き下がっとけばよかったのに…
それにしても68000やSPARC知ってるならかなりのオッサンだろうに、この無能さは憐れ。
>>385 > ID出ない事を良い事に逃げるつもりなのだろう。
もうここまでくると、ちょっと哀れだな。
>パックできないコンパイラが仮に実在するならそいつは屑コンパイラというのが、
>オレの主張なので不存在を証明する必要はない。
自分の発言には責任持とうよ。
> 詰め方は処理系毎に指定する方法がある。
とか自信満々に語ったのは誰かなぁ。(w
まあ、#pragma が処理系依存であることも知らなかったんだろうな。
ンバロ「ナコバロウwwww」
バコナロ「ンーwwwwwww」
>>391 日本語不自由ですかあ?
つーか、引っ込みつか無いんだろうけど頭悪くて支離滅裂すぎる。
こんなにわかりやすく書いているのに理解できないのはマヌケなお前だけ。
>>364 > 詰め方は処理系毎に指定する方法がある。
> 空きなく詰め込む指定ができないならば、役に立たないクズコンパイラ。
> 使う価値は無い。
> 空きなく詰め込む指定ができないならば、役に立たないクズコンパイラ。 > 使う価値は無い。 お前の下らん価値観なんて相手にしてない、自意識過剰すぎ。 指摘してるのは、ここだけ。 > 詰め方は処理系毎に指定する方法がある。 --- > つーか、引っ込みつか無いんだろうけど頭悪くて支離滅裂すぎる。 そのまま返すよ。(w
397 :
デフォルトの名無しさん :2012/09/21(金) 18:40:50.15
トリップ付きでやれよ
398 :
デフォルトの名無しさん :2012/09/21(金) 19:12:56.14
おーいバカ、つまらんぞ 喧嘩は結構だが、ちゃんと C の話をしやがれ
バロロン「ロバwww」
もぐもぐ、400番ゲットオォォォォ!! みたいな  ̄ ̄ ̄ ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ___ __ (__ ) ≡≡≡ / ヽ / / ̄ _ _、, _,, ヽ7 / ..へ._ V / ≡≡≡ v/ ヽ( )△ィ△ / ゙ii | |/ (( _(( _((ハ ' _ ) `ヘ/___. || | | lWVl____|∩ ∩ Y_) ヾ |___. . || | | __,r‐、 ≡≡≡ . !_て7」VWl .ヾヷ゙゙ノノヾ, | ̄ || | | ̄__), \ (´⌒(´ ヾ (  ̄ ̄ ̄) ノ__,ノ‐-__ !! ノ_ノ ̄ . ヾ、__ノ ≡≡(´⌒;;;≡  ̄ ̄ ̄ ̄ ̄ ̄ ̄ .  ̄ ̄ ̄ (´⌒(´⌒;; ズチャッターーーーーッ
>>396 > お前の下らん価値観なんて相手にしてない、自意識過剰すぎ。
>>383 のお前の言いがかりに対する反論だが、
> 反論するなら、実在しないということを証明してからにしてくれ。
これは取り下げって事だね。逃げだすなら最初っからつまらん言いがかり付けるなよ。
> 指摘してるのは、ここだけ。
> > 詰め方は処理系毎に指定する方法がある。
日本語不自由ですかあ?「毎」ってわかりますかあ?
| (接尾)
| 〔補説〕 「ごと」の転
| 名詞に付いて、そのそれぞれについて、の意を表す。ごと。
って意味ですよお。処理系のそれぞれに指定する方法があるという意味ですよお。
バカすぎる。
Cやる人ってクレバーかと思いきや、こんな人もいるのね
> 処理系のそれぞれに指定する方法があるという意味ですよお。 だから、指定する方法がない処理系が (規格上は) あるって言ってるんですよお。 自爆乙 (w
>>403 > > 処理系のそれぞれに指定する方法があるという意味ですよお。
> だから、指定する方法がない処理系が (規格上は) あるって言ってるんですよお。
自分の発言には責任もとうぜ。(規格上は)じゃなくて、実在すると言い切ってるんだから。
自爆乙 w
>>365 >
>>364 > Sparcや68000用のコンパイラは屑ですか。そうですか。
> 世の中x86のようにワード境界を跨いでワードアクセスできるような変態ばかりじゃないんですよ。
バイトでプログラマやってたんだけど結局1行も仕様書理解できずに 3行くらいしかコードかけませんでした。 報告書もほとんど書けなくて3日で止めてしまったんですが 向いてないですかね?
>>405 職場トータルで効率が上がるなら価値がある
つまり穴をうまくつかえばCマスターだ
ブペノン「バロバロwww」
ああ、組み込み用の事はすっかり念頭になかったわ。
>>364 は以下のように訂正。
唯一の突っ込みどころだったんだが残念だったな。
詰め方は処理系毎に指定する方法がある。
空きなく詰め込む指定ができないならば、役に立たないクズコンパイラ。
使う価値は無い。
ただし、組み込み用コンパイラは除外する
>>406 友達と一緒に募集したバイトです。
会社に損害与えた場合賠償金とか払わないとダメですかね?
3日でやめた[結局何もしてない]んですが連帯で給料1200円貰いました....
410 :
409 :2012/09/21(金) 20:56:43.30
損害というのは自分の仕事のミスによって会社に与えた影響です。
重過失以外では賠償責任が認定されることは無いだろう。 出来ると判断して採用した責任が会社側にあるわけだし。
たった3日で何もしていないのならほぼ損害なんてない バイトの人事分くらいなら何とでもなる気にするな
>>409 故意に損害を与え無い限り賠償責任なんてないよ
でも何もできないってことに気づくまで3日かかるのはやばい
>>408 >ただし、組み込み用コンパイラは除外する
意味わからん、組み込み用の方が必要だと思うが…
416 :
409 :2012/09/21(金) 21:09:21.37
>>413 そうですよね。
自分以外の友達は職場の人とかなり親密に仕事の事について話したりしてました。
自分だけ何もせずにキョロキョロばかりしてました。
誰も僕の事に気付かなくて怖かったです...
貰った仕様書はオフィスの窓口に渡して
報告書も結局何もしてないので書く事がなくて今も放置したままです。
皆意外とプログラミングできるんですよね。
本当にショックだった。
以上独り言でした。
417 :
デフォルトの名無しさん :2012/09/21(金) 21:13:40.33
>>405 そういう話はマ板でやれ
3行って、これか?
main()
{
}
>>414 指定する方法が無いのじゃなくて、指定する必要が無いの。意味わかる?
まあ、今となっては使う価値が無い事は変わらないが。
どうでもいいんだけど いつまでやってるのこの人たち
>>418 >指定する方法が無いのじゃなくて、指定する必要が無いの。意味わかる?
君が書いたのは、
> 処理系のそれぞれに指定する方法があるという意味ですよお。
なんだよ。必要の有無なんて誰も言ってないよ。
---
> 完膚なきまでに叩きのめされる前に引き下がっとけばよかったのに… この無能さは憐れ。
とか、言ってる奴もいたから、従った方がいいんじゃね? (w
>>419 自作自演じゃ無ければバカだから相手しちゃ駄目。
学生時代数学とかやると先生に手を止めるな、とりあえず動かせって言われたけど PGもそうなんですか? 打ってはDELETEみたいな感じ?
423 :
デフォルトの名無しさん :2012/09/21(金) 22:28:38.16
>>422 努力は嘘をつかない、という意味ではそう
前肢の物理的な動作とは関係ない
拙速を上回る巧遅こそ大切で、巧遅のふりをした怠慢が最悪
たとえばこんなところでコード貼らずに戯れ言をぬかすようなことだ
とりあえず動くものを作ってから 後で設計を考えて作り直す
プログラミングとはキーボード上の作業です その動きが早くなればなるほど一応は上級者です ですからKBDをいかに素早く操るか コードを打つだけではなく付随する全ての作業を KBDからの操作・作業でいかに素早く仕上げられるか その動きを追求しましょう
つまりvi最強ってことですね
ド素人でもPGのバイト出来んだな ああいうのは即戦力だけだと思ってた 邪魔かと思って応募してなかったんだがやってみようかな
428 :
デフォルトの名無しさん :2012/09/21(金) 22:55:47.29
うん、まず現実を知れ 企業にも迷惑をかけるが大人税って痛みを伴う世直しだ それで勝機が見えればしめたもの 「当たり」は「外れ」を賭して張らなきゃ来るわけがない バイトであろうが正社員であろうが もらう金に値する仕事をするのが信義だ ここが壊れているやつは死んでいい
やるだけやったら 自分にできるのかできないかくらいは判るだろう そして、できますと言えたなら、あとは他人の評価する事だ 本当にできる奴は、風船ガムのアタリよりは多いかなって程度だが
>>422 手は止まってるのに
jjjjj
とか画面に連打状態なヤツいたなぁ
C言語の初歩から応用まで詳しく学べるサイトってありますか? それと、ちゃんとした形のプログラムを組むまではどの程度まで知っておいたほうがいいですか?
書き方真似したら、出来ると思ってるようなら、別のことやったほうがいいよ
>>432 じゃあC言語はどこで学べばいいのですか?
C言語って何に特化した言語なの?
すべてに
何にでも使えるけどしいてひとつ挙げるなら悪魔召喚プログラムの作成に特化してると言えるかな
鼻から召喚
>>434 Cでかくと、小さくて速いプログラムができます
十年以上前からある無料のコンパイラでもコンパイルできます
>>433 初歩が済んだら後は実際に動いてるコードを読むだけ
FreeBSDが実装した関数やUNIXコマンドとかおすすめって言われてるね
GNUの実装はコーディングスタイルがひどくて精神を病むから読まない方がいい
φ(.. )メモメモ
猿真似で終わりたくないなら、何やらないといけないかよく考えてみよう
参考にしたいプログラムのソース公開されてないから辛い
C言語はオワコン
だーかーらー、そういう次元のものではない。RubyもCでかかれてるし、OSもCでかかれているから 代替がきかないのだ
>>439 こういうやついるけど間違いだよ
時代にそぐわない古いやり方のコードとか間違えて覚えたら不利益
448 :
デフォルトの名無しさん :2012/09/22(土) 20:49:54.61
広いようで狭い UNIX の世界 UNIX 流儀の思考パターンに安住したまま 進化をやめてしまっている人がよくいる
>>434 小さくて速いため、
ソフトウェアはC言語で記述されることが多い
組み込みシステム − Wikipedia
UNIXの発想が先端過ぎて、当時の人がついていけなかっただけなの
早いうちからUNIXがあらゆるデバイスの仮想化を目指してるのはすごいと思った 考えついた奴は天才だね
452 :
デフォルトの名無しさん :2012/09/22(土) 21:18:37.29
そのへんは Multics だろ
453 :
216 :2012/09/22(土) 22:06:53.79
>>431 私もそうでしたがC言語っていうプログラム言語さえ覚えれば無料のフリーゲームみたいなものが作れるんだ!すげ〜とかそんな感じでした。
本当はC言語ってただのコンピュータとの情報やりとりの為の通訳さん代わりになるだけであってゲームやソフトを作るにはWinAPIやこんそ〜るAPIなどを学ばなければならない、と分かった時随分と自分を恨みましたよ^^;
プログラムってなんですか?って人は最初そんなもんだと思います。
実際は色々考えて自分で解決方法を導きだしたほうが知恵も身につきますし、過去を振り返ると後になって素敵な思い出になるんでしょうね
C言語はプログラム本体ではないのでC言語学習サイトでアプリケーション開発まで取り扱っているサイトは極少数しかないです。
ちゃんとしたプログラムってのがなんの事なのかわかりませんが、初心者が思うちゃんとしたプログラムは私なりの解釈でメモ帳やペイントのような一般的かつ実用的なアプリケーションの事ではないですか?
私もバリバリ初心者なので…(´・ω・`)
454 :
デフォルトの名無しさん :2012/09/22(土) 22:26:24.27
誰か30分で作るテトリスでも張ってやれ。
初心者ががが思うちゃんとしたプログラム=GUI だろjk
英語を覚えるだけでオバマ並のスピーチができるわけじゃない。 それだけのことだ。
>>431 入門レベルであれば、c言語はプログラムの原理をコンソールアプリ作成で学ぶ事を目的とし、
GUIアプリを作りたいならマウス操作で簡単に構築できるような適した言語を別途選択するのが良いと思います。
学ぶ目的が分からないので的外れかもですが、自分がPCで行う作業の自動化や効率化を目的とするなら、
c言語のコンソールアプリでも作成することが出来ます。
c言語は基礎構文(下記サイトの49章くらいまで)さえ覚えてしまえば、出来る事と、(簡単には)出来ない事の区別が出来るようになります。
出来そうならググって必要な標準関数や参考になるソースなどを探して組み合わせていけば、それなりのプログラムは作成できます。
職業PGしていますが、ぶっちゃけプログラミングは基本的な処理と、既存の処理を組み合わせるだけの簡単なお仕事です。
組み合わせの発想や効率や保守性やプロジェクトの糞規約等のしがらみ、品質保証のテストとドキュメント作成などで常に納期に追われるのですけれど…
webも良いですが、書籍の方が一連の学習が出来ますし、メモを書き込みながら進められるのでオススメです。
入門当時は猫でも分かるシリーズにお世話になりました。
web:
http://www.kumei.ne.jp/c_lang/index_c.html 本:
http://www.amazon.co.jp/猫でもわかるC言語プログラミング-第2版-猫でもわかるプログラミングシリーズ-NEKO-Series/dp/4797345659/ref=pd_cp_b_0 amazonのレビューだと低評価が多いみたいですが、良書だと思います。
きちんとした説明と、記述の結果がなぜそうなるのかといった根本的な動作についても触れているのが良かったと記憶しています。
要するにc言語は基礎構文を覚えればなんとかなるということです。
Cはポインタがあるから構文だけじゃ何ともならん。 ポインタを使わないなら他の言語で良い。 このジレンマ。
九九みたいに覚えれば、何とかなるもんでもないよ、分野によっては
461 :
458 :2012/09/22(土) 23:52:09.85
>>459 簡単に基礎の49章までと書きましたが、提示したサイトは意外と時間のかかる49章立てなのですw
以下、基礎だけど面倒そうなのを抜粋。
第15章 構造体
第23章 配列とポインタの関係
第25章 文字列とポインタの関係
第28章 構造体とポインタ
第29章 変数のスコープおよびクラス
第32章 共用体
第33章 メモリの動的確保
第35章 関数へのポインタ
第39章 分割コンパイル
第43章 可変個の引数を取る関数
第49章 ビット単位の演算
>>460 アルゴリズムさえ見つけてしまえば、コードに落とすのは基礎構文の塊かと。
あと、覚える=仕組みを理解する、という事ですね。
簡単に出来そうになければ、c言語の既製ライブラリを見つけるか、あるいは別の言語をということで^^;
長文ばかりで失礼しました。
数学の証明問題を思い出しましょう 入力ー>?ー>出力 ?が出来ないことにはどうにもならない もう、小学生レベルじゃ、通用しない分野も出てきてるからね
既存のパーツだけでそれが証明できるなら パーツの組み合わせ肩が悪いだけで それならそれを全自動化すればいい
> 全自動化 そんな妄想が通用すると思ってるところが...
C言語って具体的にはどのような形でゲーミングアプリケーションを開発するのですか?
表面には出ないような 四元数の計算とか クソのような座表計算とか 唸るような物理演算とか 天体のしみゅれーしょんとか
イミフ
甘ちゃんはゲーム系が潜り込みやすいとか思うんだ
ゲームをわざわざ C でつくるの? せいぜい人工無能程度じゃね?
C++はあっても今時Cでゲームはないわな。
471 :
デフォルトの名無しさん :2012/09/23(日) 09:44:27.43
ゲームは難しいよ初心者に勧めるとかありえない 業務用アプリとか簡単なもので勉強してからゲームに取り組んだほうがいい
473 :
469 :2012/09/23(日) 10:16:37.81
>>472 禿同
プロのゲームプログラマではないんなら、学習目的なのに C/C++ で、ゲームとかあり得ないでしょ
以前とくらべて 業務用に劣るレベルのゲームプログラムであればさほど難しい環境ではないよ。 また、古参のプログラマーはゲーマガのような雑誌を糧に実地を習得していた事例もあるので Cだからありえないって結論にはならない。 東方程度のシューティングやツクール程度のRPGならそれなり学習程度で習得可能。
そう、DXライブラリならね
476 :
デフォルトの名無しさん :2012/09/23(日) 10:35:57.43
3D の見た目とか BGM の迫力みたいのはゲームの飾りであって本質じゃない やってて面白いかどうかが肝心なのであって、そういうのはプアな 2D でも充分できる
年齢の入力に使う
バッファオーバーフローさせるため
ありがとうございます。char name[30];じゃなくてchar name[30] = " ";にしているのは初期化ですか?
ふう
どうでもいい。 #include <stdio.h> int main(){ char name[30]=" "; char nami[30]=""; char nama[30]; int i; for(i=0; i<8; i++) printf("%02X %02X %02X\n", name[i], nami[i], nama[i]); }
>>480 何て本だか知らないけどさ、
ローカル配列の初期化をしている点から、ANSI規格制定以降なのは明白なのに
返り値の型すら省略してmain()だけにするような糞コード書いてるような本、
(仮にgets使用は初心者向けとして眼を瞑っても)かなり怪しい気がするよ。
ロックマンみたいな老舗2Dスクロールゲーム作りたい場合は言語は 何が一番作りやすいの? 一応Cに対応しているライブラリとしてDirectXとかあるんですが。 何がポピュラーなのか知りたくて 大体ポピュラーなのは使いやすさも良いと思うし。
VBNET か Csharp じゃない!
C#って名前よく聞くけど何が優れてるの? 文法的にもCとそんな変わらないんでしょ?
素人ならJavaかC#が楽だよ どうせマシンパワー限られた環境は考えないし、低レベル操作とかが必要なものは作らないんだろ?
>>486 ライブラリが充実してる
LINQなどの言語機能もクール
Cなどで書いた過去の資産も簡単に使える
開発環境が至れり尽くせり
>>477 struct person *start=&dmy; の6行後に
start=&dmy; って、なにやりたいのかさっぱりわからんなぁ
とりあえず林晴比古はやめとけ
>>486 開発者のセンスが輝いている。delphi 16bit版が出たときの熱狂は忘れられませんね。
>>488 キャラクターの動きってどうやってプログラミングすればいいんですか?
改訂新C入門(シニア編) 林晴比古・ソフトバンク シニア編 w 普通は著者名だけで手に取る事すら避ける有害図書。
コンソールならハングマンとか
初歩全部暗記したったwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww で何すりゃいいのよ…
なんか便利なコマンドつくれ
496 :
デフォルトの名無しさん :2012/09/23(日) 12:39:55.02
創作意欲が泉のようにわき出してこないようなら終了
ビット演算を端折ってもなにか困りますか?
じゃあnumeronでも作ってみれ。 表示とか凝らなくて済むから初心者でもとっかかれるぞ。たぶん。
知識の引き出しが減って良いならいらない。 速度やマシン負荷を気にしない人なら。
500 :
デフォルトの名無しさん :2012/09/23(日) 13:14:56.97
格闘ゲームとかでキャラがパンチを繰り出すでしょ? あれってどうやってプログラミングしてるの? 凄い知りたい
苦しんで覚えるC言語と猫でも分かるプログラミングのC言語編とだったらどっちがわかりやすいの?
訂正、どっちが優良ですか?
読解力はIQに依存するので優劣は・・・。 柴田茫洋、ハーバートシルト辺りが内容を伴っていて優れているが 要点だけを理解したいのであれば上記の書籍。 さらに要点だけならCの絵本。
どっちもいまいち K&Rでいいよ。入門書というよりは読み物的だけど
>>495 作れっていうより俺の場合必要に迫られて作ってるな
画像を落とすとフォルダごとに1枚ずつ入っててしかも拡張子が取ってあるような
意地悪してるサイトがあるけどそれに例えば".jpg"を付けて他のフォルダにコピーするとか
連番を付けて定義ファイルを作らないと動かないソフトに自分で手で連番を振るのが
面倒なのでstrtok()とか使って自動で連番を振るとか
>>505 そういうのはshellなりPythonなりPerlなり使ったほうが…
本人好きなんだから、やらせといてやれよ。
508 :
デフォルトの名無しさん :2012/09/23(日) 14:51:43.42
>>500 表示は人体トレースやデザインドールをもとに起こす
入力はコントローラを読み取った値と経過時間の表を作るなどしてパターン判定(モールス符号のように)
判定はじゃんけんの手が3通りよりもずっと沢山あるイメージ
ターミネーターがC言語で組まれているって本当ですか? シープラ使えばいいのになんでCなんでしょうか
さあ
511 :
デフォルトの名無しさん :2012/09/23(日) 15:39:10.71
perlで while (<STDIN>) { print $_; } って書くものをCで書きたいのですが、どうするのでしょうか? 環境はgcc on FreeBSDです。
知りません
getchar()してputchar()すれば良いのでは
/*
>>511 gepu.c */
#define BUFFER_SIZE 4992 /* 不足しているかもしれない */
#include <stdio.h>
int main(void) {
char *p;
char c[BUFFER_SIZE];
for(;;) {
p = fgets(c, sizeof(c), stdin);
if(p == NULL) {
break;
}
fputs(c, stdout);
}
return 0;
}
/*
>>511 gp.c */
#define BUFFER_SIZE 4992 /* 不足しているかもしれない */
#include <stdio.h>
int main(void)
{
char c[BUFFER_SIZE];
while( fgets(c, sizeof(c), stdin) ) { /* NULLを偽として利用 */
fputs(c, stdout);
}
return 0;
}
4992ってなに
四千九百九十二じゃね?
なんで4992なの?
gepu < file_name gp < file1 > file2
4992 北興化学工業 ≪ 化学 / 東証1部 ≫
ああ、それでか。納得。
>>511 Perlは、サイズがすくなすぎるかもしれないとか心配しなくていいですね
バッファのサイズ少なくても動くし、ぶっちゃけこれで十分だと思うけど。 int c; while ((c = getchar()) != EOF) { putchar(c); }
128 × 39 = 4992
526 :
デフォルトの名無しさん :2012/09/23(日) 16:58:29.72
int var_delcvars(void) { struct bwb_variable *p = &CURTASK var_start; struct bwb_variable *v; for (v = CURTASK var_start.next; v != &CURTASK var_end; v = v->next) { if (v->common != TRUE) { if (v->dimensions > 0) { free(v->array_sizes); free(v->array_pos); if (v->type == NUMBER) free(v->memnum); else free(v->memstr); } p->next = v->next; free(v); } else { p = v; } } return TRUE; } bwbasic2.10の変数削除ルーチンで、奇妙なソースがあったので気になった。 上記のfree(v)では実際にはメモリーがクリア等はされず、mallocでの確保候補に設定されるだけなので 実際のデータ自体は残ってるので v->next が有効なので動く。というコードなのだろうけど、 これは非常にトリッキーなコードに思える。 すくなくともスレッドセーフの保証は無いのではないか?と思う。そこでこれをもっと単純なコードに書き換えたい。例をあげよ。
あげよってなんだよ 回線切ってマスでも掻いてろよ
>>526 >上記のfree(v)では実際にはメモリーがクリア等はされず、mallocでの確保候補に設定されるだけなので
実装としてはそんなのもあるかもしれないが保証されないはず。
>実際のデータ自体は残ってるので v->next が有効なので動く。
free(v) したあとで v->next してはいけない。
freeがらみを許すとしても、全体を排他制御しないとスレッドセーフにならないんじゃないの? CURTASKがなんなのか知らないけど。
531 :
デフォルトの名無しさん :2012/09/23(日) 17:15:49.13
>>527 , 528
ゴールデンアホコンビ乙www
>>532 許さないけど、それを解決したとしてもっていう意味
534 :
デフォルトの名無しさん :2012/09/23(日) 17:27:51.11
int var_delcvars(void) { struct bwb_variable* p = &CURTASK var_start; struct bwb_variable* v = p->next; while (v != &CURTASK var_end) { struct bwb_variable* vn = v->next; if (v->common != TRUE) { if (v->dimensions > 0) { free(v->array_sizes); free(v->array_pos); if (v->type == NUMBER) free(v->memnum); else free(v->memstr); } p->next = v->next; free(v); } else { p = v; } v = vn; } return TRUE; }
535 :
デフォルトの名無しさん :2012/09/23(日) 17:37:01.24
変数名ってint appleとか float orangeとかは良いと思うけど int fork とか int socketとかはダメなの?
>>535 いいんじゃね?
#include <stdio.h>
int main(void)
{
char *printf="putchar";
puts(printf);
return 0;
}
>>535 変数には、付帯情報の一部としてアドレスとサイズを持ちます。
関数にも、付帯情報のひとつとしてアドレスを持ちます。
アドレスは実行空間で唯一無二のもの、とすれば変数と関数で同じ名前にすることはできません。
fork() や soecket() はよく知られた関数名のひとつです。
文脈的に紛らわしくなければ問題ないだろ
>>536 へええ、と思ったら記憶クラスが違うのね
>>537 普通に同じ名前使うだろ
ループ変数で i とかよくある
>>526 スレッドセーフとfreeした後の領域の参照は全然関係ない。
単にfreeした後に領域を参照していいのか? と聞けばいいだけ。
回答: 参照してはいけない。
修正方法は人に聞くまでもない単純な質問。
回答: 自分で考えろ。
>>539 お前が「記憶クラス」を理解していないことが判明した。
> へええ、と思ったら記憶クラスが違うのね
全然違う。
543 :
デフォルトの名無しさん :2012/09/23(日) 18:05:42.31
このへん微妙だろ #include <stdio.h> #include <ctype.h> main() { int (*putchar)(int) = isalpha; putchar('a'); }
544 :
デフォルトの名無しさん :2012/09/23(日) 18:06:55.75
質問ですがHDDはメモリの役割を果たしてないわけ? C言語でメモリを考える時です。
>>544 スワップとか
メモリマップドファイルとか
果たしていません。はい次の質問どーぞ。
>>541 まぁほかの部分を見ないとわからんが、そもそもfreeしたところを触ってるコードじゃないんだってば。
>>548 free(v); した後 for () の中の v->next に突っ込んでいるように見えるが……
550 :
デフォルトの名無しさん :2012/09/23(日) 18:23:16.98
>>545 スワップとは具体的にどういうことでしょうか?
この機能がないと困る事は多いですか?
それは他所のご夫婦とだな…
スワップってのは入れ替える事 ソートアルゴリズムなんかで多用される
そのスワップじゃなかった
HDDのスワップくらい自分で調べろよアホ そんなんだからそんなアホな質問がだらだらと垂れ流しなんだ ついでに脳みそも鼻から垂れ流しなんじゃないのかコイツ
>>548 他のところ見ないでも
free(v);
の後で
for (... ; v = v->next) {
している。
他人のレスに言いがかり付けるときは1000回見直してからにしろ。
557 :
デフォルトの名無しさん :2012/09/23(日) 18:37:12.33
>>554 c言語のswap()じゃなくて
HDDのほうです。
この機能無いと困るかどうかは書いてなったんで^^
ちなみにレポートです^^
スレ違い 失せろゴミ
まだアホな質問垂れ流してんのか! 出てけよアホ!! テメーで調べろks!!!!
俺に聞けって言ってるじゃないですかああああああああああ!!!!!1111
C言語ならって言ってるじゃないですかあああああああああ
563 :
デフォルトの名無しさん :2012/09/23(日) 22:44:09.34
>>562 ありがとー
OSを基礎から教えてくれる本凄い探してるんですよ
インサイド
なげーの貼るな。カス。
567 :
デフォルトの名無しさん :2012/09/24(月) 11:05:31.05
□ 4 6 5 1 2 9 8 3 7 みたいな3×3+1マスあるパズルがあって 動かせるのは1〜9までのピース、□は動かすための余白一つ分 で最短で □ 1 2 3 4 5 6 7 8 9 に並び替えるためのプログラムが作りたいのですが完成プログラムお願いします。
いくら出す?
ふう
群論プログラムGAPを使えば 驚くほど簡単に出る 一般的に、 その手の15パズル亜種は 群論を使えば簡単に解ける そのためのツール一式がGAP
というか
>>567 のパズルはどうやっても4が動かなくて解けないでしょ
572 :
デフォルトの名無しさん :2012/09/24(月) 19:21:24.68
9要素のソートで、ワークが1つだろ なぜ4が動かせないんだ?
575 :
デフォルトの名無しさん :2012/09/24(月) 19:57:26.28
鈍いな、567 の定義では 4 を動かせるつってんだよ
「動かせるのは1〜9までのピース」って言ってるんだから、15パズル亜種じゃなくて 空きマスに任意のピース1つを移動させるパズルなんだろうな
もしもそうなら10次の対称群そのもの 最早Cでやる意味すらない
>>567 問題を精密に記述ください。
1)初期状態から 5 を □に動かせますか?
2) 1)が是として、もと5があった位置に次の動かせる数字は何ですか、またその数字はどこに動かせますか?
580 :
デフォルトの名無しさん :2012/09/24(月) 20:59:43.42
是 不是 да нет oui non ? ?? ja nein ??? ??-????
上に動かした初期状態で4の位置のやつを初期状態で8の位置が 空白になった時に持って来られるようにすればゲームは成り立つ?
582 :
デフォルトの名無しさん :2012/09/25(火) 00:41:16.39
1-4 の入れ替えに3手 2-6-9-7-8-3 の入れ替えに7手 合計10手ってこと?
そんくらい削れよ
2 3 6 1 3 5 □ 4 □ みたいな3×3マスあるパズルがあって 3と3は2マスで接着され、同時にしか動かせない 動かせるのは1〜6までのピース、□は動かすための余白一つ分 で最短で 1 3 5 2 3 6 □ 4 □ に並び替えたいのですが棋譜お願いします。
スレ違い 失せろ
箱入り娘のソースでも有難く拝見させてもらえよ
>>585 422113556532211556632212366554
41122355653221144665532212355664
3x3パズルで 2 1 3 4 5 6 7 8 ■ から 1 2 3 4 5 6 7 8 ■ への並べ替えが不可能であることに気付くかが、群論センスを問われるポイントだろうな。
____ /⌒ ⌒\ ホジホジ /( ●) (●)\ /::::::⌒(__人__)⌒::::: \ はいはい | mj |ー'´ | \ 〈__ノ / ノ ノ
学生が増えたんだろ 学校でCを教えるようになってから荒らしがひどくなった いや学生がおかしいのではなく、頭のおかしい奴が増えだした
群論とかC言語と関係無いだろ!!数学板でやれクズごみばか!!! あたまのおかしいクソ学生が増えたのでろう キチガイは帰れ!
おまえもPerlスレにカエレ!
頭がおかしいのが増えたのは核実験のせいなんだよね ほら、放射線量高い韓国もキチガイばかりだろ? 放射能は脳もダメにするのは過去のデータから明らかだしな
遺伝的におかしいのであって放射能のせいじゃない
放射能で遺伝的におかしくなったんだな
日本の韓国化がますます進むね
【問題】 出展Google 1〜5の数字をランダムに生み出すメソッドが与えられている このメソッドを使って1〜7をランダムに生み出す方法を考えろ。 ここでいうランダムとは等確率のこと。
5x7=35個単位で考えればいいだけじゃね? って、まさかそんな簡単な答えなわけないか。
>>599 #include <stdio.h>
#include <stdlib.h>
int rnd5(void)
{
return rand()%5+1;
}
int rnd7(void)
{
int x;
for(;;)
{
x=(rnd5()-1)*5+(rnd5()-1);
if(x<7*3) break;
}
return x%7+1;
}
int main(void)
{
int i, count[7+1]={0};
for(i=0;i<10000000;i++) count[rnd7()]++;
for(i=1;i<=7;i++) printf("%d\n", count[i]);
return 0;
}
等確率って1〜7の出現率が等確率ってこと?
604 :
デフォルトの名無しさん :2012/09/25(火) 12:27:20.75
まぁこんな問題で質問するようなやつは受ける前に足切り。
>>601 forの中で
if(x < 7) return x+1;
でよくね
>>605 0-24までの乱数が得られるから、無駄なループ回数を減らすために
「7以下」ではなく「24以下で最大の7の倍数以下」を生かそうとしていると思われる。
>>605 それでもおっけーだね
無駄が多くなるけど
rand5の使用回数に上限が設けられるような方法はないのか?
よく、RAND_MAXとdoubleを使って式が出されるけどね。 (rnd5()*5+rnd5()) * 7 / (5*5) とか、そんな感じの。
そんな泥臭いやり方じゃなくてもっと天才的なひらめきは出せないの?
ループ回してうまく行くまでとかじゃなくてズバッと射影して答えだしたりさー
rnd7() { a = rnd5() + rnd5() + rnd5() + rnd5() + rnd5() + rnd5() + rnd5(); b = (a % 7) + 1; return b; }
もっとコストが掛からないの無いの?って聞き方なら分かるが 泥臭いって何なの。
>>612 355 デフォルトの名無しさん [sage] 2012/08/31(金) 20:41:20.51
int f(int a, int b)
引数a以下で最大のbの倍数を返す関数f
書いて。
無駄なく、合理的に。
356 デフォルトの名無しさん [sage] 2012/08/31(金) 20:54:14.12
モジュロ求めて
引けばいいだけじゃねーの
357 デフォルトの名無しさん [sage] 2012/08/31(金) 20:55:27.50
int f(int a, int b)
{
return a - a % b;
}
358 デフォルトの名無しさん [sage] 2012/08/31(金) 20:55:59.43
そんなありきたりの方法は美しくない。
もっとこう、画期的で合理的なやり方ないの?
>>615 中心極限定理 参照
そういうふうに和をとった段階で正規分布に近い形に偏りを見せるぞ
和は正規分布形に近くなるけど、その後 modulo 通すからめんどくせーな。
>>622 アホか。5^7通りをどうやって7つ均等に割り振るんだ?
>>626-627 俺も「足してるんだから違うだろ」と一瞬思ったが
「場合の数」の合計は5^7。
表が1で裏が0のコインを3枚投げる場合を考えれば、偏ってるってことが理解できるかな
>>629 は?ぜんぜんわからねえわw
御託はいいから動くソースコード出してみろよ。お前の思いえがく完璧な動作ってのを見せてくれよw
数学的に程度の高い疑問が来たぞ 数学で夢見られるぞ 良かったな 足しただけの和だと、確かに正規分布に近い偏りになる、 けれども、modを通すと均等になる さて 何故だ
数学多様したいなら LISP使いになれば良いのに
何がやりたいんだよ
636 :
デフォルトの名無しさん :2012/09/25(火) 17:10:50.11
超絶初心者ですのでゆっくり教えてください。どうかお願いします。 、コマンドプロンプトでカレントディレクトリを「C:\cwork」に変える方法がわかりません。
>>636 スレタイを1000回声を出して読め。その質問はC言語には何の関係もない。
639 :
デフォルトの名無しさん :2012/09/25(火) 17:28:22.23
>>637 C言語入門書の一部としてその作業があるから質問してるんです。
え?
642 :
uy :2012/09/25(火) 17:36:21.25
cdコマンド すばらしいまでにスレ機能してねーなwwwwwwwwwwww
その入門書は本当に破ってもやした方がいい それが分からないように書いてある入門書なんて 入門書じゃない、 そしてお前の中ではその紙くずは 2ちゃんねる以下ってことになってるハズだ
入門書だって「想定する読者」ってのがあるだろ。普通は最初に書いてある。
>>639 がそのレベルに達していないだけ。
頭悪そうだから、想定する読者のレベルに達するまで多分10年くらいかかるだろう。
おまえら優しいな
このスレの半分は優しさで出来てるからな
いつも思うけどなんで2chに来るんだろ ググれば出てくるだろうに
もう半分はC言語ひいてはコンピュータの発展と未来へのための あくなき向上心で出来ております
>>636 REM cw.bat
C:
CD \cwork
651 :
デフォルトの名無しさん :2012/09/25(火) 19:22:39.34
>>636 できました。皆さんありがとうございました。
いえいえ
どういたしまして
>>621 出目の出現確率 最小14.264% 最大14.307%
で均等にはならないと出た
#include <stdio.h>
void hoge(int count[], int sum, int rest){
int i;
if(rest<=0){
count[sum]++;
return;
}
for(i=1;i<=5;i++) hoge(count, sum+i, rest-1);
}
int main(void)
{
int i, count[36]={0}, count2[7]={0}, total=0;
hoge(count, 0, 7);
for(i=0;i<sizeof(count)/sizeof(count[0]);i++){
if(count[i]) printf("%2d : %d\n", i, count[i]);
count2[i%7]+=count[i];
total+=count[i];
}
for(i=0;i<7;i++) printf("%d %.3f%%\n", count2[i], count2[i]*100.0/total);
return 0;
}
ならないと出た(キリッ じゃねーよwww この手の話は数学の証明だからYO、 プログラミンングじゃねーんだよ() バカはすっ込んでろw
>>655 アホやなぁ
どう見ても一様乱数なのにwww
質問ですが バブルソートなんですがこれって半分に分けてソートしたほうが早くないですか? n個あったらn(n-1)/2かかりますよね? 真ん中で分けたらn(n/2-1)/2で澄むと思うのですが....
>>656 反射でしかレスできねーの?
何やってるか読めよ
>>655 ざわ…ざわ…ざわ…
うわああ、ヤツが来るぞ
>>655 hogeとか使うから確率がおかしくなるんだよ
ちゃんとした名前に変えれば安定するぞ?
>>663 カス乙
rnd5がそもそも一様じゃないからwww
こんな簡単なことまでいちいち教えてもらわないとわからないのか?
メルセンヌツイスタでも使ってもう一度やってみろ 試行回数も多くしろ
だってチンカスだもん。規格書暗記するので能力いっぱい。おなか一杯。
>>655 は場合の数を列挙してるだけだから間違いないだろう
>>665 うん、わからない。
rnd5() が厳密には一様ではないのと、
>>663 とどう関係あるの?
というか、5 と 7 でうまくいっても 5 と 203 でうまくいかないのであれば、やっぱ、やりかたとしてだめなんじゃない?
>>669 rnd5が一様乱数ならNがなんだろうが一様乱数
それ以上でも以下でもないお前が勘違いしてるだけ
Qはくずだな
5と7は共に素数であり、互いに素。
したがって、5^n == 7 * m を満たす自然数nとmの組み合わせは存在しない。
>>615 で、それぞれのrnd5が返す値により場合わけすると、5^7通りで
それが均等に現れる。(出題
>>599 の前提として、rnd5が均等であるので)
5^n % 7 は 0 にはならないので、当然 5^7 % 7 も 0にはならず
5^7の全てのケースを7つ(のrnd7の返り値)に均等に割り振ることは出来ず
>>615 のrnd7は均等ではない。
昔居たrand君なみのバカだなw
>>674 いや本物のバカは672だよ
672はドヤ顔で証明した気になってるけど縮退を考慮しないで恥さらしてるだけのただのチンカス野郎
「rnd5が一様でない」のは、単純に「実際に出現率をカウントする」ならば大問題だけど
>>599 の問題の「rnd7を作る」という点については、まったく影響しない。
↑この点が、バカには理解できない。
実際、
>>615 はrnd5なんか作ってないし
>>601 がrnd5を作った意図は、単にコンパイルが通るようにするだけと思われる。
何故ならsrandすら呼んでないし、rnd7では神経質に一様にさせているのに
rnd5は何も気にしていないから。
そもそも出題では、rnd5は自分で作るのではなく、出題者から与えられるものだから。
>>676 「場合の数」が5^7通りなのは理解できてる?
679 :
uy :2012/09/25(火) 22:47:44.69
>>678 今はその先の話してんだけど?
お前だけ周回遅れだけどそれでいいの?
こういうアホなヤツラが ゲームのアホサイコロ作るんだな。 バカセプトのアホサイコロとか。 基本が出来てないksばかりじゃん。 ダメだわこりゃ。 よーくわかった。 プログラマを試すにはサイコロ作らせよう。 そいつがアホかどうかを見分ける。
682 :
uy :2012/09/25(火) 22:50:46.82
>>680 お前の頭じゃそれが限界か
それじゃあ615のrnd7がなぜ一様なのか一生かかってもわからないんだろうな
俺様はこの程度なら1分とかからずからくりを見抜いたがこれが凡人との差なんだろうな
>>615 で、rnd5が均等なら
rnd7は
1を返す確率は 11161 / 78125
2を返す確率は 11161 / 78125
3を返す確率は 11161 / 78125
4を返す確率は 11161 / 78125
5を返す確率は 11161 / 78125
6を返す確率は 11160 / 78125
7を返す確率は 11160 / 78125
になる。
>>682 一生わからねー人が正常だよ
どんな世界に住んでるんだよ
>>615 は
1を返す確率は 11177 / 78125
2を返す確率は 11172 / 78125
3を返す確率は 11158 / 78125
4を返す確率は 11144 / 78125
5を返す確率は 11144 / 78125
6を返す確率は 11158 / 78125
7を返す確率は 11172 / 78125
になってるけどな
あーそうか、ごめん。 0-4じゃなくて1-5なんだね。 確かに俺が間違えてた。 均等でないという結論を変えるつもりはないけど。
いや、0-4も1-5も関係ないか。 それでも結(ry
>>683 になるのは、
>>601 的な計算をしたとき(の補正前)だった。
こうすると1-5^7までの数字が均等に現れるから
>>683 になる。
>>615 だと5^7なのは場合の数であって、数値は最大でも35だもんね。
計算はしてないけど、
>>685 的な偏りがあって当然だね。
>>670 そりゃ線形合同で高次の組ベクトルを作ってうんぬんだと、すっごくまずいんだろーけど、今は203回足しこんでるだけなのに、それでも問題なの?
>>666 じゃ MT でやってみるね。えい!
http://codepad.org/ou6zYWFE やっぱりすごーーーく偏るんですけど。
5 と 7 でOK でも 5 と 203 で、しかも最強の MT 使ってもだめならば、やっぱ、やりかたとして間違っているんじゃない?
偏りを理解できないバカもひどいが、的外れなことを垂れ流すQZもクソだな
Qの自演か
>>691 5 と 7 でOK でも、 5 と 23 で、しかも最強の MT 使ってもだめならば、やっぱ、やりかたとして間違っているんじゃない?
5と7がオーケーじゃない
仮に偏りなくてもO(N)じゃ使い物にならんわな
なんだO(N)て。O(1)なら最速じゃないか。
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
localeって何者なんですか?
伊賀者じゃ
ctypeの関数もなんか挙動かわるんやろ めんどくさいなぁ
まあ実際英語圏のlocale以外をちゃんと含んでいる処理系は世界的には存在しないけどな 日本国内で辛うじてワイド文字列が使える程度か? ドイツとかフランスに行けばそういうlocaleを含んだビルドが出まわっているかもしれないが 少なくともお目にかかった事がない
704 :
621 :2012/09/26(水) 06:31:38.58
>>654 , 663
なんなの?通り魔?
アホが式をアホ解釈して、計算結果が変になった→元の式も間違えてたはずだ(キリッ
なんなの?通り魔だろこれ…
池沼が勝手に改悪して結果を変にして、その原因をこっちに押し付けてくるって、通り魔すぎるわ…orz
http://ideone.com/EGude もうやだ、このスレ
705 :
◆QZaw55cn4c :2012/09/26(水) 06:53:19.72
>>621 >int a = rnd5() + rnd5() + rnd5() + rnd5() + rnd5() + rnd5() + rnd5();
>int b = (a % 7) + 1;
modulo 7 に対して7回じゃたりなくて
>>704 >for(i =0; i<8120; i++) a += rnd5();
>return (a % 203) + 1;
modulo 203 に対して 8120回、足しこんだのね。
ふーん(棒)
あと
>int l[1234];
>for(i=1;i<=203;i++)
>printf("%d\n", l[i]);
こういうの好きくない。
>void main()
爆笑、いや、もー、どうでもいいですけど。
小錦はどうやって自分のお尻を拭いてるんですか?
頭の悪い僕に教えてください なぜrnd5を足すのは8120回なんでしょうか?
Qは自分でも分かってないのに思わせぶりに書いてるだけだ
709 :
621 :2012/09/26(水) 13:09:39.33
>>709 実用上は誤差の範囲かもしれないが
数学的には
pow(5, n)%10009 != 0
なので必要条件を満たさない
711 :
621 :2012/09/26(水) 14:54:21.45
>>710 その論法お気に入りみたいだけど、
仮に 5^n mod 7 = 6 が常に出つづける最悪ケースを考えてさえ
lim 6 / (5^n) = 0
n->∞
極限では誤差0に収束するから数学的に考えればむしろ条件満たしてるんじゃねえの?
712 :
621 :2012/09/26(水) 15:43:53.77
眠くなってきた
>>711 それが成り立つためには無限回数 rnd5 を呼び出す必要があるってのは分かってる?
うん
715 :
◆QZaw55cn4c :2012/09/26(水) 21:38:12.95
>>709 階乗進数をつかって巨大数を作り、それに比べれば微小な 10009 で割った余りをとっているだけだね。ま、よく工夫したね。
しかし階乗進数の作成が穴だらけ。
n < 5の phi(n) に対して、rnd5() は は 5 を出すこともあるぞ。
n > 5 の phi(n) に対して、6〜n の値はでない。
phi(15) は 15 回 rnd5() を呼び出して一様な巨大数を作成しているつもりだが、結果は一様とは「ほど遠い」。
しかし phi(15) に比べると 10009 ははるかに微小だから、剰余が一様に分布しているようにみえるだけ。
>>704 同様、除数に比べると巨大な数を作っているが、その根拠がない。
やりなおせ。
>>709 再び恐縮ですが、そのコードを理解すれば理由がわかるのでしょうか?
そのコードに対してもまた疑問が出てくる始末です
解説もしくはキーワードなどなんでもよいので理解へのポインタを示していただけないでしょうか?
#新たな疑問 rnd10009の場合、phiの引数が15なのはなぜでしょうか?
整数nに対してドメインの長さが2*nでドメインの中心で対称な分布P(n)を作れれば rand(P(n)) mod nは[0,n)の一様乱数なのでrnd5からP(7)を作ればおしまい簡単だね
Qはなんで上から目線なの?ゴミなの?カスなの?
いつから初心者除けのスレになったんだよ。
勉強ついでにC言語の資格取得してみようと思うんだけど、就職に意味あるかな? 3級持ってるから2級か1級目指そうと思ってる。
721 :
◆QZaw55cn4c :2012/09/27(木) 02:40:53.33
>>716 階乗進数
phi(15)の15 はできる限り大きな数を生成したいということで long long int の大きさ比べて決めた値では?
うまくいってないけど。
>>717 P(n)の分散Vに比較して n が小さいと駄目なのでは?そしてその目安は?
>>720 Cの資格でググってみたらサーティファイ情報処理能力認定委員会って奴のC言語プログラミング能力認定試験ってのが上位にヒットするけどこれのこと?
就職のための箔を付ける意味ではプログラミング言語だけを中心にした資格はちょっと説得力が弱いかも。
情報技術者試験も意識した問題形式って書いてあるけど、そんならもう情報技術者試験を受けろよと思う。 情報技術者試験の方が安いし。
資格をどう評価するかは会社によって全然違ったりする。
ただ、応募者が多い会社を受ける場合は資格の有無で足切りされるのでなんであれ資格はあった方がいい。
rnd5を作れるかどうかを見てるんだよ rnd7は引っ掛け
724 :
◆QZaw55cn4c :2012/09/27(木) 03:01:17.66
>>721 逆だ。P(n)の分散が小さいと問題だ。
Qアホすぎ
378 : ◆QZaw55cn4c :2012/09/07(金) 19:01:55.53 ID:HS5H6irY
>>376 つ水墨画
シベリウスの音楽は全部ハ長調でも問題ない
やっぱQは自己愛性パーソナリティ障害だな 自分を実物以上に大きく見せて虚構を作りたがるのは「弱い犬ほどよく吠える」と同じ原理
728 :
デフォルトの名無しさん :2012/09/27(木) 07:47:02.24
反論ならば具体的に
>>721 分散は関係無いよ
対称性と幅がニエヌ倍だけでいい
>>729 >>654 や
>>689 は対称性だけではうまくいかないことを示しているのでは?
n にたいして p(n) が大きく散らばらないといけないのでは?
731 :
デフォルトの名無しさん :2012/09/27(木) 08:49:39.27
仕事はできるけど、面白みに欠けるプログラムしか書かない奴が 出来るプログラマっていう風潮は会社にあったりするの? やっぱそういう奴って傍から見てて憎たらしい?
未だやってたのかよw
733 :
デフォルトの名無しさん :2012/09/27(木) 09:09:14.16
やっぱ同僚プログラマで憎たらしい奴とかいるんだ。 ストレス感じてるならここで吐いて良いよ。
抜く?
>>733 ム板の方がいいんじゃね?
でもあっちは愚痴を言えるかわりに愚痴を読むはめになるから
あんまり居たいスレじゃないわな。
>>729 分散とか言ってる奴も対称性とかいってる奴も
頭悪いくせに賢いふりをしようとしてるだけ
バカすぎる
真のバカは人を罵倒するだけでなんの意見も出さないヤツの事ダヨ
うんそうだね。一様分布の分散とかバカすぎる。今すぐ死ねって感じ。
>>621 が混乱の原因か。こいつはQと同程度かそれ以下のバカ。
バカでもわかるように説明しよう。
サイコロは一個の出目1-6は一様分布、それではサイコロ2個をふった時の
出目の和2-12は一様分布か?
小学生でも(一様分布という言葉の意味さえわかれば)違うと答えられる。
わざわざプログラム書いて検証するまでもない。
グラマなら言葉よりコードで実証すればいいのに。 困ったちゃん。
簡単な日本語すら理解できないアホがコード読めるとも思えないけどな
is_ichiyo_bunpu() is_random()
5進で割り切れる数つったら15624 = 5^6-1 すね int rnd5(){return rand()%5+1;} int pw5(int a){return a==0 ? rnd5()-1 : 5*pw5(a-1);} int x5(int a){return a==0 ? pw5(0) : pw5(a)+x5(a-1);} int rnd7=x5(5)/2232+1;
>>740 こうか?
#include<stdio.h>
int main()
{
puts("お前はバカ");
}
呼んで納得してくれるかは判らんが、一応問題を整理してみる。 >599 >1〜5の数字をランダムに生み出すメソッドが与えられている >このメソッドを使って1〜7をランダムに生み出す方法を考えろ。 一行目にあるようなメソッドを数回呼んで、出目を巧く加減(乗除)すれば 二行目にあるように1~7をランダムに生成できることは誰でも想像に難くないと思う。 実際、20面さいころに1-5を4セット書けば、一行目にあるようなメソッドをシミュレートできる。 しかし、話がややこしいからまずは普通の6面さいころを二回振ることを考えよう。 一回目の出目は当然1~6、二回目も当然1~6なので、単純に足した場合は 出目が2~12、平均値である7の出現確率は1/2、両端である2や12の出現確率は1/12となる。 これでは等確率という条件を満たすことは到底できそうにないことも想像できるだろう。 実際、振る回数を増やしたとしても出現確率は正規分布の様相を呈してしまう。 同じように二回振って、一回目を6倍して、二回目を足してみよう。 これはちょっとややこしいが、それぞれの出目を1引いてから同じように計算すると0~35となり、 出現確率は等しく1/36になることが判る。 これは問題の条件を満たすことが充分できそうだと思えれば、後はそれほど難しくない。 一番単純には、上のように二回振って掛け合わせた結果の0~6のみを採用すればいい。 その方式なら、6面さいころだろうと問題にあるメソッドだろうと同じ要領で済む。 後者を簡単にコードで表すと、こうなる。 -- int rnd7() { int value; do { value = (rnd5() - 1) * 5 + (rnd5() - 1); } while (value < 7); return value + 1; }
>>738 一様分布[0, 1)の分散は 1/12 って計算したことないの?教科書すら読まない馬鹿なの?
>>739 その
>>621 と Q はガチに対決中ですけどね。
それはともかくその論拠は
>>621 によれば意味をなさないとのことだ。
つまり、さいころの出目そのものではなくて、その剰余を考えている。
一様分布の和に対して剰余をとったとき、その剰余は(条件付にせよ)一様分布かどうか?
うそくさいけど肯定材料も否定材料も今のところでていない。
Qはばか
戦ってると思ってるのはQだけ
> 一様分布[0, 1)の分散は 1/12 って計算したことないの?教科書すら読まない馬鹿なの?
↓を見ると理解していたとは到底思えないけど。www
>>721 P(n)の分散Vに比較して n が小さいと駄目なのでは?そしてその目安は?
>>724 > 逆だ。P(n)の分散が小さいと問題だ。
一様分布の分散理解していたなら、たとえ検証をプログラムでやるとしても、
理論的な分散(n^2 -1)/12にどれだけ近いかシミュレーションで求めるよな。
>>654 とかお笑い。
> だめなんじゃない?
> だめなんじゃない?
> だめなんじゃない?
> だめなんじゃない?
> だめなんじゃない?
>>749 それを書いた時から必死にぐぐって見つけたんでしょ
こいついつも後出しじゃんけんだよなあ
そして偉そうにしてる
だからQは嫌われるのに本人は気づいていないという
バカが一人だけなら簡単なんだけど、QZと
>>621 の二人がいるから面倒くさいことになる
____ /∵∴∵∴\ /∵∴∵∴∵∴\ /∵∴∴,(・)(・)∴| |∵∵/ ○ \| |∵ / 三 | 三 | / ̄ ̄ ̄ ̄ ̄ |∵ | __|__ | < うるせー馬鹿! \| \_/ / \_____ \____/
桜庭ななみ
756 :
745 :2012/09/27(木) 18:14:36.24
反応ないけど続きも書いたから貼っておこう。
>745では捨てる値が多く、パフォーマンスが宜しくない。
そこでそれを改善するために色々考えるわけだが、そのとき気をつけるのは5の冪は7では割り切れないこと。
>745の場合で7以上の値を捨てずに7の剰余を求めた場合を見てみよう。
この場合、生成される値のばらつきは次のようになる。
--
1 2 3 4 5 6 7
4 4 4 4 3 3 3
--
従って、>745の方針だけでは何回rand5()を呼び出そうとも得られた値の7の剰余を求めただけでは偏りが出てしまう。
実用的には数回呼ぶ程度でも充分だが、>599のような問題の回答としては巧くないだろう。
>745の場合は2回呼んで7以上を捨てているが、これを21以上を捨てるようにすればずっと改善するだろう。
最終的には、数回呼んだ上で適当な7の倍数以上を捨て、7の剰余を求めるのが無難なところ。
全く捨てないことを目指した結果が>743だと思うが、私なら6回呼んで15624のみを捨てることを選ぶかな。
あー、実装上は0を捨てるだけでいいのだけれど汎用的ではないな。
>>746 >一様分布の和に対して剰余をとったとき、その剰余は(条件付にせよ)一様分布かどうか?
一様分布の和は正規分布と考えていいよね。
その場合、その正規分布に対して充分短い周期となるような剰余をとれば一様分布に近づくでしょ。
でもそれは、一様分布とはいえない。
>>753 なるほど、高々0-28程度でもある程度一様分布に近づいてはいるんだね。
758 :
デフォルトの名無しさん :2012/09/27(木) 20:24:39.30
>>751 ん、確かに
>>721 は重篤なミスだ。それはみとめる。
まあ
>>756 が
>充分短い周期となるような剰余をとれば一様分布に近づくでしょ。
とこちらで記述しきれなかったアイディアを的確に表現しているから満足だ。思い残すことはない。
いや、
>>709 の評価を誰か頼む。
760 :
621 :2012/09/27(木) 20:35:33.53
>>745 うおおおおおおーーーーーーーーーーー!!!!!!!!!!!!!!
すげええええ!!!!!
761 :
621 :2012/09/27(木) 20:46:34.33
>>745 感動しました。
説明内容に釈然としない箇所がひとつも無い。ぼくにも理解できた(^q^/
痛快です。
一つ一つは、簡単で当たり前な考え方だけど、それ積みあげていったら、
気付いたらrnd7()をも当たり前なこととして導けてしまえる様子に感動しました。
聞いてしまった今ならば簡単な方法に思えるけど、しかし、これを最初に閃けてしまうあなたを尊敬します。
少なくとも自分にはまったく閃けなかった。
どう言葉にすれば良いか分かりませんが、すっきりしました。ピタゴラスイッチを見た時のような気持ちよさというか。
感動してます。ありがとう。
>>601 も全然理解してなかったんだな。このクズは。
[社説]韓日関係の大荒れを予告する安倍総裁選出
安倍晋三前総理が自民党総裁に選出され韓国・日本の間で緊張が高まっている。
次の総選挙で自民党が多数党になれば安倍総裁が再び総理の席に座るる可能性が高いためだ。
安倍総裁は過去、総理に就任したときに教育基本法を改正して独島紛争の火種を育てた人だ。
それだけでなく再武装を禁止した平和憲法第9条を改正して集団的自衛権行使のための法律案を用意し、
参議院選挙で惨敗したせいで総理職から退いた人物だ。
最近に入り日本軍慰安婦動員事実を認めた河野談話を廃棄することを主張して「総理就任期間に靖国神社を
参拝しなかったことが痛恨の極み」と話すほど極右指向が強い政治家だ。
彼の著書「美しい国」で韓国を同盟国名簿から除外してしまうほど反大韓民国路線を歩む人物だ。
そのような安倍総裁が総理の席に上がる場合、韓日関係が極度に悪化することは火を見るより明らかなことだ。
そうであるから外交部当局者は緊張感を緩ませてはならない。安倍総裁の指向に沿った対応策を講じなければならない。
韓日関係で主な争点となる独島問題に対しては国際慣例や文献など根拠資料を広範囲に収集して徹底して論理的に対応する
準備をしなければならないだろう。慰安婦問題など過去の歴史に関しても国際人権団体等を通して世論を作り、
被害者の証言と関連資料を発掘する作業に拍車を加えることはもちろんだ。
外交当局は何より最近、尖閣列島紛争などで中日関係が深刻な葛藤局面に入り込んだ状況を十分活用しなければならないだろう。
日本もやはり国際的な孤立を望んではいないためだ。韓・中・日三角構図に南北対峙状況まで考慮した強弱両面戦略が必要だという意味だ。
合理的な路線で実利を取りまとめる外交当局の鋭い洞察力を期待する。
[社説]韓日関係の大荒れを予告する安倍総裁選出(韓国語)
http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=110&oid=082&aid=0000358763
ネトウヨ王に、俺はなる!まで読んだ。
がんばれ!
>>601 を見た時点で、問題は解決済み扱いで自分が何か言う必要はないと思う人がほとんどだろ
うん
ローカルルール違反のバカに絡まれて火病った
>>704 がマヌケ。
> ★◆QZaw55cn4cは発言禁止です。トリップを隠してもダメです。
771 :
745 :2012/09/28(金) 13:36:41.78
改めて見たら、>601で答えが出てたのね。 まぁ、>621が納得できたからよかった。 ついでに言えば、>756で書いた「数回呼んだ上で適当な7の倍数以上を捨て、7の剰余を求める」の 一番シンプルな形が>601だね。 >599から7分でこれだけきちんとできるなんて、仮に慣れていたとしてもたいしたもんだ。
7倍して5で割れば良いだけじゃないの
条件が整数とはどこにも書かれてないな
774 :
ニート26 :2012/09/28(金) 16:18:47.58
未経験だけど、プログラマーになりたい26男高卒です。 C言語を勉強しようと思っています。 速習C言語入門[第2版] ~脳に定着する新メソッドで必ず身につく~ [単行本(ソフトカバー)] 菅原 朋子 (著) この本マスターすれば、働けますかね?
1週間徹夜の日がしばしばあっても平気なら雇ってくれるよ
776 :
ニート26 :2012/09/28(金) 17:01:33.83
>>775 大変そうですね
でも、雇ってくれるならありがたい
777 とりあえずメアドと履歴書いて
ベクターなどのソフトを見て、これ自分で作れそうだなと思ったものを作るといい 一度やってみなさい あとそんな質問はプログラマ板へどうぞ
徹夜分の給料でない出来高制でいいのかな
もちろん残業代なんか出ないよ
時給がいいにきまってる。スレ違いだぞ
あっそ
Cでウェブの情報を拾いたいと思いプログラムを書いています。 情報の取得自体は n = recv(sock, buf, sizeof(buf), 0); としてバッファに受け取れるのですが、コンソールに表示した場合、一部分だけ文字化けします 具体的には、たとえば2chを読み込むと <a href="1328344097/l50">726: スレタイA (51フフフフフフフフ・</a> <a href="1331870803/l50">727: スレタイB</a> <a href="1321033272/l50">728: スレタイC (91)</a> というように、スレタイAの一部だけ文字化けします。原因および対策等、教えて頂けないでしょうか。 環境は Windows7、VisualC++2010です。
>>786 きちんと文字列終端の処理をするか
受け取った文字数だけ表示させればおk
>>786 表示はどうしてる?
その表示を見ると化けているのではなく余計なものがくっついてるのがわかる。
recv で読み込んだ情報は最後に '\0' を付けてはくれないので printf や puts やらで出力したら
読み込んだ分の最後を越えて表示しようとしてしまう。
戻り値の n が受け取れた数 引数に渡した sizeof(buf) より小さいことが十分にありえる (さらにTCPでHTTPだろうから 行単位(末尾のCRLF)で一気にバッファに詰まるわけではないことに注意だ)
やめとけwww Cでやんのは自殺行為だwww 2chならshiftjis、0x5cに引っ掛かりまくりでクソの山wwww おとなしく別の何か使っとけよwww 文字コードのクソ山にCで直接突入とかwww 別の言語使えよwwwww www
>>787 >>788 レス有難うございます!
buf[1024];
n = recv(sock, buf, sizeof(buf)-1, 0);
buf[n] = '\0';
としたら文字化けも無くなりました。
recvが終端に\0をつけないということを完全に見落としていました。
有難うございました。
>>791 表 って書いてあるテキストファイルの読み込みすらひっかかってクソの山になる
Cコンパイラを教えてください
アンカもマトモに打てないようなksかよwww 煽るならもっとうまくやれよアフォwww
796 :
デフォルトの名無しさん :2012/09/29(土) 00:14:11.37
思ったんだけど、最初からシフトジスをコンピュータが採用しなかった理由って 何だろ?最初はa〜Z ,+:@&%$みたいな記号しかコンピュータは受け付けなかったんだろ
そりゃ無かったからだ
798 :
デフォルトの名無しさん :2012/09/29(土) 00:23:55.34
昔のコンピュータって漢字無理だったよね。 Windows以前のコンピュータは漢字打ち込めたの? CUIで。
800 :
デフォルトの名無しさん :2012/09/29(土) 00:27:48.76
>>799 C言語はShift-jisと関連あるだろ
何故ダメなんだ?
なぁ?おい?
感じコードなんてあとづけさJIS/Shift-JIS/EUC 陣営が互いに叩きあいしているうちにウニコードとかにかっさらわれてしまった奴ら東洋の事情も知らずに感じ東郷とか無茶をいってさ結局日中韓感じ東郷さえ到達できずに終わり本当になさけないというか
803 :
デフォルトの名無しさん :2012/09/29(土) 00:31:23.46
>>801 お前プログラマーのくせに排他的過ぎw
学生もいること忘れんな
そうだぞ プログラマーは聖人君子なんだ そうじゃないやつはプログラマーではない だからここで質問しようとする人も 聖人君子たろうとするべき そうじゃないやつはプログラマーでもないし プログラマーも目指してないから 知る必要もない
805 :
デフォルトの名無しさん :2012/09/29(土) 00:36:32.14
小文字を大文字に変える関数ってあるけど、これ小物過ぎない? 何でこんな関数作ったんだろ。自作できるじゃん。
>>804 オメーg成人君子な証拠見せろよヴァk
アホグラマ程度ののーみそだろw
深いとこまで考えると簡単じゃないからな
808 :
デフォルトの名無しさん :2012/09/29(土) 00:38:42.37
tolowerだっけ? これ void komojiwooomojinihenkan(char cha) { if(cha==a)cha=='A' 以下同文 } でいいじゃん。tolowerって機能少なすぎ。何なんだ。 こんな関数必要ないじゃん。
お前がそう思うんならそうなんだろう お前の中ではな
ASCIIコードでもEBCDICでも変換できるように関数作ったんだよ ntohsなど環境によっては変化のないものもあるけど、意味はあるわけだ
トイレ?
812 :
デフォルトの名無しさん :2012/09/29(土) 00:44:01.58
もっと意味分からない関数がabs() これも全然分からない 絶対値を求めるってそもそも絶対値自体数理的なものでコンピュータなら ではなの概念じゃないよね void puramaigyakuten(int a) { a=-a; } でいいじゃん。
utf-32以外使うな
>>812 absとそのコード、何の関係があるわけ?
815 :
デフォルトの名無しさん :2012/09/29(土) 00:50:10.31
>>814 じゃあ
absが便利な時あるの?
今まで総計10万行近くのプログラム書いてきたけど
この関数だけは何の役にも立ってないだわ
自分自身が無意識的なヴァカであると主張せんが為のオサレなダメコードだろ 察してやれよ
いやABSとそのコードの関係性を聞いてるんだが?
>>815 何もかもが嘘だな
役に立たないのはお前
むしろ足を引っ張るからいないほうがいいレベル
819 :
デフォルトの名無しさん :2012/09/29(土) 00:56:42.13
>>818 あんまキツイ事言わないでよ
>>817 とりあえずC言語は数学関連のいらない関数が多すぎ
もっとさ、便利な機能作れよな(笑)
>>819 ABSとそのコードの関係性を聞いてるんだが?
おっぱい
絶対値が必要ない業種なら、いつまで経っても必要性が判らないのも道理。 数値計算やっていると、しばしばひつようになるんだよ。
823 :
デフォルトの名無しさん :2012/09/29(土) 01:05:22.58
>>820 だから絶対値ってことはマイナスの値がプラスの値になっちゃうわけだからこれでいいじゃん
int i;
i = 5 - 8;
if (i < 0)
{
puramaigyakuten(i);
}
abs使わずにそれをあえて使う意味ってあるの?
マジモンのアホがいる……
何かに疑問を持つ事はいい事だと思うよ 結果的に馬鹿だとしても、馬鹿だったとわかるんだからいい事だ まわりの人間は迷惑だけどな
827 :
デフォルトの名無しさん :2012/09/29(土) 01:12:38.95
>>824 より多くの用途で使うことができる
absは絶対値だからプラスの値にしかならないけど、僕が作った関数はマイナスの値にもできる
マイナスの値にしたいときも同じ関数使うことができる absはもういらない
a * abs(b) + c; という式があったとして 君のくだらない関数を使うときにだらだらifを使い可読性を損なう事に 何の意味があるのかね
829 :
デフォルトの名無しさん :2012/09/29(土) 01:16:21.90
>>828 それはプラスの値が欲しいときに条件を限定しているからそうなるけれども
マイナスの値にすることもできるってことに気づいてよ absより高機能だってこと
831 :
デフォルトの名無しさん :2012/09/29(土) 01:19:33.94
>>830 だからabsいらないよねって話じゃん
*つければいいじゃん
>>827 >absは絶対値だからプラスの値にしかならないけど、
そんなことはない。マイナスのこともある
833 :
デフォルトの名無しさん :2012/09/29(土) 01:20:53.82
absは絶対値が必要な時に使うんだが。それだけ
プログラミングが商売になるって日本は平和な国だと思うわ。
836 :
デフォルトの名無しさん :2012/09/29(土) 01:22:47.28
a * abs(b) + c; を君の高機能な関数で書いてみてよ
>>836 なんでそれが俺へのレスなんだ?ID出ないから面倒だね
839 :
デフォルトの名無しさん :2012/09/29(土) 01:25:23.40
>>837 そんなのわかるでしょ
if (b < 0)
{
puramaigyakuten(b);
}
a * b + c;
マジで数値計算とかしたことのねーアホだな 消えろよアフォがうつるから
841 :
デフォルトの名無しさん :2012/09/29(土) 01:26:01.31
>>838 だからabsはマイナスにはならないってことでいんだよね?
なにを勝手にbの内容変更してんだよ
843 :
デフォルトの名無しさん :2012/09/29(土) 01:28:23.18
844 :
デフォルトの名無しさん :2012/09/29(土) 01:29:28.43
>>842 変更しちゃいけないって条件の後出しですか?すごい卑怯者ですね、AKBのじゃんけん大会でやらせだったことよりひどいと思いますよ
>>819 >とりあえずC言語は数学関連のいらない関数が多すぎ
ほんとそうだよね超越関数なんてtan(), arctan(), pow(2.0, x) - 1.0, x * log2(y), x * log2(y + 1) だけでいいよね(棒)
せめてローカル変数にbの結果出せや で、そのコードってa * abs(b) + c; より良い書き方かい?義務教育くらいうけてきた年齢なのかな?
847 :
デフォルトの名無しさん :2012/09/29(土) 01:32:30.22
質問に答えろ そのコードってa * abs(b) + c; より良い書き方か?
よい悪いの定義を教えてください主観では答えられません
外野はだまってろ
851 :
デフォルトの名無しさん :2012/09/29(土) 01:51:21.17
> 842 :デフォルトの名無しさん:2012/09/29(土) 01:27:26.39 > なにを勝手にbの内容変更してんだよ 後出しで条件つけて偉そうにしてる人さらし上げ
rnd5()->rnd7()フレームのほうがまだおもしろかったよね
853 :
デフォルトの名無しさん :2012/09/29(土) 02:01:16.81
>>852 QZてやつが顔を真っ赤にしてレスしてただけだったじゃん、もしかしてabsに固執している老害っぽい人ってQZなんじゃない
>>853 それが面白かったじゃん。なんかMTとか大仰なお道具をふりまわしてさー、普通の線形合同でいいのに馬鹿だよね。
855 :
デフォルトの名無しさん :2012/09/29(土) 02:10:17.97
>>854 バカはお前だよw avltreeは実装できたのか?教えてやろうか?
>>855 うん、結構苦戦してるんです。
参考にした教科書も間違っているありさまで困っています。よろしくお願いいたします。
857 :
デフォルトの名無しさん :2012/09/29(土) 02:17:51.26
>>856 おーよしよし、avlはたぶんアベレージのことだから平均値を求めてなんかすればいんだろ
たとえばa, b, cの3つの数があるとすると、(a + b + c) / 3てゆうふうに3つの数を足して、
3で割れば平均値出るから、これ参考になる?
a + b = cを満たすような、互いに素な自然数の三つ組 (a,b,c) に対し、積abc の互いに異なる素因数の積を d と表記する。 このとき、任意の実数 ε > 0 に対して、c?>?d?(1+ε)となるような三つ組 (a,b,c) は高々有限個しか存在しない ってことだよな。
860 :
デフォルトの名無しさん :2012/09/29(土) 02:28:26.73
>>859 そう、それ、俺もそれが言いたかった、そういうこと、大体あってる。
>>858 ほいで、いまはどういう実装の仕方してる? 左右の木の高さの差を求めて平衡していないことを調べるやり方と、
左右どちらに傾いているかというラベルを枝に持たせるやり方があるだろ、どっちのやり方でやってる?
861 :
デフォルトの名無しさん :2012/09/29(土) 03:03:39.02
あれ? QZが逃げ出したw 他人から教えられるのは大事な大事なプライドが傷つくのだろうか、ガハハ
>>861 一年以上も前で探すのにちょっと手間取りました。すみません。
864 :
デフォルトの名無しさん :2012/09/29(土) 03:19:59.57
>>863 そんな前なのかよ、ちょっとまってろ精査してやんよ
866 :
デフォルトの名無しさん :2012/09/29(土) 04:35:56.02
>>865 なんだ、ほとんどできてんじゃん
一重回転は問題ない
二重回転のところだな
┃if (p2->bal == -1)
┃ (*p)->bal = 1;
┃else
┃ (*p)->bal = 0;
┃if (p2->bal == 1)
┃ p1->bal = 1;
┃else
┃ p1->bal = 0;
p2とpは同じ一番上のノードを指している。
if ((*p)->bal == -1) {
(*p)->left->bal = 0;
(*p)->right->bal = 1;
} else {
(*p)->left->bal = -1;
(*p)->right->bal = 0;
}
こう変えれば完成だな
AVL木についてまじめに勉強したいならぐぐってばかりいないでセジウィックとかロバート・クルーズ の本を読めよな あ、買う金ないのか
セジウィックのは赤黒木で9ページ、ロバート・クルーズのはAVL木で18ページあるな ロバート・クルーズのは絶版じゃん ISBN4-89471-331-4 まだISBN4の時の本か
かまうなよ。バカが感染するぞ。
873 :
デフォルトの名無しさん :2012/09/29(土) 12:42:55.97
いつからトリヴィアスレになったんだよ
874 :
デフォルトの名無しさん :2012/09/29(土) 13:09:30.22
c言語作った奴ってオブジェクト指向の重要性も分からないバカなのかな
やっぱりC言語開発した人って、発想に乏しい人なのかな?
やっぱ新しい言語作った人は応用力あるけど、元祖は大した事ないよね そう考えると昔の言語学者ってバカばっかりなんだろうね
昔はコンピュターの仕組みが簡単だったから、誰でもエンジニアになれた 時代だったんだろうか
特にLISPが馬鹿っぽいね
言語学者とか応用力があるかのように見せかけてる理屈屋だろ 違うか?
発想力が乏しいからコンピュータ業界に飛び込んだんだろ
それが給料にも反映してると思う。技術屋はバカだから給料低い。
ある程度Cの知識があるやつは物知りだなと思う。 ただ執拗に知識があるやつはキチガイだと思う。
Cプログラマは"知識"はあるが"知恵"が無い典型例
昔のプログラマというと ビルゲイツとか スティーブウォズニアックとか ラリーエリソンとか ラリーペイジとか マークザッカーバーグとかかな。 給料低いかね。
>>885 C の文法は単純明快かつ書き手優先だが、後方互換性を確保するために、若干だが理由なく複雑なところがあるからねえ
これは途中から入ってきた者には頭でっかちにみえるんだろう
規格も複雑怪奇というほどでもないので、にわか文法学者が説教を垂れるのに我慢できないわけだ
それはそうと使えば使うほど知恵に磨きがかかるプログラミング言語ってなんだろうね
知恵の輪みたいに絡まってるコード書ける言語じゃね?あ、じゃあCか
889 :
デフォルトの名無しさん :2012/09/29(土) 14:46:17.68
頭でっかちといえば bool がないことにやだじたするガキとかな
result == TRUE これに泣く初心者
TRUE と比較する香具師は池沼
if(result) { }
#define FALSE 0 #define TRUE (FALSE == 0) #include <stdio.h> int main(void) { int result = TRUE; if(result) { printf("result = %d\n", result); } else { puts("Why?"); } return 0; }
#define !0 でいいんだけど問題はソコジャナイからね
#define TRUE !0
>>896 1じゃダメなんでしょうか?
文字列終端は'\0'であって0じゃないみたいなもの…、じゃないんだろうなw
!0 は必ず1になるから、1でもかまわない。 ただ、見た目的にちょっぴりエレガントさを求める人は #define FALSE 0 #define TRUE !FALSE みたいにする場合がある。
899 :
897 :2012/09/29(土) 21:20:09.06
もしや即値の1より論理条件の1の方が出力コードが短いのでは!? と思って確認してみましたが以下の検証ソースだと 即値の1(be01000000 mov esi,00000001)を使いまわしてました。 コンパイラと最適化具合によるのでしょうけどね。 #include <stdio.h> int main(void){ char *mejirusi; int i; printf("inputDec >"); scanf("%d", &i); mejirusi = "tes1:if(i == 1)"; if(i == 1)mejirusi="tes1:true"; printf("%s\n", mejirusi); mejirusi = "tes2:if(i == !0)"; if(i == !0)mejirusi="tes2:true"; printf("%s\n", mejirusi); mejirusi = "tes3:if(i != 1)"; if(i != 1)mejirusi="tes3:true"; printf("%s\n", mejirusi); mejirusi = "tes4:if(i != !0)"; if(i != !0)mejirusi="tes4:true"; printf("%s\n", mejirusi); return 0; } ※scanfなど使用せずint i=1;で固定の初期化をするとiが1の場合のcmpが無いコードが出力されました。 最適化されるんだなぁと思った次第です。
0が偽 0以外が真
#define TRUE ~0
#define TRUE !0
#define TRUE !FALSE
904 :
デフォルトの名無しさん :2012/09/29(土) 22:04:51.61
#define N 100 ってNが何の変数か分からないのに定義したって意味ないだろ。 こういう所がCの適当なところだよ。氏ね。
true de falsch
また新手の釣りか 乱数 webときて お次はクソ心理知か なるほど手札が尽きないと見える すばらしい こういう糞なノウハウだけが溜まりにたまって ゲロを吐きだしてるさいふうだろ クセぇから他でやれよ お前のtwitterでゴボゴボ吐いてろ
おちんちんもみたいの〜
お朕々みたいなもの=FALCE
printfはprintf("文字")なのに putcharはputchar('文字')の理由は何故ですか? putcharは二番煎じ関数なのでしょうか?
うるせー馬鹿
printfは二番煎じ のほうが分かりやすいだろ ”ついてんだから 日本語のレトリックからやり直せアホ その手の知能低い頭で考えてもなおさら分からネーヨ(プ
(`Д) インターネット、オモシレーなー。ネットゲーム最高だぜぃ。お!レア物ゲトだぁ! J( 'ー`)し タケシ、パソコンのベンキョウ頑張ってるなー。いい仕事が見つかるといいねー。 カーチャンも頑張らなきゃ。 (`Д) ・・・・(パソコンの勉強か、そのうちやるよ。今、ギルドの幹部になっちまって忙しい) J( 'ー`)し タケシ、カーチャン、ちょっと疲れた。肩を揉んでほしい (`Д) 今、ベンキョウで忙しいんだよ J( 'ー`)し タケシ、ガンバッテルナー。カーチャン、嬉しい。いい仕事が見つかって、優しい彼女も できるよ。 カーチャンの入院 J( 'ー`)し 病院まで10kmもあるのに自転車で見舞いに来るなんて、タケシは親孝行だね。 パソコン頑張ってるから、自動車も買えるようになるよ。 ('A`) ・・・・(カーチャン、俺ホントはゲームしかしてないんだよ。)
>>914 こうなる前に大手に内定もらえた俺は親孝行もんだな
>>911 一応マジレスしておく。
文字の出力関数→putchar('a')
文字列の出力関数(但し改行文字も出力する)→puts("a")
成形済み文字列の出力関数→printf("%c", 'a) or printf("%s", "a")
printf()の第一引き数はフォーマット指定文字列なので、そこに出力文字を直接書くのは(馴れない内は)止めた方がいい。
printf("%c", 'a) アホだろお前 釣りかよ 何この程度で間違えてんだ? クソかよ
コンパイル通らないよな
919 :
デフォルトの名無しさん :2012/09/29(土) 23:06:07.13
マジレスって書いてある
本気出してこれかよ
____ /∵∴∵∴\ /∵∴∵∴∵∴\ /∵∴∴,(・)(・)∴| |∵∵/ ○ \| |∵ / 三 | 三 | / ̄ ̄ ̄ ̄ ̄ |∵ | __|__ | < うるせー馬鹿! \| \_/ / \_____ \____/
2ちゃんねるは(馴れない内は)止めた方がいい の格言通りだな アホが醜態晒して吠える吠える 止まらないケツ屁みたいにくせぇww
他人の小さなミスを大きくあげつらうくだらない人間
この手のケアレスミスやるやつぁー ホントのクズだなwww まるで自分が悪くないかのように 「小さいミス」とかwwwww 小さいwww 小さいwwww ちっさいwwwwwwww 自己便護のカマタリで出来てる ただのアフォ君だろwwwwwww くっだらねーのは この程度で間違うテメェーだよテメェーwwwwwwwwww プゲララララ♪♪♪♪♪♪♪♪
またuyか
ふっほっ
927 :
デフォルトの名無しさん :2012/09/29(土) 23:54:48.81
ndk
928 :
uy :2012/09/30(日) 00:11:35.17
カスしかいねーなここ
>>928 その選ばれしものたちの頭領こそが
あなた様なのです
if( a == x && b == 1|| a == y && b == 1|| a == z && b == 1){ 処理 } これを if(b == 1){ if( a == x || a == y || a == z ){ 処理 } } これより綺麗に書くことはできないだろうか
さて この手の釣りは幾度となく見たぞ
ベン図書け それで不可能なものは不可能
if(b == 1){ if( a == x ){ 処理 } if( a == y ){ 処理 } if( a == z ){ 処理 } }
if(b == 1){ if( a == x ){ 処理 } } if(b == 1){ if( a == y ){ 処理 } } if(b == 1){ if( a == z ){ 処理 } }
綺麗だね
else if が一番無駄な処理がすくないんだよヴォケ
if(b == 1){ if( a == x ){ if(b == 1){ 処理 } } } if(b == 1){ if( a == y ){ if(b == 1){ 処理 } } } if(b == 1){ if( a == z ){ if(b == 1){ 処理 } } }
無駄かどうかなんか関係ないね。 論点は綺麗さであって個人的な主観が全て。
if(b == 1) { switch(a) { case x: case y: case z: 処理 break; default: break; } }
#define f(_a) (_a==x || _a==y || _a==z) if (b==1&&f(a)){ } #undef f
if( a_no_tekisetsuna_meishou == x_no_tekisetsuna_meishou && b_no_tekisetsuna_meishou == 1 || a_no_tekisetsuna_meishou == y_no_tekisetsuna_meishou && b_no_tekisetsuna_meishou == 1 || a_no_tekisetsuna_meishou == z_no_tekisetsuna_meishou && b_no_tekisetsuna_meishou == 1){ 処理 }
if( a_no_tekisetsuna_meishou == x_no_tekisetsuna_meishou && b_no_tekisetsuna_meishou == TEKISETSUNA_MEISHOU_NO_MACRO_1 || a_no_tekisetsuna_meishou == y_no_tekisetsuna_meishou && b_no_tekisetsuna_meishou == TEKISETSUNA_MEISHOU_NO_MACRO_1 || a_no_tekisetsuna_meishou == z_no_tekisetsuna_meishou && b_no_tekisetsuna_meishou == TEKISETSUNA_MEISHOU_NO_MACRO_1){ 処理 }
if ((b == 1) && ((a == x) || (a == y) || (a == z))) { 処理 }
945 :
デフォルトの名無しさん :2012/09/30(日) 02:55:21.30
b^1||a^x&&b^x&&c^x||処理
括弧多すぎリスパーかよ
949 :
デフォルトの名無しさん :2012/09/30(日) 03:49:27.70
b^1?0:a^x?a^y?a^z?0:1:1:1||処理
文字列の扱いについて質問です あれこれ処理しつつ出た結果を順次文字列に追加するというのはどう書けばいいでしょうか 最終的な文字数がわからないので配列ではなくポインタで宣言して char *hoge; hoge="a"; strcat(hoge,"b"); のようにしたいのですができません 10000をこえることは無さそうなのでchar hoge[10000]; とやってもいいんですが美しくないので・・・
C++のstd:stringとかC++/CLIのStringBuilderを使え
文字列リテラルを改変するな 追加するなら領域は自分で確保しろ
できんのかー、不便な言語すな
*hogeが文字列の連続したメモリ空間の先頭アドレスだと知ってれば メモリに何が入ってるかわからない状態で後ろにどんどん追加していくのが不可能だと気づくだろう
大抵は他の言語でもできないけどね
Python >>> hoge = "a" >>> hoge += "b" >>> hoge 'ab'
大きいバッファを用意して、一連の処理が終わったらstrdupする手もある
何が?
>>954 char *hoge;時点では領域確保しないでhoge="a";のとき初めて確保するの?
代入した時点で代入された値ぶんだけ格納できる領域に保存してその先頭アドレスを保持するって感じなのかな
C言語むずい
char hoge[10000];で良いよ
970 :
デフォルトの名無しさん :2012/09/30(日) 15:02:28.64
技術的なノウハウっていうのはネットには出回るもの? 良くわからないんだが。
ネットに出回っている情報をノウハウと思うか否かというだけであり 多くの情報はノウハウとなりうる
>>960 ついでに言うと
char *s1 = "a";
char *s2 = "a";
としたとき、"a"のアドレスは同じ領域のこともあるし、別々に確保されることもある。
if(s1 == s2)で文字判定できると思って、まれに意図したとおりtrueになることもあるから注意が必要な。
代入した時点じゃなくて最初からあるんだよ。
975 :
デフォルトの名無しさん :2012/09/30(日) 15:47:34.94
ポインタって何のためにあるのか分からない。 変数と実体は一致してないと意味ないだろ。
>>975 >ポインタって何のためにあるのか分からない。
malloc()/free()、それから関数ポインタのためだ
それ以外に使う奴はそちらのほうがどうかしている
>変数と実体は一致してないと意味ないだろ。
最初は存在しない実体にたいしてはどうする?
char *str = "hoge"; ってした時"hoge"がヒープ領域に作られて、その先頭アドレスがスタックにつまれるんじゃないっけ
>>977 おまえ、とりあえず聞いたことがある単語を並べてみただけだろ?
>>977 >>979 "hoge"はコンパイル時またはリンク時にそのための領域が作成され格納される
つまり"hoge"はプログラム実行前にプログラム自身にすでにふくまれているのだ
プログラム作成時にアドレスは確定しているから(正確にはプログラムのメモリ展開時だけれどもね)
>char *str = "hoge";
に対応するコードは、そのアドレスをスタック上にある str 変数に対応する領域にコピーする
982 :
デフォルトの名無しさん :2012/09/30(日) 16:10:07.12
たぶんそれはプリンタを意識した解説
984 :
デフォルトの名無しさん :2012/09/30(日) 16:17:00.75
>>983 ありがとー
というかHDDって高速なんですか?メモリのほうが高速と聞きましたが
HDD は、プリンタに比べて高速って言ってるだけ。
バースト転送したほうが速いって言ってるだけ
バースト転送ってヒーロー物に出てきそうな名前で中二病の香りがします。 いったい誰が名付けたんですか?
英語混じりだと中二病て どんだけ英語耐性低いねん …と釣られてみる
スプーリングは速度じゃなくてスループットを上げるたものものでは
そういう話をするときに「速度」なんてあいまいな言葉使うなよ…
992 :
デフォルトの名無しさん :2012/09/30(日) 17:14:45.14
.. r'゚'=、 / ̄`''''"'x、 ,-=''"`i, ,x'''''''v'" ̄`x,__,,,_ __,,/ i! i, ̄\ ` 、 __x-='" | /ヽ /・l, l, \ ヽ /( 1 i・ ノ く、ノ | i i, | i, {, ニ , .| | i, .l, i, } 人 ノヽ | { { }, '、 T`'''i, `ー" \__,/ .} | .} , .,'、 }, `ー--ー'''" / } i, | ,i_,iJ `x, _,,.x=" .| ,} `" `ー'" iiJi_,ノ
/ ̄\ | ^q^ | \_/ / ヽ | | | | | | | | || || し| i |J=二フ .| || | ノ ノ .| .| ( / |\.\ し'  ̄
994 :
デフォルトの名無しさん :2012/09/30(日) 17:36:33.54
うめ
配列の長さを2の累乗数にすることに意味はありますか? 要素数が絶対に60をこえない配列で int foo[60]ではなくint foo[64]とする人がよくいるのは気持ちいい悪いの問題?
要素数にできる整数の最大てのは何だよ それ考えろよ
おちんちん
っはー
ドナドナ
>>995 出荷した後に、61に拡大しろという追加注文をされる事がままあり、
バイナリーパッチで対応するために、予備領域として64までとっておくという事はあった。
cではなかったけど、たぶんcでも似たようなもんじゃないかと思う。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。