2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C言語なら俺に聞け(入門編)Part 114

1 :デフォルトの名無しさん:2013/04/22(月) 04:47:19.70
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 113
http://toro.2ch.net/test/read.cgi/tech/1362824689/
★過去スレ
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++の宿題片付けます 164代目
http://toro.2ch.net/test/read.cgi/tech/1364700745/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
http://codepad.org/
http://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

2 :デフォルトの名無しさん:2013/04/22(月) 05:45:22.91
< `∀´>ニダー

3 :デフォルトの名無しさん:2013/04/22(月) 08:34:20.72
>>1
おつおつ〜

4 :デフォルトの名無しさん:2013/04/22(月) 16:27:33.64
ちんこ

5 :デフォルトの名無しさん:2013/04/22(月) 20:35:36.96
画像処理プログラミングの話になると思うけど
自動的に滑らかな輪郭のシャボン玉の形を作成したいんだけど
どんな実装したらいいですかね?かなり困ってて.....
一応C言語を使用します

6 :5:2013/04/22(月) 20:38:58.94
アイディア下さい
曲線をパーツとして作っていって繋げたらカクカクしそうだし

7 :デフォルトの名無しさん:2013/04/22(月) 20:44:07.40
画像をいっぱい用意して順番に表示したらいいよ

8 :デフォルトの名無しさん:2013/04/22(月) 20:44:47.29
>>5
外形とグラデーションを別々に描画してから後で合成する

9 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/22(月) 20:48:19.59
>>5-6
ベジェ曲線、スプライト曲線など
透明な背景に不透明度(α値)付の描画で画像作成

10 :5:2013/04/22(月) 20:52:26.45
>>8
意味がちょっと分かりません

11 :5:2013/04/22(月) 20:59:50.31
>>9
ありがとうございます
スプライト曲線が使えそうですね

12 :5:2013/04/22(月) 21:02:06.91
手間掛けさせて申し訳ないんですが五角形でスプライン曲線で滑らかな
閉曲線作るプログラム書いてくれませんかね?Cは画像ライブラリもってないんで
Swingで...

13 :デフォルトの名無しさん:2013/04/22(月) 21:11:16.18
解説をするスレであって、かわりに書いてやるスレじゃないぞ。

14 :5:2013/04/22(月) 21:11:55.04
>>13
すいません
Cのグラフィックスライブラリ教えて下さい

15 :デフォルトの名無しさん:2013/04/22(月) 21:21:08.08
Win32でもAPIでベジエとかあったろ
Linuxは知らん

16 :デフォルトの名無しさん:2013/04/22(月) 21:24:26.98
OpenGL 2.0

17 :5:2013/04/22(月) 21:31:23.49
ありがとうございます

18 :デフォルトの名無しさん:2013/04/22(月) 21:46:01.82
リヌクス

19 :デフォルトの名無しさん:2013/04/23(火) 03:24:53.08
子供はけん玉遊びでもしていなさい。

20 :デフォルトの名無しさん:2013/04/23(火) 11:41:37.66
FILE *fp

sub(){
static char buf[38];
char CHR[7]
fgets(buf,36,fp);
  fscanf(fp,"%6s\n",CHR);
puts(CHR);
}
main(){
  fp = fopen("test.txt", "r");
sub();
}

こんなプログラムが書きたいんですが,putsで表示したCHRがフフフフフってなります.
おそらくfpがsub関数に渡せていないのが問題だと思うのですが,main関数からどうやって渡せばいいでしょうか?
グローバル関数は使いたくないのでそれ以外の方法でお願いします.

21 :デフォルトの名無しさん:2013/04/23(火) 11:42:57.94
俺が試してみると フフフノフフフ になった

22 :デフォルトの名無しさん:2013/04/23(火) 11:46:13.88
グローバル変数を消す
sub() { → sub(FILE *fp) {

main() {
FILE *fp = fopen("test.txt", "r");
sub(fp);
}

CHRがフフフフフ は別件だと思うがなー

23 :デフォルトの名無しさん:2013/04/23(火) 11:49:02.26
ちゃんとfopenの戻り値見ろよ

24 :デフォルトの名無しさん:2013/04/23(火) 11:55:19.29
ちなみにsubの方でfopen()する場合はポインタのポインタを渡してそれに代入しないと値が
戻らない

sub(FILE **fp) {
*fp = fopen("test.txt", "r");
}

main() {
FILE *fp;
char CHR[7], buf[100];
sub(&fp);
fgets(buf,36,fp);
fscanf(fp,"%6s\n",CHR);

...

return 0;
}

最初の頃はこれではまったわ
C++ならFILE*& fp) とポインタのリファレンスを使うと呼び出し元の&は省略出来る
それとこれはFILEだからいいけど、コンソールは基本的にgets()系とscanf()系は混合
すると改行文字が変な働きをして動作がおかしくなるので、FILEもどちらか一方に
統一してるわ

25 :20:2013/04/23(火) 13:03:32.07
すいません.
別関数にtxt行数数えるコードがあるうのを失念してまして,rewindし忘れてました.

うまくいきました

26 :デフォルトの名無しさん:2013/04/23(火) 13:33:00.27
何回リロードしても全然書き込みがないと思ったら、昨晩から大規模規制が行われてるのか

27 :デフォルトの名無しさん:2013/04/23(火) 19:14:33.77
&CHRじゃないの?

28 :デフォルトの名無しさん:2013/04/23(火) 19:42:37.78
何でそう思ったのかな

29 :デフォルトの名無しさん:2013/04/23(火) 20:23:07.10
ここにいる奴らはオブジェクト指向なんだよな?

30 :デフォルトの名無しさん:2013/04/23(火) 20:58:51.76
c言語内でGZの解凍するのってどうすればいいんでしょうか?
@visual stadio

31 :デフォルトの名無しさん:2013/04/23(火) 21:11:25.64
ライブラリの命令で

32 :デフォルトの名無しさん:2013/04/23(火) 21:27:01.19
いまいちライブラリの使い方がわからないのですが、どこかからlibファイルをとってきてヘッダを指定すればできるんですかね?

33 :デフォルトの名無しさん:2013/04/23(火) 21:47:32.58
どなたか教えてください。
キーボードから入力された文字列の中に、特定の文字の列"abc"が含まれるなら"found!"を出力し、無ければ"Not found!"を出力するプログラムをつくれ。
入力は右の文を使います。char str[50];scanf("%s", str);
○文字列の探し方:
1.str[]の中から、まず先頭の文字'a'を探す。しかし、文字列の終端に達すると'\0'が現れるので、これが現れたら見つからなかったことになる。
2.'a'が見つかったら、次の要素が'b'かチェック。もし'b'ではないなら1に戻る。
3.'b'が見つかったら、さらに次の要素が'c'かチェック。もし'c'ではないなら1に戻る。

34 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/23(火) 22:14:09.10
>>33
#include <stdio.h>
int main(void){
int i; char str[50];
printf("入力: ");
scanf("%s", str);
for(i=0;str[i]!='\0';i++)
if(str[i]=='a'&&str[i+1]=='b'&&str[i+2]=='c')
{printf("found!\n");return 0;}
printf("Not found!\n");
return 0;}

35 :デフォルトの名無しさん:2013/04/23(火) 22:16:19.38
GZのフォーマットを調べて自前で。

36 :デフォルトの名無しさん:2013/04/23(火) 22:27:02.19
>>35
まじすか
そんなに難しくない?

37 :デフォルトの名無しさん:2013/04/23(火) 22:32:56.46
また宿題を持ち込んでるのかwwwwww

38 :デフォルトの名無しさん:2013/04/23(火) 22:35:31.58
dllで良いのでは

39 :デフォルトの名無しさん:2013/04/23(火) 22:46:12.56
なんとかプログラムをつくってみましたが未だにエラーが出てしまいます。どなたかご指摘をお願いします。
問題は、x=10に対してe^xの値をテイラー展開の式を使って解け。ただし、項の大きさが10^(-8)以下になるまで和を取りexp(x)の値と比較せよ。
#include <math.h>

int main(void){
float x,t,s,a;
x=10.0;
t=1.0;
s=t;
exp(x)=1.0;
do{
t=t*x/a;
s=s+t;
exp(x)=exp(x)+1.0;
}while(fabs(t)>1.0e-8);

printf("%e\n",exp(x));
return 0;
}

40 :デフォルトの名無しさん:2013/04/23(火) 22:48:21.34
>>38
それがどーやってdllファイルを入手するのか、どーやって使うのかよくわからないんです。
もうまる2日ぐぐって格闘してるんですが…

41 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/23(火) 22:52:12.94
>>39
exp(x)は値を返すだけの関数なので値を代入できない。値を代入できるのは変数。
#include <stdio.h>がない。

42 :デフォルトの名無しさん:2013/04/23(火) 22:59:25.63
片山渾身の自作自演

43 :デフォルトの名無しさん:2013/04/23(火) 23:01:49.03
>>41
回答ありがとうございます。
exp(x)との比較はどうすれば良いですか?
イマイチわかりません

44 :デフォルトの名無しさん:2013/04/23(火) 23:02:01.22
>>40
gunzip DLL

45 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/23(火) 23:05:18.11
>>43
差の絶対値

46 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/23(火) 23:09:32.31
gunzipはLinuxでメジャーな解凍プログラムだよね
MinGW版だとwindowsでも使えるけど

47 :デフォルトの名無しさん:2013/04/23(火) 23:22:00.74
>>45
何度もすみません。その差の絶対値の取り方がわからないんです。教えていただけないですか?

48 :デフォルトの名無しさん:2013/04/23(火) 23:24:01.44
なんでこんな馬鹿にかまってんの
先生に聞けよ

49 :デフォルトの名無しさん:2013/04/23(火) 23:30:20.06
友達いないんだろ
察しろよ

50 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/23(火) 23:44:29.27
近似値としてeという変数を使うなら近似値との差はe - exp(x)だから差の絶対値はfabs(e - exp(x))

51 :デフォルトの名無しさん:2013/04/23(火) 23:54:59.37
>>40
DLLの使い方ならともかく、DLLの入手方法なんて
圧縮解凍ソフトの「ユーザとしての」初心者レベルの話だぞ…?
ソフトウェア板にでも行きなされ

52 :デフォルトの名無しさん:2013/04/24(水) 00:05:53.00

おまえがどっかいけばすむ話かもしれないね

53 :デフォルトの名無しさん:2013/04/24(水) 00:07:53.04
効いてる効いてる

54 :デフォルトの名無しさん:2013/04/24(水) 00:15:45.73
ズタズタにされたいのか?調子こいてるとリアルで痛い目に会う事になるから注意すべき

55 :デフォルトの名無しさん:2013/04/24(水) 00:18:53.49
あ、産業廃棄物が何かしゃべってる!



効いてる効いてる

56 :デフォルトの名無しさん:2013/04/24(水) 00:19:04.34
たいがいにしろよカスが
マジで親のダイヤの結婚指輪のネックレスを指にはめてぶん殴るぞ
多分奥歯が揺れるくらいの威力はあるはずだしね

57 :デフォルトの名無しさん:2013/04/24(水) 00:20:01.26
ダイヤは叩くと割と簡単に割れるぞ

58 :デフォルトの名無しさん:2013/04/24(水) 00:21:25.82
>>57
なんだおまえ?ズタズタに引き裂いてやってもいいんだぞ
あまり調子こくとリアルで痛い目を見て病院で栄養食を食べる事になる

59 :デフォルトの名無しさん:2013/04/24(水) 00:22:44.33
あれれ?
びびって逃げちゃったのかな?

60 :デフォルトの名無しさん:2013/04/24(水) 00:29:39.50
あ、産業廃棄物が何かしゃべってる!



効いてる効いてる

61 :デフォルトの名無しさん:2013/04/24(水) 00:36:42.30
お前らは一級廃人のおれの足元にも及ばない貧弱一般人
その一般人どもが一級廃人のおれに対してナメタ言葉を使うことでおれの怒りが有頂天になった
この怒りはしばらくおさまる事を知らない

62 :デフォルトの名無しさん:2013/04/24(水) 00:52:26.51
タイヤは叩いても簡単には割れないぞ

63 :デフォルトの名無しさん:2013/04/24(水) 00:53:37.60
おいィ?お前らは今の言葉聞こえたか?

64 :デフォルトの名無しさん:2013/04/24(水) 05:13:13.22
>>58
やってみれば?
>>56
>親のダイヤの結婚指輪のネックレス
なにそれ?あと
>親
(爆笑)自分のじゃないの?

65 :デフォルトの名無しさん:2013/04/24(水) 07:18:06.76
ブロントにマジレスしてる奴ってなんなの?

66 :デフォルトの名無しさん:2013/04/24(水) 08:19:31.34
>>65
へえ、こんなのがあったんだ昔から踊らされてしまったねえww

67 :デフォルトの名無しさん:2013/04/24(水) 13:22:34.22
発狂するな

68 :デフォルトの名無しさん:2013/04/24(水) 18:29:41.80
プログラミングって
ファイル入出力以外の事をシーケンス制御って言うんですか?
中学校でプログラミング必修化するっていう記事で基本的なプログラミング
(ファイル入出力・シーケンス制御)等をやるとか書いてました。

69 :デフォルトの名無しさん:2013/04/24(水) 18:41:56.71
Googleという便利なサイトがあります

70 :デフォルトの名無しさん:2013/04/24(水) 18:44:33.45
というか中学生もプログラミング必修か
こりゃプログラマーの立場がww

71 :デフォルトの名無しさん:2013/04/24(水) 18:50:02.42
とりあえずC言語やるのかな?一番簡単だし

72 :デフォルトの名無しさん:2013/04/24(水) 19:00:03.47
最初は
C以外あり得ねー
中2 春C 秋C++
中3 春GUI 秋ネットワーク
これくらいで無理なく幅広く勉強できるんじゃないか?

73 :デフォルトの名無しさん:2013/04/24(水) 19:04:04.08
BASIC(笑)

74 :デフォルトの名無しさん:2013/04/24(水) 19:11:44.42
Cが一番簡単とかバカか

75 :デフォルトの名無しさん:2013/04/24(水) 19:14:50.11
でけぇ釣り針だなあ

76 :デフォルトの名無しさん:2013/04/24(水) 19:27:45.40
>>74
だから基礎的な文法とかはって事
中学校の授業レベルの話だろう

77 :デフォルトの名無しさん:2013/04/24(水) 21:16:11.12
アセンブリ言語は簡単だがPerlは難しくて挫折したという話は聞いた。

78 :デフォルトの名無しさん:2013/04/24(水) 21:19:34.88
Cはプロ向けだろう
C++の方が初心者向きだが、基本からとなるとPASCALの方が良いかな

79 :デフォルトの名無しさん:2013/04/25(木) 01:17:22.70
西部労働レストラン

80 :デフォルトの名無しさん:2013/04/25(木) 01:19:15.47
10 'SHASEI
20 screen 3: cls 3
30 line(0,160)-(330,160)
40 line(0,240)-(330,240)
50 for S=-1 to 1 step 2
60 for T=int(-sqr(2000)) to 60
70 X1=T: Y1=sqr(3600-X1^2)
80 X=X1+330+int(sqr(2000)): Y=-Y1*S+200
90 pset (X,Y)
100 next: next
110 for R=1 to 10
120 for S=0 to 14
130 for T=7 to 0 step -7
140 for U=0 to 15
150 circle (460+S*25,200+2*S^2),U,T
160 next: next: next: next
170 line input "CLS 3 OK?";A$
180 cls 3
190 end

81 :デフォルトの名無しさん:2013/04/25(木) 08:57:29.17
CとC++を最初に薦めるやつを信用してはいけない

82 :デフォルトの名無しさん:2013/04/25(木) 10:35:42.22
大きな釣り針

83 :デフォルトの名無しさん:2013/04/25(木) 21:30:05.20
>>1


84 :デフォルトの名無しさん:2013/04/25(木) 22:41:02.83
>>81
Cが基礎だって言うやつって、言語が低水準であることと基礎と区別がつかないのかね。
PCのアーキテクチャが分かるってなら、アセンブラでも進めりゃいいのに。

85 :デフォルトの名無しさん:2013/04/25(木) 22:49:16.68
極論出たよ

86 :デフォルトの名無しさん:2013/04/25(木) 22:58:29.41
C言語は低級言語でありながらコンパイラの支援が大きいのが便利
アセンブラは自分で注意しないといけない部分が多すぎる

87 :デフォルトの名無しさん:2013/04/25(木) 23:01:26.35
C言語はアーキテクチャをあまり意識しなくてもいいし組み込みでも何でも使える
機械制御とかにもすぐ使えて便利

88 :デフォルトの名無しさん:2013/04/25(木) 23:18:16.13
COMファイルのあったDOS時代ならともかく、
今の環境でアセンブラだけで実行ファイル作るのはかなり困難

89 :デフォルトの名無しさん:2013/04/25(木) 23:22:10.69
時代はインラインセンブルァ

90 :デフォルトの名無しさん:2013/04/25(木) 23:22:45.05
マイコンならまだアセンブラ。というかアセンブラがわからないと
話にならない

91 :デフォルトの名無しさん:2013/04/25(木) 23:24:00.21
ああマイコンならそうだろうね
でもプログラム初心者にマイコン勧めるかというと

92 :デフォルトの名無しさん:2013/04/25(木) 23:26:05.72
個人的にはアセンブラを教育に使うのはアリだと思うんだけど、
CPUによって独自なところが残念。覚えてもほとんど役に立たない。

現実、アセンブラに近いくらい簡単で、覚えて役に立つのはCだと思う。
もしJavaやるなら、Cをやったあとでいいと思う。

93 :デフォルトの名無しさん:2013/04/25(木) 23:31:20.79
インラインアセンブラがx64からVC++で使えなくなったのがね・・・(gccでは使えるけど)
組み込み関数で近い事はできるしレジスタ効率もコンパイラ任せにできるんだが、
ちと物足りない

94 :デフォルトの名無しさん:2013/04/25(木) 23:34:20.19
H300でいいよ

95 :デフォルトの名無しさん:2013/04/26(金) 00:02:11.99
繰り返し
順番
分岐

この3つが基本だろ?
オブジェクト指向はややこしいから普通にCでいいじゃん
中学生の頭なら3週間で連立方程式を解くプログラム作れるように
なるでしょ

96 :デフォルトの名無しさん:2013/04/26(金) 00:12:56.15
printf()
scanf()
for()
while()
goto()

こんなシンプルな文法の言語のどこが難しいんだwww

97 :デフォルトの名無しさん:2013/04/26(金) 00:19:14.17
goto()

98 :デフォルトの名無しさん:2013/04/26(金) 00:32:54.63
別にプログラマーの育成のために学校でプログラミングやるわけじゃないだろう。
だからCでいいかと。javaとか難しすぎるわ。

99 :デフォルトの名無しさん:2013/04/26(金) 00:59:50.50
難しくはないが、Cと比べると覚える質の割に量が無駄に多い

100 :デフォルトの名無しさん:2013/04/26(金) 05:55:00.08
よく知らんが、VBAとかなんじゃね…?
なんだかんだでBASIC系の扱い易さは残してるし
プログラマに限らず扱う言語ではあるし

101 :デフォルトの名無しさん:2013/04/26(金) 08:05:46.17
VBAあらばなんでも作れるしな

102 :デフォルトの名無しさん:2013/04/26(金) 11:10:33.30
>>85
アスペきたよ。
低水準言語→基礎 って考えがバカらしいって例で極論だしてるのにそれに極論ってツッコミ入れてどうすうる。

103 :デフォルトの名無しさん:2013/04/26(金) 11:15:06.03
Cは言語仕様が小さいから簡単とか言ってる連中ってほんとうにコードを書いたことあるのかね。

コンパイラでも作るなら言語仕様が小さくてシンプルなほうが楽だけど、その言語で
なにか処理を書くなら、機能の少ない言語のほうがコードが複雑になるって、ふだんなにか
コードを書いてる人間なら分かるよな。

104 :デフォルトの名無しさん:2013/04/26(金) 12:16:47.22
int ary[256];
sizeof ary;
このときsizeofに渡されるのはaryの先頭アドレスでしょうか
それともary全体を渡すイメージでしょうか
教えてくださいよろしくお願いいたします

105 :デフォルトの名無しさん:2013/04/26(金) 12:57:26.91
その場合のsizeofが返すのは配列全体のサイズってことさえわかってたら、
どっちを渡すイメージかなんてどうでもいいだろ

106 :はちみつ餃子 ◆8X2XSCHEME :2013/04/26(金) 13:02:05.13
>>104
ary の型は int[256] だよ。
なので sizeof は ary 全体のサイズ (int が 4 バイトなら 1024 ということになる) を返す。

ポインタ型になるのは条件が揃ったときにだけ暗黙の型変換が適用されるからで、
本来は配列型とポインタ型とは別物。

107 :デフォルトの名無しさん:2013/04/26(金) 13:17:21.06
アスペとかいうけどプログラマならアスペを誇りに思うべきだろ
むしろアスペじゃないプログラマとかいるのかと

108 :デフォルトの名無しさん:2013/04/26(金) 13:31:33.45
floatがあるのにdoubleがあるのは何故?
指数表示じゃ分りにくいし

109 :デフォルトの名無しさん:2013/04/26(金) 13:36:52.64
アスペは褒め言葉だろ
サイコパスは軽蔑の言葉だが

110 :デフォルトの名無しさん:2013/04/26(金) 13:52:26.62
アスペだけならいいんだけど
大抵のアスペは強烈な自己愛も併発しててキチガイ化してる

111 :デフォルトの名無しさん:2013/04/26(金) 14:03:17.65
でもPM SE PGはほとんどがアスペだぞ?
誇りに思うべき

112 :デフォルトの名無しさん:2013/04/26(金) 14:10:59.12
PGがアスペだからアスペを誇りに思うべきって理屈がすごいな。

113 :デフォルトの名無しさん:2013/04/26(金) 14:10:59.39
確かにシステムを考える人間はアスペ多いわ

114 :デフォルトの名無しさん:2013/04/26(金) 14:18:49.43
連立方程式、実際組んでみようと思ったことがある、中学生時代
構文解析からやる必要があるから挫折したけど

115 :デフォルトの名無しさん:2013/04/26(金) 14:29:03.65
簡単な迷路ゲームとかでポインタが壁にあたったらアウトみたいなのあるけど
あれどういう仕組み?あんなアナログ線だと当たり判定どうしてんの?

116 :デフォルトの名無しさん:2013/04/26(金) 14:29:57.60
>>112
その「誇りにおもうべき」という部分が自己愛なんだよな
アスペにはこの思考がない

117 :デフォルトの名無しさん:2013/04/26(金) 14:31:04.92
構文解析必要か?
係数だけ入力させればいいじゃん

118 :デフォルトの名無しさん:2013/04/26(金) 18:30:11.26
>>103
プラモデルみたいに既にある程度形が出来上がっているパーツを組み立てるより、
レゴブロックでモジュールを作りそれを組み合わせて一つの構造物を作り上げたほうが良い。
…と例えてみる。

119 :デフォルトの名無しさん:2013/04/26(金) 18:56:25.94
連立方程式の解なんかもうアルゴリズムあるしいまさら覚える必要ない

120 :デフォルトの名無しさん:2013/04/26(金) 19:04:31.55
>>119
お前はアホか

121 :デフォルトの名無しさん:2013/04/26(金) 19:34:20.90
シンプレックス法のお題とかどうだ

122 : ◆QZaw55cn4c :2013/04/26(金) 19:45:15.81
>>121
摂動検知が結構やっかい

123 :デフォルトの名無しさん:2013/04/26(金) 20:22:39.83
並び替えてできる可能な文字列を列挙するプログラムが作りたいです。
例えばchar *x="abc";として
abc
acb
bac
bab
cab
cac
みたいな感じにしたいです。
アルゴリズムてかコードお願いします。

124 :123:2013/04/26(金) 20:30:05.52
バケッツソートですかね?
とりあえず良く分かりません。

125 :デフォルトの名無しさん:2013/04/26(金) 20:30:52.82
>>123
作りたいなら作れよ
作って下さいじゃないんだろ

126 :123:2013/04/26(金) 20:34:05.03
>>125
作れないんです
てか結構難しいですよね?

127 :デフォルトの名無しさん:2013/04/26(金) 20:36:55.85
かんたん

128 :123:2013/04/26(金) 20:38:35.93
>>127
文字列分解しないといけないので難しいです

129 :デフォルトの名無しさん:2013/04/26(金) 20:49:12.99
出されたお題をコーディングして罵られるスレ
http://toro.2ch.net/test/read.cgi/tech/1354393458/

こっちで聞いてみては如何に
結果がn!(n=strlen(x))なので再起関数を使う予感ガス
ぼくにもよくわからない

130 :デフォルトの名無しさん:2013/04/26(金) 21:06:38.67
>>123
これは難しいぞ
abcをどう並べ替えたらcacになるんだよ。
解説してくれ。

131 :デフォルトの名無しさん:2013/04/26(金) 21:20:55.30
>>123
babとかcacとか意味が分からん

132 :デフォルトの名無しさん:2013/04/26(金) 22:31:24.06
>>123
ttp://ideone.com/qC7i2M

再帰だとこんな感じで

133 :デフォルトの名無しさん:2013/04/26(金) 22:40:06.10
>>132
つダブル

そういう事です。
お願いします......
どうすれば?

134 :デフォルトの名無しさん:2013/04/26(金) 22:44:59.23
例:aabc

4!/2!=8通りだけど
それを考慮してなくて
16通り全部書いてしまってます。
どうすればいいでしょう?
基本はそれでいいと思います。

135 :デフォルトの名無しさん:2013/04/26(金) 22:56:38.02
ちょっと何いってるのかわかんない

136 :デフォルトの名無しさん:2013/04/26(金) 22:58:12.31
今度は文字数が増えよった
まるで訳が分からんぞ

137 :デフォルトの名無しさん:2013/04/26(金) 22:59:24.54
文字の重複が意味わからん
これはもう並べ替えじゃない、入力を元に新たな文字列を生成するプログラムになっている
そして、どういう出力を求めてるのか定義が曖昧すぎる
日本語できちんとまとめてから書き直すべき

138 :デフォルトの名無しさん:2013/04/26(金) 23:01:32.81
aabc△
aacb
abca
abac
acab□
acba
abca
abac
acab□
acba
aabc△
aacb
bcaa
bcaa
baac
baca
baca
baac
caab
caba
caba
caab
cbaa○
cbaa○

こういう事です。

139 :デフォルトの名無しさん:2013/04/26(金) 23:04:49.69
つまりユニークな文字列だけ調律したい

140 :デフォルトの名無しさん:2013/04/26(金) 23:13:53.43
無理じゃね?

141 :デフォルトの名無しさん:2013/04/26(金) 23:17:33.09
>>132を少し改造
ttp://ideone.com/dSiqXY

142 :デフォルトの名無しさん:2013/04/26(金) 23:18:21.60
アスペにプレゼン力が無い良い例である

143 :デフォルトの名無しさん:2013/04/26(金) 23:23:54.36
>>142
プレゼンカってなんだ?

144 :デフォルトの名無しさん:2013/04/26(金) 23:24:48.52
>>141
ありがとうございます。
出来れば配列に格納してから重複分を省略するのではなく
再帰の過程で重複をスルーするというのは無理ですか?

145 :デフォルトの名無しさん:2013/04/26(金) 23:25:51.78
>>141
jをフラグに使うのは間違いと気付き、修正
ttp://ideone.com/amccIr

146 :デフォルトの名無しさん:2013/04/26(金) 23:31:56.96
>>144
ttp://ideone.com/tGdfKa

147 :デフォルトの名無しさん:2013/04/26(金) 23:34:08.07
>>146間違ったので修正
ttp://ideone.com/cJLU0O

トイレして風呂入って寝ます。
あとは頑張ってください。

148 :デフォルトの名無しさん:2013/04/26(金) 23:49:46.30
>>147
ありがとうございます。
再帰凄いですね。たった57行ですむんですか。
自分が作ったのはstrcmpとか再帰使ってないから
300行超えましたww
57行からもっと短くする事はさすがに無理ですか?

149 :123:2013/04/26(金) 23:56:14.46
データ構造に木を使った場合だともっと短くなりませんか?
この時コードどうなりますかね?

150 :デフォルトの名無しさん:2013/04/27(土) 00:09:45.42
>>148
・kekka_shori();をnarabe();のkekka_shori使っているところに埋め込む
・コメント削除
・行連結

これで 3行になる
http://ideone.com/aYxnm5

151 :デフォルトの名無しさん:2013/04/27(土) 00:11:13.80
3行てw

152 :デフォルトの名無しさん:2013/04/27(土) 00:21:34.73
流石C言語、Pythonでは出来ないことをやってのける

153 :デフォルトの名無しさん:2013/04/27(土) 13:48:55.65
プロトタイプを自分で宣言すれば1行だろ
手抜きしやがって

154 :デフォルトの名無しさん:2013/04/27(土) 14:34:58.85
>>147
改めて凄い賢いプログラム。
並び替える時、二つの文字を選んで交換することしか思い付かなかったけど
シフトレジスタ的に考えればいいのか。しかも再帰。
やっぱりプログラマは天才が多い。

155 :デフォルトの名無しさん:2013/04/27(土) 14:37:09.40
でも再帰って難しいな..........
まさか再帰使うと思わなかった。
再帰ってn!とかクイックソートくらいしか使えないと思ってたわ。
やっぱりプログラマーになるには再帰使いこなさないとだめですかね?

156 :デフォルトの名無しさん:2013/04/27(土) 14:39:39.50
再帰なんか大学でしか使わないよ

157 :デフォルトの名無しさん:2013/04/27(土) 14:45:19.96
というかごちゃごちゃ言いましたけど
>>147のプログラム理解できません....
whileじゃダメなんですか?
narabe関数の中にnarabe関数は一つだけですよね?
つまり右から左に一直線に戻るだけですよね?
そこらへん分からないので教えて下さい。

158 :デフォルトの名無しさん:2013/04/27(土) 14:58:01.85
再帰は普通に使うよ
並べ替えは再帰が基本

でも C++ の next_permutation みたいに
再帰を使わないアルゴリズムもある
理解が非常に難しいのでライブラリとして使う分にはいいけど
自分の作るのは難しいね

159 :デフォルトの名無しさん:2013/04/27(土) 15:03:38.86
再帰なんか滅多に使わない
見にくくなるしアルゴリズムの練習くらいでしか使わねーよ

160 :デフォルトの名無しさん:2013/04/27(土) 15:05:41.52
void narabe(char *d, int n)
{
int i, j, len = strlen(d);
char c;

if (n <= 1) {
kekka_shori(d);
return;
}
for (j = 0; j < n; j++) {
narabe(d, n - 1);
c = d[len - n];
for (i = 0; i < n - 1; i++)
d[len - n + i] = d[len - n + i + 1];
d[len - n + i] = c;
}
}

ここなんだけど
一直線じゃないなforでn回呼び出してる。
どういうこと?

161 :デフォルトの名無しさん:2013/04/27(土) 15:09:17.57
>>159
木構造扱う場合に普通に使うだろ
サブフォルダ全検索とかツリービューとか

162 :デフォルトの名無しさん:2013/04/27(土) 15:13:31.47
ポインタより再帰のほうがよっぽど躓くよね

163 :デフォルトの名無しさん:2013/04/27(土) 15:15:41.97
再帰なんて簡単だよ
したい処理が自分自身なら自分自身を使えばいいだけの話

164 :デフォルトの名無しさん:2013/04/27(土) 15:35:31.13
フォルダ全部舐めたい場合とか
再帰じゃないとめんどくさくね

165 :デフォルトの名無しさん:2013/04/27(土) 15:58:32.70
>>164
だな

166 :デフォルトの名無しさん:2013/04/27(土) 16:38:25.53
再帰は下手をするとスタックを食いつぶす
再帰の深さが決まってるとか、知って使っているならよいが

と、組み込みのみの感覚ですかね

167 :デフォルトの名無しさん:2013/04/27(土) 16:52:47.81
製品ではありえん

168 :デフォルトの名無しさん:2013/04/27(土) 17:18:06.56
>>166
だな

169 :デフォルトの名無しさん:2013/04/27(土) 17:23:13.63
実装に使うことはあまり無いけど、アルゴリズムの設計時検証とかには良く使うかな。
後は、ディレクトリ構成された複数のファイルに何かしらの機械処理を施すような捨てプログラムとか。
perlとかjavascriptとかで。

170 :デフォルトの名無しさん:2013/04/27(土) 18:50:14.32
再帰も扱えないプログラマって……

171 :デフォルトの名無しさん:2013/04/27(土) 19:09:00.68
>>166
ナイーブな再帰を組込みで使うのは確かに贅沢。
尤も、再帰が必要かもという複雑度なら継続相当の実装が吉。

オフィス系業務プログラムなら、PCのメモリに余裕あるから、よほど酷いコーディングでなければ再帰もあり。

ハイパフォーマンス向けなら、コンパイラを選べば再帰レベルは気にしなくていい。
実際は、再帰に展開されるか否か以外の問題の方が大きい。

172 :デフォルトの名無しさん:2013/04/27(土) 19:43:56.09
再帰は終了条件とか最大ネスト回数とか考えないといけないから
あんまり使いたくはないけどね。

173 :デフォルトの名無しさん:2013/04/27(土) 19:53:50.41
まあ明らかに深くなる場合は
非再帰化するけどね

174 :デフォルトの名無しさん:2013/04/27(土) 20:05:52.83
そうそう。
再帰を使うのは、パパっと組むのにその方が簡単だから。
それを製品とかに使うかどうかはまた別の話。

175 :デフォルトの名無しさん:2013/04/27(土) 21:46:14.61
むしろ再起って簡単なのよね
ループのがよほど難しいけど、ループのが効率的だからループが使われるのであって
難しいってのが実は最大の勘違い、多分慣れの問題でしかない

176 :デフォルトの名無しさん:2013/04/27(土) 21:52:59.01
基本的にスタックを自分で用意するだけだから
非再帰化もそう難しいわけじゃない
ただ美しくない

177 :デフォルトの名無しさん:2013/04/27(土) 22:04:04.16
再帰よく分かりませんね昨日の者です。
void abc(int n)
{
@
abc(n-1);
A
}

x番目に格納されてるabc関数の@とAの場所でnの値が変わったりする事
ありますかね?

178 :デフォルトの名無しさん:2013/04/27(土) 22:15:10.80
@とAで変えたりnのアドレスをグローバルに置いて他で無理矢理変えたりしない限り変わらない

179 :デフォルトの名無しさん:2013/04/27(土) 22:18:35.56
>>175
再起

180 :デフォルトの名無しさん:2013/04/27(土) 22:31:09.89
>>178
abcを呼び出したことによって@とAで変わってることってなんなんですか?
これが理解できません。

181 :デフォルトの名無しさん:2013/04/27(土) 22:37:01.89
>>180
その関数ではあまり意味がないよ
まずは簡単な階乗計算とかを見た方が良いと思うよ

182 :デフォルトの名無しさん:2013/04/27(土) 23:06:11.23
>>180
printfとかしてりゃ出力内容は変わるわな
そういう事してなけりゃ何も変わらない

再帰関数で戻り値の型がvoidなのは
そういう副作用を伴う場合しか意味が無い

階乗を求める関数を考えてみる

unsigned int factorial(unsigned int n)
{
 if (n <= 1) {
  return 1;
 } else {
  unsigned int tmp = factorial(n - 1);
  return n * tmp;
 }
}

factorial の再帰の前後で何か状態が変わるかと言うと、全く変わらない
状態は変わらないけど、新たに戻り値が得られる
戻り値は関数への引数が変われば異なる値になる

この関数は数式の
 0! = 1
 1! = 1
 n! = n * (n-1)!
を素直にそのまま関数にしたもの
数式が理解できるならCのコードも理解できなければおかしい事に気付くこと

183 :デフォルトの名無しさん:2013/04/27(土) 23:33:01.02
>>171
組み込みで再帰は基本禁忌

184 :デフォルトの名無しさん:2013/04/27(土) 23:39:11.08
スタックが128バイトしかないとかザラだしな

185 :デフォルトの名無しさん:2013/04/27(土) 23:59:21.68
組み込みって一言で言っても広いから何とも言えない
豪勢な環境もあるし

186 :デフォルトの名無しさん:2013/04/28(日) 00:57:12.79
何ぼ豪勢でも、再帰と動的メモリ確保はダメだ
理由は組み込みだから、としか言えないが

187 :デフォルトの名無しさん:2013/04/28(日) 01:06:04.89
>>183
まあ確かに入門書にはそう書いてあるな。

188 :デフォルトの名無しさん:2013/04/28(日) 01:13:24.62
組込みにかぎらず、C用コンパイラは、末尾再帰最適化できないものが未だ多いから要注意だな。

189 :デフォルトの名無しさん:2013/04/28(日) 01:54:27.30
末尾再帰なんてどうでもいいだろ

190 :デフォルトの名無しさん:2013/04/28(日) 01:55:58.87
単純なループに直せるものを再帰の例としてあげるアホが多過ぎ

191 :デフォルトの名無しさん:2013/04/28(日) 02:44:57.59
66C33 (二項係数) = 0x64308FE91AE4E60C をunsigned long longで正確に計算する方法を教えて下さい

192 :デフォルトの名無しさん:2013/04/28(日) 03:40:39.80
順列(空の集合)=空
順列(集合)=集合の各要素(但し同じ物は除く)と順列(残りの集合)

193 :デフォルトの名無しさん:2013/04/28(日) 09:36:58.26
一桁ごとに配列に入れて繰り上げ繰り下げを手動で行う

194 :デフォルトの名無しさん:2013/04/28(日) 09:40:51.45
>>191
多倍長演算ライブラリ使え
結果がunsigned long longに収まっているなら、正確にもとまる。

195 :デフォルトの名無しさん:2013/04/28(日) 10:16:18.38
>>191
#include <stdio.h>
long long gcd(long long a, long long b){
long long c;
while((c=a%b)) a=b, b=c;
return b;
}
void cdiv(long long *a, long long *b){
long long t;
t=gcd(*a, *b);
*a/=t;
*b/=t;
}
long long nCr(int n, int r){
long long u=1, l=1, mu, ml, i;
for(i=1;i<=r;i++){
mu=n-(i-1);
ml=i;
cdiv(&u, &ml);
cdiv(&l, &mu);
u*=mu;
l*=ml;
cdiv(&u, &l);
}
return u;
}
int main(void){
printf("%I64X\n", nCr(66, 33));
return 0;
}

196 :デフォルトの名無しさん:2013/04/28(日) 10:20:39.77
>>195 訂正
long long nCr(int n, int r){
long long u=1, mu, ml, i;
for(i=1;i<=r;i++){
mu=n-(i-1);
ml=i;
cdiv(&mu, &ml);
cdiv(&u, &ml);
u*=mu;
}
return u;
}

197 : ◆QZaw55cn4c :2013/04/28(日) 11:49:21.84
>>155
大丈夫
あるとき回路が通じて、それ以降は再帰で**しか**書けない体に変身します‥‥多分幸せになれると思います、いやしあわせになれるかな、なれるかもしれない、なれるかどうかわからないけれどもふしあわせじゃないとおもいこめることはたしかだ、たしかか?

198 : ◆QZaw55cn4c :2013/04/28(日) 11:52:26.96
>>186
ダイナミックに確保も禁忌、というのは、ある意味すごいですね。確かに安産性は向上するような気がしますけれども。
アマチュアには想像すらできない世界なんでしょうね

199 :デフォルトの名無しさん:2013/04/28(日) 11:57:02.08
無職の癖にアマチュア批判とは片腹痛い

200 : ◆QZaw55cn4c :2013/04/28(日) 12:01:10.32
>>199
×片腹痛し
○傍痛し

201 :デフォルトの名無しさん:2013/04/28(日) 12:05:59.27
どっちでもいいんだよカス
プログラムだけでなくて国語まで出来ないのか

202 :デフォルトの名無しさん:2013/04/28(日) 12:07:00.02
人の揚げ足取って喜ぶとか小姑みたいな意地悪さ
しかも揚げ足取りになってなくて墓穴を掘ってるし

203 :デフォルトの名無しさん:2013/04/28(日) 12:18:27.56
>>201-202
×片腹痛し
○傍痛し
言葉の意味を十分にappreciateしてないからこんな間違いをする

204 :デフォルトの名無しさん:2013/04/28(日) 12:20:09.02
あちこち荒らすな
まとめて隔離スレへ引っ込め

205 :デフォルトの名無しさん:2013/04/28(日) 12:34:46.80
>>203
だからどっちでも同じ意味なんだって
日本語分からない?

206 :デフォルトの名無しさん:2013/04/28(日) 12:43:46.35
>>204
ごめん

207 :デフォルトの名無しさん:2013/04/28(日) 12:45:27.14
>>205
通例がそうだから、という理由だけで先人の間違いを無批判にそのまま踏襲してしかもそのことに無自覚‥‥

208 :デフォルトの名無しさん:2013/04/28(日) 13:04:37.01
>>207
早く生まれたからと言って無条件に尊敬してもらえると思ってる馬鹿?
通例がそうだからそれでいいじゃん
頭大丈夫?なわけないか
精神科行ってるんだもんな

209 :デフォルトの名無しさん:2013/04/28(日) 13:32:46.19
日本語をまともに理解できないクズがこういう揚げ足取りに必死なのを見ると笑える

210 :デフォルトの名無しさん:2013/04/28(日) 14:04:09.94
>>209
だから精神科行って薬飲んでるんじゃね?

211 :デフォルトの名無しさん:2013/04/28(日) 15:41:08.48
カスとかクズとかゴミとか連呼してるレスを追っていくと
毎回同じことしか書いてなくて面白いよね。

212 :デフォルトの名無しさん:2013/04/28(日) 15:45:40.99
>>211
そりゃあ頭が悪いボキャブラリーが少ない同一人物が書いてるからだろう

213 :デフォルトの名無しさん:2013/04/28(日) 15:50:35.67
同じ人間を罵るのに違うこと書いてたらおかしいだろ

214 :デフォルトの名無しさん:2013/04/28(日) 16:11:55.35
Qが精神攻撃に反撃しようとするなら、Q自身も精神医学を勉強しなければならないが、
そうなると勉強の途中で自分自身に大きな精神の歪みがある事を嫌でも自覚せざるを
得ない時期が訪れる

それを乗り越えて初めて精神医学が身に付くのだが、恐らくQには無理で、途中で
逃げ出すだろう事が火を見るより明らかだ

215 :デフォルトの名無しさん:2013/04/28(日) 16:18:16.01
次のようなコードがあったのですが、この2行目って要りますか?

if (!msg) return -1;
if (!(msg[0])) return -1;

216 :デフォルトの名無しさん:2013/04/28(日) 16:20:07.71
>>215
要る

217 :デフォルトの名無しさん:2013/04/28(日) 16:24:14.65
>>216
ありがとうございます

218 :デフォルトの名無しさん:2013/04/28(日) 16:38:34.94
これが思考停止か

219 :デフォルトの名無しさん:2013/04/28(日) 17:46:13.21
>>215
msgがポインタか配列かわからないのでどちらでも対応可能にする。
1行目はmsgがNULLポインタだったら-1を返す。
2行目はmsgが仮に配列であっても要素0の値が0なら-1を返す。

220 :デフォルトの名無しさん:2013/04/28(日) 18:50:57.03
しかし後の祭りである

221 :デフォルトの名無しさん:2013/04/28(日) 20:50:01.43
>>219
なるほど、解説ありがとうございました。

222 :デフォルトの名無しさん:2013/04/28(日) 23:13:52.48
>>215
1行目いらなくね?

223 :デフォルトの名無しさん:2013/04/28(日) 23:16:52.33
>>186
ん?組み込みはスタックサイズ小さいからメモリ確保は、基本ヒープをつかうときいたことがあるのだけど勘違いか?
昔のcomを作るイメージ

224 :デフォルトの名無しさん:2013/04/28(日) 23:17:07.31
>>222
msg == NULL だと二行目で落ちる

225 :デフォルトの名無しさん:2013/04/28(日) 23:18:22.51
>>223
いやいやヒープとスタックが衝突するのが怖い(そしてこれを厳密に回避することは困難だ)からヒープすら使わずにべったりstaticなのでは?

226 :デフォルトの名無しさん:2013/04/28(日) 23:32:42.68
>>224
msg[0] != 0だったら、msg==NULLってあり得ないかと

>>223
基本ヒープ使っちゃダメだよ
昔のメモリ事情だとどうだったんだろうか

227 :デフォルトの名無しさん:2013/04/28(日) 23:56:06.84
ヒープでもスタックでもなくデータセグメント(セクション)って組み込み怖いなー

228 :デフォルトの名無しさん:2013/04/29(月) 00:16:49.37
>>226
NULL番地のデータが0でないのがあり得るあり得ないの問題じゃなくて
NULL番地のデータを読み出そうとした時点でOSに落とされるからチェックが要るのよ

229 :デフォルトの名無しさん:2013/04/29(月) 00:24:21.72
>>226
パンツ脱ぐのとうんこ出すのと
順序間違えると大変なことに

230 :デフォルトの名無しさん:2013/04/29(月) 01:12:09.61
>>228-229
ああ、そういうことね
組み込みだと普通に0番地使うから、分からんかったわ

231 :デフォルトの名無しさん:2013/04/29(月) 02:04:05.88
>>228
問題のコードではmsgがNULLポインタだったらリターンしてしまうから
2行目が実行されることはあり得ない。

232 :デフォルトの名無しさん:2013/04/29(月) 02:44:38.79
>>231
msgがchar配列、ポインタが32bitの場合で、msg[0]==0でmsg[1]〜[3]のどれかに0以外が入ってるなら2行目行くんじゃね

233 :デフォルトの名無しさん:2013/04/29(月) 07:59:37.32
>>231
その問題のコードの1行目が要らなくねってレスがあったから説明したんよ

234 :デフォルトの名無しさん:2013/04/29(月) 12:47:06.15
>>225-226
ヒープ使っちゃいけなかったのか。
覚えとく、ありがとう

235 :デフォルトの名無しさん:2013/04/29(月) 20:52:06.60
>>234
ばっかみたいw

236 :デフォルトの名無しさん:2013/04/30(火) 08:37:47.67
組み込みってもOSレスからLinuxみたいなものまであるわけで

237 :デフォルトの名無しさん:2013/04/30(火) 20:06:32.53
死ねゴミw

238 :デフォルトの名無しさん:2013/04/30(火) 21:00:28.73
>>236
いきなりわけわかんないレスをするな

239 :デフォルトの名無しさん:2013/05/01(水) 03:30:10.77
うるさいゴミ

240 :デフォルトの名無しさん:2013/05/01(水) 13:09:29.46
a=f(x)+g(y);
これって、f(x)とg(y)のどっちが先に実行されるかって
仕様で決まってたっけ? それとも不定?

241 :デフォルトの名無しさん:2013/05/01(水) 13:18:02.56
不定です

242 :デフォルトの名無しさん:2013/05/01(水) 14:53:33.39
>>240は馬鹿だから間に受けるぞw

243 :デフォルトの名無しさん:2013/05/01(水) 14:54:27.12
現在このスレは閑散としてるがQZがいつ自演質問を再開させるか分からない状態
ここ最近このスレで不正に宿題と思わしき質問が投下されたので注意が必要
監視を続ける

244 :デフォルトの名無しさん:2013/05/01(水) 14:58:04.04
>>240 >>241
にはこのコピペが最適↓

ネットでののQ&A見たら、何も勉強してこなかった
日本人の絶望的なほど劣悪なレベルを見せ付けられる想いだ。

質問者の意図も理解できないし、理解する姿勢に欠ける。
自分で確かめもしないで、思いつきで断片だけを回答する。
質問者も自分で解決したら、なにも示さず解決したという
コメントで終了する。
甘やかされて低脳さを遺憾なく発揮している。もう理系も絶望
的だから文系はどうかと思へば、悲惨のひとことだ。
もう日本の大学を折りたためよ文部省。

こういう自分でプログラミング言語を開発する極一部の有能な若者が、
浮いてただ利用されるだけで本当に気の毒だね。

245 :デフォルトの名無しさん:2013/05/01(水) 15:30:02.88
C言語でレジストリのeipやebp等の動きを表示したいのですが
どうやってみればいいでしょう?

gcc -S test.cだとアセンブラソースが作られてみれるんですがソースだけで肝心のトレース部分をみることができません
eipやebpやスタックの動きを見れるやり方教えてください

Windows7です

246 :デフォルトの名無しさん:2013/05/01(水) 15:36:57.37
>>245
>教えてください
情報に見あった金額が提示されてないのに誰が答えるの?

247 :デフォルトの名無しさん:2013/05/01(水) 15:52:40.25
>>245
Eclipse CDT入れろ
デバッガで見れる

>>246
カス

248 :はちみつ餃子 ◆8X2XSCHEME :2013/05/01(水) 15:53:37.24
インラインアセンブラを使うのが簡単かなぁ。
インラインアセンブラで書いても gcc は最適化しちゃうんで、
最適化をオフにするか volatile 指定を付けるのが楽。

プログラム的に必要っていうのではなく、挙動を観察したいという場合ならデバッガを使った方がいいと思う。
gcc と連携しやすいデバッガと言えば gdb だけど Windows なら OllyDBG か Immunity Debugger が人気。

249 :245:2013/05/01(水) 16:07:48.38
>>247
わざわざElipseなんていらねーよバカが死ね

>>248
やっぱりgdbですか
インラインアセンブラはダサいのでデバッガのほうにしてみます

250 :デフォルトの名無しさん:2013/05/01(水) 16:09:44.62
>C言語でレジストリのeipやebp等の動きを表示したいのですが
レジスタ と読んでの前提

まさかデバッガを作りたい って話じゃないよな?

251 :デフォルトの名無しさん:2013/05/01(水) 16:14:41.28
>>247=基地害

252 :デフォルトの名無しさん:2013/05/01(水) 16:34:30.42
QZ急速な勢いで自演レス

253 :デフォルトの名無しさん:2013/05/01(水) 17:28:19.21
>>247が馬鹿の見本みたいで笑えるw
いや、馬鹿すぎて笑えないレベル

254 :デフォルトの名無しさん:2013/05/01(水) 18:50:20.97
結局入門書どれがいいんでつか?
高いから数買えないんです。・°°・(>_<)・°°・。

255 :デフォルトの名無しさん:2013/05/01(水) 19:00:49.86
eipとebpを見たんですが
leaveっていう命令でてこずってます

leaveって
mov esp,ebp
pop ebp

これと等価らしいんですが
gdbでトレースしてleaveをsiで実行してespを見たけどebpの値になりません
ebp=0xbffff4e8
esp=0xbffff4b8

leaveをやったら espはebpの0xbffff4e8になるはずですが
espは0xbffff4ecになります
何故ですか?教えてください

256 :デフォルトの名無しさん:2013/05/01(水) 19:14:02.44
enter/leaveなんて誰も使わないから忘れてよろしい
遅いだけ

257 :デフォルトの名無しさん:2013/05/01(水) 19:16:31.23
popしてるからだろ

258 :デフォルトの名無しさん:2013/05/01(水) 19:17:59.00
>>257
popする前に代入してますよね?バカ?

259 :デフォルトの名無しさん:2013/05/01(水) 19:21:15.43
中身の分からないバイナリファイルの中身を調べて型に合った変数に代入ことはできるのでしょうか?

260 :デフォルトの名無しさん:2013/05/01(水) 19:23:40.28
>>258
だから、代入してからpopしてるから
popでずれてんだろw

261 :デフォルトの名無しさん:2013/05/01(水) 19:49:44.54
変数に代入はできる

未知のフォーマットで書かれたものに対して
中身を調べて=バイナリの並びから 型に合ってるかどうかを知る術がない

262 :デフォルトの名無しさん:2013/05/01(水) 20:25:49.04
>>241
ありがとう
不定であってたのね

263 :デフォルトの名無しさん:2013/05/01(水) 20:30:09.06
sub関数 call時
esp=0xbffff4ec ebp=0xbffff508

コード
push %ebp 実行時
esp=0xbffff4e8 ebp=0xbffff508 スタックに0xbffff508

mov %esp,%ebp 実行時
esp=0xbffff4e8 esp=0xbffff4e8 スタックに0xbffff508

sub $0x30,$esp 実行時
esp=0xbffff4b8 esp=0xbffff4e8 スタックに0xbffff508

264 :デフォルトの名無しさん:2013/05/01(水) 20:30:25.46
>>258
バカ

265 :デフォルトの名無しさん:2013/05/01(水) 20:32:24.66
>>263
途中からebpが行方不明になってるぞ

266 :デフォルトの名無しさん:2013/05/01(水) 20:38:27.45
>>627
3.5のパラグラフ3〜4と7.1.1のパラグラフ8を総合した結果だろうな
分かりづらいけど、例もあるし、少なくとも間違いはない

267 :デフォルトの名無しさん:2013/05/01(水) 20:38:43.59
>>265右のはebpねミス

leave 実行時
esp=0xbffff4ec ebp=0xbffff508

leaveの命令
mov esp,ebp
pop ebp

ebpをespにやるんだから espは0xbffff4e8になるはず 代入してる
popで最初にpushしておいたebpを取り出して ebpは0xbffff508であってるけど
espがなんでcall時の0xbffff4ecになる?

268 :266:2013/05/01(水) 20:40:29.43
誤爆・・・

269 :デフォルトの名無しさん:2013/05/01(水) 20:42:12.93
pushでespが動いてんのにpopで動かないと考えるこの馬鹿

270 :デフォルトの名無しさん:2013/05/01(水) 20:43:29.12
>>267
popしたらスタックポインタが動くのは当たり前だろ
popが何をするものか分かってるか?

というかスレ違いだ

271 :デフォルトの名無しさん:2013/05/01(水) 20:48:35.19
>>270
やっとわかった
espがスタックの末尾にあってプッシュやポップにあわせて常に変化するってことをわすれてた
だからpopしたときプッシュ前のアドレスになったわけね

272 :デフォルトの名無しさん:2013/05/01(水) 20:50:25.84
スレ違いだバカが死ね
って言ってやるべきだろ

273 :デフォルトの名無しさん:2013/05/01(水) 22:03:20.07
push %ebp

このpushされたebpアドレスはどこでみれんの?
info fってやっても表示されないけど

274 :デフォルトの名無しさん:2013/05/01(水) 22:04:22.71
ミス

このpushされたebpアドレスが保存されてるスタックって
縦長に見る方法ない?
こんなふうに

+++++++++++
ESP + 戻り値 +
+++++++++++
+ one +
+++++++++++
+ two +
+++++++++++
+ three +
+++++++++++
EBP + 基底 +
+++++++++++

275 :デフォルトの名無しさん:2013/05/01(水) 22:17:43.80
いい加減アセンブラスレに行け!

276 :デフォルトの名無しさん:2013/05/01(水) 22:22:57.85
C言語で聞いて

277 :デフォルトの名無しさん:2013/05/01(水) 23:35:55.72
i fでやったら
saved eip(戻り値アドレス)は表示されるけど
push %ebpが表示されない

プッシュされたものが表示できたら便利なのに表示できねーのか?クソだな

278 :デフォルトの名無しさん:2013/05/02(木) 02:55:13.74
アセンブラスレで聞いたらこのドシロウトが!ってバカにされるだろ
ここでやってればCしか出来ない奴にスゲーって思わせられるからいいんだよ

俺はずっとここにいるぜ

279 :デフォルトの名無しさん:2013/05/02(木) 04:09:08.75
なんか見覚えのある命令や数値が出てくるな
https://twitter.com/TreeBoa2/status/329628271329296385/photo/1

280 :デフォルトの名無しさん:2013/05/02(木) 09:38:26.94
ほらやっぱ自演だったろ

281 :デフォルトの名無しさん:2013/05/02(木) 13:44:19.46
メモリ確保したポインタを解放した後NULLで初期化する関数myfreeを作りたいのですが、
以下のようにすると初期化されないので

void *myfree(void *p)
{
free(p);
p=NULL;
return;
}

仕方なく以下のようにNULLを返してますが、p = myfree(p)のようになり美しくありません
もっとスマートな方法はないでしょうか?

void *myfree(void *p)
{
free(p);
return NULL;
}

282 :デフォルトの名無しさん:2013/05/02(木) 13:55:17.87
>>281
#include<stdio.h>
#include<stdlib.h>
void *myfree(void **p)
{
free(*p);
*p = NULL;
return NULL;
}
int main()
{
char *p = (char *) malloc(123);
printf("%p\n", p);
p = myfree((void **) &p);
printf("%p\n", p);
return 0;
}

283 :デフォルトの名無しさん:2013/05/02(木) 13:55:31.38
ポインタへのポインタを使う方法じゃだめなの?
void myfree(void** pp)

284 :デフォルトの名無しさん:2013/05/02(木) 13:55:55.12
void myfree(void** p)
{
 free(*p); *p = NULL;
}

呼び出しで &付きになるからキショイ

285 :デフォルトの名無しさん:2013/05/02(木) 13:58:33.76
>>282間違った。

#include<stdio.h>
#include<stdlib.h>
void myfree(void **p)
{
free(*p);
*p = NULL;
}
int main()
{
char *p = (char *) malloc(123);
printf("%p\n", p);
myfree((void **) &p);
printf("%p\n", p);
return 0;
}

キショいね

286 :デフォルトの名無しさん:2013/05/02(木) 14:04:25.21
マクロの
#define MY_FREE(p) do { free(p); p = NULL; } while (0)
これも賛否ありそう

287 :デフォルトの名無しさん:2013/05/02(木) 14:17:53.43
>>283
規格上はダメ、ゼッタイ
voidポインタとそれ以外のポインタは互換性が保証されないので

あー、でも、charポインタと構造体共用体ポインタは互換性があったっけ?
まあ結局intポインタとかはだめだけど

だから、Cならマクロにするしかない
C++ならテンプレートにできるけど

288 :デフォルトの名無しさん:2013/05/02(木) 14:33:07.57
マクロにしなくてもp=free(p),NULL;でいいじゃん?

289 :デフォルトの名無しさん:2013/05/02(木) 14:37:51.26
>>288
>仕方なく以下のようにNULLを返してますが、p = myfree(p)のようになり美しくありません
>もっとスマートな方法はないでしょうか?
って話なので、その案は微妙な線?かな?

290 :281:2013/05/02(木) 14:49:28.70
皆さんどうもありがとうございます
&でポインタへのポインタを使う方法は、自分の環境ではコンパイルエラーになりました
(エラーの正確な内容は失念しましたが、構造体のサイズが不確定というエラーだったような)
関数に渡す時に(void **) でキャストすればエラーが消えるのでしょうか。
しかし>>287さんによると規格上ダメとのことなのでやめておきます

>>288さんの方法は初見でしたが、ポインタ名を二回記述するやり方はポインタ名が長い場合に不便なので1回にしたいのです
マクロを使う方法が一番よさそうなので、試してみます
どうもありがとうございます

291 :デフォルトの名無しさん:2013/05/02(木) 15:01:42.15
「規格」ってタームが混ざってるだけで簡単に騙される>>290哀れwwwww

292 :デフォルトの名無しさん:2013/05/02(木) 15:07:24.15
>>291
アホはだまっとけ
http://www.kouno.jp/home/c_faq/c5/html#17

293 :デフォルトの名無しさん:2013/05/02(木) 15:11:10.51
ミスった
http://www.kouno.jp/home/c_faq/c5.html#17

294 :デフォルトの名無しさん:2013/05/02(木) 15:19:56.16
投稿前に確認すらできないゴミが「アホはだまっとけ」だってよ
やっぱゴミはゴミだな

295 :デフォルトの名無しさん:2013/05/02(木) 15:30:43.47
何かを実行する前に問題がないかを確認するってのはプログラマなら当たり前の手順なわけだが、
それができていないってことはプログラミングやる資格はないよ。

そしてそんな奴が調子に乗って回答してる。
>>292-293はこのスレのレベルがいかに低いかを身をもって示してくれている。
それでもまだここで質問するのはまともじゃないよ。

296 :デフォルトの名無しさん:2013/05/02(木) 15:31:44.23
そりゃ規格を一番に考えるだろう

297 :デフォルトの名無しさん:2013/05/02(木) 15:42:30.38
>何かを実行する前に問題がないかを確認するってのはプログラマなら当たり前
マでなくとも人間なら普通おおかた>>292は池沼か社会経験のないニートか学生風情

298 :デフォルトの名無しさん:2013/05/02(木) 16:16:54.81
使い終わったポインタにNULLを入れるのって、ヘタクソの習慣だよな。

299 :デフォルトの名無しさん:2013/05/02(木) 16:20:21.38
>>298
えっ

300 :デフォルトの名無しさん:2013/05/02(木) 16:20:47.84
リンクを貼るのってコピペするだけでミスの入り込む余地なんてないと思うんだけど、
携帯とかからわざわざ手打ちで貼ってんの?

301 :デフォルトの名無しさん:2013/05/02(木) 16:28:55.60
>>300
俺も思ったw
何をどうしたら間違えるんだろうなw

302 :デフォルトの名無しさん:2013/05/02(木) 16:29:17.63
>>298
それ以前にいちいちfreeすること自体が、設計ができない証。

303 :デフォルトの名無しさん:2013/05/02(木) 16:30:23.01
規制で携帯から手打ちなんだよ
察しろ

304 :デフォルトの名無しさん:2013/05/02(木) 16:34:15.61
>>302
いやいやfree()はするだろ。
free()のあとに機械的にNULLクリアするってスタイルはヘタクソ。

305 :デフォルトの名無しさん:2013/05/02(木) 16:41:17.41
こういうのを真に受ける人がいると思っているのかね
言動からしてレベルの低さが窺えるからスルーしかされないだろうに

306 :デフォルトの名無しさん:2013/05/02(木) 16:44:30.84
>>304
獲得したメモリをいちいち解放するなんて、
自分でメモリが管理できていない証拠じゃん。
設計ができていれば必要なメモリ量もわかるので
獲得した後解放するなんてありえない。

307 :デフォルトの名無しさん:2013/05/02(木) 16:46:51.58
ちょっと何言ってるかわかんないです

308 :デフォルトの名無しさん:2013/05/02(木) 16:51:26.18
がたがた言わずにmallocしちめえ!いらなくなったメモリはそのつどfreeだ!

309 :デフォルトの名無しさん:2013/05/02(木) 16:53:40.79
>>303
やっぱりそうか

ケータイから手打ちしてまで書き込みたいとか
>>292は自己顕示欲の塊かよw

310 :デフォルトの名無しさん:2013/05/02(木) 16:54:07.62
まっとうなプロダクツはじゃ、まず見ないスタイルだよね。
free()のあとにNULLクリアをするって規則のコーディング。

311 :デフォルトの名無しさん:2013/05/02(木) 16:58:36.89
まあポインタを使い回す事自体があまり良くはないからな
でも、全うな製品ならそれでもNULLクリアするのが普通だけど

312 :デフォルトの名無しさん:2013/05/02(木) 17:01:44.36
うるさいゴミ

313 :デフォルトの名無しさん:2013/05/02(木) 17:03:09.21
「ヘタクソがいる現場だと有効だ」とか思われてるのかもしれないけど、
たぶん実際的な効果はなにも無いんじゃないのかね > NULLクリア

314 :デフォルトの名無しさん:2013/05/02(木) 17:05:05.47
NULLクリアしてるまっとうな製品って、どれのことだろ。

315 :デフォルトの名無しさん:2013/05/02(木) 17:09:05.01
安全性への意識の高さの問題だよ
NULL埋めしない人は経験上他も大体いい加減

316 :デフォルトの名無しさん:2013/05/02(木) 17:15:52.65
世間的に安定性とか評価されてるプロダクツでもべつにNULLクリアなんてしてないしな。

317 :デフォルトの名無しさん:2013/05/02(木) 17:16:27.83
安全性への意識て、ミスを根本的になくすことよりミスったときに誤魔化すことを優先すること?

318 :デフォルトの名無しさん:2013/05/02(木) 17:18:55.52
ポインタがNULLか非NULLかでフラグのような動作をさせるってのは
よくあるテクニックだよ。TLV式のプロトコル実装とか、当たり前のように
使ってるよね。

319 :デフォルトの名無しさん:2013/05/02(木) 17:19:47.12
free()した直後にポインタ変数の寿命がくるなら
nullクリアなんていらないけど
まだ使う気があるならnull入れておくかな
なんかバグったときにassertにひっかかってくれる

320 :デフォルトの名無しさん:2013/05/02(木) 17:19:49.18
NULLクリアを自動化しておけばバグが入った時の想定される原因の一つが消えるじゃん

321 :デフォルトの名無しさん:2013/05/02(木) 17:20:59.00
>>317
ミスを根本的になくすことと同時に
ミスったときにそれを確実に拾えること

可能なら対処する(ごまかす)のは別の話だね

322 :デフォルトの名無しさん:2013/05/02(木) 17:22:15.95
>>318
そういう話じゃなくて、ルールで機械的に、処理とか文脈とか関係なしにNULLクリアしましょうってのが是か非かって話。

323 :デフォルトの名無しさん:2013/05/02(木) 17:26:44.74
>>322
そんなの、その場の空気と宗教に従え、以上の答えあるの?
答えが分かったうえで議論の練習したい人とかfj.lang.cごっこしたい人は
別のスレでやってね。ぜんぜん入門編じゃないからね。

324 :デフォルトの名無しさん:2013/05/02(木) 17:29:30.17
>>323
逃げたwww

325 :デフォルトの名無しさん:2013/05/02(木) 17:37:47.56
>>322
是でいいと思うよ
ふつうにうしろに処理足される可能性あるし
なによりnull入れて困ることはないってのが
でかい

326 :デフォルトの名無しさん:2013/05/02(木) 17:41:27.29
free 時に 確保領域に書かれてる内容を適当にぶっこわしてくれる機構 がうれしい

ポインタを別変数にコピーしてたテヘッ 用だね

327 :デフォルトの名無しさん:2013/05/02(木) 18:00:02.46
NULLクリアって定数左と同じようなテクニックに見える

328 :デフォルトの名無しさん:2013/05/02(木) 18:02:04.79
>>327
それは頭悪いですね

329 :デフォルトの名無しさん:2013/05/02(木) 18:10:30.05
NULLを入れない場合→破棄後に参照しても動く事がままある
NULLを入れる場合→参照するとほぼ死ぬ

どちらがミスった時に誤魔化すことを優先しているかは一目瞭然
NULLを入れない方だ
NULLを入れない人は想像力が貧困で、プログラムには向いていない

330 :デフォルトの名無しさん:2013/05/02(木) 18:18:09.46
それ以前にfreeもしないって人は世界が違うんですか?

331 :デフォルトの名無しさん:2013/05/02(木) 18:19:04.70
おそらく神の領域に達しているのだろう

332 :デフォルトの名無しさん:2013/05/02(木) 18:19:49.13
>>329
自信がないからバグを必要以上に恐れている。
典型的似非プログラマの特徴。

333 :デフォルトの名無しさん:2013/05/02(木) 18:21:03.75
俺のプログラムにバグは無い

334 :デフォルトの名無しさん:2013/05/02(木) 18:21:44.38
>>330
組み込みの世界ではそれが当たり前なことも珍しくない。
malloc/freeがあるとは限らない。

335 :デフォルトの名無しさん:2013/05/02(木) 18:22:56.61
マルロック

336 :デフォルトの名無しさん:2013/05/02(木) 18:24:05.60
>>332みたいなのが、なんとなく動くだけの、分かりにくいバグの多いプログラムを量産するんだよな
プログラマが自分を信用しないのなんて常識じゃない

337 :デフォルトの名無しさん:2013/05/02(木) 18:25:46.63
>>336
プログラムが落ちないと品質を保証できないクズプログラマの典型。

338 :デフォルトの名無しさん:2013/05/02(木) 18:28:05.34
>>336
いちいちNULL入れる人って、mtraceとか使ってきちんとテストしたことないんだろうな、って思う。

339 :デフォルトの名無しさん:2013/05/02(木) 18:30:04.45
>>337
とうとう支離滅裂になったか
論理性の欠片もない
プログラマの資格もない

340 :デフォルトの名無しさん:2013/05/02(木) 18:30:29.65
>>336
プログラムが落ちることを前提にバグとりをする人って、
落ちないバグとりどうしてるの?
NULLだろうがNULLでなかろうが、参照すること自体がバグなのだから
落ちる落ちないってのは、楽をする方法なのであって、品質を確保する
方法でないってのはわかるよね?

341 :デフォルトの名無しさん:2013/05/02(木) 18:37:46.77
>>340
ただのフェイルセーフに何言ってんの?
何かあった時に検出できるというだけで、
基本お世話にならないようにプログラムするに決まってんじゃん

342 :デフォルトの名無しさん:2013/05/02(木) 18:45:53.77
NULL入れようが入れまいが、やることは同じ
ただ、NULLを入れた方がバグの検出確率が上がるしデバッグのしやすさも微増するから入れるってだけ
逆に聞くけど、入れないメリットって何よ

343 :デフォルトの名無しさん:2013/05/02(木) 18:49:20.40
>>342
空気嫁コミュ障が

344 :デフォルトの名無しさん:2013/05/02(木) 18:51:56.16
答えは出たみたいだな

345 :デフォルトの名無しさん:2013/05/02(木) 18:57:50.08
だな
わざわざNULL入れる無駄な処理書いてる奴は給料泥棒
そんなくだらないことに時間使ってザンギョウガーデスマガー

346 :デフォルトの名無しさん:2013/05/02(木) 19:03:13.40
はたから見てたけど、NULL 入れない人が頭悪そうってことだけは分かった

347 :デフォルトの名無しさん:2013/05/02(木) 19:05:22.28
糞リンゴがとうとう社債発行w
どんどん追い詰められていきますなぁw

348 :デフォルトの名無しさん:2013/05/02(木) 19:12:10.55
ジョブズに影響うけてジョブズ=最先端のIT技術者!!!と思い影響うけてMac買ってた低脳
さっさと死ぬことだなゴミは

349 :デフォルトの名無しさん:2013/05/02(木) 19:19:50.57
>>279ってどこかクラッキングしてるのか?
通報した方がいいのかな?

350 :デフォルトの名無しさん:2013/05/02(木) 19:24:55.44
リンゴは株価が大暴落してるって1週間くらい前にニュースになってなかったか?

351 : ◆QZaw55cn4c :2013/05/02(木) 19:39:26.40
>>342
入れないメリットなんてないですよね。デバッグが少しでも楽になるのであれば、それが微増あっても入れておきます。いろいろ手を打ってお世話にならないようには心がけますけれどもね。
入れない人って、デバッグでのたうち回ったことのない人なんじゃないかなあ‥‥‥

>>290
>しかし>>287さんによると規格上ダメとのことなのでやめておきます

そんな規格はないと思います。void * から任意のポインタへの代入は、 C であればキャストなしに可能です。
また、自分が何をしているかわかっているのであれば、非void * をキャストして void * に代入することは、よくある手法です。
qsort() を調べてみてください。

>構造体のサイズが不確定というエラーだったような
void * をインクリメントしたりするのは、あまり行儀のよくない、とは C++エキスパートからはよく伺います。ただ、

>>287
C ならば、void * は char * と互換性がある。構造体のポインタが交換可能云々は、要はアラインメントの問題だね。
ISO/IEC 9899:1999 6.2.5.26
A pointer to void shall have the same representation and alignment requirements as a
pointer to a character type.(以下続くが略)

貴様は http://toro.2ch.net/test/read.cgi/tech/1313183984/ で勉強したまえ。:-)

352 :デフォルトの名無しさん:2013/05/02(木) 19:47:19.73
>>348
ジョブズはゲイツの次にすごいと思うよ、ITの先端ではね、
だけど自分の会社を、自分がいなくなった後でも存続できるように体制を整えたり、後継者を育てたりってことはできなかったよね
一番起業してはいけないタイプの人間
それじゃ残された社員や株主が可哀想
ゲイツはその点しっかりしている、生きてるうちに身を引いた
これはゲイツがすごいわけじゃなくて当たり前
その当たり前のことができず、チヤホヤされたいがために後継者育てずに新機種連発するゴミクズがジョブズ
技術やアイデアがすごくても残された人間の生活を考えない辺りクズすぎる
総合評価としては世の中に要らないゴミだったよねw

353 :デフォルトの名無しさん:2013/05/02(木) 19:49:37.52
()

354 :デフォルトの名無しさん:2013/05/02(木) 19:51:06.68
>>351
今はvoid**の話だっつーの!
例えば、int*が4バイトでvoid*が8バイトの時に

int *p;
*(void**)&amp;p = 0;

としたらどうなるか考えれ

355 : ◆QZaw55cn4c :2013/05/02(木) 19:59:15.52
>>354
>int*が4バイトでvoid*が8バイトの時に
far/near を思い出しますねえ :−)
int far * near * とか奇天烈なことをやっていた記憶があります‥‥‥すまん

356 :デフォルトの名無しさん:2013/05/02(木) 20:01:59.86
これか。
終わったな。

「ピークから35%下落したアップル株価」の背景
http://sankei.jp.msn.com/wired/news/130425/wir13042517450001-n1.htm

>デルの現在の価値のおよそ12倍が消え失せた
こんなに企業価値の目減りする企業なんて見たことない。
もう実際のところ瀕死なんじゃね。

357 : ◆QZaw55cn4c :2013/05/02(木) 20:21:20.01
iphone5、結構便利に使っているし‥‥
他社のandroidをみると、サイズが大きすぎて片手に入らなくて使いにくそう‥‥
iphone を応援したいなあ、なにか支援する方法はないものか‥‥

obj-C ってむずかしいのですか?

358 :デフォルトの名無しさん:2013/05/02(木) 20:27:04.29
ぶっちゃけアップルがなくなっても困らない

359 :デフォルトの名無しさん:2013/05/02(木) 20:45:40.86
>obj-C ってむずかしいのですか?

このクソコテwww
何も成長してねーんだなwww

360 :デフォルトの名無しさん:2013/05/02(木) 20:55:56.04
りんご終了。

361 :デフォルトの名無しさん:2013/05/02(木) 20:57:36.90
まだリンゴ製品買うって奴は次のどれか

馬鹿
基地害
池沼
低能
情弱
阿呆

362 :デフォルトの名無しさん:2013/05/02(木) 21:51:57.62
freeのあとNULLをいれるのはお行儀以外にもダブルfree防止なんてのもある。
あと、
お行儀の話でいえば、使い終わったバッファは0クリアしておくなんてのもあるなぁ。
(ヒープだけじゃなく、スタックも対象)

最近はそんなことやってないけどw
本来、秘密情報に対してはやっておかないとまずい。

363 :デフォルトの名無しさん:2013/05/02(木) 21:52:21.59
MSシンパキタコレ

364 :デフォルトの名無しさん:2013/05/02(木) 22:06:54.54
http://d.hatena.ne.jp/suttanipaata/20110118/1295356596

ここでうまくrootになれません
shに変わるんですが
試行錯誤してます

365 :デフォルトの名無しさん:2013/05/02(木) 22:44:56.56
うああああああああああできたああああああああああああああああああああああ
suid権限あたえてなかたあああああああああああ

366 :デフォルトの名無しさん:2013/05/03(金) 02:15:00.28
>>359
おまえ単に気にくわねぇだけだろw
専門板に感情論は不要なんだが

367 :デフォルトの名無しさん:2013/05/03(金) 04:06:53.57
>>357は普通にスレチ

368 :デフォルトの名無しさん:2013/05/03(金) 04:55:58.67
>>366
うるさいゴミ

369 :デフォルトの名無しさん:2013/05/03(金) 11:46:29.37
乱数について分からなくなってしまったのでご教授お願いします。

ゲーム用にある整数域の間でランダムな値を取りたくて、
関数を作っていたんですがなぜか返り値が固定されやがります。
しかもどの乱数に固定されているのか調べようとprintf仕込んだら、
今度は問題なく動いてくれちゃったりしてちんぷんかんぷんです。
できれば返り値を固定したくないのですが、どのようにしたらよいでしょうか?

以下、同じ状況を再現したコード。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int getrandom(int min,int max)
{
//printf("%d\n" , rand()); /* ←ここのコメントはずすと乱数が固定されない */
return ( min + (int)( (rand()/(1.0+RAND_MAX)) * (((double)(max-min)+1.0) ) ) );
}

int main(void) {
srand((unsigned int)time(NULL));
int x = getrandom(0,6);
printf("%d\n" , x);

return 0;
}

370 :デフォルトの名無しさん:2013/05/03(金) 12:10:49.78
そのコードを実行したら固定されなかったから、
書いてない部分のコードでメモリ破壊系のコーディングミスがあるとのエスパーでFA

371 :デフォルトの名無しさん:2013/05/03(金) 12:15:11.79
>>369
乱数種があまり変わらないので、
最初に出てくる乱数にもあまり差がないようだね
線形合同法の乗数が小さいんだと思う

だから、余りを使用する方式だと大丈夫だけど、
1+RAND_MAXで割る方式だとほぼ同じ値になるようだ

最初に数回rand()を呼ぶようにするといいよ
ウォームアップってやつ

372 :デフォルトの名無しさん:2013/05/03(金) 13:00:40.64
>>370
実は2種類くらい実行環境を用意して、
このコードそのまんま試してもダメだったんです・・・orz

>>371
ためしにrand()2回呼び出してみたら乱数の固定がなくなりました。
ウォームアップという発想が無かったので大変助かりました。
ありがとうごさいます。

373 :デフォルトの名無しさん:2013/05/03(金) 13:08:28.68
rand()は鈍いし、質が悪い。
メルセ○○ツイスターとかいうのでいいんでは。

374 :デフォルトの名無しさん:2013/05/03(金) 13:21:55.66
http://www001.upp.so-net.ne.jp/isaku/rand.html

こういう所で適当なのを拾うのも手だよ

375 :デフォルトの名無しさん:2013/05/03(金) 13:53:57.30
>>374みたいなクズが甘やかすから初心者がいつまで経っても初心者の域から脱出できない

376 :デフォルトの名無しさん:2013/05/03(金) 14:05:46.60
>>374
お前がクズ
引っ込んでろ

377 :デフォルトの名無しさん:2013/05/03(金) 14:06:01.89
>>375
間違えた
お前がクズ

378 :デフォルトの名無しさん:2013/05/03(金) 14:29:34.45
おれがクズ

おがクズ

379 :デフォルトの名無しさん:2013/05/03(金) 14:30:54.98
('_')

380 :デフォルトの名無しさん:2013/05/03(金) 15:11:48.44
>>338
それをすり抜けたとき用だろ

381 :デフォルトの名無しさん:2013/05/03(金) 15:21:42.71
すり抜けたときww

382 :デフォルトの名無しさん:2013/05/03(金) 15:43:04.63
typedefをexternできますか

383 :デフォルトの名無しさん:2013/05/03(金) 15:53:14.25
>>376-377晒しage

384 :デフォルトの名無しさん:2013/05/03(金) 15:56:23.04
>>383
悔しかったの?

385 :デフォルトの名無しさん:2013/05/03(金) 16:04:33.59
馬鹿だのクズだの、ガキかお前ら

386 :デフォルトの名無しさん:2013/05/03(金) 16:21:09.55
C言語でNOP,シェルコード,偽の戻り値をbufferにコピーした後の動作がよくわかりません
コピー先 buffer[500]
コピー元(argv[1]) 600バイト(NOP,シェルコード,偽の戻り値)
strcpy(buffer,argv[1]);

buffer
sfp
RET
になりbufferが600バイト分超過してsfp,RETが書き換えられますよね?
書き換えられたらどうなるんでしょうか?bufferの一番上からアドレスの中身を実行していくのでしょうか?教えてください

387 :デフォルトの名無しさん:2013/05/03(金) 16:25:41.11
そもそもエリアオーバーでコピーするコードを書く目的がわからん。
どうなるかを知りたいならやってみればいい。

388 :デフォルトの名無しさん:2013/05/03(金) 16:27:00.23
>>386
nopスロープとかウイルス作る気満々じゃねーか
誰が答えてやるか通報すんぞ

389 :デフォルトの名無しさん:2013/05/03(金) 16:31:59.16
マジレスするとx86 x64ならDEP有効で実行されないよ

390 :デフォルトの名無しさん:2013/05/03(金) 16:36:27.89
皆攻撃したくてたまらない

391 :デフォルトの名無しさん:2013/05/03(金) 18:51:05.77
>>389
コンパイルオプションで外せなかったっけか

392 :デフォルトの名無しさん:2013/05/03(金) 18:53:50.31
戻りアドレスをNOPが入ってるアドレスに渡せばいいだけでした
そうすれば戻ったときアドレスが指してるNOPを実行してシェルコードにたどり着くんでした

393 :デフォルトの名無しさん:2013/05/03(金) 19:39:07.01
>>392
ブログでやれ池沼

394 :デフォルトの名無しさん:2013/05/03(金) 20:37:16.76
自己解決の報告をして>>393とな?
そもそもこんなこと聞いている>>392もあれだが。

395 :デフォルトの名無しさん:2013/05/03(金) 20:52:13.36
>>393が池沼

396 :デフォルトの名無しさん:2013/05/03(金) 23:07:08.80
>>362
>使い終わったバッファは0クリアしておくなんてのもあるなぁ。(ヒープだけじゃなく、スタックも対象)
厳密なんですね‥‥輪廻転生されるとやっかいですからね‥‥私は乱数で埋めていました‥‥これはあんまり役にたちそうにないなぁ

397 :デフォルトの名無しさん:2013/05/04(土) 00:57:03.09
>>395
板違いだぞ。
自己紹介は自己紹介板でどうぞ。

398 :デフォルトの名無しさん:2013/05/04(土) 02:01:04.97
たかがC言語でよくこんなに語れるもんだ…きも

399 :デフォルトの名無しさん:2013/05/04(土) 03:46:03.16
>>391
DEPはコントロールパネルの設定だからコンパイルオプションでは
回避不可能。DEPはXP SP2以降(SP3だったかも)に搭載されていて
デフォルトではWindowsの重要なサービスに対してのみ有効。
間抜けな(といっては失礼だが)ユーザのほとんどはDEPの設定など
知らないから、デフォルトのままで使っているはず。そういう間抜けを
出し抜くウィルスぐらいなら作れるだろう。

400 :デフォルトの名無しさん:2013/05/04(土) 08:57:32.49
/NXCOMPAT に対応してないXPを窓から投げ捨てろ

401 :デフォルトの名無しさん:2013/05/04(土) 18:57:22.47
Head First Cという本で勉強しているのですが構造体で詰まりました。
下記のra->width、ra->heightの値は定義していないように見えるのですが
いったいいつ定義しているのでしょうか?

typedef struct{
int width;
int height;
} rectangle;

int compare_areas(const void* a, const void* b)
{
rectangle* ra = (rectangle*)a;
rectangle* rb = (rectangle*)b;

int area_a = ra->width * ra->height;
int area_b = rb->width * rb->height;

return area_a - area_b;
}

int main()
{
int i;
int scores[] = {543, 323, 32, 554, 11, 3, 112};

qsort(scores, 7, sizeof(int), compare_areas);

return 0;
}

402 :デフォルトの名無しさん:2013/05/04(土) 19:03:56.63
rectangle* ra = (rectangle*)a;
rectangle* rb = (rectangle*)b;

ここで既に宣言してる

403 :デフォルトの名無しさん:2013/05/04(土) 19:31:09.06
>>401
何か変なコードだな。
なんで compare_areas(); は int の配列の要素のアドレスを受け取って
それを rectangle と判断して処理しているのだろうか

404 :デフォルトの名無しさん:2013/05/04(土) 19:34:56.61
>>401
ありえんだろこのコードは
写し間違いじゃないのか?

405 :401:2013/05/04(土) 19:43:24.86
>>402-404
返信ありがとうございます。

写し間違いではありません。
内容としては「矩形を面積の小さい順にソートする」というものです。(P330)

あまり良いコードではないようなのでスルーして次に進もうと思います。

406 :デフォルトの名無しさん:2013/05/04(土) 19:57:23.12
良いコードじゃないけど、
Cで書かれたものって「良いコード」ばかりじゃないので、
一応は読み解けるようになっといた方がいいとは思う。

407 :デフォルトの名無しさん:2013/05/04(土) 19:59:23.28
スルーする前に、何で変だと言われたのか理解できるようにはなった方が良いな

408 :デフォルトの名無しさん:2013/05/04(土) 19:59:55.30
悪いコードだろ
読み解いた結果は
書いた奴バカ

409 :デフォルトの名無しさん:2013/05/04(土) 20:22:40.73




↑こいつつまんね悪読書ってなんだよ

410 :デフォルトの名無しさん:2013/05/04(土) 20:23:15.02
C言語でメモリアドレスを指定して表示させたいんだけどどうすればいいんでしょうか?
printf("%d\n",0xbffff508);
こんな感じでアドレスを指定して中身を出力させたいんですが・・・

411 :デフォルトの名無しさん:2013/05/04(土) 20:27:02.54
printf("%d\n",*(int *)0xbffff508);

でした・・・事故解決しました

412 :デフォルトの名無しさん:2013/05/04(土) 21:08:42.75
>>410-411


何でこの基地害はブログと2chの区別すらつかないんだろうな

413 :デフォルトの名無しさん:2013/05/04(土) 21:10:37.46
[Mac/NUC] AGK / DarkBASIC / Basic4GL / 99BASIC 2013 Part.1
http://jbbs.livedoor.jp/bbs/read.cgi/computer/43761/1367197701/l100

414 :デフォルトの名無しさん:2013/05/04(土) 21:12:46.73
>>412
お前こそ一言余計
黙ってられない病気か?

415 :デフォルトの名無しさん:2013/05/04(土) 21:20:42.88
というかどうしてブログとの区別がついてないと思ったのかわからん

416 :デフォルトの名無しさん:2013/05/04(土) 21:25:32.39
>>412
さっさと死ねよゴミ
死んだほうがいいですよ
楽になりますよ

417 :デフォルトの名無しさん:2013/05/04(土) 21:34:07.82
>>415
触らぬキチガイに祟りなし

418 :デフォルトの名無しさん:2013/05/04(土) 22:38:55.12
質問しつつ、継続して自分でも考えてた証拠だろう
丸投げよりよっぽどいい

419 :デフォルトの名無しさん:2013/05/05(日) 00:44:37.51
>>414=自己紹介してる池沼

420 :デフォルトの名無しさん:2013/05/05(日) 00:52:13.69
全く考えずにとりあえず脊髄反射で質問し、ちょっと考えたら解決した証拠だろう
とりあえず質問する癖がある雑魚

421 :デフォルトの名無しさん:2013/05/05(日) 02:19:05.17
とりあえず脊髄反射で叩く癖がある雑魚

422 :デフォルトの名無しさん:2013/05/05(日) 02:32:14.01
お前ら小学のガキかーーーーっw

423 :デフォルトの名無しさん:2013/05/05(日) 04:59:02.98
.
               /\___/\
              / ⌒ 俺 ⌒ ;\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
              | (●), 、(●)、 |  | キンタマ中古C言語命!!”
        ⊂.    |  ,,ノ(、_, )ヽ、,,   | < 今日もキンタマ中古C言語でソース乞食するゾォォオオ〜っ♪”
       ,r----、__|.Javaト‐=‐ァ'   .::::|  | 仕事レポート全部くれくれ乞食するぞォォォオオオオ〜っ!”
      /Ruby     \最強ニニ´  .:::/   \____________________
      (ひま,/¬--v   \____/⌒\     
     /⌒ (    ]  |丶 ̄ ̄  /丿  丿      ─
    (_  _丿    ,ノ--v_\ 糞  ノ   ノ       今日も見にくい小文字でプログラミングするぞ〜!!(ギャハハ!!wwww”
       ̄      ノ宿敵 リ--─ーARM八      
            〔 マシン語 Python__,ノ′ヽ       ギブ・ミー・レポート!!!! ギブ・ミー・ソース!!!!
          ,ノ'' ー--ー┘■■ ̄\  │     
          /    /  ̄■■■/ \  |        #○&#$△#%&$▼&%#!!!!
         ノ   /]アンチ|■AMD命|\|       \\   (↑意味不明w)
         |  /  .| Intel |  )   ノ    
         |/′   |    .|  |---く       
               |    |  \  ] ※)一部見苦しい部分がありますが御了承下さい。
.

424 :デフォルトの名無しさん:2013/05/05(日) 05:40:12.13
宿題スレで心を潰されたんだねかわいそう

425 :デフォルトの名無しさん:2013/05/05(日) 12:11:47.33
彼らはBASICから得られた体験を ” タブー視 ” しなければいけないため、常に孤立を要求される。

426 :デフォルトの名無しさん:2013/05/05(日) 16:53:03.02
文字列をインライン展開する方法ないですかね?
電卓プログラム作りたいんですが、文字列そのまま代入して
計算させたいです。

427 :デフォルトの名無しさん:2013/05/05(日) 17:05:00.57
できません

428 :デフォルトの名無しさん:2013/05/05(日) 17:26:41.70
>>427
馬鹿には無理だから引っ込んでろ

429 :デフォルトの名無しさん:2013/05/05(日) 17:44:45.30
ということは優しい>>428がやってくれるんだな?

430 :デフォルトの名無しさん:2013/05/05(日) 17:46:06.62
>>428
「俺がする」とは誰も言ってない
>>429の馬鹿以外の誰かがするだろうよ

431 :デフォルトの名無しさん:2013/05/05(日) 17:51:17.88
>>430
結局他人頼みかボンクラ
テメーでやれよパーかおめ

432 :デフォルトの名無しさん:2013/05/05(日) 17:52:36.12
>>431
そこまで言うならお前がやったれや
俺は酒飲んでて今から寝るんだよ(笑)

433 :デフォルトの名無しさん:2013/05/05(日) 17:55:14.27
お前らどんだけ寂しいんだよ。。

434 :デフォルトの名無しさん:2013/05/05(日) 18:04:07.98
GWだからかな

435 :デフォルトの名無しさん:2013/05/05(日) 18:12:31.48
>>428が俺に任せろって言って1時間以上たったが未だに
レス無しかよ。GWだなぁ。

436 :デフォルトの名無しさん:2013/05/05(日) 18:14:48.62
インライン展開ってどういうことだ?

437 :デフォルトの名無しさん:2013/05/05(日) 18:18:53.39
やるやる詐欺

438 :デフォルトの名無しさん:2013/05/05(日) 18:25:50.66
やりたいことが伝わっていないから
もう一度詳細に書いて
”文字列をインライン展開””文字列そのまま代入”の意味が伝わらない

439 :デフォルトの名無しさん:2013/05/05(日) 18:29:19.72
文字列を数式に展開したい。代入は感覚で言っただけで意味はないです。

440 :デフォルトの名無しさん:2013/05/05(日) 18:30:07.11
そうだそうだ

仕様書も出さずに作れとか馬鹿の極み

441 :デフォルトの名無しさん:2013/05/05(日) 18:31:43.54
>>426のやりたいことは逆ポーランド記法で解決出来ないか?

442 :デフォルトの名無しさん:2013/05/05(日) 18:33:58.79
なんっすかそれ。

443 :デフォルトの名無しさん:2013/05/05(日) 18:34:30.72
発達障害たちの自己紹介祭り

444 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/05(日) 18:43:16.88
字句解析、構文解析を行って、文字列を木構造に変換して再帰的に解釈する

パーサジェネレータで検索

445 :デフォルトの名無しさん:2013/05/05(日) 18:45:53.54
レゴをC言語で制御したいんですけどお勧めの開発環境教えてくれませんか?

446 :デフォルトの名無しさん:2013/05/05(日) 18:49:17.42
インライン展開とは、関数呼び出しを止めることです

447 :デフォルトの名無しさん:2013/05/05(日) 18:52:40.49
(式が書かれた)文字列に従い 式の評価・演算を行いたい

yacc 使うまでもない感じ?

448 :デフォルトの名無しさん:2013/05/05(日) 18:57:07.70
c言語の参考書買う奴って何なんだろう。
ネットに入門サイトいくらでもあるじゃんね。

449 :デフォルトの名無しさん:2013/05/05(日) 19:32:28.75
>>426
ttp://ideone.com/clone/4uiNHy
実行例
input=1+2*(3-4)*(5+6*(7-8))
3

450 :デフォルトの名無しさん:2013/05/05(日) 19:37:37.51
yaccまでやらんでも、再帰下降構文解析あたりで調べれば出ると思うよ
課題だとしたらその辺りのこと想定してるんだろうし

451 :デフォルトの名無しさん:2013/05/05(日) 19:46:06.82
つかcodepadのほうが好きなんだけど
ここではIDナンバー1のほうが流行ってるの?
codepadのほうが見やすくて好きなんだが。

452 :デフォルトの名無しさん:2013/05/05(日) 20:14:48.59
>>451
お前の好みなんかどうでもいいんだよゴミ。
そんなに書きたきゃブログに書いてろクズが。
二度と来るな。

453 :デフォルトの名無しさん:2013/05/05(日) 20:25:51.28
>>452
2度と来るなという事は3度目は来ていいんですか?
3度目来るためには2度目来ないといけないんですが(笑)
while(1){;}の後の関数の気分です。

454 :デフォルトの名無しさん:2013/05/05(日) 20:26:52.00
char i[]={"\x0f"};
printf("%d\n",i[0]);
この結果15

char i="\x0f

455 :デフォルトの名無しさん:2013/05/05(日) 20:27:23.49
char i="\x0f";
printf("%d\n",i);

この結果-32
何故?

456 :デフォルトの名無しさん:2013/05/05(日) 20:31:56.75
>>452
はい来ました
何か問題でも?

457 :デフォルトの名無しさん:2013/05/05(日) 20:42:49.18
>>455
signed char i = (signed char)&"\x0f"[0];
printf("%d\n", (int)i);

458 :デフォルトの名無しさん:2013/05/05(日) 21:28:14.63
>>457
同じ結果です

459 :デフォルトの名無しさん:2013/05/05(日) 21:47:16.49
ポインタを整数変数(char i)に代入しようとしてる

char i = '\x0f';

460 :デフォルトの名無しさん:2013/05/05(日) 21:57:56.29
charを%dと%cで比べて遊んで見れば良いんじゃないかな

461 :デフォルトの名無しさん:2013/05/05(日) 22:29:52.16
char i = *&"\x61"[0];
printf("%c\n",i);

これでできました
文字列リテラルの存在忘れてました

462 :デフォルトの名無しさん:2013/05/05(日) 22:50:33.90
char i = '\x61';
printf("%c\n",i);

ではだめなのか?
何をやりたいかわけわからん。

463 :デフォルトの名無しさん:2013/05/05(日) 22:51:45.32
>>461
*& とかいるのか。

464 :デフォルトの名無しさん:2013/05/05(日) 22:55:58.47
>>462
''と""に入れたとき違いがよくわかってなかったので試してました

465 :デフォルトの名無しさん:2013/05/06(月) 05:45:50.51
下みたいなコードだとコンパイルでウォーニングが出るけど、引数のconst止めるのと代入でchar*にキャストするのと、
どっちがいいでしょうか
static unsigned char* b;
void foo(const unsigned char* a)
{
b = a;
}

466 :デフォルトの名無しさん:2013/05/06(月) 06:43:02.94
*bは書き換えるのか?
リテラルを渡してやろう

foo("abc");

467 :はちみつ餃子 ◆8X2XSCHEME :2013/05/06(月) 06:46:50.45
>>465
const で宣言した変数が const でない挙動をする (キャストで const を剥がす) のは間違いのもと。

468 :デフォルトの名無しさん:2013/05/06(月) 08:40:36.40
>>430
それだと、「それなら、黙ってろ アホ!」とならね?

469 :デフォルトの名無しさん:2013/05/06(月) 08:42:07.17
>>468

>>428書いたの俺じゃねーし
>>428書いた奴に言ってくれ

470 :デフォルトの名無しさん:2013/05/06(月) 09:46:23.22
リテラル(大爆笑)

471 :デフォルトの名無しさん:2013/05/06(月) 10:28:25.74
どこが面白かった?

472 :デフォルトの名無しさん:2013/05/06(月) 11:53:19.42
>>465は、
関数の引数が関数自身によって変更されない値を参照するポインタならば、関数の引数をconstとして宣言する
http://www.jpcert.or.jp/sc-rules/c-dcl13-c.html
const 修飾をキャストではずさない
http://www.jpcert.or.jp/sc-rules/c-exp05-c.html
ってことで、どうすりゃいいんだと思ったけど、リンク先の優先度見ると引数のconst外した方がいいのか
>>467はそういうことなのか
memcpy(&b, &a, sizeof(unsigned char*))なら文句言われないけど、パッと見分かりにくいわな

473 :デフォルトの名無しさん:2013/05/06(月) 11:56:38.45
リテラル(大爆笑)

474 :デフォルトの名無しさん:2013/05/06(月) 12:23:00.40
>>466がおかしいのは、そもそもfooのコール前のウォーニングのこと言ってるってのと、
引数と代入先がchar*じゃないってこと

475 :デフォルトの名無しさん:2013/05/06(月) 12:24:52.76
char str1[] = "hoge"; /* (A) */
char *str2 = "hoge"; /* (B) */

このBのほうは文字列リテラルのhogeの先頭アドレスをポインタ変数*str2に入れてるのはわかるけど
この"hoge"の先頭アドレスはデータセグメントに入ってるの?
AのほうはAuto変数だからスタックセグメントに入ってるとわかります

定数はデータセグメント?教えてください

476 :デフォルトの名無しさん:2013/05/06(月) 12:30:31.28
>>475
どちらも"hoge"はデータセグメントです。
Aはmemcpyが走るだけです。Bはデータセグメントへのポインタが入ります。

477 :デフォルトの名無しさん:2013/05/06(月) 12:38:55.20
>>476

>(A) は、単なる配列なので 'h', 'o', 'g', 'e', '\0' というデータはスタックというところに置かれます。

と書いてあるけど?・・・
Aはstr1[0]='a';みたいに書き換えできるけど
Bはstr2[0]='a'みたいに書き換えできませんよね?

データセグメントの中にも書き換えできるのとできないのがあるんですか?

478 :デフォルトの名無しさん:2013/05/06(月) 12:39:46.83
リテラル(大爆笑)

479 :デフォルトの名無しさん:2013/05/06(月) 12:40:56.08
>>477
str1,2ともローカル変数ならスタック、グローバルなら変数領域に割り当てられる
hogeの実体は、str1はstr1に、str2は定数領域に入る
ってggったら出てきた

480 :デフォルトの名無しさん:2013/05/06(月) 12:43:36.91
必死必死w

481 :デフォルトの名無しさん:2013/05/06(月) 12:48:08.65
グッドウォーニング

482 :デフォルトの名無しさん:2013/05/06(月) 12:52:58.61
リテラル(大爆笑)

483 :デフォルトの名無しさん:2013/05/06(月) 12:57:34.51
>>465
bがconstでない時点でconst宣言したアドレスをコピーするのはまずいだろう。
いつ書き換わるかわかんないのに

484 :デフォルトの名無しさん:2013/05/06(月) 13:01:13.59
>>483
>関数の引数が関数自身によって変更されない値を参照するポインタならば、関数の引数をconstとして宣言する
少なくとも関数内では書き変わらないから、関数自身による変更さえなきゃconstで宣言するものかと思ったんだが

485 :デフォルトの名無しさん:2013/05/06(月) 13:09:36.08
>>479
定数領域ってセグメントでいうどこ?

486 :デフォルトの名無しさん:2013/05/06(月) 13:11:17.44
>>485
rodata

487 :デフォルトの名無しさん:2013/05/06(月) 13:16:20.95
>>486
rodataって場所か
セグメントでぐぐってたからでてこなかったけど
セクションでぐぐったらでてきた

http://www.ertl.jp/~takayuki/readings/info/no02.html
ありがとう

488 :デフォルトの名無しさん:2013/05/06(月) 13:29:46.40
大炎上w

489 :デフォルトの名無しさん:2013/05/06(月) 16:10:41.71
QZただいま自演にて発狂中

490 :デフォルトの名無しさん:2013/05/06(月) 16:14:03.62
2chで自演云々言う奴めんどくせ

491 :デフォルトの名無しさん:2013/05/06(月) 16:44:53.13
自演バレしたからってお行儀が悪いなQZ

492 :デフォルトの名無しさん:2013/05/06(月) 16:55:26.15
>>491
QZじゃねーから
証明できないけど、2ch運営にでもIPきいたら?

493 :デフォルトの名無しさん:2013/05/06(月) 17:25:53.03
今小6で自分でプログラミング組んで勉強してるんですがCの次は何が
お勧めですか?取り敢えずドスコマンドを自作するみたいな事から初めて
今はサーバークライアント型のプログラムに挑戦しています。
その内3Dゲームもやってみたいと思うんですがライブラリで何か良いの
ありますか?友達でプログラミング趣味の子全然いないんですよ。

494 :デフォルトの名無しさん:2013/05/06(月) 17:26:59.75
名前欄にfusianasanって書き込めば自分のIPは出せるよ。
他人が自分ではないことの証明にはならないが。

495 :デフォルトの名無しさん:2013/05/06(月) 17:29:20.78
>>493
HSP

496 :デフォルトの名無しさん:2013/05/06(月) 17:29:33.92
ふーん、でも本人(QZ)はやらない
やってもPCとスマホを使い分けて自演じゃないとか言い出すこと間違いなし

497 :デフォルトの名無しさん:2013/05/06(月) 17:30:52.16
>>494
そう。自演であることも自演でないことも客観的に証明できない
つまり、自演乙wwwwwとか言ってる奴はアホだということ

498 :デフォルトの名無しさん:2013/05/06(月) 17:30:57.48
>>493
C++

499 :デフォルトの名無しさん:2013/05/06(月) 17:34:30.34
>>493
C++やるならDXライブラリ
Unityでもいいけど、最初から便利すぎると勉強にならない気もする

500 :デフォルトの名無しさん:2013/05/06(月) 17:37:21.21
>>495
あー知ってます。てか一番最初に覚えた言語ですw
文法が簡単でゲームが作りやすかった記憶があります。
>>499
ありがとうございます。
自分で機能とかも作りたいので低水準のC++をとりあえず勉強してみます。
ただUnityが便利過ぎるというのは初耳ですが本当でしょうか?
リアルタイムレンダリングの機能とかありますか?

501 :デフォルトの名無しさん:2013/05/06(月) 17:43:24.23
>>500
Unityは開発環境だからそういうのとは別
ゲーム作りたいだけなら使えばいいんじゃね
悪い意味でなくて、趣味でやるなら好きにやればいいと思う

502 :デフォルトの名無しさん:2013/05/06(月) 17:45:42.56
>>501
色を付けたりする機能も実装されてますか?グラデーションとか。

503 :デフォルトの名無しさん:2013/05/06(月) 17:48:08.85
ゲーム作りたい人はUnityなんか使ってないから

504 :デフォルトの名無しさん:2013/05/06(月) 17:48:58.57
>>503
じゃぁ何使ってるんですか?ゲーム作ってる人って。

505 :デフォルトの名無しさん:2013/05/06(月) 17:49:21.56
とりあえず……ググれ

506 :デフォルトの名無しさん:2013/05/06(月) 17:50:48.88
Unity(笑)でゲーム開発しようとするゆとりと発達障害はここいって

【3Dゲームエンジン】Unity総合スレッド18
http://toro.2ch.net/test/read.cgi/gamedev/1362904281/

507 :デフォルトの名無しさん:2013/05/06(月) 17:51:06.31
>>502
だからそういうライブラリとUnityは別ってこと
ほんととりあえずぐぐれ

508 :デフォルトの名無しさん:2013/05/06(月) 17:52:05.59
>>501さんはゲームはUnityが良いって言ってるけど>>503はゲーム作りには
向いてないって言います。どちらを信じれば?

509 :デフォルトの名無しさん:2013/05/06(月) 17:54:20.28
でもUnityで画像検索したら精巧な3Dクオリティの作品がたくさんヒットします。
3Dと相性は良いのでしょうか?

510 :デフォルトの名無しさん:2013/05/06(月) 17:54:52.98
Unity(笑)でゲーム開発しようとするゆとりと発達障害はここいって

【3Dゲームエンジン】Unity総合スレッド18
http://toro.2ch.net/test/read.cgi/gamedev/1362904281/

511 :デフォルトの名無しさん:2013/05/06(月) 17:58:33.37
QZが墓穴を掘ったことに対して恥を感じて自演レスを加速中

512 :デフォルトの名無しさん:2013/05/06(月) 18:15:50.35
プログラミングよりモデリングの勉強しろ
Blender使え

513 :デフォルトの名無しさん:2013/05/06(月) 18:24:09.69
Unityとか言う時点で軽蔑の対象だからな
Unityの実績みたらPCゲームやネトゲで全く使われてないからな相当ゴミでハイクオリティなゲームには適してないんだろう
ゴミはたぶんFFとかドラクエとかで育ってきたゆとりのゴミだからスマフォ向けタワーディフェンスやブラゲとか作ってろゴミ
さっさと死ねキチガイ

514 :デフォルトの名無しさん:2013/05/06(月) 18:25:55.25
Blender使いたいんだけどさすがに小6でCUIプログラムしかしてませんから
できません。あれって人体作ったらそれを動かすためにプログラムしないと
ダメなんでしょうか?

515 :デフォルトの名無しさん:2013/05/06(月) 18:34:18.55
線形代数学の勉強した方がいい
簡単なことなら三角関数を使ってごまかすことができるが
座標変換は日常的に使うし外積つかった当たり判定とかフライトシミュ作ったりするならジンバルロックを考慮する必要がある

516 :デフォルトの名無しさん:2013/05/06(月) 18:40:32.53
ニコニコ動画で3dsmaxの作品があって人物が剣を持って走って
きて華麗に宙返りして決めるっていうのでした。
ひとつひとつの動きをプログラミングで作っているのでしょうか?

517 :デフォルトの名無しさん:2013/05/06(月) 18:45:06.81
このキチガイスレチガイは死ね

518 :デフォルトの名無しさん:2013/05/06(月) 18:46:59.10
日本語が崩壊しているぞ在日チョン

519 :デフォルトの名無しさん:2013/05/06(月) 18:55:03.28
ゲームなんか作ってどうするのよ
周りのみんなは受験勉強やら自己啓発で資格取得やら親しい友人と親睦深めたりしてるのに
ゲームプログラミングなんかしてても受験、就職、出世、何の評価にも繋がらないぞ
小学生なら受験勉強でもしてた方がなんぼかマシ

520 :デフォルトの名無しさん:2013/05/06(月) 18:57:38.11
QZこの流れを注視し宿題自演質問をタイミングを淡々と窺う

521 :デフォルトの名無しさん:2013/05/06(月) 19:00:21.76
>>519
だって周りがそういう友達ばかりだもん。
だから自分で趣味としてプログラムやって充実してるんだよ。

522 :デフォルトの名無しさん:2013/05/06(月) 19:06:55.69
>>42 >>243 >>252 >>280 >>489 >>491 >>496 >>497 >>511 >>520
被害妄想粘着童貞の振る舞い

523 :デフォルトの名無しさん:2013/05/06(月) 19:12:52.25
ゲームはやるので十分だろ
既存のハイクオリティで面白いゲーム以上のゲームが作れるっていうなら別
どうせミニゲームとかだろ

莫大な金かけて作ってるネトゲやPCゲーム以下
ゲー専、アマチュア(同人)とかもしょっべーゲームしか作れてない

変愚蛮怒,,Elona,オンラインゲーム作って運用このぐらいのゲームが作れてスタートライン
それ以下のゲームはさっさと死ぬべき

524 :デフォルトの名無しさん:2013/05/06(月) 19:35:53.34
>>493
http://www.amazon.co.jp/dp/4871481689/ : make, レイトレーシング、Ada風俺々コンパイラ
http://www.amazon.co.jp/dp/4871482006/ : 本格lispインタプリタ
http://www.amazon.co.jp/dp/4774100544/: lisp インタプリタを扱っているもう一つの書籍、ただしソースは完全ではないと個人的に思っているディスクサービスを申し込んでおけばよかた‥‥上記2冊以外を知らない
K&R1のCだがどうとでもなる、というかここで躓くようでは修行がたりない

525 :デフォルトの名無しさん:2013/05/06(月) 19:37:03.34
趣味のゲーム開発の話にオンラインゲームがスタートラインとか言ってる奴がいて笑い死にしそう。

526 :デフォルトの名無しさん:2013/05/06(月) 19:40:31.10
ゲーム開発のスタートは落ち物系だろ。譲れない。

527 :デフォルトの名無しさん:2013/05/06(月) 19:48:44.90
まずはパズルゲームが楽でいいよ
倉庫番とかマインスイーパとか

ゲーム作るなら、
ゲームプログラマになる前に覚えておきたい技術
って本がオススメ
ただし、C++の本は別に必要なのでちと高い買い物になるかも
C++をネットで勉強するのもありだが

528 :デフォルトの名無しさん:2013/05/06(月) 20:14:52.65
C++分からん

529 :デフォルトの名無しさん:2013/05/06(月) 20:19:10.12
馬鹿には無理

530 :デフォルトの名無しさん:2013/05/06(月) 20:20:31.13
東方厨を越えるゲームを作りたい!

まずはみんなでアイデアを出そうぜ

531 :デフォルトの名無しさん:2013/05/06(月) 20:20:56.78
>>529
ふっ

532 :デフォルトの名無しさん:2013/05/06(月) 20:30:30.42
ゲーム製作スレでやれよゴミクズゲー専は

533 :デフォルトの名無しさん:2013/05/06(月) 20:33:33.10
テイルズみたいなゲーム作ってほしい。
ああいう演出に凝った感じのやつ。

534 :デフォルトの名無しさん:2013/05/06(月) 20:35:02.78
>>533
テイルズオブ銀魂双六か。

535 :デフォルトの名無しさん:2013/05/06(月) 20:38:35.75
ゲームの話題はこっち
中卒+ゲー専門はこちら

ゲーム専門にクズが多い理由(笑)
http://toro.2ch.net/test/read.cgi/gamedev/1359679374/

536 :デフォルトの名無しさん:2013/05/06(月) 20:39:22.78
テイルズって最近は秘奥義とかFF化してるじゃん、やたら時間食うし
キャラが喋りなから秘奥義使ってるけど聞いてるほうが恥ずかしくなるような台詞が混ざってるよな
厨二病の俺でも恥ずかしくなるような台詞だぞ、どうなってんだ

537 :デフォルトの名無しさん:2013/05/06(月) 20:40:55.83
好みはさておきテイルズくらいの作れたら東方は越えられるな。

538 :デフォルトの名無しさん:2013/05/06(月) 20:44:26.89
ゲームの話題はこっちのスレ
中卒+ゲー専門がゲーム製作もこっち

ゲーム専門にクズが多い理由(笑)
http://toro.2ch.net/test/read.cgi/gamedev/1359679374/

539 :デフォルトの名無しさん:2013/05/06(月) 20:45:12.89
C++分かるとか神かよ

540 :デフォルトの名無しさん:2013/05/06(月) 20:50:33.02
あれはほとんど演出&声優ゲー

■評価できないところ
秘奥義のエフェクトを除けばグラもPSで再現できるレベル
ピカピカドカンズババババな技が多すぎ
基本&戦闘システムがほとんど進歩してない(凝ってない)

■評価できるところ
カメラアングルとかイラストの使い方はかなり研究されてる
ボイスデータが大量に入っている
エフェクトがきれい

541 :デフォルトの名無しさん:2013/05/06(月) 20:51:11.33
C言語なら俺に聞け(入門編)Part 114

542 :デフォルトの名無しさん:2013/05/06(月) 20:51:15.18
ゲームの話題はこっちのスレ
中卒+ゲー専門がゲーム製作もこっち

ゲーム専門にクズが多い理由(笑)
http://toro.2ch.net/test/read.cgi/gamedev/1359679374/

543 :デフォルトの名無しさん:2013/05/06(月) 20:53:00.11
横スクロールアクションとかどうよ??
最近あまり出てないっしょ。
任天堂がたまにマリオ出すくらいでロックマンも新作がでない。

544 :デフォルトの名無しさん:2013/05/06(月) 20:53:32.91
ゲームの話題はこっちのスレ
中卒+ゲー専門がゲーム製作もこっち

ゲーム専門にクズが多い理由(笑)
http://toro.2ch.net/test/read.cgi/gamedev/1359679374/

545 :デフォルトの名無しさん:2013/05/06(月) 20:54:18.52
テイルズがC言語なんかで作れるわけないだろ

546 :デフォルトの名無しさん:2013/05/06(月) 20:55:00.59
スレチが沸いてるな迷惑

547 :デフォルトの名無しさん:2013/05/06(月) 20:55:34.17
>>543
3Dが当たり前のように使えるのに2Dゲーなんかやりたいか?

548 :デフォルトの名無しさん:2013/05/06(月) 20:56:47.34
テイルズ=ヲタ向け

549 :デフォルトの名無しさん:2013/05/06(月) 20:58:19.03
ミニゲーム作って満足しないよ。
とりあえずネットで仲間集めてそこそこクオリティ高いゲーム作って
同人作品として売りたい。昔のゲームのリメイクとか作ったら良いん
じゃないかと考えてる。

550 :デフォルトの名無しさん:2013/05/06(月) 20:58:27.29
>>547
2dなら酔わないとかあるだろ
あと直感的に分かりやすいとか

551 :デフォルトの名無しさん:2013/05/06(月) 20:59:40.14
見ての通りゲーム作る奴はスレチのキチガイ

552 :デフォルトの名無しさん:2013/05/06(月) 20:59:53.84
昔のやつをリメイクするのは版権買ってくるのとか面倒じゃね?

553 :デフォルトの名無しさん:2013/05/06(月) 21:00:15.48
>>551
中卒と低学歴のゲーム専門学校が荒らしてる感じ
邪魔だな

554 :デフォルトの名無しさん:2013/05/06(月) 21:02:20.80
>>552
いやドンキーコングならモンキーコングとかにする。
ダメかな?

555 :デフォルトの名無しさん:2013/05/06(月) 21:02:52.99
このスレはC言語とアセンブリぐらいの内容
ゲームはスレ違いだから別スレでやれ

556 :デフォルトの名無しさん:2013/05/06(月) 21:03:05.06
どっちにしても1人では無理でしょ
プログラマー、イラストレーター、ドッター、モデラー、シナリオライター、ゲームデザイナー、作曲家、スクリプト組んだりする雑用
辺りが最低でも必要

557 :デフォルトの名無しさん:2013/05/06(月) 21:04:42.52
>>554
タイトルはギリギリセーフだと思うけど、
キャラとかはどうする?

558 :デフォルトの名無しさん:2013/05/06(月) 21:05:29.84
>>556
そういう細分化なぁ....
ゲームデザイナーとシナリオライターは一緒でしょ。
何かそうやってメーカーの構成にする事に酔ってる感じがする。

559 :デフォルトの名無しさん:2013/05/06(月) 21:06:04.07
>>551,>>553
嫌なら見るなよ精神異常
嫌だ嫌だと言いながら見てるとかマジで頭おかしいんじゃねw

560 :デフォルトの名無しさん:2013/05/06(月) 21:10:37.57
>>557
既存のものを派生させるっていうのは簡単でしょ。
むしろそこにモチベーションを持たないと。
とりあえず携帯ゲームブームに勝ちたい。

561 :デフォルトの名無しさん:2013/05/06(月) 21:10:46.40
>>558
違うぞ
デザイナはシステム作ったりバランス調整したりする奴だぞ
シナリオとは全く別のスキル
両方こなせる奴を探すのもありだけど、別々に探すほうが手っ取り早い
そのための細分化だ

酔ってるようで嫌なら
プログラム兼作曲兼グラフィック兼シナリオ兼デザイン担当を探してもいいとは思うけど

562 :デフォルトの名無しさん:2013/05/06(月) 21:12:11.03
ゲームはプログラマだけいても作れない。
かわいい女の子(ロリ)を書ける絵師が必須。

563 :デフォルトの名無しさん:2013/05/06(月) 21:15:00.83
>>561
エロゲのスタッフロール見たんだけどスタッフ多すぎるんだよ。
20人以上はいたんじゃないかなと?マニファクチュアは作業の混乱を防いで
効率的だけど自由な発想が制限されるんじゃないかと思う。

564 :デフォルトの名無しさん:2013/05/06(月) 21:17:32.76
みんなゲームプログラマなの?

565 :デフォルトの名無しさん:2013/05/06(月) 21:19:47.16
>>556
趣味プロなんだから1人で十分だろw
大体のものはフリー素材でなんとかなる

566 :デフォルトの名無しさん:2013/05/06(月) 21:20:28.29
携帯ゲはみんな面白くてやってるわけじゃない。
手軽さなんだよ。

567 :デフォルトの名無しさん:2013/05/06(月) 21:32:13.34
趣味プロだとモチベーション持てないな。
分業の楽しさを知りつつ成果を得たい。

568 :デフォルトの名無しさん:2013/05/06(月) 21:50:29.25
>>567
そうだよな、成果は重要
一番客観的で数値化できる成果というとやっぱり金だな
同人でも何でもいいから売ってどのくらい売れたのかってのがそれを一番簡単に測れる

569 :デフォルトの名無しさん:2013/05/06(月) 21:53:37.10
お前ら全く分かってないな
フレームワークを作るのこそが楽しいんだろ
ゲームが完成するかどうかなんて
どうでもいいことじゃないか

570 :デフォルトの名無しさん:2013/05/06(月) 21:56:26.42
[Mac/NUC] AGK / DarkBASIC / Basic4GL / 99BASIC 2013 Part.1
http://jbbs.livedoor.jp/bbs/read.cgi/computer/43761/1367197701/l100

571 :デフォルトの名無しさん:2013/05/06(月) 22:14:41.58
>>569
フレームワークだけ作ってもおもしろくない

572 :デフォルトの名無しさん:2013/05/06(月) 22:48:12.54
今帰ったけど何でこんなスレ荒れてんだ・・・

573 :デフォルトの名無しさん:2013/05/06(月) 23:16:56.11
>>571
プログラマ向いてないから
さっさとSE()にでもなった方がいいんじゃない?

574 :デフォルトの名無しさん:2013/05/06(月) 23:19:24.73
>>572
自演で大量に荒らしレスを連投するいつもの人が
派手に発作起こしちゃったから。

575 :デフォルトの名無しさん:2013/05/06(月) 23:20:24.82
テイルズみたいなやつ作るなら協力するよ

576 :デフォルトの名無しさん:2013/05/06(月) 23:22:11.20
感情論は不要
アセンブラ君のほうがまともだったな

577 :デフォルトの名無しさん:2013/05/06(月) 23:39:20.44
ゲームすら作れないC厨が発狂w

578 :デフォルトの名無しさん:2013/05/06(月) 23:43:42.05
ゴミの収集とかなら

579 :デフォルトの名無しさん:2013/05/06(月) 23:47:00.80
C厨も何も、Cスレじゃんか

580 :デフォルトの名無しさん:2013/05/07(火) 00:18:42.20
俺もC言語でゲームを作ろうと思っているので
自分でゲームを作ろうと思っている同志のいるこのスレを活動拠点にしたいと思います
質問などすると思いますがよろしくお願いします

581 :デフォルトの名無しさん:2013/05/07(火) 00:43:29.02
難しいことが出来るより、ゲームが完成することが大事。
同品質の物が作れるなら、手間が少ないほうがいい。
ゲーム会社も、開発コスト、日数を下げるための工夫している。


[E3 2012]スクウェア・エニックスの独自開発エンジン「Luminous Studio」による,驚異のリアルタイム技術デモ「AGNI'S PHILOSOPHY」が公開
本デモ映像の制作に使用した「Luminous Studio」とは、当社が独自で開発を進める、ゲーム開発ツール・プログラム群を統合した次世代総合ゲーム開発環境(ゲームエンジン)です。
本ゲームエンジンは、ゲーム制作チームに大きな生産性の向上をもたらし、同時に圧倒的な品質のゲーム制作ができる環境を目指しています。
また、本ゲームエンジンは、ゲーム専用機、PC、スマートフォン、WEBなど、次世代を含む多様なゲームプラットフォームに対応する予定です。
http://www.4gamer.net/games/032/G003263/20120606107/

582 :デフォルトの名無しさん:2013/05/07(火) 00:50:29.89
別スレでやれ

583 :デフォルトの名無しさん:2013/05/07(火) 02:38:34.65
ゲームのフレームワークより低水準の部分って、
基本的にどれも変わらんよな。
メインループ作って、リソース管理作って、データベース作って、って辺り。

584 :デフォルトの名無しさん:2013/05/07(火) 02:58:50.10
アイテムとかってどうやって管理するんですか?
全アイテムはIDとアイテム名をセットにしておくと思うのですが、
所持アイテムはIDと個数をセットにしておくと思うんですよ
でもそれだとメニューから所持アイテム一覧を開いたとき、
全アイテム一覧からIDでアイテム名を引いてこなきゃいけないじゃないですか
全アイテム一覧はメモリに読み込んでおくんですか?
それともメニュー画面開くたびにHDDから必要なアイテム名だけ引いてくるんですか?

585 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/07(火) 03:23:25.99
>>584
メモリに展開しておく。
ファイル読み込みだと、遅延が発生する恐れあり。
その手の処理ならC++が楽チン。

586 :デフォルトの名無しさん:2013/05/07(火) 03:27:58.99
夜遅くにうるせえよ
黙って寝とけ

587 :デフォルトの名無しさん:2013/05/07(火) 04:37:23.42
>>584
本当にIDとアイテム名だけならどっちでもいい。
だけど最近のゲームみたいに解像度の高いアイコンと説明文が出るようなやつは毎回HDDから読み込んだほうがいい。

588 :デフォルトの名無しさん:2013/05/07(火) 05:18:06.69
データ量によるんじゃね

合計1M以下なら読み込んでおくとか
自分で適当に閾値決めて
データ量がその閾値を超えないなら全部読み込んでおく

超えるならその都度読み込み&キャッシュじゃね

589 :デフォルトの名無しさん:2013/05/07(火) 12:30:18.12
char str[]="ABC"; /* Main関数内*/

これってどうなってんの?文字列リテラルだと定数領域に確保されてその先頭アドレスが返るって話だけど
配列の場合はスタック領域のアドレスが入ってたけど何で?

Auto変数だからスタックにstr配列が確保されて文字列リテラルで定数領域に文字列が確保されてその先頭アドレスからスタック領域にコピーしてるって感じ?
コピーしてる命令は配列とかがやってんの?教えてください

590 :デフォルトの名無しさん:2013/05/07(火) 12:45:46.28
仕様の理解はそれでいい
実際どうなってるかは逆アセンブルしてみるしかない

591 :デフォルトの名無しさん:2013/05/07(火) 12:57:27.47
>>590
>>476がいってるmemcpyくさいなぐぐってみるか
メモリ理解とアセンブラ理解してるとしてないとでは全く違ってくるなこれ

592 :デフォルトの名無しさん:2013/05/07(火) 15:01:27.75
言われてみれば最近のゲームはリッチなアイコンが付いてるね
アイテム名の横に出るやつじゃなくて画面下の説明欄に一緒に出てくるやつ
アイコンというよりもはや絵だよな

593 :デフォルトの名無しさん:2013/05/07(火) 15:09:55.57 ID:qEqQNQf6O
そうして開発コストがあがっていく。

594 :デフォルトの名無しさん:2013/05/07(火) 15:45:32.94
配列にいれる分コスト掛かるから参照するだけならポインタにしろってことか

595 :デフォルトの名無しさん:2013/05/07(火) 16:12:23.83
いやconst []の方がいいコード出る

596 :デフォルトの名無しさん:2013/05/07(火) 18:05:08.79
>>589
定数領域に"ABC"取って、何らかの方法で"ABC"をstrへコピーしてる
何らかの方法ってのはコンパイラ次第で、memcpyと同じかも知れない
でいいのかな

597 :デフォルトの名無しさん:2013/05/07(火) 18:51:17.57
>>593
ID, ID!

598 :デフォルトの名無しさん:2013/05/07(火) 19:00:25.55
あれこの板IDでるっけ?

599 :デフォルトの名無しさん:2013/05/07(火) 19:31:33.81
【2ch】海外からの書き込みだとIDの末尾に ! が付くようになった
http://engawa.2ch.net/test/read.cgi/poverty/1367913537/

これが関係している?

600 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/07(火) 23:08:23.92
最近の逆コンパイラはすごいぞ。C言語だと元のコードがそのまま再現される。
他人に盗まれない仕事がしたいならC++にしろよ。

601 :デフォルトの名無しさん:2013/05/07(火) 23:10:10.33
片山ゆうちゃんちーっすwww

602 :デフォルトの名無しさん:2013/05/07(火) 23:41:12.39
>>600
そんな逆汗があるのか?URLよろ

603 :デフォルトの名無しさん:2013/05/07(火) 23:51:15.51
携帯からだとIDが出るようになったのか

604 :デフォルトの名無しさん:2013/05/07(火) 23:55:08.93
Qは確かp2経由だったけど巻き込まれたのか

605 : ◆QZaw55cn4c :2013/05/08(水) 01:48:46.87
大丈夫みたいですよ静かになればいいのにね

606 :デフォルトの名無しさん:2013/05/08(水) 08:18:40.99
>>600
C#だったらわかるんだけど‥‥

607 :デフォルトの名無しさん:2013/05/08(水) 08:41:18.56
>>600
ねーよ

608 :デフォルトの名無しさん:2013/05/08(水) 12:23:56.99
double型の変数dがほぼ0に等しいか調べるにはどうしたらいいですか?

609 :デフォルトの名無しさん:2013/05/08(水) 12:38:58.01
>>608
fabs(x - constance) じゃだめなの?

610 :デフォルトの名無しさん:2013/05/08(水) 12:49:06.27
つまんねっ

611 :デフォルトの名無しさん:2013/05/08(水) 12:52:54.21
>>610
なら2chに来るな
それかお前が面白いネタを提供しろ

612 :デフォルトの名無しさん:2013/05/08(水) 12:57:55.57
DBL_EPSILON  2.2204460492503131e-016   1.0+DBL_EPSILON !=1.0となる最小値

DBL_MIN   2.2250738585072014e-308   最小の正の値

http://msdn.microsoft.com/ja-jp/library/k15zsh48(v=vs.80).aspx

613 :デフォルトの名無しさん:2013/05/08(水) 13:00:51.22
機械イプシロンの意味を理解している奴がどれだけいるのか・・・

614 :デフォルトの名無しさん:2013/05/08(水) 13:05:32.61
覚えただけの知識を自慢

615 :デフォルトの名無しさん:2013/05/08(水) 13:46:08.03
http://情報処理試験.jp/FE25a-pm/t09.html

このCわかりやすくいけた
難易度これくらいでいいな

616 :デフォルトの名無しさん:2013/05/08(水) 16:55:41.18
Cしかできない奴ってGUI作るときにもC使っちゃうわけ?w

617 :デフォルトの名無しさん:2013/05/08(水) 19:02:56.00
>>581
完成させることって重要だよな。
やっぱりプログラムを作るとしても使い回し能力ってのは必要なの?
要領が悪いから最初から作らないといけないんだよ!とか
言われたりするの?

618 :デフォルトの名無しさん:2013/05/08(水) 19:50:13.23
>>558
ゲームデザインをシナリオと一緒にすんな
テトリスくらいならいいけど、最近のRPGみたいなやつを素人がデザインすると地獄絵図になるぞ

〜ゲームデザイナーなし劇場〜

開発者A「なぁ、このボスに到達するときにこのパーティーのレベルって高くない?」
開発者B「え?じゃぁ経験値少なくするか」
開発者C「おい、全体的に減らすなよ、その前のボス戦ではちょうどよかったんだから」
「じゃぁそのボス弱体化すればいいじゃん」
「えっ」
「えっ」
「そうじゃなくてAが言ってたボスを強くすればいいんじゃね?」
「強くって何を?HPあげるの?攻撃力あげるの?」
「HP上げたら長期戦になってダルいだけだろ、攻撃力上げろよ」
「・・・攻撃力あげてみたよ、攻撃力上げたら魔法使いが一撃で死んだよ」
「上げすぎなんだろ馬鹿」
「だってそのくらい上げないと他のキャラほとんどダメージ受けないんだもん」
「ダメージの計算式がおかしいんじゃね?」
「はい」
「はいじゃないが」
「いや、ダメージの計算式変えると全体のバランス変わってくるから無理です」
「普通に魔法使いの防御力が低すぎるだけだと思われ」
「そのボス直前の街で買える防具に、魔法使い用のもう1つ上位の防具追加したらどうよ」
「追加しなくてもその防具の防御力上げれば済む話だろ」
「属性防御が付いてる代わりに、防御力低くしてあるんだけど、防御力上げちゃうの?」
「いいから上げろよ」
「・・・防御力上げてみたよ、ボスはちょうどよくなったけど、雑魚戦でダメージほとんど受けないから面白くないんだが」

ってのが延々と続く

619 :デフォルトの名無しさん:2013/05/08(水) 22:06:03.65
int *hoge()
{
int a = 10;
return &a;
}
これってマズい?

620 :デフォルトの名無しさん:2013/05/08(水) 22:11:33.47
>>619
別にコンパイルエラーにはならないと思うよ。
返り値を使わない分にはなんの問題もない。

621 :デフォルトの名無しさん:2013/05/08(水) 22:33:04.89
>>618
逆にいえばゲームデザイナーの意見に口出しできないって事じゃね?

622 :デフォルトの名無しさん:2013/05/08(水) 22:46:10.60
staticだったら使えるの?

623 :デフォルトの名無しさん:2013/05/08(水) 23:30:15.90
無能馬鹿はとっとと死ね
試せばいいだろ無能

624 :デフォルトの名無しさん:2013/05/08(水) 23:38:50.21
>C言語なら俺に聞け

625 :デフォルトの名無しさん:2013/05/08(水) 23:47:45.31
わからないから煽る

626 :デフォルトの名無しさん:2013/05/08(水) 23:54:57.51
>>619
まずい

627 :デフォルトの名無しさん:2013/05/09(木) 00:00:23.89
まずいというか普通そんなコード書かないのでは

628 :デフォルトの名無しさん:2013/05/09(木) 00:01:47.83
ポインタは初心者には難しいから(震え声)

629 :デフォルトの名無しさん:2013/05/09(木) 00:03:46.81
自分でわからないコードは書くな とよく聞くのですが
この「わかる」というのはどの程度までを指すのでしょうか?
極端な話printf("hello");が何をしてるのか私は説明できません
printf()は引数を標準出力に出力する関数だということはわかります。構造はわかりません。
プログラムを理解するというのはどこまで掘り下げればいいのでしょうか?みなさんの意見をお聞かせ下さい。

630 :デフォルトの名無しさん:2013/05/09(木) 00:05:09.40
ロベールのC++教室 - 第8章 アドレスを返す関数 -
http://www7b.biglobe.ne.jp/~robe/cpphtml/html03/cpp03008.html
int* Func()
>{
> int a = 0;
> return &a;
>}
>のようなことは絶対にしてはいけません

631 :デフォルトの名無しさん:2013/05/09(木) 00:15:09.87
だからstaticだったらどうなのよ

632 :デフォルトの名無しさん:2013/05/09(木) 00:27:11.87
スタックポインタを取得するために敢えてそういう事をする可能性もなくはないが、
どう確保されるかよく分からない内部変数よりは
呼び出し規約により位置がはっきり決まる引数の方がよさげ

staticなら別に何ともない

633 :デフォルトの名無しさん:2013/05/09(木) 00:46:28.63
>>629
アセンブリ勉強きて実行ファイル逆アセして読めば?

634 :デフォルトの名無しさん:2013/05/09(木) 02:25:07.91
>>631
strtokやlocaltime, asctime, ctime辺りは、
staticかグローバルか知らないけど
そういうアドレス返しているね。

他にもあったかな?

635 :デフォルトの名無しさん:2013/05/09(木) 11:00:37.10
すみません。さっぱりわかりません。どなたか教えてください><
テキストファイル○○.docを読み込み、fscanf, strlenを使用して、長さが1以上の語の数を数えて出力するプログラムを書きなさい。
ただし、ファイル名の指定は、fopenの引数として直接プログラム中に書いて指定して下さい。(ヒント:テキストの中の単語をfscanfを使って1つずつ読み込み、その長さが2文字以上ならばワード数を1つインクリメントする。)
○文字列の長さを測る方法:strlen()を使用する。
○テキストファイル○○.docには長い英文が書かれている。
よろしくおねがいします。

636 :デフォルトの名無しさん:2013/05/09(木) 11:14:44.99
宿題は宿題スレへ

637 :デフォルトの名無しさん:2013/05/09(木) 11:16:53.58
QZ自演キターww

638 :デフォルトの名無しさん:2013/05/09(木) 11:22:30.70
宿題スレなくなってるのでここで聞きました。どうかお願いします

639 :デフォルトの名無しさん:2013/05/09(木) 11:36:09.85
まもなくQZの自演によるウンコード排出が始まります
とくとご覧あれw

640 :デフォルトの名無しさん:2013/05/09(木) 11:37:00.92
なくなってたら立てればいいじゃない

641 :デフォルトの名無しさん:2013/05/09(木) 11:39:49.74
こうやっていい流れの時に自演宿題して雰囲気を悪くするQZは極悪

642 :デフォルトの名無しさん:2013/05/09(木) 11:42:41.26
>>635
http://ideone.com/L5XpbZ

643 :デフォルトの名無しさん:2013/05/09(木) 11:43:36.56
キターww

644 :デフォルトの名無しさん:2013/05/09(木) 11:47:47.55
>>642
早速の回答本当にありがとうございます。

PS自演とか言って騒いでるやつなにが楽しいの⁈

645 :デフォルトの名無しさん:2013/05/09(木) 12:02:12.93
○○.docが非常に長くて、かつ末尾最適化が効かないコンパイラだったら
スタックオーバーフローを起こすんじゃないの

素直にループ使えないの?

646 :デフォルトの名無しさん:2013/05/09(木) 12:05:08.25
エラーチェックとか入ってないけど非常に素直な書き方で、このまま提出でいいと思う。

647 :デフォルトの名無しさん:2013/05/09(木) 12:09:21.50
なるほど、こうやって潜在的バグを放置するのがQのやり方か

648 :デフォルトの名無しさん:2013/05/09(木) 12:12:15.13
countが初期化されてないからバグってるな。
適当にcount=0;しておいて。

649 :デフォルトの名無しさん:2013/05/09(木) 12:13:45.01
>>646
ほらね
QZがものすごい勢いで書いたからウンコードになる
質問開始から1時間もたっていない

650 :デフォルトの名無しさん:2013/05/09(木) 12:20:32.45
宿題の回答ならこんなもんだろ。

651 :デフォルトの名無しさん:2013/05/09(木) 12:23:43.23
QZの能力の無さを宿題レベルだからあえてそういう風にしたと誤魔化しましたね

652 :デフォルトの名無しさん:2013/05/09(木) 12:25:21.21
ゲーム専門学校に通ってるんですがわからない場所があります
count>=0
count>0
これってどう違うんですか?

653 :デフォルトの名無しさん:2013/05/09(木) 12:26:25.05
無能ゲー専死ね

654 :デフォルトの名無しさん:2013/05/09(木) 12:34:52.58
>>652
上は0以上。
下は1以上。

655 :デフォルトの名無しさん:2013/05/09(木) 12:35:47.04
>>652
上は count が 0 の場合に真だが、
下は count が 0 の場合に偽である。

「より大きい」と「以上」の違い。

656 :デフォルトの名無しさん:2013/05/09(木) 12:36:25.59
>>654
count が int とは限らないでよ。

657 :652:2013/05/09(木) 12:46:23.28
では
count>=-1
count>-1だと?

658 :デフォルトの名無しさん:2013/05/09(木) 12:47:41.51
うわっこんなくだらない奴がCやってんの

659 :デフォルトの名無しさん:2013/05/09(木) 12:48:52.49
>>657
不等号はマイナス値に使うと不定になる。

660 :デフォルトの名無しさん:2013/05/09(木) 12:49:53.87
QZは叩かれると話題を変えたがるから
>>652は自演の可能性がある

661 :デフォルトの名無しさん:2013/05/09(木) 12:52:27.16
ゲーム専門学校は無能だなw
頭腐ってんじゃないの?

662 :デフォルトの名無しさん:2013/05/09(木) 12:53:06.40
そりゃ落ちこぼれが通う場所ですから

663 :デフォルトの名無しさん:2013/05/09(木) 12:57:01.35
QZ以下の知能指数

664 :デフォルトの名無しさん:2013/05/09(木) 13:03:08.65
>>659
んなわけない。

665 :デフォルトの名無しさん:2013/05/09(木) 14:04:50.86
(QZの)嘘を嘘であると見抜けいないと掲示板を使うのは難しい

666 :デフォルトの名無しさん:2013/05/09(木) 15:31:24.24
外部結合、内部結合、無結合について詳しく教えて
意味がわからん

667 :デフォルトの名無しさん:2013/05/09(木) 15:50:15.00
externってよくわからないけど
どこか一つのファイルで実体宣言して参照するファイルでexternで良いの?

668 :666:2013/05/09(木) 16:02:30.52
>>667
あってる実態は何もつけずに宣言
分身にextern

669 :デフォルトの名無しさん:2013/05/09(木) 16:05:25.14
>>667
ttp://www7b.biglobe.ne.jp/~robe/cpphtml/html01/cpp01069.html

670 :デフォルトの名無しさん:2013/05/09(木) 16:29:24.30
C++やん

671 :デフォルトの名無しさん:2013/05/09(木) 18:43:31.26
こんにちは
今大学の研究室にC言語で作成したツールがあります
大体ソースコードが15個、ヘッダーも同じくらいあり、ソースコードは合計1万行くらいあります
このツールは私が研究室に入る前の先輩方が3人で作ったそうです

今回、先生がこのツールを全く新しく作り直したいと言い出し、私一人で同じようなツールを開発することになりました

そこで、既存のツールがどのような処理を行っているか知るためにソースコードを読み始めたのですが、説明などのドキュメントはおろか、ソースコードにコメントは一切書いてありませんでした

また、メイン関数の中身も宣言→よくわからない処理→宣言→関数など、宣言も関数もまとめて書いてあらず、インデントも適当です
変数名、関数名も意味がわかりません

このようなものを解析するには、やっぱり一つ一つ追っていくしかないのでしょうか?

私はC言語で入門書の演習くらいしかやったことがありませんのでこれから勉強をもっとしなければなりませんが、こういうツールを作成するのにオススメの勉強方法などありますか?

672 :デフォルトの名無しさん:2013/05/09(木) 18:47:42.51
>>671
とりあえずコード整形ツール通すのと
構造解析するツールに通しておけば
手間を2割くらい減らせる

あとの8割は……まあガンバレw

673 :デフォルトの名無しさん:2013/05/09(木) 18:50:44.72
目的があってそのプログラムを動かしているんでしょう?
であれば、今までのソースにたよらず動作や原理から仕様を作り新しく組むのが近道です

674 :デフォルトの名無しさん:2013/05/09(木) 18:52:09.41
>>672
ありがとうございます
Cを普通に扱える人だったら、どのくらいで理解できるんですかね...
自分は1ヶ月じゃ無理そうです...

675 :デフォルトの名無しさん:2013/05/09(木) 18:57:11.30
>>673
そうしようと思ったのですが、使えるところは流用しろとのことでして...
また、先輩方3人でアルゴリズムや構造体を考えるのに半年、ツール開発で結局2年かかったとのことだったので、正直しんどいです

676 :デフォルトの名無しさん:2013/05/09(木) 19:01:31.26
doxygenに掛けて一度整理してみろ

677 :デフォルトの名無しさん:2013/05/09(木) 19:04:41.91
まずは教授にこれこれなので無理です、というべきだな
解決案か別の案か何か考えてくれると思うよ

678 :デフォルトの名無しさん:2013/05/09(木) 19:06:31.41
作り直したい理由によるな
もしかしたらラッパー作ればいいだけかもしれん

679 :デフォルトの名無しさん:2013/05/09(木) 19:14:35.53
ここにソース晒さないかぎり正確な答えは得られないわな
今の範囲であれば、やるだけ無駄だから外注に出せ、くらいだ

680 :デフォルトの名無しさん:2013/05/09(木) 19:32:15.09
リファクタリング厨 vs 動いてるなら触るな厨の戦い!

681 :デフォルトの名無しさん:2013/05/09(木) 19:40:37.47
なんで作り直したいのかまず聞くことだな

682 :デフォルトの名無しさん:2013/05/09(木) 19:49:00.97
まあdoxygenとgraphvizで出力してみて、教授と相談すればいい

683 :デフォルトの名無しさん:2013/05/09(木) 20:10:09.56
沢山の返答ありがとうございます!
doxygenというもの使ってみます!
作り直したい理由は、企業からそのツールが欲しいと言われたが今の何て出せるもんじゃないといった理由らしいです
あとは、前提として対応してこなかったものに対して対応できることがわかり、そのためには大幅な改変が必要だからと言った理由です

先生に相談してみます!

684 :デフォルトの名無しさん:2013/05/09(木) 20:14:51.00
言っておくけど、君じゃ4年かかっても無理だよ

685 :デフォルトの名無しさん:2013/05/09(木) 20:19:18.17
っと馬鹿が申しております

686 :デフォルトの名無しさん:2013/05/09(木) 20:21:23.35
>>683
学生が作ったものだからひどいですよwww
って言いながら企業に渡して、企業にリファクタしてもらえ。
当然リファクタ後の使用権と改修権は企業からもらう契約にしてな。
おまえじゃ無理。

687 :デフォルトの名無しさん:2013/05/09(木) 20:29:02.38
ゲー専のバカじゃ無理だからな
文章からしてゲー専

688 :デフォルトの名無しさん:2013/05/09(木) 20:30:19.13
ゲー専の学生ならきれいなコード書くんじゃないの
そもそも専門の教授ってなんだよ

689 :デフォルトの名無しさん:2013/05/09(木) 20:34:28.76
広域変数を動的にメモリ確保ってできる?

690 :デフォルトの名無しさん:2013/05/09(木) 20:35:23.76
>>689
動的に確保したメモリを広域変数に割り当てればいいんじゃね?

691 :デフォルトの名無しさん:2013/05/09(木) 20:52:00.97
>>690
サイズ不定なので不可能です

692 :デフォルトの名無しさん:2013/05/09(木) 21:00:06.32
malloc calloc realloc

693 :デフォルトの名無しさん:2013/05/09(木) 21:00:32.60
char *kuso;
main()
{
kuso=malloc();
}

694 :デフォルトの名無しさん:2013/05/09(木) 21:03:39.58
このmallocが実行されたらどのようにメモリが確保されるから知らない無能ゲーム専門
早く死んだほうがいいよ

695 :デフォルトの名無しさん:2013/05/09(木) 21:08:56.90
alloca malloca valloc

696 :デフォルトの名無しさん:2013/05/09(木) 21:19:49.13
クソコードだけど動くわな
free忘れんなよ

697 :デフォルトの名無しさん:2013/05/09(木) 21:25:35.95
>>683
ソース整形も忘れずに。cならindentコマンドでもいける。
既存動作と比較できるツールも作る必要があると思うので、その分のスケジュールも相談するの忘れずに。
あと、可能なら既存動作を保証できるようにテストを先に作ってから修正始めた方がいい。
よくわからないものを修正するときはその方があとで楽。

698 :デフォルトの名無しさん:2013/05/09(木) 21:45:15.35
>>693
初心者に嘘教えるのが未だに居るな。

699 :デフォルトの名無しさん:2013/05/09(木) 21:52:40.26
もうC諦めてC++にしろ

700 :デフォルトの名無しさん:2013/05/09(木) 21:57:43.82
>>698
それは聞き捨てならんな
・グローバル
・サイズ不定
というオーダーを満たしてやったうえ
変数名に心を込めたんだぞ

701 :デフォルトの名無しさん:2013/05/09(木) 22:23:18.69
>>700
引数くらい書けや

702 :デフォルトの名無しさん:2013/05/09(木) 22:59:19.13
>>701
どうでもいいことで煽るなよ。

703 :デフォルトの名無しさん:2013/05/10(金) 00:29:43.30
array=malloc(sizeof(int)*n*2)で確保したものって
array[n][n]みたいな使い方できる?
型はint

704 :デフォルトの名無しさん:2013/05/10(金) 00:35:23.40
[n][n] だと n*n の器が必要だぜ

int *array = (int*)malloc(sizeof(int)*n*n);
[i][j] 番目 array[i*n + j]

どうしても array[i][j] と記述したいんだー ってんならポインタ配列にでも

705 :デフォルトの名無しさん:2013/05/10(金) 00:39:13.37
>>704
それで良いです
ありがとう

706 :デフォルトの名無しさん:2013/05/10(金) 13:44:44.96


707 :デフォルトの名無しさん:2013/05/10(金) 13:48:24.87
内部結合
他のモジュール内部を直接参照したり、一部を共有する。
http://mt-net.vis.ne.jp/ADFE_mail/0322.htm

ってあるけどCで書くとどんな感じ?

708 :デフォルトの名無しさん:2013/05/10(金) 14:45:53.05
>>707
普通の関数コール

709 :デフォルトの名無しさん:2013/05/10(金) 14:53:39.27
>>708
それはデータ結合と違うの?
引数渡すのがデータ結合らしいけど>>708の関数コールもデータ結合と同じじゃない?
test(a,b,c);みたいに引数送るときに呼び出してるし

関数コールって引数渡さずに関数だけ実行?
よくわからん

710 :デフォルトの名無しさん:2013/05/10(金) 15:00:15.67
>>707
localtime
strtok

711 :デフォルトの名無しさん:2013/05/10(金) 15:01:04.13
データ結合:引数に値渡し
スタンプ結合:構造体を渡す
制御結合:制御にかかわる引数を渡す、渡す先のモジュールのif文なのどのflag
外部結合:別モジュールのグローバル変数を参照
共通結合:別モジュールのグローバルな構造体を参照

内部結合だけがよくわからん
>>708>>710の単語じゃわからない

712 :デフォルトの名無しさん:2013/05/10(金) 15:11:05.86
データ結合はファイルとかDBを介する奴じゃないの

713 :デフォルトの名無しさん:2013/05/10(金) 15:36:10.12
>>703
#define ][ *n+

array[x][y]

714 :デフォルトの名無しさん:2013/05/10(金) 17:45:15.39
>>711
関数内 static を暗に使いまわすようなのじゃない?

int *foo() { static int bar; return &bar; }

こんなのとか

715 :デフォルトの名無しさん:2013/05/10(金) 18:14:49.04
>>711
おまえの言ってることをマネしてあげよう
共有結合
金属結合
イオン結合
ファンデルワールス結合

炭素言語なら俺に聞け

716 :デフォルトの名無しさん:2013/05/10(金) 18:18:15.33
>>707
モジュールの定義がよく分からんな
Cだとソースファイルのことじゃないか?
関数だとローカルしかないわな

717 :デフォルトの名無しさん:2013/05/10(金) 18:27:19.87
ググったら、こんなのがあった
http://members3.jcom.home.ne.jp/daruma_kyo/aboutooa/module_cohesion_coupling.html

>>707
内容結合 絶対番地を用いて直接相手モジュールを参照したり、相手モジュールに直接分岐する。
Cでも書けるだろうけど、まあアセンブラとかの話かな

718 :デフォルトの名無しさん:2013/05/10(金) 19:10:31.81
アセンブラでいうなら public シンボルと、そうでないラベルだね

719 :デフォルトの名無しさん:2013/05/10(金) 19:20:31.58
とりあえず整理してみたけど

>内容結合 他のモジュールの内部を直接参照している
>絶対番地を用いて直接相手モジュールを参照したり、相手モジュールに直接分岐する。

main.c 他モジュール(mod.c)だとしたら
mod.cの内部を直接参照するっていうのがイマイチわからん

720 :デフォルトの名無しさん:2013/05/10(金) 19:24:16.02
内部って何だよ抽象的すぎだろw

721 :デフォルトの名無しさん:2013/05/10(金) 19:33:50.79
>>719
それは外部結合

722 :デフォルトの名無しさん:2013/05/10(金) 19:35:35.52
>>714
それをソースファイル別に書いてみてくれない?
なんか近い気がする

レベル6:内容結合

 これは、自身の所有するデータが、他の関数から直接操作される状態です。アセンブラの時代には、しばしば見られましたが、今日の言語ではあまり見かけなくなりました。
しかしながら「C言語」などで、自身のローカル変数のアドレスを下位の関数に渡し、そこからポインタを介して直接データを返してもらうような処理は珍しくはありません。
その場合、そのための専用のローカル変数を用意すれば問題ないのですが、それが面倒とばかり
直接アルゴリズムに関わっているローカル変数のアドレスを渡してしまうケースは、「内容結合的」でもありますので、注意して下さい。

723 :デフォルトの名無しさん:2013/05/10(金) 20:59:13.93
内容結合って、モジュールが関数とするとこんなのか?
static int flg = 0;
void foo(void)
{
  flg = 1;
  goto A;
B:
  flg = 0;
}
void bar(void)
{
  static int baz = 0;
A:
  baz = 1;
  if (flg)
    goto B;
}

724 :デフォルトの名無しさん:2013/05/10(金) 21:02:30.51
>>722
>直接アルゴリズムに関わっているローカル変数のアドレスを渡してしまうケースは、「内容結合的」でもありますので
これは普通にやるような気がするが、ダメなのかね
void foo(void)
{
  int flg = 0;
  bar(&flg);
  if (flg)
    hoge();
  else
    hage();
}
void bar(int* baz)
{
  *baz = 1;
}

そもそもデータ結合と制御結合ってのに差があるのが分からん

725 :デフォルトの名無しさん:2013/05/10(金) 21:06:08.77
>>724
組み込み系のプログラム?

726 :デフォルトの名無しさん:2013/05/10(金) 21:11:35.65
現役も理解してないだろう

727 :デフォルトの名無しさん:2013/05/10(金) 21:13:08.51
>>725
組み込みだとercd = wai_flg(ID, 0xFFFF, TWF_ORW, &ptn );みたいなのあるね
ptnにフラグ受信パターンが入ってそれで制御とか、ありがち

728 :デフォルトの名無しさん:2013/05/10(金) 21:20:46.50
内部結合の話からずいぶん逸れたな
はっきり言って全然関係ない

729 :デフォルトの名無しさん:2013/05/10(金) 21:23:05.77
クソIPAもちゃんとコードで書き示しとけよ
参考書もばらばらネットの情報もばらばら
本当に簡便

暗記になってしまうんだよ

730 :デフォルトの名無しさん:2013/05/10(金) 21:41:50.61
int x(double **a)
{
a[1][1]=0.1;//単に二次元配列だという事を言いたかっただけ。
}

こういう二次元配列を関数で扱うとき、呼び出すときどうしたらいいですか?
x(a);じゃエラーが出るんですが.....

確か配列の場合呼び出す時x(a);でよかった気がするんですが二重ポインタ
の場合はダメなんですかね?

731 :デフォルトの名無しさん:2013/05/10(金) 21:46:07.69
>>730
それ二次元配列じゃなくてポインタのポインタだろ
関数の入り口見れば分かるはず

a[1][1]のように一見二次元配列と同じ書き方ができるので同一の物だと
勘違いしやすいが、生成されるコードは恐らく全然違う

まずポインタ配列の一つを取り出し、そのアドレスを行と見做して列の
1次元配列をアクセスするという二段階アクセスのコードに多分なるだろう

732 :デフォルトの名無しさん:2013/05/10(金) 21:48:37.85
int x(double (*p)[10])
とかじゃねえの?
しょべえなこいつ

733 :デフォルトの名無しさん:2013/05/10(金) 21:50:09.79
>>731
そうなんですか...では
どうよびだしたらいいですか?
int main(void)
{
double a[3][3];
x(a);//←エラー
x(a[]);//←エラー
x(*a);//←エラー
x(&a);//←エラー
x(&&a);//←エラー
x(a[][]);//←エラー
}
int x(double **a)
{
a[1][1]=0.1;
}

全部エラーです。x関数自体は間違っていません。

734 :デフォルトの名無しさん:2013/05/10(金) 21:55:18.43
>>733
コンパイル通してみた
#include <stdio.h>
#include <stdlib.h>

double test_test(double[][2]);

int main(void) {
  double test[][2] = {{1,2}, {3,4}};

  puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
  printf("test: %f.", test_test(test));
  return EXIT_SUCCESS;
}

double test_test(double test[][2])
{
  return test[0][1];
}

735 :デフォルトの名無しさん:2013/05/10(金) 21:58:24.73
>>734
関数は変えないでmainの中でどうすればいいですかね?
関数自体は自作ではなく何の問題も無いコードですから。

736 :デフォルトの名無しさん:2013/05/10(金) 21:59:28.25
無能ゲー専死ね

737 :デフォルトの名無しさん:2013/05/10(金) 22:05:09.43
>>735
つまんね死ね

738 :デフォルトの名無しさん:2013/05/10(金) 22:11:39.11
>>730
よく意味がわからないんですが、関数 x の返り値は何ですか?
あるいはこんなことがしたいんですか?
http://codepad.org/HDMMSTVX

739 :デフォルトの名無しさん:2013/05/10(金) 22:13:06.41
>>730
実体を double a[M][N]; と二次元配列で定義せず、
double **a; の a に、double型[M][N]のサイズのメモリを割り当てて、
それをアクセスする。

具体的には
ttp://ideone.com/m7HYw4
みたいにする。俺は。
(>>738と同じ理屈)

740 :デフォルトの名無しさん:2013/05/10(金) 22:14:56.38
キチガイ質問者

741 :デフォルトの名無しさん:2013/05/10(金) 22:15:16.49
>>738
void (double **a){//関数の中でaは二次元配列}
となってるときmainからどういう書式で引数を渡せばいいか
知りたいだけです。関数の中でやってる事は分かりますので言いません。

742 :デフォルトの名無しさん:2013/05/10(金) 22:18:37.68
死ね

743 :デフォルトの名無しさん:2013/05/10(金) 22:19:35.01
>>739
ありがとうございます。
main内部で値を入力(初期値代入)してから関数呼び出したいんですが
その場合は

double **a;
a[0][1]=1.0;
としても大丈夫なのでしょうか?

744 :デフォルトの名無しさん:2013/05/10(金) 22:24:17.84
>>742
最近プログラム板にこういう暴言増えたね。
ここだけじゃなくて他のスレでも。
同じ奴なんだろうなwww

745 :738:2013/05/10(金) 22:25:17.59
>>743
>main内部で値を入力(初期値代入)してから関数呼び出したいんですが
つまり、
main() で二次元配列を初期化してからその二次元配列を関数x に渡し、関数 x 内では渡された二次元配列を使う、ということでいいですか?
もしそうならば、関数 x の中で使う二次元配列のサイズのサイズは具体的にはどれくらいが必要でしょうか?○×○の○はいくつですか?

746 :739:2013/05/10(金) 22:25:38.83
>>743
> main内部で値を入力(初期値代入)してから関数呼び出したいんですが

それは >>739 のコードにも書いてあるとおり、
メモリ確保した後に代入すれば良いです

747 :739:2013/05/10(金) 22:28:14.40
>>743
> main内部で値を入力(初期値代入)してから関数呼び出したいんですが

ちなみに静的に初期化したいのであれば、>>738の方法がスマートだと思います

748 :739:2013/05/10(金) 22:29:28.83
>>747
× 静的に初期化
○ 静的に確保

749 :デフォルトの名無しさん:2013/05/10(金) 22:34:47.34
738
739
さんありがとうございます。
ちょっと考えて見ます。

750 :デフォルトの名無しさん:2013/05/10(金) 22:42:45.51
int compare_int(const void *a, const void *b)
{
return *(int*)a - *(int*)b;
}

これ何で引いてるの?
>
<
とどう違うの?

751 :デフォルトの名無しさん:2013/05/10(金) 22:47:21.91
>>750
> これ何で引いてるの?

大小を比較するため

752 :デフォルトの名無しさん:2013/05/10(金) 22:57:56.90
やっぱり分かりません。
double **a;
a[0][0]=1.0;
return 0;


コンパイルはできますが、
Segmataion faultがおきます。
何故でしょう?

753 :デフォルトの名無しさん:2013/05/10(金) 23:02:52.72
>>745
サイズは適当に20*20くらいでいいですね。
とにかく二次元配列をmainで作って関数に渡したいです。
double**a;
a[0][1]=1.0;
は何故コンパイル成功するのに実行エラーなんでしょう?
代入される値に問題もないしインデックスもアクセスできない
範囲ではないと思うし。

754 :デフォルトの名無しさん:2013/05/10(金) 23:03:26.75
>>752
基礎からやり直して

755 :デフォルトの名無しさん:2013/05/10(金) 23:09:22.47
>>751
><と同じ理由は?

756 :デフォルトの名無しさん:2013/05/10(金) 23:09:59.20
752=無能ゲーム専門学校(笑)のバカだから死んだほうがいいよ

757 :デフォルトの名無しさん:2013/05/10(金) 23:15:09.42
>>756
性格悪いなぁー
リアルでも平気で人に死ねっていうんか?
言うんだろうな

758 :デフォルトの名無しさん:2013/05/10(金) 23:16:35.23
>>756 はお花畑で幸せそうだな
周りに不幸を撒き散らしてるけど

759 :デフォルトの名無しさん:2013/05/10(金) 23:19:42.81
プログラム板って特に暴言吐く奴多くない?ゲーム板だとそんなないぞ?

760 :デフォルトの名無しさん:2013/05/10(金) 23:21:14.47
多いっていうか、IDないからわからないけど暴言吐いてるのは
ぼぼ一人だけだから。

761 :デフォルトの名無しさん:2013/05/10(金) 23:23:04.05
>>752
コンパイルオプション付けて、警告、エラーを出してみなよ。

762 :738 ◆QZaw55cn4c :2013/05/10(金) 23:29:05.91
>>753
じゃあこれで
http://codepad.org/WbYjbaN5

>double**a;
>a[0][1]=1.0;
>は何故コンパイル成功するのに実行エラーなんでしょう?

今はただ、
「double *a と double a[] は交換可能の場合もあるが、double **a と double a[][] は絶対に交換可能にはなりえない」
とだけ申し上げておきましょうか。
上の codepad でも

static double *a[N];
for (i = 0; i < N; i++)
a[i] = &b[i * M];

が存在している理由がまさしくこれです。詳しくは C FAQ http://www.kouno.jp/home/c_faq/c6.html#0 にあるとおり、時期がくればわかるようになるかと。

763 :デフォルトの名無しさん:2013/05/10(金) 23:40:17.31
return *(int*)a - *(int*)b;
aの値とbの値は配列の隣接する要素ですか?
4, 2, 3, 6, 3, 2, 1, 3, 5, 7
a=4
b=2
であってるでしょうか?

764 :デフォルトの名無しさん:2013/05/10(金) 23:47:46.71
>>763
> aの値とbの値は配列の隣接する要素ですか?

呼び元でそう指定すればそうなるし、
そう指定しなければそうならない。

765 :デフォルトの名無しさん:2013/05/10(金) 23:52:04.80
>>764
4-2で正の値ですが正の値を返すとどうなるんですか?
負の数も0も返した後の処理がわからないんですが
どのような勝利を行っているんでしょうか?

*a が *b よりも先であるとき 負の値
*a と *b とのどちらが先でもいいとき  0
*a が *b よりも後であるとき 正の値

766 :デフォルトの名無しさん:2013/05/11(土) 00:25:56.89
>>765
ん?

return *(int*)a - *(int*)b;

は、
[ポインタ値(アドレス) a に入っている int値] - [ポインタ値(アドレス) b に入っている int値]
でしょ

767 :デフォルトの名無しさん:2013/05/11(土) 00:27:53.28
つまり未定義動作を含むということだ

768 :デフォルトの名無しさん:2013/05/11(土) 00:29:50.17
>>766
aの値とbの値は配列が4, 2, 3, 6, 3, 2, 1, 3, 5, 7であれば
a=4
b=2で

4-2=2ですよね?
2で正の数になりますけど正の数と不の数と0の違いを返すとどういう動作をするのでしょうか?

769 :デフォルトの名無しさん:2013/05/11(土) 00:31:35.39
a-b , a>b 昇順
b-a, a<b  降順

これはそのまま覚えていますが
なぜこうなるのか意味がわかりません

770 :デフォルトの名無しさん:2013/05/11(土) 02:28:35.39
>>768
> aの値とbの値は配列が4, 2, 3, 6, 3, 2, 1, 3, 5, 7であれば
> a=4
> b=2で

違います。

>>750の続きだと思うけど、
a と b には、呼び元が
int compare_int(const void *a, const void *b)
を呼ぶときに第一第二引数それぞれに指定した「アドレス値」が入ります。

compare_int();は、
a, b それぞれのアドレスにあるデータを int値と判断して引き算し、
その結果を返すだけです。

compare_int();は、配列とか意識していません。
指示されたことをやっているだけです。

771 :デフォルトの名無しさん:2013/05/11(土) 04:26:57.33
アプリケーション終了しようと思って×押したら
ウインドウは消えるのにプロセス消えねーぞ糞が

と思って調べたら終了処理のfreeで止まってた
初期化のバグで宣言しただけのポインタのアドレスを渡してた
条件分岐で基本はmallocやって、使わない場合はNULLを入れるってコード書いてたけど
バグでどっちも通ってなかった
そういう場合は止まるのかよ糞が

最初は見当がつかなくてかなり焦ったんだけど
こういうことが起きないようにする方法を教えまくってください

772 :デフォルトの名無しさん:2013/05/11(土) 04:34:04.37
>>771
アプリ起動時に必ず処理される初期化部分で、
使わない場合のNULL初期化をあらかじめしておくのは?

773 :デフォルトの名無しさん:2013/05/11(土) 05:12:48.88
>>771
malloc()/free() や new/delete をラップして使え
free() に渡そうとしているポインタが、かつて malloc() から取得したポインタかどうかを逐一チェックしておく
二重解放バグの検出にもなる
リリースのときはとりはずせばいい

774 :デフォルトの名無しさん:2013/05/11(土) 05:14:26.98
Qのようにxalloc()とか(笑)

775 :デフォルトの名無しさん:2013/05/11(土) 05:19:03.43
やっぱID必要だね。このコテハン大好き馬鹿が荒らす限り。

776 :デフォルトの名無しさん:2013/05/11(土) 05:23:05.58
>>775
悔しかったの?

777 :デフォルトの名無しさん:2013/05/11(土) 05:34:03.87
>>774
アレはひどい

778 :デフォルトの名無しさん:2013/05/11(土) 08:56:53.20
>>774=775

779 :デフォルトの名無しさん:2013/05/11(土) 09:09:24.26
>>769
大小比較を引き算で代用するのは望ましくない
正しく求まらないケースがあるぜ

※ int が 8bit 符号付の系(-128 〜 127) だとして
 a = 100, b = -100 の場合
 引き算すると 200 がオーバーフローして -56 になる
 a > b なのに a-b の値は負

780 :デフォルトの名無しさん:2013/05/11(土) 09:13:00.26
>>779
たしかにそういうときはキャリーフラグではなくて別途設けられたオーバーフローフラグを使うよねマシン語でも

781 :デフォルトの名無しさん:2013/05/11(土) 10:06:17.57
>>770
そんなの知ってんだけど
アドレスにあるデータはなんなのよ

782 :デフォルトの名無しさん:2013/05/11(土) 10:10:29.79
>>781
アドレスにあるデータは、compare_int();に指定されたアドレスにあるものです。

彼(あなた?)の質問内容では、compare_int();に配列が指定されているのか
何が指定されているのかはうかがい知ることは出来ません。

783 :デフォルトの名無しさん:2013/05/11(土) 10:11:59.41
>>1
> ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

と書いてある通り、★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい

784 :デフォルトの名無しさん:2013/05/11(土) 10:14:15.13
別に必須じゃないけどね

785 :デフォルトの名無しさん:2013/05/11(土) 10:22:15.44
>>781
int A[10];
int B, C;

呼び出し側
A[0] と A[1] の大小を比較したい
compare_int(A, A+1); /* compare_int(&A[0], &A[1]); */

B と C の大小を比較したい
compare_int(&B, &C);

呼び出された側
int compare_int(const int *a, const int *b)
a、b からは 配列の一部の位置 なのか 単変数のポインタなのか知る術はない

-----------
ソートかなんかの途中で出てきたんだろうな....
値の比較を、関数をコールバックにし呼び出し元側にまるなげしといて
要素の交換戦略を記述するっていう

786 :デフォルトの名無しさん:2013/05/11(土) 10:37:10.42
>>785
a>b 昇順
a<b 降順
a-b 昇順
b-a 昇順

になる理由は?
決まってるもの?

787 :デフォルトの名無しさん:2013/05/11(土) 10:54:24.32
そんなC言語の限界みたいなクソコード書いてないで、リーダブルコードでも読んで真っ当になれよ

788 :デフォルトの名無しさん:2013/05/11(土) 12:26:16.40
jpeg画像をバイナリファイルで開く方法ないですかね?
なければCで組みたいんですが.......

789 :デフォルトの名無しさん:2013/05/11(土) 12:31:05.33
788=無能ゲー専死ね

790 :デフォルトの名無しさん:2013/05/11(土) 12:48:07.84
>>788
Stirling

791 :デフォルトの名無しさん:2013/05/11(土) 13:31:25.13
>>786
色々前提を省略して質問してるが....
昇順/降順の並べ替えを行うのはソート関数(多分 標準関数の qsort だと思われる)

qsort の約束では コールバック関数の戻り値(≒ compare_int の戻り値)が
 正の場合には b が先行するように
 負の場合には a が先行するように
 0の場合には 不定(a が先行か bが先行かはわからい)
に並べ替える

a と b を比較し、望みの順序となるよう 正または負または0の値を作りなさい

ただそれだけ。

792 :デフォルトの名無しさん:2013/05/11(土) 13:35:09.18
>>788
fopenでふつーにバイナリモード使えるが?

793 :デフォルトの名無しさん:2013/05/11(土) 13:44:51.48
>>790
ありがとうございます。
>>792
そうなんですか?
やってみます。

794 :デフォルトの名無しさん:2013/05/11(土) 14:11:04.36
バイナリエディタを知らないのにバイナリを見てどうするつもりなのか

795 :デフォルトの名無しさん:2013/05/11(土) 14:13:23.55
また変なこと言ってる
バイナリエディタは関係なかろうが

796 :デフォルトの名無しさん:2013/05/11(土) 14:18:09.84
次はエンディアンの不毛な議論が始まります。

797 :デフォルトの名無しさん:2013/05/11(土) 15:03:08.25
バイトオーダー

798 :デフォルトの名無しさん:2013/05/11(土) 16:05:38.01
動的に宣言した配列を1で初期化する方法教えてください

799 :デフォルトの名無しさん:2013/05/11(土) 16:06:10.80
int型です

800 :デフォルトの名無しさん:2013/05/11(土) 16:07:47.81
>>799
for (i = 0; i < SIZE; i++) p[i] = 1;

801 :デフォルトの名無しさん:2013/05/11(土) 16:08:56.56
やっぱりそれしかないですか
ありがとうございます

802 :デフォルトの名無しさん:2013/05/11(土) 16:10:21.75
memset((char *)p, 1, SIZE * sizeof(p[0]));

803 :デフォルトの名無しさん:2013/05/11(土) 16:21:39.75
>>802
それだと1byte毎に1で初期化されて
0x01010101にならないの?

804 :デフォルトの名無しさん:2013/05/11(土) 16:27:59.90
>>802
http://codepad.org/s0irEBN0
あれ?

805 :デフォルトの名無しさん:2013/05/11(土) 16:29:27.00
The memset function copies the value of c (converted to an unsigned char) into each of the ?rst n characters of the object pointed to by s.

806 :デフォルトの名無しさん:2013/05/11(土) 16:37:53.14
>>804
関係ないけど #define しといて 10 とか書くなよ

807 :デフォルトの名無しさん:2013/05/11(土) 16:44:40.93
>>806
ご指摘感謝〜

808 :デフォルトの名無しさん:2013/05/11(土) 18:16:44.32
>>804
http://codepad.org/tQlLzLl9

809 :デフォルトの名無しさん:2013/05/11(土) 18:43:55.78
大学の課題です。
非負の要素数10個のint型配列xがあって要素は
x[10]={23,46,124,988,786,12,111,123,444332,90};
とします。非負であれば何でもいいです。
この時データを圧縮して再現できるように
するにはどうしたらいいですか?アルゴリズム、それに伴うデータ構造
は何でもいいとします。

どうすれば良いでしょう?
自分の考えは10個の数値を全部足して、オーバーフローすれば
その分を別に保存するというやり方なんですがダメでしょうか?
xsub[3];として
xsub[0]=x[0]+x[1]...x[5];
xsub[1]=x[6]+.....x[9];

810 :デフォルトの名無しさん:2013/05/11(土) 18:49:07.73
圧縮ってどのように圧縮したいの

811 :デフォルトの名無しさん:2013/05/11(土) 18:54:57.00
>>810
それは自由です。色々なやり方で。今回はファイルとかを保存するんじゃなくて
Cプログラムで使用するデータを別の形で保存するという形式ですね。

812 :デフォルトの名無しさん:2013/05/11(土) 18:55:12.40
>>809
> xsub[3];として
> xsub[0]=x[0]+x[1]...x[5];
> xsub[1]=x[6]+.....x[9];

それで元に戻せるのだろうか。。

俺だったら、x[10];は32bit×10 = 320個のbit列と考えて、
それを圧縮するな。

813 :デフォルトの名無しさん:2013/05/11(土) 18:57:21.04
だからx[0]が欲しい時は
a=xsub(-,-,-,...);/*x[0]の値を代入*/
でいつでも呼び出せるみたいな感じに出来たらいいなと思います。

814 :デフォルトの名無しさん:2013/05/11(土) 18:57:44.60
>>809
それどうやって解凍すんのさ

815 :デフォルトの名無しさん:2013/05/11(土) 18:58:18.03
[2,3]と[3,2]のちがいがわからない
って通りすがりの小学生がゆってた

816 :デフォルトの名無しさん:2013/05/11(土) 18:59:05.07
どうやってもいいんならプロシージャに値保存すればいいよな
そうすればインデックス入れて置くだけでいい

817 :デフォルトの名無しさん:2013/05/11(土) 19:05:08.41
全てを二進に変換
char型配列にsprntfで結合
符号化圧縮
数値へ変換

宿題ならこの程度でいいでしょ

818 :デフォルトの名無しさん:2013/05/11(土) 19:07:54.77
気を付けるのは文字列結合するときに桁揃えること
そうすれば復元するときにsizeof(int)単位で区切ればいい

819 :デフォルトの名無しさん:2013/05/11(土) 19:10:29.15
unsigned int[10]の可逆圧縮ねぇ。
下手すると辞書サイズと圧縮データあわせて元のデータより
大きくなることもあるからめんどくさいね。

820 :デフォルトの名無しさん:2013/05/11(土) 19:13:32.29
>>809
最初の要素を1バイトずつ分解
0x00 0x00 0x00 0x17
頭に0が何回来たかを、0x00 回数で表す
0x00 0x03 0x17
復元時は先頭から、0x00を読み込んだら、次のバイトの回数0繰り返し
くらいでいいんじゃね
非負だし

821 :デフォルトの名無しさん:2013/05/11(土) 19:14:00.26
元が可読文字限定みたいに範囲が限られてなければ
元より大きくなるケースは仕方ない

822 :デフォルトの名無しさん:2013/05/11(土) 19:14:37.70
ソースデータが固定の数値だったらやりようはあるかな。

823 :デフォルトの名無しさん:2013/05/11(土) 19:18:54.35
データがたったの10個で、範囲が非負ってだけだから難しいね。

824 :デフォルトの名無しさん:2013/05/11(土) 19:19:58.41
x[10];は
最小値 12
最大値 444332
なので、1要素辺り 0〜444320 表現できれば良い
つまり 1要素辺り 19bit あれば良い

x[10];を表現するのに必要なのは、
32bit : 最小値 12 を格納
5bit : 各要素のビット数 19を格納
19bit × 10要素
==> 227bit
約 70.9%に圧縮できる。

こういうのはどう?

825 :デフォルトの名無しさん:2013/05/11(土) 19:21:14.93
>>804>>808

malloc()がプロトタイプ宣言がない関数って出てとっても危なっかしいんですけど

#include <stdlib.h> を入れて欲しいなあ

826 :デフォルトの名無しさん:2013/05/11(土) 19:21:39.45
>>824
ソースデータが19bit以下という保証があればいいんじゃないかな。

827 :デフォルトの名無しさん:2013/05/11(土) 19:23:38.13
RLEで十分だよ
連続性少なそうだから、0だけを圧縮する数値として、圧縮符号分を節約する

828 :デフォルトの名無しさん:2013/05/11(土) 19:25:05.22
>>826
ソースデータによって、各要素に必要なbit数は変動

829 :809:2013/05/11(土) 19:28:12.83
3分の1以下は無理ですかね?
zipだと10分の1以下だし、あれどんな仕組みなんでしょう。

830 :デフォルトの名無しさん:2013/05/11(土) 19:30:12.38
>>829
可逆圧縮の仕組みは基本的に辞書+圧縮データの形。
ただ今回はソースが40byteと非常に小さいので、下手すると
辞書サイズと圧縮データサイズで元データを超えることがある。
これを避けるには何らかの前提条件が必要だし、普通はそれ
があるはずなんだけど、本当に出題はそれだけ?

831 :809:2013/05/11(土) 19:35:01.47
なるほどデータが小さいと圧縮の効率が悪いんですか。

832 :デフォルトの名無しさん:2013/05/11(土) 19:35:13.24
大学のフリりした無能ゲー専だよそいつ

833 :デフォルトの名無しさん:2013/05/11(土) 19:37:08.36
>>831
その10*sizeof(int)のデータ作って自分で圧縮してみれば?

834 :809:2013/05/11(土) 19:40:43.27
とりあえず10個のサンプルで試してみただけで実際は要素数を自由に
変えてOKだそうです。ただ非負という条件はそのままです。
辞書って何ですか?

835 :デフォルトの名無しさん:2013/05/11(土) 19:47:20.50
だからRLEでいいっての
辞書とか言ってるけど、具体策出ねえじゃんか

836 :デフォルトの名無しさん:2013/05/11(土) 19:48:35.81
データ10コで非負なら10bitは確実に圧縮できるな。

837 :デフォルトの名無しさん:2013/05/11(土) 19:48:41.71
無能ゴミカス乙

838 :デフォルトの名無しさん:2013/05/11(土) 19:49:48.95
>>834
byte pair encodingでgoogle検索してこい。
そして二度と帰ってくるな。

839 :デフォルトの名無しさん:2013/05/11(土) 19:52:08.07
ゴミクズ無能は本当に死ね
俺は質問してるけど叩かれない
叩いてるやつは全部俺だから

840 :デフォルトの名無しさん:2013/05/11(土) 19:52:30.37
int x[10]={23,46,124,988,786,12,111,123,444332,90};
unsigned short y[10];
for (i=0; i<10; i++)
y[10] = x[10];

841 :771:2013/05/11(土) 19:52:55.03
>>772
初期化処理にその条件分岐があるからその直前に入れることになる
//初期化
m = NULL;
if (条件1){
  if (条件2) m = (int*)malloc( sizeof( int ) * 200 );
  else m = NULL;
}
こうか?嫌だよm=NULLが頻繁に出てなんかダサいじゃん
実際は条件2の前にちょっと処理あってそれが条件2に影響するからif ( 条件1 && 条件2 )みたいにまとめられねーしダサすぎよって却下
・・・・と言いたいところだがバグ出してfreeでプロセス残って発狂したので文句はありません
これでいきます

>>773
聞いた感じ良さそうだけど具体的にどんなラッパーを作ればいいかよく分からない
とりあえず>>772のエキセントリックな案でいきます

ありがとうございました

842 :デフォルトの名無しさん:2013/05/11(土) 19:54:20.52
>>839
それって水遁依頼出してきてもいいってことだね?

843 :デフォルトの名無しさん:2013/05/11(土) 20:04:46.64
忍法帖沢山あるのでがんばれよゴミ
無能

844 :デフォルトの名無しさん:2013/05/11(土) 20:04:56.35
>>841
それelseいらねえじゃんか
だっせー

845 :デフォルトの名無しさん:2013/05/11(土) 20:12:55.54
>>841
//初期化
m = NULL;
if (条件1 && 条件2)
  m = (int*)malloc( sizeof( int ) * 200 );

ネスト浅くなってよかったね!

846 :デフォルトの名無しさん:2013/05/11(土) 21:10:32.50
>>836
そういう出題意図だったのか

847 :809:2013/05/11(土) 22:49:38.55
馬鹿にされるかもしれませんがこれダメですかね?
a[0]=1234;
a[1]=3456;
a[2]=899;
a[3]=90000;

c[0]=12343456;
c[1]=89990000;

これじゃダメですか?
どうやって再現できるか分かりませんけど。

848 :デフォルトの名無しさん:2013/05/11(土) 22:55:02.10
お前はCやるな無能

849 :デフォルトの名無しさん:2013/05/11(土) 22:56:58.09
>>848=>>843=>>839=>>837=>>832

850 :デフォルトの名無しさん:2013/05/11(土) 22:58:20.50
>>847
数値が4桁以下とかそういう条件があればそれでもできる。

851 :809:2013/05/11(土) 23:01:58.93
>>850
そうなんですか。ありがとうございます。
他にいい方法ないですかね?

852 :デフォルトの名無しさん:2013/05/11(土) 23:14:41.71
int を 32bit として
元 32bit x 10個 → 320bit (40 byte)
非負前提ならば 31bit x 10個 → 310bit (38.75: 39 byte)
最上位bit を切り詰めて保持すれば 1byte 減らせるじゃん

31bit 抜き出して 最上位0 補うだけで元に戻るし 可逆圧縮だぞ

853 :809:2013/05/11(土) 23:27:15.52
>>852
3.9バイトの型ってありますかね?
詳しく教えて下さい。

854 :809:2013/05/11(土) 23:32:13.10
ビット操作が必要ってことですかね?
かなりややこしくなりそうな気がしますが。

855 :デフォルトの名無しさん:2013/05/11(土) 23:32:17.81
んなもんは無い
38.75 byte を切り上げて 39 byte にしてるだけ
39 byte (312 bit) のうち どこかの2bit は使わない

宿題スレ行ったら?

856 :デフォルトの名無しさん:2013/05/11(土) 23:38:05.01
ビット操作を嫌がって圧縮ができるか このア(自粛

857 :デフォルトの名無しさん:2013/05/11(土) 23:55:47.37
C言語で中間表現(中間言語)ってやつを見てみたいのですが
gccでコンパイルする場合どうやれば見れますか?

http://blog.kmckk.com/archives/1263971.html
-save-tempsで中間ファイルとあるのですが、やってみたら*.iという拡張子のファイルができていました
これは中間言語とは別っぽいんですが
見れたりするのでしょうか?教えてください

858 :デフォルトの名無しさん:2013/05/11(土) 23:58:51.28
gcc 内部の中間表現は複雑なグラフなんじゃないの?
最近の gcc では -flto オプションを付けると .o の中に一緒に埋め込まれるはずだが、
人がそのまま見て読めるようなシロモノじゃない。

859 :デフォルトの名無しさん:2013/05/12(日) 00:03:44.82
*.i はプリプロセッサの単純置換
中間コードを見たいなら LLVM/clang の方がいい

860 :デフォルトの名無しさん:2013/05/12(日) 00:11:11.63
>>858
ありがとう
試してみたけど読めなかった
意味解析で中間言語RTLができると理解しとく

861 :デフォルトの名無しさん:2013/05/12(日) 00:16:36.43
clang入れてやってみるか

862 :デフォルトの名無しさん:2013/05/12(日) 03:10:18.32
RLEだとデータによっちゃサイズ増えるけどどうかね
http://codepad.org/Ye6NkSkN

863 :デフォルトの名無しさん:2013/05/12(日) 03:10:41.36
バグ取れずに土曜日が終わった

864 :デフォルトの名無しさん:2013/05/12(日) 08:50:34.45
Cのポインタ関連って特殊な場面を除けばUNIXのようなOSを書くために強力かつ原始的(?)であるという解釈ってあってますか?

C言語初心者でC#は軽く触ったことがあります

865 :デフォルトの名無しさん:2013/05/12(日) 09:06:33.53
ポインタを使うこと前提で言語の機能を削りに削っているから
Cはポインタを使わないと何もできん

強力かつ原始的というのは合ってる

866 :デフォルトの名無しさん:2013/05/12(日) 11:59:19.93
mallocで確保したものを解放するときfree書いたらヒープ壊れてるってエラーでる
領域外アクセスあるか要素アクセスするときに毎回チェックしたけどこれじゃないっぽい
アドレスも宣言したときとfreeするときは一緒だった
考えられる原因は何しょうか

867 :デフォルトの名無しさん:2013/05/12(日) 12:00:49.65
エスパー試験Lv3の問題です

868 :デフォルトの名無しさん:2013/05/12(日) 12:04:09.77
malloc - free間の処理を全て無くして落ちなくなるなら破壊
そうでなければ freeが間違ってる

それ以上はわからん

869 :デフォルトの名無しさん:2013/05/12(日) 12:08:22.86
ソース出せ

870 :デフォルトの名無しさん:2013/05/12(日) 12:08:44.91
他のmallocで確保した領域がbofしてるんだろ

871 :デフォルトの名無しさん:2013/05/12(日) 12:08:48.76
>>866
その malloc - free の処理以外の処理が壊している可能性もあるな

872 :デフォルトの名無しさん:2013/05/12(日) 12:11:55.80
>>868
破壊のようです
>>870
他にも同サイズの領域を確保していますが具体的にどのように起きるのでしょうか

873 :デフォルトの名無しさん:2013/05/12(日) 12:21:03.77
>>872
ttp://ideone.com/uWhfK8

こんな感じ。
18行目までは printfされるけど、19行目のfreeが失敗

874 :デフォルトの名無しさん:2013/05/12(日) 12:25:29.42
>>873小変更

875 :デフォルトの名無しさん:2013/05/12(日) 12:29:21.45
あきらかに16行目で破壊してんじゃん

876 :デフォルトの名無しさん:2013/05/12(日) 12:30:52.83
ダブルフリーの可能性もあるけれど、とりあえず、cppcheckかけるとか、gccなら-ftrap(?)とかメモリ検査系のオプション指定してみのがいいのではないかな。

877 :デフォルトの名無しさん:2013/05/12(日) 12:32:18.58
2ちゃんねる検定3級の問題です

878 :デフォルトの名無しさん:2013/05/12(日) 12:35:08.19
>>875
ああ、俺は質問側(>>866)じゃなくて回答側。

>>873は、p2と関係無さそうなp1の処理が
free(p2)の動作に影響する例。

879 :>>873:2013/05/12(日) 12:36:06.19
>>878=>>873

(ID出て欲しいよ、、)

880 :デフォルトの名無しさん:2013/05/12(日) 12:36:56.17
int *a=(int*)malloc(sizeof(int)*size);
int *b=(int*)malloc(sizeof(b));
ってやってたのを
int *a=(int*)malloc(sizeof(int)*size);
int *b=(int*)malloc(sizeof(int)*size);
にしたら直りました

881 :デフォルトの名無しさん:2013/05/12(日) 12:38:23.83
int *a=(int*)malloc(sizeof(int)*size);
int *b=(int*)malloc(sizeof(a));
ミスってた方の訂正ですが本当はこうやってました

882 :デフォルトの名無しさん:2013/05/12(日) 12:39:04.96
>>880
int *b; のために確保されていたメモリが足りなすぎたのか

883 :デフォルトの名無しさん:2013/05/12(日) 13:07:52.49
だから最初からソース出せって言ったろ

884 :デフォルトの名無しさん:2013/05/12(日) 13:26:59.86
別々のポインタに連続してmallocした領域が連続しているという
保証はない。そもそもmallocした領域は、確保分+管理データの
領域が含まれているので、仮に連続領域だったとしてもまとめて
書き込んだら管理領域を壊す。

885 :デフォルトの名無しさん:2013/05/12(日) 13:30:00.56
何言ってんだこいつ

886 :デフォルトの名無しさん:2013/05/12(日) 13:35:56.26
>>885
理解出来ないんなら黙ってろ

887 :デフォルトの名無しさん:2013/05/12(日) 13:45:32.45
mallocで管理領域なんかあるのか?
じゃあなんでリークするんだ

888 :デフォルトの名無しさん:2013/05/12(日) 13:46:15.46
>>887
1000確保した領域に2000書いたらいかんだろうが。
それが全ての原因だ。

889 :デフォルトの名無しさん:2013/05/12(日) 13:49:31.49
>>888
だから、じゃあ何を管理する領域なんだよ
fopenと混同してないか?

890 :デフォルトの名無しさん:2013/05/12(日) 13:53:50.05
ああ、管理領域って実装によっちゃあるのかスマソ

891 :デフォルトの名無しさん:2013/05/12(日) 13:53:51.95
無能ゲー専は死ねよ
Cやめろ

892 :デフォルトの名無しさん:2013/05/12(日) 13:55:06.00
mallocで確保した領域ってsizeofで計れないのか

893 :デフォルトの名無しさん:2013/05/12(日) 13:56:43.01
>>889
何を管理するか?free()で返されたポインタが自分で管理している
メモリーブロックのどれに当たるかを判別する領域だよ。
一般的な実装でのmallocだと、確保したブロックの手前にブロックの
サイズなどの管理データをつけてある。

2つのmallocが仮に連続領域だったとしても1つめのブロックの領域
を超えて書き込んだら次のブロックの管理領域を壊す。
だから「ヒープが壊れている」というメッセージが出る。

2つのmallocが連続していなかった場合は深刻で、間のメモリーに
記録されている「誰のデータかわからない領域」を壊していく。

こういう馬鹿げたプログラムは即刻やめるべき。
1000確保したら1000までしか使ってはいかん。

894 :デフォルトの名無しさん:2013/05/12(日) 14:08:00.83
>>892
sizeof が返す値はコンパイル時定数

895 :デフォルトの名無しさん:2013/05/12(日) 14:10:56.40
873の偽問題ソースに釣られるバカ多数www

896 :デフォルトの名無しさん:2013/05/12(日) 14:12:41.77
>>889,892
馬鹿

897 :デフォルトの名無しさん:2013/05/12(日) 14:13:06.27
>>892
ポインタのsizeofはポインタ自身のサイズがわかるだけ。
根本的にポインタやC標準ライブラリに対する理解不足。
知らないくせに知ったかぶって反論すると恥をかくぞ。

898 :873:2013/05/12(日) 14:19:28.18
>>895
いや>>873のソースは、>>872

> 他にも同サイズの領域を確保していますが具体的にどのように起きるのでしょうか

という問いに対して、>>870>>871の説明を可視化させたつもりで
「こういうことをやっているんじゃないの?」
という例を見せるために書いたもの。

IDが出ていれば間違われないで済んだかなあ

899 :デフォルトの名無しさん:2013/05/12(日) 14:20:44.53
必死くん

900 :デフォルトの名無しさん:2013/05/12(日) 14:21:40.08
ID出てたとしてもレス先見ないような奴に理解できるわけない

901 :デフォルトの名無しさん:2013/05/12(日) 14:27:40.95
>>900

>>895>>872(質問者)=>>873(俺)と勘違いしたんだろうから
ID出ていたらそれは無かったと思うがね

902 :デフォルトの名無しさん:2013/05/12(日) 14:35:56.83
これはID表示派の卑劣な策略

903 :デフォルトの名無しさん:2013/05/12(日) 14:37:30.20
そういうレトリックもIDが出ればできなくなるね。

904 :デフォルトの名無しさん:2013/05/12(日) 14:44:42.53
>>873は悪意があるか、そうでなければ日本が不自由な間抜け
質問者に対してなりすまし妨害しといて謝らないしね

905 :904:2013/05/12(日) 14:45:49.60
くそ、文字落ちしやがった
s/日本/日本語/

906 :デフォルトの名無しさん:2013/05/12(日) 14:45:50.20
Perlスレの恨み

907 :デフォルトの名無しさん:2013/05/12(日) 14:48:07.97
2ちゃんねる検定3級:不合格 >>904

908 :デフォルトの名無しさん:2013/05/12(日) 14:57:13.65
>>894
そんなこたぁない

909 :デフォルトの名無しさん:2013/05/12(日) 14:57:24.40
バカバカバカバカwww

910 :デフォルトの名無しさん:2013/05/12(日) 14:58:10.37
CといいWin32といいPerlといい役目を終えた言語の末路か

911 :デフォルトの名無しさん:2013/05/12(日) 15:03:18.41
無能ゴミスレ

912 :デフォルトの名無しさん:2013/05/12(日) 15:04:28.57
>>897
配列と同じじゃないの?

913 :デフォルトの名無しさん:2013/05/12(日) 15:08:01.85
ポインタと配列は似て非なるもの。

914 :デフォルトの名無しさん:2013/05/12(日) 15:32:08.76
よろしければ添削してほしいのですが書き出してもいいでしょうか?
短いプログラムなのですが初心者なものでどうにもわからないのです

915 :デフォルトの名無しさん:2013/05/12(日) 15:33:56.06
コンパイルタイムとランタイムの違いについて検索サイトなどを
使って調べて見るとわかるかもしれない。

必読書:エキスパートCプログラミング
アマゾンで調べればすぐ出てくるので注文して読みましょう。

916 :デフォルトの名無しさん:2013/05/12(日) 15:36:37.36
>>912
http://codepad.org/MEazU7O6

917 :デフォルトの名無しさん:2013/05/12(日) 15:40:40.39
*y = malloc(sizeof(int)*10);
だろ

918 : 忍法帖【Lv=2,xxxP】(1+0:5) :2013/05/12(日) 16:14:03.53
プロセスに子プロセスがいるのってどうやって確かめるの?

919 :デフォルトの名無しさん:2013/05/12(日) 16:29:42.48
そういう質問はこっち。

★初心者以前の質問に雪崩のように答えるスレ★
http://toro.2ch.net/test/read.cgi/tech/1331930031/

920 :デフォルトの名無しさん:2013/05/12(日) 18:15:13.03
int cubic[9];
cubic[0]=x1.........cubic[8]=x9;
xkは1〜9のどれか。
インデックス3個ずつで1行として

326
459
781

という3次正方配列を想定するとする。

このとき縦横隣り合ってる2つを選んで入れ替えて
できるだけ少ない回数で

123
456
789

にしたいです。
どういうアルゴリズムがいいですか?
10×10にも適用できるような凡庸なアルゴリズムがいいです。

3×3の場合は
クイックソート3回でできると思うんですがどうでしょう?

921 :デフォルトの名無しさん:2013/05/12(日) 18:19:55.58
ぼんようなアルゴリズム
隣り合ってるものを交換するのにクイックソート

ふざけすぎだろwww

922 :デフォルトの名無しさん:2013/05/12(日) 18:21:19.53
すいませんww
頭混乱しててw
クイックソートは無理ですよね

どうすればいいですかね?
バブルソート以外無理ですかね?

923 :デフォルトの名無しさん:2013/05/12(日) 18:22:23.79
特に取り柄のないアルゴリズムがいいんだろ?

924 :デフォルトの名無しさん:2013/05/12(日) 18:24:06.57
最速のアルゴリズムがいいです。
まず水平方向をバブルソートして
縦方向をバブルソートすれば3×3の場合は(3+3)×3^2/2回数で
済むと思うんですけどもっと効率的な方法ありますかね?

925 :デフォルトの名無しさん:2013/05/12(日) 18:25:54.47
1〜nが連続してるなら3x3だろうが10x10だろうが
N番目にNをいれるだけ
元々入っている数字もソートも一切関係ない
ひっかけ問題だな

926 :デフォルトの名無しさん:2013/05/12(日) 18:28:58.51
>>925
パズルとして考えて欲しいです。
その論理だと数独だってそうでしょ?

927 :デフォルトの名無しさん:2013/05/12(日) 18:29:33.66
縦横に分ける必要ないじゃん

928 :デフォルトの名無しさん:2013/05/12(日) 18:33:17.67
要素を走査して並び替えると考えれば
N番目にソートした値列[N]が入る、にかわるだけで
同じことだよ

929 :デフォルトの名無しさん:2013/05/12(日) 18:38:03.53
数独の問題解くのってまじでどうやってアルゴリズム作ってるの?
あれ凄くないか?

930 :デフォルトの名無しさん:2013/05/12(日) 18:41:31.82
総当り9×9×9の恐ろしい数の計算をこなせばできる

931 :デフォルトの名無しさん:2013/05/12(日) 18:41:49.57
数独の第一人者といえばこの人。

http://www.pro.or.jp/~fuji/

932 :デフォルトの名無しさん:2013/05/12(日) 18:46:27.06
>>929
各マスの候補を順に消していけば、計算量を少なく出来る。
制約プログラミングのやり方を応用。

933 :デフォルトの名無しさん:2013/05/12(日) 18:49:15.53
>>932
アルゴリズム何行?
何行くらいですむん?

934 : ◆QZaw55cn4c :2013/05/12(日) 19:55:06.16
>>920
普通に幅優先探索(横型探索)でしらみつぶしがいいでしょうね

935 :デフォルトの名無しさん:2013/05/12(日) 20:37:51.96
>>920
これって有名なアルゴリズムがあるんじゃないのかね。
4x4パズルをさくっとといてドヤ顔してる人を見たことあるけど。

936 :デフォルトの名無しさん:2013/05/12(日) 23:32:37.99
Cじゃなくて関数型なら1画面だが

937 :デフォルトの名無しさん:2013/05/13(月) 15:28:21.90
データベースってどうやって作るの?
今世の中の有名DB、PostgreSQLやMySQLを超える高速DBを作って公開して自己顕示欲を満たしたいので教えてくださいお願いします。

938 :デフォルトの名無しさん:2013/05/13(月) 15:33:50.70
まず高速化のアイデアを書きなさい

939 :デフォルトの名無しさん:2013/05/13(月) 15:41:03.74
今までのDBって省メモリで作られてるだろうから
16ギガのメモリ搭載前提で作れば高速なのが作れそう

940 :デフォルトの名無しさん:2013/05/13(月) 15:46:59.41
アイデアも何もDBがどういう仕組みで動いてるのか知らないんですよ。
だからそれを知って改善ポイントを見つけようって寸法です。
なんかキャッシュらしきものがあるとか、レコードの削除も実際には削除せずに削除フラグ立てるだけとか
4KB単位のブロックで記憶領域を確保して頻繁に領域の拡張が起きないようにするとか、そういうことしか知らないです。
俺が使える言語の中ではCが一番速いのでここに来ました。

941 :デフォルトの名無しさん:2013/05/13(月) 15:50:57.14
>>939
16GBってこのご時世業務用鯖なら普通に積んでてもおかしくないですな。
いけそういけそう。
ところで何で16GBなんですかね?

942 :デフォルトの名無しさん:2013/05/13(月) 15:55:47.74
ソフトって必須(最低)動作環境ってあるけど、
あれはどうやって調べるの?

943 :デフォルトの名無しさん:2013/05/13(月) 15:57:48.81
>>942
調べるってマニュアルに書いてあるよ。

944 :デフォルトの名無しさん:2013/05/13(月) 16:12:14.01
ソフトの開発者がどうやって検証しているかって意味の質問だと思うんだが。
C スレだし、開発者の立場だろ。

945 :デフォルトの名無しさん:2013/05/13(月) 16:18:22.66
>>942
必須(最低)動作環境を最初に決めてから、それに合わせて作るというアプローチもある。

946 :デフォルトの名無しさん:2013/05/13(月) 16:36:18.01
>>945
それが普通なんじゃないの?
想定せずに作って、できてからどのくらいの低スペックまでなら動くか調べるとかしないと思うけど。

947 :デフォルトの名無しさん:2013/05/13(月) 16:54:02.00
sqlite なら丸パクリでも問題ないから
まずソースを読んではどうか

948 :デフォルトの名無しさん:2013/05/13(月) 16:55:47.38
>>946
最低想定をCPU2GHz、メモリ1GB、HDD2GBで作ったとするだろ?
でも完成してみたら1.4GHz、512MB、1GBでも動くかもしれないだろ?
そういう環境だけど欲しい客がいるかもしれないだろ?
「動くとは思いますが自己責任でお願いします^w^」ってみすみす客を逃すのか?

949 :デフォルトの名無しさん:2013/05/13(月) 17:02:10.48
>>948
1.4GHz、512MB、1GBの客が欲しければ
最初から最低想定をそれで作るのが普通
と思うが

950 :デフォルトの名無しさん:2013/05/13(月) 17:09:33.11
完成してからゴリゴリ、ストレステストしながら、最低スペックの限界を調べるとか普通はしないな。

951 :デフォルトの名無しさん:2013/05/13(月) 17:11:03.04
別に数独の9x9x9くらい一秒も掛からんから総当りでいいよ。

952 :デフォルトの名無しさん:2013/05/13(月) 17:18:17.37
じゃあ素人製作のフリーソフトなんかは基本的に
自分のPC == 開発環境 == テスト環境 == 最低想定
ってことになると思うけど、
あの人たちは自分のPCスペックを書いてるわけ?

953 :デフォルトの名無しさん:2013/05/13(月) 17:21:05.25
必要メモリはタスクマネーシャで使用量見れば分かるだろ

必要ディスク容量はインストールする全ファイルの合計容量見れば分かるだろ

954 :デフォルトの名無しさん:2013/05/13(月) 17:24:43.05
cpuはタスクマネーシャでそのアプリの瞬間最大使用率見てそのときの使用率で割ればよい
3.2ghzのcpuで瞬間最大10%使ってるなら320mhzあればよい

955 :デフォルトの名無しさん:2013/05/13(月) 17:27:37.99
>>952
むかしフリーソフトを公開したときは、2chで動作確認してくれる人を探してお願いした。

956 :デフォルトの名無しさん:2013/05/13(月) 17:27:56.95
>>954

957 :デフォルトの名無しさん:2013/05/13(月) 17:38:45.78
>>954
その発想はなかった。
# そして、全く意味がない。

958 :デフォルトの名無しさん:2013/05/13(月) 17:40:36.35
>>951
単なる総当たりでやる場合:

数字の重複などを全く考えない場合の組み合わせは、9^81通り。
さまざまな条件などを反映させた場合の組み合わせは、約54億通りになる。
(54億通り=5.4*1000*1000*1000)

1msあたり1000通りチェックできたとして(1秒間に1000*1000通り)、5400秒かかる。
(5400秒=1.5時間)

実際は、1秒あたり100万パターンもチェックできないので、適切なアルゴリズムとコードの最適化を
行わなければならない。

959 :デフォルトの名無しさん:2013/05/13(月) 17:43:13.65
バカには無理ですりんこ

960 :デフォルトの名無しさん:2013/05/13(月) 17:50:55.01
数独解くのって難しいのかな?

数独自動解法プログラム(ソースあり)
http://dogmap.jp/2009/09/10/%E6%95%B0%E7%8B%AC%E8%87%AA%E5%8B%95%E8%A7%A3%E6%B3%95%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0/

数学のエキスパートが3ヶ月かけて作成した「世界一難しい数独」
http://gigazine.net/news/20100822_hardest_sudoku/
を食わせてみたんだが、一瞬で回答が出たけど。

ソースは見てない。

961 :デフォルトの名無しさん:2013/05/13(月) 17:57:10.99
>>960
総当りで解く分には凄まじく簡単だよ。人手でやると時間が掛かりすぎて話にならないけど。
逆に、真面目に理詰めで解こうとすると、仮に「世界一難しい」をLevel7とすると私が解けるのがLevel2かLevel3、
一般向けの数独のゲームソフトはLevel1程度で新聞のおまけなんかだとLevel0。

962 :デフォルトの名無しさん:2013/05/13(月) 17:58:03.75
>>958
全ての組み合わせをチェックする必要はさらさらないよ。バックトラックで充分。

963 :デフォルトの名無しさん:2013/05/13(月) 17:59:51.85
>>952
素人製作のフリーソフトなんか出したら
それこそ千差万別

964 :デフォルトの名無しさん:2013/05/13(月) 18:00:33.34
総当りはスペック良いパソコンでも結構時間掛かると思う
アルゴリズム考えないと

965 :デフォルトの名無しさん:2013/05/13(月) 18:01:17.08
>>954
CPUによって特殊機能に違いがあったりするからなぁ

966 :デフォルトの名無しさん:2013/05/13(月) 18:06:50.80
数独は、決まっている数字を消去法で消して、
残った未確定は候補のうちの数字をひとつ試しに入れてみて
矛盾が発生したら別の数字を入れて試して、
最後まで矛盾なく埋まったら完了。

で良いんじゃない?

967 :デフォルトの名無しさん:2013/05/13(月) 18:07:41.96
>>966
総当りと変わんないねそれ

968 :デフォルトの名無しさん:2013/05/13(月) 18:13:06.04
>>967
総当たりの組み合わせが、例えば
81!から80!に
ひとつ減るだけで81倍の速度になる。
81!から78!に
3つ減るのなら511920倍の速度になるのである。

969 :デフォルトの名無しさん:2013/05/13(月) 18:19:11.24
>>962
>>951が総当たりでいいとか言ってたので、総当たりでやった場合の計算量を示したまで。

970 :デフォルトの名無しさん:2013/05/13(月) 18:54:05.73
Cって宣言した変数使わないとエラー出るから苦手だわ
何回もシュミしてればいらん変数残したままだよな

971 :デフォルトの名無しさん:2013/05/13(月) 18:57:01.75
エラーは出ないだろ

972 :デフォルトの名無しさん:2013/05/13(月) 19:12:40.64
変数宣言して使わないとかたまにあるけどエラー出たことないわ
どんなマイナーコンパイラだよ

973 :デフォルトの名無しさん:2013/05/13(月) 19:22:11.26
使えばいいだけのはなし

974 :デフォルトの名無しさん:2013/05/13(月) 19:23:23.94
スクリプトって宣言してない変数使ってもエラー出ないから苦手だわ
スペルミスしても平気で空の値返してくるとか狂気の沙汰だよな

975 :デフォルトの名無しさん:2013/05/13(月) 19:27:01.33
実行エラーじゃなくてコンパイルエラーでしょ?
出してくれたほうが嬉しいわ
使わない変数消せると気持ちいい

976 :デフォルトの名無しさん:2013/05/13(月) 19:31:56.82
cもセグメンテーションフォールトがコンパイル時に出てこないから
かなりうざい

977 :デフォルトの名無しさん:2013/05/13(月) 19:37:50.66
>>974
それ思う
Perlもuse strict;付けないとデフォルトでその動作するからやってられない
バグがあっても発見するのは困難を極める
宣言なし言語は、スペルミス絶対しないとか、大量のコードの中からスペルの違うものを瞬時に見つけられるとか
そういうアスペ専用言語

978 :デフォルトの名無しさん:2013/05/13(月) 19:42:56.57
phpは変数宣言の必要ないスクリプト言語だけど
今まで使われたことのない変数呼び出すと普通に警告してくれる

979 :デフォルトの名無しさん:2013/05/13(月) 19:49:11.40
お前は今までに無視した警告の数を覚えているのか

980 :デフォルトの名無しさん:2013/05/13(月) 19:56:56.99
できるかぎり警告対象となったものは消す

CじゃなくてC++の話だけど、
テンプレート使うと一部の警告を無効化しなきゃうざいことになるんだよんぁ

981 :デフォルトの名無しさん:2013/05/13(月) 20:18:10.65
音声認識したらプログラミング早すぎワロタwww
はっきり発音すれば認識してくれるよ
printfはプリンまでいったら一番上の候補として出てくる
テトリス1時間かかったの10分で作れたわ
皆絶対やったほうがいい

982 :デフォルトの名無しさん:2013/05/13(月) 20:20:39.01
>>979
DIO乙

983 :デフォルトの名無しさん:2013/05/13(月) 20:34:42.09
次スレはよ

984 :デフォルトの名無しさん:2013/05/13(月) 20:36:58.69
ほいよ

C言語なら俺に聞け(入門編)Part 115
http://toro.2ch.net/test/read.cgi/tech/1368444993/

985 :デフォルトの名無しさん:2013/05/13(月) 20:42:20.14
>>981
平均的マなら普通に打ったほうが早い

986 :デフォルトの名無しさん:2013/05/13(月) 20:47:41.81
>>960
数独自動解法プログラムは昔俺も作った
一瞬で25x25のやつも解けるから
数独を手動で解くのとかバカらしいよね

987 :デフォルトの名無しさん:2013/05/13(月) 21:08:45.60
a

988 :デフォルトの名無しさん:2013/05/13(月) 21:10:51.41
うんこ

989 :デフォルトの名無しさん:2013/05/13(月) 21:37:31.47
あああ

990 :デフォルトの名無しさん:2013/05/13(月) 21:39:52.10
aaaa

991 :デフォルトの名無しさん:2013/05/13(月) 21:45:15.81
aaaaa

992 :デフォルトの名無しさん:2013/05/13(月) 21:53:34.12
ちんこ

993 :デフォルトの名無しさん:2013/05/13(月) 21:53:49.46
おちんしゅ

994 :デフォルトの名無しさん:2013/05/13(月) 21:54:14.28
しこしこきもちいいお

995 :デフォルトの名無しさん:2013/05/13(月) 21:54:44.57
ぐろまん

996 :デフォルトの名無しさん:2013/05/13(月) 22:09:14.14
>>970
×シュミ
◎シミュ

997 :デフォルトの名無しさん:2013/05/13(月) 23:11:29.09
まんまん

998 :デフォルトの名無しさん:2013/05/13(月) 23:53:24.14
数独天皇

999 :デフォルトの名無しさん:2013/05/14(火) 00:52:47.07
うめ

1000 :デフォルトの名無しさん:2013/05/14(火) 00:54:46.87
スレよさらば

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

208 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)