C言語なら俺に聞け(入門編)Part 104at TECH
C言語なら俺に聞け(入門編)Part 104 - 暇つぶし2ch2:デフォルトの名無しさん
12/07/15 12:11:11.90
< `∀´> ニダー

3:デフォルトの名無しさん
12/07/16 04:57:46.24
カーニハンとリッチーどっちが好き?

4:デフォルトの名無しさん
12/07/16 08:34:24.17
カニチャーハンが好き

5:デフォルトの名無しさん
12/07/16 10:59:40.71
23 名前:デフォルトの名無しさん 投稿日:2011/10/13(木) 23:40:11.91
「私がひそかに満足していることのひとつは,
オープンソースの多くのものが,私が寄与したコードに基づいていることです」

「その仕事に合った道具を選びなさい(中略)
ある仕事のために新しい特殊なツールを作成する方法について考えるべきときもあります」

Dennis M. Ritchie
偉大なるプログラマからのメッセージ|Cマガジン1999年10月号31,32ページ


訃報: C 言語の開発者、デニス・リッチー氏が死去
スレリンク(tech板:23番)

6:デフォルトの名無しさん
12/07/17 11:00:40.33
俺はライオネルのほうが好きだな

7:デフォルトの名無しさん
12/07/17 11:12:05.68
若き日のデニスリチ
URLリンク(www.bell-labs.com)

8:デフォルトの名無しさん
12/07/17 19:58:01.32
俺は名犬の方だな

9:デフォルトの名無しさん
12/07/17 20:10:56.10
>>8
お、犬もイケる口か

10:デフォルトの名無しさん
12/07/18 09:46:40.94
犬鍋とか野蛮だわ

11:デフォルトの名無しさん
12/07/18 17:07:26.78

コンパイラ bcc32 で勉強中なんですけど、、、

ソース
URLリンク(codepad.org)


実行例
argv[0]に入っている文字列:C:\temp\test\test01.exe
argv[0]の長さ:23
このプログラムの名前は test01 です

argv[0]に入っているプログラムの名称(ここではtest01)の
表示まではなんとかかんとかできたんですが^^;この
文字列を *pgname にコピーしたいのですが、
どのようにすれば良いの?





12:デフォルトの名無しさん
12/07/18 17:37:42.29
さあこいエスパー!

13:デフォルトの名無しさん
12/07/18 17:51:03.68
プログラム名の文字数+1のメモリを確保してstrcpyでコピー。

14:デフォルトの名無しさん
12/07/18 18:05:14.80
argv[0]をFindFirstFile()で検索
cFileNameの最後の"."(ドット)を\0に書き換える。
WIN32_FIND_DATA構造体のcFileNameの先頭アドレスをpgnameにコピー

15:デフォルトの名無しさん
12/07/18 18:15:26.88
>>11
pgnameがただ参照するだけの目的なら、
pgname = & str[last_yen];
でOK。
書き換えを伴うと言うのなら、malloc()でメモリ確保して云々。

16:デフォルトの名無しさん
12/07/18 18:21:45.60
>>15
> pgname = & str[last_yen];
多分、それをやると".exe"も見えちゃう。

まぁ >>11 が何がしたいか良く分からないけど。

17:デフォルトの名無しさん
12/07/18 18:31:49.16
あぁ、それじゃ、str[last_dot] = '\0';入れておけば。

18:デフォルトの名無しさん
12/07/18 20:24:22.64
//argv[0]からカレントフォルダと実行プログラム名を抽出・表示する
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]){

char str[300];
char *pgname;
char *p_last_dot, *p_last_yen;

memset(str,0,sizeof(str)); //配列初期化

printf("argv[0]に入っている文字列:%s\n",argv[0]);
printf("argv[0]の長さ:%d\n",strlen(argv[0]));

p_last_yen = strrchr(argv[0], '\\');
if(p_last_yen == NULL) p_last_yen = argv[0] - 1;
p_last_dot = strrchr(argv[0], '.');
if(p_last_dot == NULL) p_last_dot = argv[0] + strlen(argv[0]);
else if(p_last_dot < p_last_yen) p_last_dot = argv[0] + strlen(argv[0]);

strncpy(str,p_last_yen + 1, p_last_dot - p_last_yen - 1);
printf("このプログラムの名前は %s です\n", str);

pgname = str;
printf("pgname %s\n",pgname);

return 0;
}

// なんか、どっか、ポインタ間違ってそうだな。。。

19:デフォルトの名無しさん
12/07/18 20:36:46.40
for (int i=0;argv[0][i];++i)if (argv[0][i]!='.')pgname[i]=argv[0][i];else{pgname[i]='\0';break;}

20:デフォルトの名無しさん
12/07/18 20:40:46.10
ここで0x5C(\)を含む2バイト文字ファイル名登場!

21:11
12/07/18 21:09:39.17
>なんか、どっか、ポインタ間違ってそうだな。。。
まぁなんとなくみたいな感じで作ってるんでかなり?かも知れませんが^^;

pgnameは参照のみでこちらで書換えたりとかの予定はないです。
何がしたいかっていうと、、、例えばヘルプで使用方法を出したりするじゃないですか。
その時にプログラム名がリネームされても変更後の名前で表示できるようにと。

道はかなり遠大な感もしますが^^;


22:デフォルトの名無しさん
12/07/19 02:37:15.32
本物のプログラマはUMLなぞ書かない。UMLは、結局のところ文盲のための文書フォームである。GoFはUMLでデザインパターンを描いた;何をどれだけ描いたか見てみるがいい。
本物のプログラマはC/C++を使わない。C/C++は白ブリーフを穿いた職人気取りの喪男や、マクロフリークや、make好きのUNIXerどもが使うものだ。奴らは関数ポインタと多重継承で喜ぶ。
本物のプログラマはJavaを使わない。Javaはちんけなアプリケーションプログラマが使うものだ。
本物のプログラマはVBなど書かない。一般に、12歳以上になってVBを書くプログラマはいない。
本物のプログラマは文書を書かない。文書は設定ファイルやSQLを読めない馬鹿のためにあるのだ。
本物のプログラマはPerlだのPythonだのRubyだの、その他もろもろの怠惰で短気で傲慢じみたスクリプト言語は使わない。インタプリタはオツムの弱い奴らのためのものだ。
本物のプログラマはオブジェクト指向を理想主義者の陰謀だと考えている。
本物のプログラマはC#など使わない。C#はJavaとC/C++のどちらも選べない過保護なガキのためにあるのだ。
本物のプログラマはJavaScriptなど使わない(プログラム全体を1行で書けない限りは)。
本物のプログラマはPHPなど使わない。実際のコードより多くの括弧を使うのは女々しいのだ。
本物のプログラマはAjaxを軽蔑する。Ajaxは``クモの巣に囚われている''ニヤけた寝小便たれどものためにあるのだ。
本物のプログラマはHTMLがマークアップ言語であり、プログラミング言語でないと知っている。プログラミング言語であると主張するのは泣き虫のXML書きに後押しされたTeX使いの陰謀だ。


23:デフォルトの名無しさん
12/07/19 03:35:20.02
プログラマーはコード設計するのが仕事で、コードを打ち込むのは
コーダーの仕事と、分かれていた時代もあったらしい。

24:デフォルトの名無しさん
12/07/19 03:36:36.10
いいえ

25:デフォルトの名無しさん
12/07/19 03:41:17.59
パンチャーというものもあってな・・・。

26:デフォルトの名無しさん
12/07/19 05:00:53.75
これか!
URLリンク(www.geocities.jp)

27:デフォルトの名無しさん
12/07/19 05:05:59.52
URLリンク(blog-imgs-38.fc2.com)
   ↓ これ見ただけで、いろいろ分かるらしい
URLリンク(www.frontier-line.org)

C言語ってレベルじゃないけどな

28:デフォルトの名無しさん
12/07/19 08:27:29.58
>>27
実際、ビットパターンと同じ要領で読むことができないわけでもない。

29:デフォルトの名無しさん
12/07/19 08:39:25.38
機械語の読み方は勉強するだろ
むかし基本情報でやったような記憶がある

30:デフォルトの名無しさん
12/07/19 08:44:07.96
おめーら、モグリだな?
URLリンク(ec2.images-amazon.com)

31:デフォルトの名無しさん
12/07/19 08:45:26.22
CASL なんて糞。本物のアセンブリをやりたまえ

32:デフォルトの名無しさん
12/07/19 09:08:13.65
研究所の人はあのパンチ穴の紙テープを読めるんだよね

33:デフォルトの名無しさん
12/07/19 09:22:04.33
韓国産のヒラメで食中毒 調べてみたら寄生虫がうようよみつかる
スレリンク(poverty板)


県内初 ヒラメ由来の食中毒

今月14日、新庄市内の飲食店でヒラメの刺身を食べた5人が下痢や吐き気などの食中毒の症状を訴え、原因は、
ヒラメに特有の寄生虫とわかりました。
この寄生虫が原因の食中毒が確認されるのは県内で初めてです。
県によりますと、今月14日午後、新庄市内の飲食店で、韓国産の養殖ヒラメの刺身を食べた5人がその日の夜に
かけて次々に下痢や吐き気などの症状を訴えて病院に運ばれ、1人が入院しました。
県によりますと全員快方に向かっていて入院した1人もすでに退院しているということです。
県が飲食店に保管されていた残りのヒラメを回収して調べたところ、「クドア・セプテンプンクタータ」という寄
生虫が見つかり、食中毒が原因と断定しました。
この寄生虫は、おもにヒラメの刺身に寄生し、全国的に食中毒が相次いだことをうけ厚生労働省は去年6月、都道
府県などに注意を呼びかけていましたが、県内で確認されたのは今回が初めてです。
県によりますと、国内で養殖されるヒラメは出荷前に寄生虫がいないか検査が行われているということです。

URLリンク(www.nhk.or.jp)


34:デフォルトの名無しさん
12/07/19 10:59:41.88
言語とただの電気信号の境目がどこら辺にあるのか
ぶっちゃけ機械語も
CPUというハードウェアインタプリタへのスクリプトという気もする


35:デフォルトの名無しさん
12/07/19 11:04:23.66
アホか。
マシン語もソフトウェアだ。

36:デフォルトの名無しさん
12/07/19 11:05:36.03
そもそもすべてハードワイヤードが大変だからソフトウェアが導入されたんだよ。

37:デフォルトの名無しさん
12/07/19 11:06:30.10
半田ごてでコーディングしてろ

38:デフォルトの名無しさん
12/07/19 11:11:17.46
おk、今から秋葉で真空管ゲットしてくる!

39:デフォルトの名無しさん
12/07/19 11:14:52.44
>>35
あー だから
スクリプト言語でのインタプリタはソフトウェア、
機械語でのインタプリタはCPUそのもの、ハードウェアで直接やってる
でどうだ 
って話さ


40:デフォルトの名無しさん
12/07/19 11:32:05.65
インタプリタ(interpreter)とは、プログラミング言語で書かれたソースコード、ないし中間
表現を逐次解釈しながら実行するプログラムのこと。

41:デフォルトの名無しさん
12/07/19 11:33:41.60
>39
URLリンク(blog.livedoor.jp)

42:デフォルトの名無しさん
12/07/19 11:37:52.80
だからよォ
インタプリタそのものをシリコンで実装すんだよ


43:デフォルトの名無しさん
12/07/19 11:57:07.77
お前、あほなん?

44:デフォルトの名無しさん
12/07/19 12:31:04.99
おまいらの奥さんの胸はシリコン製だよ。

45:デフォルトの名無しさん
12/07/19 12:43:31.76
おまいのチ   こそシコリン製だろw


46:デフォルトの名無しさん
12/07/19 13:08:12.70
初心者です。
質問させてください。

edのようなラインエディタを作りたいのですが、
バッファや行管理はどのようにすればよいでしょう。

ソースの提示まではいらないので概念?のようなもの
を教えてください。

47:デフォルトの名無しさん
12/07/19 13:18:43.98
>42
URLリンク(www.amazon.co.jp)
これ読んでろ。

48:デフォルトの名無しさん
12/07/19 13:33:46.69
たぶん自己参照型構造体を使ってmallocしたりするんだと思う

49:デフォルトの名無しさん
12/07/19 14:41:25.66
>>46
実装したことはないんだが、
テキストエディタのデータ構造は意外にややこしくて、それだけで一つの分野
ギャップバッファとかでぐぐるといい

50:デフォルトの名無しさん
12/07/19 15:21:02.43
>46
struct {
void *pNae; //前の行
char *pData;//行の内容
void *pTugi //次の行
};
こんな感じの構造体を1行に付き1つ作る。
バッファは初めに大きく確保するか1行毎に確保するか好みで。

51:デフォルトの名無しさん
12/07/19 18:18:11.75
なえ

52:デフォルトの名無しさん
12/07/19 21:31:37.53
C言語でマルチスレッドなしでゲームプログラミングって可能?
アクションゲームとか作りたい。

53:デフォルトの名無しさん
12/07/19 21:35:29.67
平行進行させたい部分を細切れに分割して細切れを順繰りに動かす

54:デフォルトの名無しさん
12/07/19 21:48:58.96
>>53
それも禁止するとしたら?

55:デフォルトの名無しさん
12/07/19 21:56:14.15
禁止事項を先に書けよ
後からこれはダメあれはダメ言われちゃかなわんよ

56:デフォルトの名無しさん
12/07/19 21:57:15.81
相手にしたオマエが悪い

57:デフォルトの名無しさん
12/07/19 21:58:08.59
マジックナンバーって何ですか?
スレリンク(tech板)l100
 ↑
スレタイからして意味不明。


int str[100]

strがマジックナンバー?

58:デフォルトの名無しさん
12/07/19 21:59:02.68
C言語の標準関数にマルチスレッド扱うものってあった?
Javaならthredクラスがあるけど。

59:デフォルトの名無しさん
12/07/19 22:03:11.42
zero以外の即値

60:デフォルトの名無しさん
12/07/19 22:12:28.86
int max
max=16;
int str[max];

とするより

int str[16]のほうがソースコードが短くなり
容量も減ると思うのですが。

61:デフォルトの名無しさん
12/07/19 22:16:11.38
その16が沢山あったら?

エディタの一括修正でいいやんけと言うなら
また違った意味で16を他の変数に使っていたら?

62:デフォルトの名無しさん
12/07/19 22:19:58.88
>>57
コードのあちこちに 5 とか 1024 とか 0666 が散りばめられているときに、そのコードを理解したり修正するのは大変だろう。

#define N 5
#define BUFFSIZE 1024
#define RW 0666

などなんとか意味を感じられるようにすることが推奨されている。
一見して由来のわからないイミーディエイト値のことを皮肉をこめて「魔法の数字」と呼んでいるようだ。

63: ◆QZaw55cn4c
12/07/19 22:20:55.05
>>60
#define か enum 八苦を使うのがいいでしょうね。

64:デフォルトの名無しさん
12/07/19 22:29:56.70
>>61
修正って何?
修正したらいいじゃない。



65:デフォルトの名無しさん
12/07/19 22:39:00.23
その程度の規模しか作ってない人間にはそれでいいよ

66:デフォルトの名無しさん
12/07/19 22:47:35.74
Cがjavaに勝ってる要素ってあるの?


67:デフォルトの名無しさん
12/07/19 22:52:07.03
Oracleの臭い息がかかってないだけで大勝利ですが

68:デフォルトの名無しさん
12/07/19 22:54:58.75
ネイティブコードが書ける。
ナマポが使える。

しかし最近はCPUすら仮想化されてるからなあ
仮想CPUでも高速化テクニックってのは通用するんだよね
仮想マシン前提のノウハウとかあんのかな

69:デフォルトの名無しさん
12/07/19 22:59:47.25
>62
職場の先輩が昔受けた仕事で
「数値直接使用禁止。必ず#define登録しろ。」
というルールがあったとか言われた。

70:デフォルトの名無しさん
12/07/19 23:32:10.95
CRとLFとどっちが好きかって聞いてるんだよ。

71:デフォルトの名無しさん
12/07/20 00:33:50.19
#define N 100と

int N=100
の違いって何よ

72:デフォルトの名無しさん
12/07/20 00:52:20.15
>>71
#define N 100は、デバッグ時に確認できない。
あと、グローバル変数では無いけれど、それと同様に扱える。
まぁ、定数というところ。
int N=100は、あくまでint型のNを100で初期化したもの。

73:デフォルトの名無しさん
12/07/20 00:56:53.23
初期化なんて言うけど、自動変数ならルーチン入るからけっきょくは代入だろ。


74:デフォルトの名無しさん
12/07/20 01:09:16.79
左辺値になれない
左辺値になれる

75:デフォルトの名無しさん
12/07/20 01:36:48.72
真正右翼のヒロイン登場『大日本サムライガール』
URLリンク(news.nicovideo.jp)

「真正なる右翼は、日本に私ただ一人である。有権者諸君、我が国は今、大きく舵を切るべき瞬間を迎えている。
日本が取れる指針はもはや少なく、残された時間には猶予もない。」

いきなり何だと思われたかもしれませんが、これは大日本サムライガールという小説のヒロイン、
神楽日毬(かぐらひまり)ちゃんの決め台詞なのです。
いや、決め台詞というのもふさわしくないか。街頭演説の時の前口上なのです。

何ともすごい小説が出てきました。この本は真に日本を憂うあまり、自らが独裁政権を敷くしかないという結論に達した
真正右翼の16歳の美少女ヒロインと、そんなヒロインを陰に日向に支える主人公織葉颯斗(おりばはやと)くんのお話なのです。


URLリンク(news.nicovideo.jp)
『大日本サムライガール』至道流星/星海社FICTIONS
この表紙の少女が神楽日毬ちゃんです。手に持っているのは愛用の拡声器「拡さん」。
この少女が、政治の頂点を目指すために、アイドルとして芸能界の頂点を目指すのです!

76:デフォルトの名無しさん
12/07/20 07:26:51.08
ネトウヨ・ニュース、ネタが尽きたのか。

77:46
12/07/20 09:06:19.29
>>48>>49>>50
ありがとうございました。
またすこし自分で考えて見ます。

78:デフォルトの名無しさん
12/07/20 09:13:39.82
―Daily Mail(英)―
情報筋によると、イギリスの運輸省は、ロンドンと主要都市を結ぶ高速鉄道に使用される車輌の製造において、
日立製作所グループとの交渉が最終段階に入っていることをオリンピックの開会前に正式に発表する予定だといいます。

それによると、イギリスのファースト・グレート・ウェスタン・レール社は、2016年までに、500台の車輌を日本から輸入。
車輌はほとんどが広島県の日立製作所笠戸事業所で組み立てられるため、イギリスの評論家たちは
製造費10億ポンド(約1,230億円)にも及ぶ雇用機会をみすみす失ったと政府を批判しているということです。

これに対して(海外に流出できない)独自の高価な技術を使用するためと、日本国内での車輌の製造を譲らなかった
日立製作所笠戸事業所長の正井健太郎氏は「車輌の製造に関われる誇りを感じます。
安全と信頼性に長けた日本のテクノロジーで製造された車輌は、
乗客に対してもスムーズな乗心地を感じてもらえることでしょう」と述べています。

URLリンク(chiquita.blog17.fc2.com)


79:デフォルトの名無しさん
12/07/20 10:05:40.16
>>58
POSIX C言語
ぐぐれ

80:デフォルトの名無しさん
12/07/20 10:23:20.40
Cがいい。Javaがすき

81:デフォルトの名無しさん
12/07/20 10:40:09.79
わたしはperl! perlなの!
perlがイイ!!


82:デフォルトの名無しさん
12/07/20 10:52:04.65
Java は unsigned がないから嫌ぽ

83:デフォルトの名無しさん
12/07/20 19:29:40.09
プログラミング初心者です。
現在、「C言語超入門―Windowsでゲームボーイのプログラムを作ろう! 」を使って勉強しています。
この本を最初の教科書として、学び始めました。次に読む本として何が良いかアドバイスをお願いします。

ゲームボーイに絡めて勉強したらモチベを保てるのではないかと思い、この本から始めました。
専門学校に通っているわけではなく、独学でやっています。
皆さんのお勧めの入門書を教えてください。

84:デフォルトの名無しさん
12/07/20 19:31:22.75
windowsゲームプログラミング/赤坂 玲音

85:デフォルトの名無しさん
12/07/20 20:41:36.44
B.カーニハン先生の
「プログラミング作法」
~書法、の方じゃないから注意な。


86:デフォルトの名無しさん
12/07/20 21:52:31.68
Z80


87:デフォルトの名無しさん
12/07/20 22:24:03.18
つーか、ゲームボーイは逆に大変じゃないか?
GBAとかの方が楽な気がする。


88:デフォルトの名無しさん
12/07/20 22:32:23.11
「C言語超入門―Windowsでゲームボーイのプログラムを作ろう! 」
いやこの本は凄く分かりやすい
200ページちょいしかなくて、俺が初心者だった大学1年の頃にすらすら最後まで通読できた
絶版でもう売ってないんだけどマジ良書

89:デフォルトの名無しさん
12/07/20 22:41:05.15
ゲームボーイ用のコンパイラとかカセット用意すんの大変じゃない?

90:デフォルトの名無しさん
12/07/20 22:45:03.68
うん

91:デフォルトの名無しさん
12/07/21 05:20:06.22
GBDKとemuでええんでないの

92:デフォルトの名無しさん
12/07/21 06:39:57.92
うん

93:デフォルトの名無しさん
12/07/21 08:35:15.11
 韓国のコミュニティサイト「ポムプ」の掲示板に「日本ビールがおいしくなければならない理由」とのスレッドが立てられたところ、
さまざまな意見が寄せられた。

 スレ主は、日本の食文化について言及し、日本では食に対するこだわりが深い人が多く、製菓技術や製パンは世界に誇れる水準であり、
ビールも同様に世界で認められているものの一つだと述べた。一方、韓国産のビールはまだまだ改善の余地があり、
新規参入による市場の拡大が望まれると指摘した。

 スレッドにはスレ主に対して同意し、日本の食文化について称賛する声が多数並んだ。

・「日本は食文化、特にグルメへのこだわりがすごいと思います。外国の食文化を受け入れ、百年以上の探求を経て、
 トップレベルにした。ビールも同じ」
・「率直にいって、日本の食べ物はおいしいものばかり」
・「日本は、国内市場があまりにも大きい。それに比べ、わが国の内需市場はすかすか」

 また、韓国内のビールメーカーなどを批判する声もみられた。

・「韓国のビール会社のマインドは最悪」
・「韓国ビールは日本でいえば、ビアテイスト飲料」
・「わが国のビールは日本では発泡酒。ビールと呼ばれること自体、恥ずかしくなる粗雑なもの」

 むしろ、北朝鮮のビールの方がおいしいのではといった発言も見られ、韓国人がビールに対して高い関心を寄せている様子がうかがえる。

・「聞いた話だが、北朝鮮のビールの味が韓国産のビールの味よりいいらしい。技術的な問題ではなく、制度や材料が大きな違いをもたらすのでは」
・「わが国のビールがまずい理由は、小規模な醸造所の法的な問題から構造の問題までたくさん。北朝鮮のビールと韓国のビールは、簡単に比較できません」

(編集担当:李信恵・山口幸治)

URLリンク(news.searchina.ne.jp)


94:デフォルトの名無しさん
12/07/21 11:12:10.40
エミュ厨かよ

95:デフォルトの名無しさん
12/07/21 17:54:29.48
scanfがうまく入力できません
なんでですか?
URLリンク(ideone.com)

96:デフォルトの名無しさん
12/07/21 18:13:26.45
                 _____
               /ミミ\\\\ \
             /ミミミ\\\\\\\
            /彡ミミミ\\\\\\\\
            |彡ミミ/\\\\\\\\|
              |彡 |   \\\\\\\|
             ヽ |へ、_  _,へ\\\\/
              | __   __  | / )    gets()
              |           |/ ノ
              |   ( / _ )      /       おひさしぶりーふ
              ヽ       ヽ   |
               ヽ ヽー‐‐‐ァ   /\
              //ヽ ヽ-‐'  / /\ \
            / /   ヽ_ /   / /   \
          /   \  |\  /|  /\      \
   (⌒\  /     (⌒ヽ |二| | /  \      \
 __ゝ  ヽ    ___ ゝ \  \| /   /       |
(        ヽ─ ( l )     ヽヽ  /  /   /     |
  ̄ ̄( ̄丿  |    ̄ ̄( ̄ ゝ  \ /    /       |
    ( ̄ノ  |      ( ̄ ゝ   | ̄ ̄ ̄ ̄        |
    ( ̄ノ  |       ( ̄ ゝ   |


97:デフォルトの名無しさん
12/07/21 18:24:39.22
>>95
このプログラムいつ終わるの?

98:デフォルトの名無しさん
12/07/21 18:36:40.89
おわらないよ

99:デフォルトの名無しさん
12/07/21 19:50:05.70
ネヴァー・エンディング・プログラミング 第一章 ~彼方への旅立ち~

100:デフォルトの名無しさん
12/07/21 20:50:30.43
諦めたら

101:デフォルトの名無しさん
12/07/21 20:52:34.13
やたああああああああああああ
URLリンク(ideone.com)

102:デフォルトの名無しさん
12/07/22 10:16:31.58

米国 「今のままなら朝鮮戦争が再開しても、日本は韓国に協力せず、無視することができる」
スレリンク(news板)


韓国が日韓軍事協定を破棄したことで生じた問題

両国間協力の座礁は、オバマ政権だけでなく、ブッシュ政権で
北東アジア政策を担当した筆者にとっても大きな失望だ。

韓日間の安保協力が突然、暗礁に乗り上げた。
最近問題になった情報交流協定のためだ。

また最近、日本の政治は右傾化し、日韓共同防衛協力を抜け出して日本独自に動こうとしている。

マイケル・グリーン米戦略国際問題研究所(CSIS)日本室長 .
2012/7/21
URLリンク(japanese.joins.com)

103:デフォルトの名無しさん
12/07/22 10:24:28.29
なげーーーーーーーーーーーーーーーーーーーーーーーよ
変数wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww


104:デフォルトの名無しさん
12/07/23 02:32:29.46
quin2decが手元の参考書に載ってない上にぐぐっても出ないんですが、
これはどういった働きをするんでしょうか?

105:デフォルトの名無しさん
12/07/23 03:55:40.74
>>104
見たこと無いのだが。
というか、それはどこに出てきたのでしょうか。

ただ、よくあるパターンとしては
EXCELの関数では
bin2decとかhex2decとかoct2decで
2進数だったり、16進数だったり、8進数だったりを10進数に変換する。
んで、そういう機能をC言語でする場合、
そのような名前の関数を作る事がある。
(ユーザ関数なので、名前はなんでも良いんだけど。)

そのパターンで考えると
quin → quintuple → 5倍
で、多分5進数を10進数に変換する関数っぽいけど、
所詮、ユーザ関数だから正しくは分からない。
もちろんquinさんを10進数に変換するとも考えられる。

106:デフォルトの名無しさん
12/07/23 04:33:50.43
>>105
おお、ユーザー関数なんてものがあるのですか。
通りで検索してもでてこないわけだ。
おっしゃる通り五進法を十進法に変換せよ、という問題で出てきました。

107:デフォルトの名無しさん
12/07/23 05:36:56.10
宿題スレでコードを書いたいただいたのですが、調べながらコードを見ていても理解できない部分が
多々あったので質問させてください。

問題文
URLリンク(ideone.com)
コード
URLリンク(codepad.org)

・#define N 1024は何を意味しているのか
・quin2decが引数として文字を4つ受け取っているのはどこか
・どこで戻り値として返しているか
・受け取る五進数は4桁以下の非負正数(十進法の0~624)であると仮定する、とありますが
 どこで仮定されているのか、あるいはもし仮定されていないならどうすれば良いか
・static char buff[N]; が何を意味しているのか

宿題スレでコードを貰っておきながらこちらで聞くのもどうかと思うのですが、
どうしてもわからなかったのでこちらで質問させていただきました。
よろしくお願いします

108:デフォルトの名無しさん
12/07/23 06:02:51.71
>>94
gameboyはbios用意しなくていいから問題ないっしょ

109:デフォルトの名無しさん
12/07/23 07:03:35.31
>>107
まぁ、マニアックなコードだな。

質問>・quin2decが引数として文字を4つ受け取っているのはどこか
問題文>4つの文字を引数として受けとる
確かに単文で見た場合、
「4個の(文字を)引数として受け取る」と読めなくもないが、
「4種類の文字を引数として受け取る」とも読めるし、「4桁の文字を引数として受け取る」とも読める。
それぞれの返答は
・quin2decは4種類の文字(列)を1つ受け取る。
・コード内で4桁に制限してる箇所は・・・ないね。問題文でも4桁以外の桁数だった場合どうするとか書いていないから、
 コードを書いた人が、プログラムの前提条件として受け取ったんだろうね。
・4種類のチェックを行っている部分は switch文

質問>どこで戻り値として返しているか
これは「戻り値」を返す方法は勉強している(もしくは教科書に書いてある)と思う。
返答としては31行目のreturn文なんだけど、再帰呼び出し(ある関数の中で、自分自身(の関数)を呼び出してる)をしているからイメージ沸きにくいかもね。再帰呼び出しで調べてね。

質問>・受け取る五進数は4桁以下の非負正数(十進法の0~624)であると仮定する、とありますが・・・
受け取る文字列の種類として負を表す文字自体がなく、「r,h,f,m,y以外の文字を受け取ったらエラーとする」ので気にしなくて良いと思う。

質問>・#define N 1024は何を意味しているのか
質問>・static char buff[N]; が何を意味しているのか
Nを利用している箇所は static char buff[N]; と fgets(buff, N, stdin);の二ヶ所である。
問題文では「キーボードから文字列として受け取り」とある。
受け取る領域(入れ物)が必要である。static char buff[N];はそれを用意している。その際、領域の大きさ(N)を何かしら決める必要がある。
問題文としては「4桁の5進数」とあるから、4文字分+(改行コード分またはnull終端分)が必要最低限なのだが、
「4文字以上の文字列を受け取らない」とはあるが、キー入力される文字数は制限されていない。
そうした場合、十分な大きい値(1024)を用意したという事だと思う。
#define とは何かという質問だったら、教科書調べてね。

長いね。

110:デフォルトの名無しさん
12/07/23 07:41:35.79
>>109
長々と説明ありがとうございます、おかげさまである程度理解ができました。
ただ、引数に関してがイマイチわからないのですが、単純に引数として受け取ってるのは
y,m,f,hであり、swich文で入力した文字がそれに該当してるか調べてcaseで分けているということなんでしょうか?

戻り値については早速再帰呼び出しで調べて学習してきます。
#define文自体は調べて理解していたのですが、1024という数字の意味が理解できていませんでした。
領域の大きさを決める数字と聞いて納得できました。

111:109
12/07/23 08:24:22.91
>「4種類の文字を引数として受け取る」とも読める
あ、そもそも5進数だし、「r,h,f,m,y」と書いてあるのだから、5種類の文字だね。。。あほだ。。。

>>110
私が質問の意図を理解していないから上手く説明できてないのだね。
>・quin2decが引数として文字を4つ受け取っているのはどこか
「quin2decが4つの引数を受け取っていない事を疑問に思っている」と読み取って良いかな?

int quin2dec(char *s, int n)
それに対する返答は「4桁の文字列として、一つの引数(s)を受け取っている」から。

ただし、実際には、コードは桁数(4桁以内である事)のチェックはされていない。「なぜチェックしていないのか」は、
多分、「問題文に桁数が不正の場合、どうするのか」が指定されていないからだと思う。

まぁ、もちろん 「int quin2dec(char a,char b,char c,char d)」として4つ受け取ってもコードを書いても良いのだけど。
ただ、こうした場合、3桁の文字が入力された場合、困るかな。
あ、「受け取った4文字中r,h,f,m,y以外の文字が一文字でも含まれた場合エラーメッセージを出してプログラムを終了する。」
quin2decが「r,h,f,m,y」以外の文字を受け取っちゃいけないとは、書いてないからいいか。

まぁ、C言語と言うより、「4つの文字を引数として受けとる 」の問題文の解釈の話のような気がする。
「引数を4つにしないといけない」と読むか、「引数を4桁の文字列として受けとれば良い」と読むか。

とんちんかんな回答かな?

112:109
12/07/23 08:36:19.66
>>110
あ、ちょっと勘違いしてそうなんで補足
>戻り値については早速再帰呼び出しで調べて学習してきます。

「再帰呼び出し」と「戻り値」は直接は関係ないよ。

「再帰呼び出し」がどういう動きをするかを勉強した方が良いよ。
で、「再帰呼び出し」をした結果、それぞれの「戻り値」がどうなるか、がややこしい(かも)。
と言うことね。


まぁ、これは、地道にそれぞれのステップを追って(プログラムが動いている順番を追って)、
その時の変数や戻り値がどうなっているかを書き出してみるのが確実だよ。

113:デフォルトの名無しさん
12/07/23 08:40:54.94
>>111
わざわざありがとうございます。
私の知識が足りないので何を疑問に思っているのかが上手く伝えられていないんだと思います。

おっしゃる通りquin2decが4つの引数を受け取っていないのが疑問でした。
私の手元の参考書と比較するとquin2dec(char *s,int n)の*sとnを仮引数として受け取るのかな、と考えたのですが
それだと仮引数が2つだけで、私は「引数を4つにしないといけない」と捉えたので2つ足りない事に疑問を感じていました。
分かりにくい質問だらけで申し訳ないのですが教えていただけるとありがたいです

114:109
12/07/23 09:41:20.81
>>113
このコードで、引数(s)と、引数(n)とはそれぞれ何を表しているのか。ということですね。
すんません。quin2decについて、真っ当に追ってないから、引数(n)ついて、きちんと理解してません。
っていうのが正直な所です。 
ちょっと気合を入れて動きを追ってみましょう。

7行目の if ( !s || !*s ) return n;
!s は s==0と同じ意味、sは(char *)だから sのアドレスが0だった場合(実際には、後述する「r,h,f,m,y以外」の文字だった場合)
!*s は *s == 0と同じ意味、 sのアドレスが指しているcharの値0の場合だから、null終端だった場合
どちらかの場合、引数(n)をそのまま返す。

11-27行目のswitch文
switch文の引数は*sだからアドレスsの指しているcharの値を指している。
case 'y'からcase 'r'まで、break;がないから、該当した文字列以下の文は(break;まで)すべて実行され、switch文を終える。
よって、yだったら14,16,18,20行目が実行されるので m==4となる。
同様に fだったら、18,20行目が実行されるので m==2となる。
r,h,f,m,y以外だったらdefaultまで行き m== -1となる。

115:109
12/07/23 09:41:38.76
(続き)
29-30行目は
まず m が 0以下という事は前のswitch文で「r,h,f,m,y以外」と言う事
その場合、30行目が実行される。
その時 引数(0,-1)でquin2decで再帰呼び出しされ、その戻り値が returnされているので、自分の戻り値となる。
で、再帰呼び出しされたquin2decでは7行目に引っかかるから、無条件に -1が帰ってくる。
(ということは 30行目は return -1;と記述しても問題ないような気がする。)

31行目は引数(s + 1, 5 * n + m)でquin2decで再帰呼び出しされ、その戻り値が returnされているので、自分の戻り値となる。
s + 1 は、sの次のアドレス(隣の文字のアドレス)にして quin2decに渡している。 注:再帰呼び出しされたquin2decの引数(s)が、自分の引数(s)の次のアドレスとなっている。
5 * n + m は 受け取った引数を5倍しているから、繰り上げ処理をして mを足している。
ふんふん、なるほど。それを繰り替えして、最後の桁まで行ったら、その戻り値が、呼び出し元に上がってくる訳か。

つまり、quin2decは引数(s)上から一文字ずつ処理して、引数(n)は、そのけた時点での十進数の値ということですね。
で、それを最終桁まで繰り返している。

自分だけが納得しているような気がする・・・。

116:109
12/07/23 09:46:03.32
>まず m が 0以下という事は前のswitch文で「r,h,f,m,y以外」と言う事
あ、0未満だね。

117:107
12/07/23 10:28:54.36
細かい説明本当にありがとうございます。
じっくり読んでquin2decが受ける引数について理解できました!
それだけでなく、あやふやで理解したつもりになっていたところも
説明を読んでいるうちに大分しっかりと理解できました。

せっかくの機会なので34-42行目のところも教えていただけないでしょうか?
理解した「つもり」だらけだったので、ここも見当違いな考えになっていそうです。
何だか結局全部丸投げみたいになってしまい申し訳ないのですが、よろしくお願いします



118:デフォルトの名無しさん
12/07/23 11:09:06.06
>>117
途中見てないが、chop()についてだけ。
目的: 引き数で渡されナル終端文字列の後方にある改行文字をchopする。
詳細:
・ナル終端文字を見つける。
・一つ遡る。
・その場所の文字が改行文字(或いは復帰文字)であればナル終端を書き込み、一つ遡る。

以上。

119:デフォルトの名無しさん
12/07/23 11:18:50.03
void chop(char * s)
{
char * p = strchr(s, '\0');
for (--p, p >= s && (* p == '\n' || * p == '\r'); --p)
* p = '\0';
}

120:デフォルトの名無しさん
12/07/23 11:22:00.32
>119を書いて気付いたんだが、>107のコードは何も入力せずに入力を閉じるとバグるな。

121:デフォルトの名無しさん
12/07/23 11:55:59.51
>>118
ありがとうございます。
頑張ってみます

122:デフォルトの名無しさん
12/07/23 11:59:49.68
いえいえ

123:デフォルトの名無しさん
12/07/23 12:17:34.50
あっそーれ

124: ◆QZaw55cn4c
12/07/23 12:21:29.66
>>109
俺のコードをよくもマニアックといったな。慰謝料にモリタポ払え

125: ◆QZaw55cn4c
12/07/23 12:30:13.15
>>120
ご指摘感謝。
何も入力しないといっても、エンターキーのみの入力という意味なら、\r, \n がバッファに載るのでほとんど問題ないでしょうが、
しかしバッファの直前がたまたま \n, \r だったりすると、確かにバグりますね。

以下に修正しておきます。
URLリンク(codepad.org)

126:デフォルトの名無しさん
12/07/23 12:47:06.48
何も入力しないってのはCTRL-Dのことだろ
的はずれにもほどがある

127:109
12/07/23 13:28:09.19
>>124
あ、本人?

勝手にコード解説しちゃって、ごめんね。
行間まで、思い込みで解説しちゃったから、
解釈の間違いあったら、正しといてください。

きっと、間違っているから。

128:デフォルトの名無しさん
12/07/23 13:34:07.13
なんだ、QZコードだったのか。納得。

129:デフォルトの名無しさん
12/07/23 14:31:44.81
0.1次元バーコードか?

130:デフォルトの名無しさん
12/07/23 15:53:44.74
え

131:デフォルトの名無しさん
12/07/23 17:36:21.47
#define NULL ((void *)0)
あるポインタをNULLで初期化すると、そのポインタはメモリ上の絶対アドレスである0番地を指すということなのでしょうか


132:デフォルトの名無しさん
12/07/23 17:42:33.91
>>131
0番地はワイルドカード。

133:デフォルトの名無しさん
12/07/23 17:46:25.38
環境による としか言い様がない気分

134:デフォルトの名無しさん
12/07/23 17:49:08.12
通常アドレスは仮想化してるから実際は指してないし参照できない

135:デフォルトの名無しさん
12/07/23 18:00:30.39
URLリンク(support.microsoft.com)
意味不明な日本語だけどMS-Cではプログラム終了時にNULLセグメントを調べて
そこのデータが書き換えられていればエラーとした

136:デフォルトの名無しさん
12/07/23 18:05:41.86
仮想記憶のない時代の話だな。

137: ◆QZaw55cn4c
12/07/23 18:28:00.53
>>127
丁寧に解説いただき恐縮です。

> 30行目は return -1;と記述しても問題ないような気がする。
これは確かに。return 文を一箇所にしたいという意思だが、そのために if (!s || !*s) と複雑になってしまったので、どっちでかいても一長一短。んー。

>>128
んー、なにを納得したのかおしえてください。匂いますか、いや臭いますか?

138:デフォルトの名無しさん
12/07/23 18:35:30.76
URLリンク(ideone.com)
とシンプルに書けばいいのに再帰使ってソースを読みにくくしてるところ

139: ◆QZaw55cn4c
12/07/23 19:17:48.17
え?再帰の方がよみやすいのですが?これって主観ですかね。

140:デフォルトの名無しさん
12/07/23 19:26:00.65
隙あらば再帰にしてしまう→再帰ッカー
他にもCゲンガー、フォートランナー、コボラーなど

141:デフォルトの名無しさん
12/07/23 19:27:49.63
2,3のコードがあげられてて
そのうちの再帰使ってるのが「わからん」ちゅーなら
初心者やらにはワカランのだろ

強力だけれども面倒くさい、
とくにその手の初心者には

誰かにとっては読みやすくても、
ここら辺りで宿題出したり聞いたりする人物のレヴェルも考える
普通なら ね


142:デフォルトの名無しさん
12/07/23 22:52:42.03
すみません、どうしても解答がわからないのですが...

問.関数、void addlist(LIST *head,LIST *addata)を完成させろ

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct name_list{
struct name_list *next;
char *name;
}LIST;
void addlist(LIST *head, LIST *addata);
int main(void){
LIST name0= {NULL, NULL};
LIST name1= {NULL, "B"};
LIST name2={NULL, "C"};
LIST name3={NULL, "D"};
LIST name4={NULL, "E"};
LIST addata = {NULL, "A"};
LIST *p;
LIST *head;

head=&name0; name0.next=&name1; name1.next=&name2; name2.next=&name3; name3.next=&name4;
addlist(head, &addata);

for(p = head->next; p != NULL;p=p->next)printf("%s\n,p->name");


どなたかお願い致します....(ノД`)

143:デフォルトの名無しさん
12/07/23 22:53:49.68
あ、一番下に
return 0;
}

を忘れてました...

144:デフォルトの名無しさん
12/07/23 22:57:15.17
>>1読むのも忘れてんぞ


145:>>142
12/07/23 22:59:04.90
>>144

ごめんなさい
これは過去問でして、明日試験なんですけど聞ける友達がいない....
C言語です

146:デフォルトの名無しさん
12/07/23 23:00:32.52
リストの末尾に追加かね

void addlist(LIST *head,LIST *addata)
{
 LIST *p = head;
 while (p->next) p = p->next;
 p->next = addata;
}

147:デフォルトの名無しさん
12/07/23 23:04:27.30

PICマイコンを使用するためにC言語を勉強中です。
どうしてもプログラム中に、EEPROMへの読み書きを多用するので
int型とlong型用の2つの値をEEPROMから読み込み、int型long型のそれぞれの変数へ代入する関数を作ったのですが、ポインタの使い方がよくわかりません
hiとかloというのは2バイト以上の変数を1バイト単位に分割するために使用する”built_in.h”というヘッダファイル用の語句です
このコードの何がダメなのかも分らないのでご教授ください
よろしくお願いします

void main()
{
int x;
long y;
read2byte(100,&x);
read4byte(200,&y);
}

void read2byte(int a,int *b)
{
hi(*b) = EEPROM_Read(a);
lo(*b) = EEPROM_Read(a+1);
}

void read4byte(int a,long *b)
{
highest(*b) = EEPROM_Read(a);
higher(*b) = EEPROM_Read(a+1);
hi(*b) = EEPROM_Read(a+2);
lo(*b) = EEPROM_Read(a+3);
}


148:デフォルトの名無しさん
12/07/23 23:10:09.88
>>147
バイトオーダーが違うかもしれない
くらいしか分からん

149:147
12/07/23 23:11:54.31
書き忘れました

EEPROM_Read(a); というのはコンパイラ付属の関数で、aがEEPROMのメモリアドレスです

150:>>142
12/07/23 23:14:59.54
>>146
そもそもこのプログラムって何をしているものなのでしょうか....?
ソート?


あと、for文の上の
addlist(head, &addate)というのは何なのですか?

151:片山博文MZボット ◆0lBZNi.Q7evd
12/07/23 23:18:05.21
hi,loの定義をさらせ。
hi(*b)は左辺値ではないから代入できないと思われ

152:147
12/07/23 23:23:18.80
>>151

2バイト以上の値、例えばlong型(4バイト)を低いビットからlo,hi,higher,highestとバイト単位に分割するものです


153:デフォルトの名無しさん
12/07/23 23:26:02.62
>>150
うんにゃ
わたされた head から末尾を探し出して、その末端にさらに 渡された adddata を繋げてる

name0~name4 までのリストを手で構築後
adddata 関数を呼び出してる

意図として name0~name4 の後ろに adddata を連結しようとしてる と俺は解釈した

154:デフォルトの名無しさん
12/07/23 23:29:09.93
× adddata 関数を呼び出してる
○ addlist 関数を呼び出してる

155:>>142
12/07/23 23:30:02.40
>>153ご丁寧にありがとうございます

このプログラムはAがname0に入るわけでは無いんですか??

addataがname4の後に連結した時、whileが初めて回りだしてAが先頭に来るって事ですか?

やばい日本語おかしくてスミマセン

156:デフォルトの名無しさん
12/07/23 23:36:07.74
printf() の出力結果は BCDEA の予定
ABCDE にしたいのなら

void addlist(LIST *head,LIST *addata)
{
 LIST *p = head->next;
 head->next = addata->next;
 addata->next = p;
}


157:デフォルトの名無しさん
12/07/23 23:36:41.10
>>142
厳しいようだけど、
明日試験で、過去問で解答が分からない。ってのは
解答を教えても、明日の試験では違う問題がでるから意味が無いのでは?
解き方が分かっていないんだから。

このプログラムは、addlistが不明なのだが、明示されてるのだから、
そこを理解する所から、入るべき。
(まさしく >>150 の疑問を理解できる様になる事が大事)

それから、足りない部分(addlistの中身)を考える。

158:デフォルトの名無しさん
12/07/23 23:37:14.59
× head->next = addata->next;
○ head->next = addata;

なんかヒデェな… もう寝る

159:157
12/07/23 23:39:14.48
>このプログラムは、addlistが不明なのだが、明示されてるのだから、そこを理解する所から、入るべき。
まつがい。
このプログラムは、addlistが不明なのだが、明示されている所を理解する所から入るべき

160:>>142
12/07/23 23:40:52.16
レス下さった皆さんありがとうございます
そもそも一晩(ではないんですけども)でやろうとした自分が悪いですね...

少し前の方から再度勉強しなおしてきます...
ありがとうございました!

161:片山博文MZボット ◆0lBZNi.Q7evd
12/07/23 23:41:19.46
*b = ((int)EEPROM_Read(a) << 8) | (int)EEPROM_Read(a+1);

*b = ((long)EEPROM_Read(a) << 24) | ((long)EEPROM_Read(a+1) << 16) | ((long)EEPROM_Read(a+2) << 8) | (long)EEPROM_Read(a+3);
みたいに書かないといけない。

162:デフォルトの名無しさん
12/07/23 23:47:27.06
>>147
君はまだEEPROMを使うべきではない(きり)

163:片山博文MZボット ◆0lBZNi.Q7evd
12/07/23 23:58:54.84
共用体を使う方法もある。
union I16{int i;
struct {unsigned char LO,HI;}};
union I32{long l;struct {I16 LO,HI;}
};


164:片山博文MZボット ◆0lBZNi.Q7evd
12/07/24 00:14:51.03
久しぶりにCやったら;とunionをつけ忘れたよ

165:147
12/07/24 00:26:01.62
>>161
レスありがとうございます。

その式と、下記の式だと自分には同じ動作だと思ってしまうのですが
何がどう違うのでしょうか?本当にわからないです><

void read4byte(int a,long *b)
{
highest(*b) = EEPROM_Read(a);
higher(*b) = EEPROM_Read(a+1);
hi(*b) = EEPROM_Read(a+2);
lo(*b) = EEPROM_Read(a+3);
}



166:デフォルトの名無しさん
12/07/24 00:29:04.57
>>165
hi とか lo がどんなものか分からないからこうしようぜ

void read4byte(int a, long *b)
{
unsigned char *p;
p=(unsigned char*)b;
*(p+0)=EEPROM_Read(a+0);
*(p+1)=EEPROM_Read(a+1);
*(p+2)=EEPROM_Read(a+2);
*(p+3)=EEPROM_Read(a+3);
}

167:片山博文MZボット ◆0lBZNi.Q7evd
12/07/24 00:33:47.87
>>165
恐らくhiマクロなどは内部でシフト演算を使っているので
hi(*b)などは参照がなくなって左辺値になれないから代入対象になれない。ただそれだけ。

168:147
12/07/24 00:39:29.70
>>166

レスありがとうございます。
実は、>>165で書いた式と、>>161さんの書いた式で問題なく読み込みができたのですが、
PICマイコンのスレで同じような質問をしたところ、ポインタの使い方?がおかしいと指摘されて
ここで質問させて頂きました。
一番気になるのはポインタの使い方の間違いと間違っているために起こり得る問題です。
long型(適当な値 99,999とか2,222,222)を一旦、EEPROMに書き込み、上記の式で読み込ませたところ
正常に読み込まれているので何が何だかさっぱりわかりません~~;

169:147
12/07/24 00:44:24.25
>>167

レスありがとうございます。
実は、>>168で書いたよう、に教えて下さった式も自分で書いた式も問題なく読み込みできています。
本当に何がダメなのか、本当はダメではないのか分らず、困りましたorz

170:片山博文MZボット ◆0lBZNi.Q7evd
12/07/24 01:00:20.84
ファイルbuilt_in.hを開いて中身を確認しなさい。
そこにhi,loの定義があると思われます。
それらをさらして下さい。

171:147
12/07/24 01:04:28.32

>>170
了解しました。下に晒します。
話変わりますが、例のコードはポインタの使い方って間違っていますかね?
そこが気になります。

#define Lo(param) ((char *)¶m)[0]
#define Hi(param) ((char *)¶m)[1]
#define Higher(param) ((char *)¶m)[2]
#define Highest(param) ((char *)¶m)[3]

#define lo(param) ((char *)¶m)[0]
#define hi(param) ((char *)¶m)[1]
#define higher(param) ((char *)¶m)[2]
#define highest(param) ((char *)¶m)[3]


172:147
12/07/24 01:06:18.61
文字化けしたので、&とparamの間にスペース入れました

#define Lo(param) ((char *)& param)[0]
#define Hi(param) ((char *)& param)[1]
#define Higher(param) ((char *)& param)[2]
#define Highest(param) ((char *)& param)[3]

#define lo(param) ((char *)& param)[0]
#define hi(param) ((char *)& param)[1]
#define higher(param) ((char *)& param)[2]
#define highest(param) ((char *)& param)[3]

173:デフォルトの名無しさん
12/07/24 01:06:47.16
>>171
>>147 のままで合ってるよ

174:片山博文MZボット ◆0lBZNi.Q7evd
12/07/24 01:08:49.01
検証の結果、問題なし。

シフト演算じゃなくて&とキャストを使ってた

175:デフォルトの名無しさん
12/07/24 01:10:37.95
hi, lo マクロは左辺値になれる形式だな

> PICマイコンのスレで同じような質問をしたところ、ポインタの使い方?がおかしいと指摘されて
その指摘は hi, lo を関数だと勘違いしての指摘かもしれんね

176:147
12/07/24 01:11:22.58
>>173
マジですか?
PICもC言語も始めて数か月程度しか経っておらず、ポインタを覚えるためにも初めて使ってみたのですが
PICマイコンスレで指摘され、どうしても自信がありません><


177:147
12/07/24 01:14:57.23
>>174-175

レスありがとうございます!
キャストとかの語句はまったくわかりませんでしたのでもっと勉強しないとダメですね
どうもありがとうございました!



178:デフォルトの名無しさん
12/07/24 07:52:56.12
いえいえ

179:デフォルトの名無しさん
12/07/24 11:01:09.22
連結リストの質問チラホラ出るけど、ポインタで教えるor
ポインタtoポインタで教えるのは教員の好みによるものなのかい?

180:デフォルトの名無しさん
12/07/24 11:06:40.17
リストで二重ポインタなんか使わんだろ

181: ◆QZaw55cn4c
12/07/24 12:25:23.77
>>180
え?使わない?
二重ポインタを使わないとなると、コピーコピーコピー、とルートまで延々コピーする格好の悪いことになるのだが?

182:デフォルトの名無しさん
12/07/24 12:31:00.60
>>181
それが正解だよ
コピーコストが嫌ならリストオブジェクト全体の参照を取ればいい
ノードの参照は共有しないのが常識

183:デフォルトの名無しさん
12/07/24 12:46:33.76
free()しちゃうとダングリングポインタが出来てしまう危険があるからか

184:デフォルトの名無しさん
12/07/24 13:12:59.51
URLリンク(ideone.com)
ふつー二重ポインタ使うでしょ

185:デフォルトの名無しさん
12/07/24 13:29:10.43
二重ポインタってポインタが指してる先を変更したい時に使うんじゃないのか?
それかポインタ配列か

話は変わるけどこういうのはcがfree()されるとaもbもダングリングポインタになってしまうけど
検出されないのな
当たり前か
後からaやbを使いまわす可能性があるし

int main(void)
{
int *a, *b, *c;

c = (int *)malloc(sizeof(int));

if (c == NULL)
exit(1);

*c = 123;

a = b = c;

printf("%d %d %d\n", *a, *b, *c);

free(c);

return 0;
}

186:デフォルトの名無しさん
12/07/24 13:29:14.80
使わねーよ。
アホすぐる。

187:デフォルトの名無しさん
12/07/24 13:30:18.83
>>185
お前はまったく理解していない。

188:デフォルトの名無しさん
12/07/24 14:51:53.24
for(i=0; i< 空欄B (float) ; i++) printf("%02x", *p++);


この空欄Bに入る単語を答えよという問題があるんですが  キャスト演算子(float)を セミコロン直前におくような
表現が思い当たりません。(問題文全体はもっと長いです。)どのような表現が入りうるのでしょうか?

189:デフォルトの名無しさん
12/07/24 14:54:21.10
sizeof

190:デフォルトの名無しさん
12/07/24 15:06:43.27
あー、失念してました。ありがとうございます。 ついでに
printf(" %-12g",f); の意味も教えていただけないでしょうか?
問題が紙なので %ー12じゃなくくて %ーL2 かもしれませんが

191:デフォルトの名無しさん
12/07/24 15:09:38.05
すいません%-12gのほうはもういいです

192: ◆QZaw55cn4c
12/07/24 18:43:39.47
>>185
C に「検出」などというお子様仕様は皆無。

193:デフォルトの名無しさん
12/07/24 18:47:15.43
コンパイラによっては未使用変数や未初期化変数のアクセスは検出するがCの仕様ではないよな。

194:デフォルトの名無しさん
12/07/24 18:52:58.26
ひょっとしてinlineってCの仕様じゃない?

195:デフォルトの名無しさん
12/07/24 18:55:30.07
C99から。

196:デフォルトの名無しさん
12/07/24 20:16:30.67
ソフト会社でC99での開発って結構あるの?

197:デフォルトの名無しさん
12/07/24 20:17:28.88
まずない。

198:デフォルトの名無しさん
12/07/24 20:18:43.63
ですよねー

199:デフォルトの名無しさん
12/07/24 20:24:23.89
>>192
無職のオッサンに上から目線で言われたくないなあ

200:デフォルトの名無しさん
12/07/24 20:25:29.58
GCのアルゴリズムでも勉強したら?

201:デフォルトの名無しさん
12/07/24 20:39:57.16
Cでインラインしたいときはどうしてるの?

202:デフォルトの名無しさん
12/07/24 20:41:25.79
#define

203: ◆QZaw55cn4c
12/07/24 20:49:42.06
>>182
よろしければもう少しお話しいただけるとありがたい。
二重ポインタあるいはポインタの参照は必要不可欠だと思うのですけれども、それで正しいということでしょうか?
それともポインタのみで正、なのでしょうか?
URLリンク(ideone.com)

204: ◆QZaw55cn4c
12/07/24 20:50:19.64
>>199
であればそういう発言をしないことだ。

205:デフォルトの名無しさん
12/07/24 21:09:46.86
>>203
ルートノードを直接的にリストとみなさずに
ルートノードを包むようなリストオブジェクトを書くんだよ
ルートのアドレスがコロコロ変わったらリストを参照してる人が大変だろう

206:デフォルトの名無しさん
12/07/24 21:09:52.12
>>204
人のせいにすんな
まず働け

207:デフォルトの名無しさん
12/07/24 21:11:37.90
>>205
相手にするな。

208:デフォルトの名無しさん
12/07/24 21:40:15.20
cmdにgccと打つと、{gcc: 致命的エラー:入力ファイルがありません
 RpC~オワオスB}とでるんだけど、だれか助けて(泣)

209:デフォルトの名無しさん
12/07/24 21:56:37.78
オワオスって何か\(^o^)/オワタみたい

210:デフォルトの名無しさん
12/07/24 22:17:32.84
>>208
ソースファイルを指定してないからじゃないの?

211:デフォルトの名無しさん
12/07/24 22:20:02.05
使っている人間が致命的なまでのノウミソなんだろうな。
なんて打ったかくらい全部描けよアホ


212:デフォルトの名無しさん
12/07/24 22:24:49.58
>>203
C++で書くんならmallocじゃなくてnew使おうよ・・・
必死で書いたのが伝わってきてキモス

213:デフォルトの名無しさん
12/07/24 22:25:22.19
全部書いてるんだろ。

214: ◆QZaw55cn4c
12/07/24 22:28:23.70
>>205
たしかにそれには同意します。
特にクラスに仕立てるときに、ルートを含むクラスとノードのクラスを一つにまとめようと苦心した記憶がありますが、
結局のところ、ルート(ファーストノードをさすポインタ)は、ノードクラスとは別にしたほうがいいと考えるようになりました。
URLリンク(codepad.org)
(結城さんのJavaデザパタ本はadapterパターンを試行したものです。リストではなく二分木ではありますが、Node クラスはほとんど構造体扱いで Node クラスのメンバ関数は軒並みstaticの有様です。)

ただしここで話題となっている、いや話題としたいのは、「リストや二分木を扱うときに、二重ポインタを使わずに書く、というのはあまり考えられないのでは?」という素朴な疑問です。

215: ◆QZaw55cn4c
12/07/24 22:30:09.22
>>212
単にCで参照を使いたいという願望だけでざっと書き下ろしてみたのですが、あー、ぶれてますねえ、なんで cstdio を使わずに iostream にしちゃったんだろう?

216:デフォルトの名無しさん
12/07/24 22:37:28.68
リファレンスへのポインタなんて恐らく初めて使ってみたんだろうな

217:デフォルトの名無しさん
12/07/24 22:41:16.29
おい、おまえらQZに対する嫉妬がすぎるぞw

218:デフォルトの名無しさん
12/07/24 22:41:17.06
C++でいいのならstd::listとか使うだろ

219:デフォルトの名無しさん
12/07/24 22:45:05.48
>>214
二重ポインタを使う必要がない(実際、簡単に書ける)
だからわざわざ間違いが起こりやすい二重ポインタを使うのは避けるべき

220: ◆QZaw55cn4c
12/07/24 22:55:52.66
>>216
ではなくて、ポインタ変数のリファレンス。

昔いろいろやってみたことがありました。スレリンク(tech板:504番)

221: ◆QZaw55cn4c
12/07/24 22:57:37.23
>>219
うん、それが理解できないでいるのです。
リストは >>184 ににた形で(二重ポインタ抜きで)書けそうですが、二分木やAVL木では、二重ポインタなしではほとんど不可能では、と考えるのです。

222:デフォルトの名無しさん
12/07/25 05:11:34.41
ほんと、低脳ほど頭が固くて笑える。

223:デフォルトの名無しさん
12/07/25 05:34:23.01
>>217
自己愛性パーソナリティ障害が何を言うかw

224:はちみつ餃子 ◆8X2XSCHEME
12/07/25 07:36:23.36
書けるっていう奴が書いてみせればてっとりばやいんじゃね?

225:デフォルトの名無しさん
12/07/25 07:52:53.60
え?お前も書けないと思ってんの?
コテやめた方がいんでね?

226:デフォルトの名無しさん
12/07/25 07:53:54.44
↑池沼

227:デフォルトの名無しさん
12/07/25 08:10:24.87
>>226
自己紹介乙。
今時Cなんて書かないけど、リストなんてのも書かないけど、
書くとしたらこんなもんだろ。
URLリンク(ideone.com)

228:デフォルトの名無しさん
12/07/25 08:40:42.42
うむ、リスト使う位ならC++で書くからな。

229:デフォルトの名無しさん
12/07/25 08:51:22.93
>>219
二重ポインタくらいで音を上げるど素人が「べき」なんて言うな、おこがましい

230:デフォルトの名無しさん
12/07/25 09:00:02.35
お前がな。

231:デフォルトの名無しさん
12/07/25 09:31:33.84
>>229
本物の低脳を久々に見た
229はガチでヤバイ

232:デフォルトの名無しさん
12/07/25 09:31:51.97
元は教員がど素人に教えるときの話でしょ

233:デフォルトの名無しさん
12/07/25 10:28:33.93
スタンフォードの例だ
URLリンク(cslibrary.stanford.edu)

234:デフォルトの名無しさん
12/07/25 11:26:23.77
老害にはC++の良さがわからんのですよ

235:デフォルトの名無しさん
12/07/25 11:32:07.99
>>184を見てみたが、要するにこれってリストの「先頭に」ノードを付け加えて行って、
先頭ノードを指すポインタの値がコロコロ変わるために、二重ポインタを使って
先頭ノードを指すポインタの値を書き換えてるんだよね

リストの最後尾にノードを付加するようにすれば二重ポインタは不要

236:デフォルトの名無しさん
12/07/25 11:38:54.61
挿入関数に渡したノードを指すポインタ以外がそのリストを参照していた場合参照先を見失う

237:はちみつ餃子 ◆8X2XSCHEME
12/07/25 12:21:56.77
>>225
書けないということは事実上証明不能 (いわゆる悪魔の証明) なので、
この場合の証明責任は書けるという側にあるということを述べただけで俺は
内容についてどちらとも思ってないというか全く考察してない。

238:デフォルトの名無しさん
12/07/25 12:24:56.26
普通なら考察以前の問題だからコテはずせって話なんだろ。

239:デフォルトの名無しさん
12/07/25 13:10:58.12
>>236
だよな
だから先頭にノードを付け加えるのは特殊なケースを除けば百害あって一利なしのような気がする

240:デフォルトの名無しさん
12/07/25 13:19:05.19
末尾追加は末尾を指すポインタの分メモリが必要、これが無いと遅くなる
先頭追加なら早くて、追加のメモリも要らないが、参照がコロコロ変化するのが面倒なのでリストをラップするオブジェクトが必要になり結局メモリ効率も前者と同じになる

241:デフォルトの名無しさん
12/07/25 13:50:20.40
なら双方向リストにしろよ
メモリはたくさん食うけど先頭ノードからすぐに末尾ノードへのポインタを得る事が出来る
だいたいリストをソートする時には単方向リストだと大変だぞ

242: ◆QZaw55cn4c
12/07/25 19:43:53.07
>>227
>>184, >>203 より機能を削ってますね。リストの頭にしかノードを追加できない。
>>184, >>203 と同じようにリストの途中に挿入する形で、かつ二重ポインタを使用しない、というのは可能なんでしょうか。

双方向ならできるかな?

243:デフォルトの名無しさん
12/07/25 19:46:08.51
できる
以上

244:デフォルトの名無しさん
12/07/25 19:53:54.30
以上


詳細を議論できなくて逃げたいゴミがよく使う言葉

245:デフォルトの名無しさん
12/07/25 19:59:51.56
逆になんで出来ないと思うのか疑問

246:デフォルトの名無しさん
12/07/25 20:08:27.46
>>245
横からだが、それは、さすがに
悪魔の証明を求めていると思う。

247:デフォルトの名無しさん
12/07/25 20:09:02.25
>>241
双方向でリング状?
先頭->prev = 末尾
末尾->next = 先頭

248:デフォルトの名無しさん
12/07/25 20:10:43.91
リングリストでggrks

249:デフォルトの名無しさん
12/07/25 20:15:15.39
単方向・双方向と循環・非循環は別の設計思想じゃね?

250:デフォルトの名無しさん
12/07/25 20:16:43.45
>>246
悪魔の証明って言いたいだけだろ
普通にできるものを出来ないといいはるからなんでだよってなるのは当然
馬鹿な子供が掛け算が出来ないからってそれが計算不能なわけではないだろ
勉強してなんとかやろうとしてないだけだよ

251:デフォルトの名無しさん
12/07/25 20:22:39.12
証明まではできなくとも困難さの示唆くらいはできる事も多々

252:デフォルトの名無しさん
12/07/25 20:35:35.90
>>250
うん。言いたかっただけw

ただ、これは考え方の違いだからいいんだけど、

バカだと思った子に、「お前はバカだ」と言っても何も始まらないと思う。
その場合「君はこういう理由でバカだよ」と説明してあげた方がいいと思ってる。

253:デフォルトの名無しさん
12/07/25 20:38:54.11
バカな理由はログみれば?
散々書いてあるでしょ

254:デフォルトの名無しさん
12/07/25 20:42:00.05
>>252
バカには何を言っても無駄。このスレ見てればわかるだろ。
URLリンク(ideone.com)

255:デフォルトの名無しさん
12/07/25 21:15:44.00
>>247
双方向リストにするならリングリストにしないと意味が半分失われるよ
最初に作成したノードを指すポインタを保持しておく
そしてもし最初に作成したノードを削除した場合、一つ前(つまり最後尾)か
一つ後ろを指すように書き換える

256:デフォルトの名無しさん
12/07/25 21:23:24.18
URLリンク(www.geocities.jp)
URLリンク(www.ysr.net.it-chiba.ac.jp)

こんな感じか
そしてノードを削除していって一つもノードがなくなったらノードを指すポインタを
NULLにするなどしておく

別に無理にリングリストにする必要もないけどしておくといろいろと便利

257: ◆QZaw55cn4c
12/07/25 21:54:49.47
>>254
んー、各ノードを走査するときに、同時に前回の対象ノード=今回の親ノードを記憶しておくんですね。なるほど。
でも、これってリストだからできるやりかたで、二分木のときにはやる気はおきないなあ。
ああ、二分木を非再帰に構成する―上からノードをパチンコ玉よろしく落としていって、はまるところにはまる、っていうやりかたはありそうですね。

二重ポインタに固執していたんですが、いろいろあるんですね。ありがとうございました。

258:デフォルトの名無しさん
12/07/25 22:10:28.89
何言ってんだお前。
>>184と同じだろ。

259:デフォルトの名無しさん
12/07/25 22:13:15.37
みなさん、やっぱり自分の書いたコードが一番かわゆいのね、ふふふ

260:デフォルトの名無しさん
12/07/25 22:14:20.41
コテはずすなら一生はずしとけ。

261:259
12/07/25 22:22:51.53
ん?もしかしてQZさんだと思ってる?
残念ながら違います。。
運営さんにIPきいてみたら?

262:デフォルトの名無しさん
12/07/25 22:32:25.62
早く薬飲んで寝てろ。
一生な。

263: ◆QZaw55cn4c
12/07/25 22:32:46.57
>>258
え?
>>184 は二重ポインタ pp をつかってループ変数を一つにおさえていますけれども、>>254 は挿入地点 p とその親 pPrev の両方をおさえてるでしょ。
p の親がない場合は pPrev = 0 にして、そのときの処理は場合わけにしたりとか。

なんだか二重ポインタ抜きだといろいろ面倒だなあ。 たぶんやらない、やりたくない。

>>259
できるだけいろいろみるようにしてますが、やっぱりそういうものでしょうね。堅いといわれてもしかたがない。

264:デフォルトの名無しさん
12/07/25 22:34:17.70
どうでもいい
アホはアホでひとくくり

265:デフォルトの名無しさん
12/07/25 23:04:59.72
コードなんて、結局要件を満たして動きゃ良いので、
普通とか普通じゃないと、他人に理解されようがされまいが
そんの事はかは関係ない。動いたもん勝ち。


ただし、これを仕事する場合は、大抵チームで作って幾ものだから
当然、担当が変わることもある。
その場合、他の人が読めない様なコードはくずだし、
そんなコードを書く奴もポンコツ扱いされる。

266:デフォルトの名無しさん
12/07/25 23:13:06.82
某Qとかな
どうせコピペ検知システムでバレるのにモリタポなんか取ってひでえ
癖があるからすぐに分かってしまう

267:デフォルトの名無しさん
12/07/25 23:18:40.01
癖がわかるほどチェックしてんだ
本気で好きなんだな
きもちわるい

268:デフォルトの名無しさん
12/07/25 23:23:04.16
お前がな。

269:デフォルトの名無しさん
12/07/25 23:36:48.68
お前がな?
なにそれ
ちょっと説明してもらえるかな?

270:デフォルトの名無しさん
12/07/25 23:38:41.24
ひらがな。
よみがな。

271:デフォルトの名無しさん
12/07/25 23:44:18.19
>>267
大学の講師なめすぎ

272: ◆QZaw55cn4c
12/07/25 23:54:51.82
>>265
では、後半の観点からすると、>>184>>254 はどちらがより好ましいのでしょうか。

273:デフォルトの名無しさん
12/07/26 00:04:29.56
後者

274:デフォルトの名無しさん
12/07/26 00:19:16.05
素のCでリンクトリストか。なんか楽しそうだな。

275:デフォルトの名無しさん
12/07/26 01:30:53.63
プログラマーってどうせ恵まれた家庭の奴がなるんだろ?
俺んとことか金持ちじゃなかったからパソコンすらなかったし

276:デフォルトの名無しさん
12/07/26 01:39:57.94
君は自らも努力しなかっただけ

277:デフォルトの名無しさん
12/07/26 01:45:03.17
>>275
金持ちは医者とかだろ
世の中に何人プログラマーがいると思ってるんだ

今は開発環境がタダで手に入るけど
昔はアセンブラ買う金がなかったから
ノートにアセンブリ言語でコーディングして
CPUの命令セット見て手でコンパイルして
マシン語モニタで16進数で打ち込んだりしてたぞ

ドラクエの中村光一さんなんかも新聞配達でパソコン買ってたぞ
バイトすればパソコンくらい買えるだろ。てかなにで書き込んでるんだ

ちなみに秋元康さんは高校生のときに親の年収超えちゃって
親父が寂しそうな顔したとか

278:デフォルトの名無しさん
12/07/26 01:49:52.56
>>277
どうせ俺はプログラマーにはなれないんだよ。
どうしたらいい?
本気で就職困ってる。
大学院は行かない(1浪2留)情報学科
で就職ある?
アトピー持ちだよ。
就活が怖い。



279:デフォルトの名無しさん
12/07/26 01:51:35.76
+3だから2chで噂されてる新卒採用の年齢制限に引っかかるか心配
プログラマーなんてどうせ高専か大学ストレートで出た20前半の奴
がなるんだろ?おまけに実家は金持ちで小4くらいからWindowsいじ
ってたような。

俺は何もかも恵まれていない。
助言をくれ。

280:デフォルトの名無しさん
12/07/26 01:51:53.39
ここは人生相談するスレじゃねーぞ

281:デフォルトの名無しさん
12/07/26 01:56:03.73
文系卒でプログラムのプの字も知らなかったヤツがコーダーになる世の中で何を言ってるんだろう

282:デフォルトの名無しさん
12/07/26 01:58:05.80
>>281
それってさ単に有能なだけだろ..........


283:デフォルトの名無しさん
12/07/26 02:00:50.99
誰でもプログラマーになれるなら院出て仕事無いって嘆く奴はいねーよ

284:デフォルトの名無しさん
12/07/26 02:03:29.53
何でも知ってるQZaw55cn4cって仕事何なの?
もし彼が無職ならプログラマがいかに敷居の高い職業なのかわかるでしょ。


285:デフォルトの名無しさん
12/07/26 02:04:51.40
QZは破壊工作するからしゃーない

286:デフォルトの名無しさん
12/07/26 02:07:41.40
今ならスマホアプリでも作って売ればいいだろ
このスレ来てるんならCは分かるんだろ?
Cが分かってれば3日もあればObjective-Cは使えるようになる

IT土方なら中卒だっていたぞ
某官公庁の経理システムのリーダーとか

この人なんか内定貰ってから勉強してるんだぞ
URLリンク(itpro.nikkeibp.co.jp)

287:デフォルトの名無しさん
12/07/26 02:20:28.12
↑京大やんポテンシャル違いすぎ

288: ◆QZaw55cn4c
12/07/26 02:51:01.47
>>286
>Cが分かってれば3日もあればObjective-Cは使えるようになる

本当ですか?にわかには信じがたい。
今 Java やってますけれども、いろんなJava知識を一からやっているわけで、なかなかものになりません。
きょうはここでひっかかりました。スレリンク(tech板:595番)

289:デフォルトの名無しさん
12/07/26 02:54:24.41
円周率の近似値なんてどうやってC言語使ってやればいいわけ…

290:デフォルトの名無しさん
12/07/26 02:59:18.70
数学の問題だね
double精度でやるのは、公式知ってればすぐにできるけど、
出来合いのクラス使わずに多倍長計算やるとまあまあ手応えあって面白いよ

291:デフォルトの名無しさん
12/07/26 03:02:05.49
ガウスルジャンドルとかで検索してみるとか

292:デフォルトの名無しさん
12/07/26 03:04:34.51
>>282
Fラン卒だった

293:デフォルトの名無しさん
12/07/26 03:07:15.26
>>288
それレスみた?とりあえず英語読めないときついぞ
Java分かってればなお速いぞ

>>289
「C 円周率」でびんぐれ
「マチンの公式 C」でもいいぞ

294:デフォルトの名無しさん
12/07/26 03:28:00.90
>>288
中年ジジイは既に脳が硬化してるから無理だよ

295: ◆QZaw55cn4c
12/07/26 03:41:15.22
>>293
うん。自分で extends Applet の外にクラス作っておいだしたはいいものの、そのクラスをも extends Applet にしないといけなかったんですね。
まだぴんとこないのですけれども。

296:デフォルトの名無しさん
12/07/26 03:44:02.16
>そのクラスをも extends Applet にしないと
それがしたかったのなら正しいけど多分違うだろ


297: ◆QZaw55cn4c
12/07/26 03:54:03.79
>>296
そうですか?extends ではうまくいってます。
this を cast してもだめだったし、いまいち c++ と違うような気がするなあ。

298:デフォルトの名無しさん
12/07/26 03:57:47.08
うまくいってるってのはコンパイルが通るって事だけ?

299: ◆QZaw55cn4c
12/07/26 04:02:46.95
>>298
アプレットビュアーまでOKです。んーんー。

300:デフォルトの名無しさん
12/07/26 04:06:59.62
>>288
はインナークラスを外に出したって言ってるけど中にもまだ残ってるし
残ってるほうのForDimChangeで動いてるだけじゃないのかね
それとも他にも変更したのかね

301:デフォルトの名無しさん
12/07/26 04:08:23.61
つかスレ違いだからやめるわ
続きはあっちで


302:デフォルトの名無しさん
12/07/26 06:34:41.31
C++と違うって
こんな事で躓いてるようじゃC++もできんだろ

303:デフォルトの名無しさん
12/07/26 06:48:31.62
>>289
URLリンク(ideone.com)

304: ◆QZaw55cn4c
12/07/26 07:57:05.06
>>294
そう思うのは勝手ですが、かくいうあなたもいずれ硬化脳中年になるのです。

305:デフォルトの名無しさん
12/07/26 08:13:35.28
年齢関係ない

306:デフォルトの名無しさん
12/07/26 08:33:03.98
なんか適当に巡回してたらこのスレ見つけて触発されたからはじめたい。
おすすめのコンパイラ教えてくれ。あと学ぶためのサイトまた書籍とかも。

307:デフォルトの名無しさん
12/07/26 08:37:33.32
vc++expressでggr

308:デフォルトの名無しさん
12/07/26 08:41:55.68
了解thx


309:デフォルトの名無しさん
12/07/26 09:10:25.49
>>306
knoppixをDLして、CD-Rに焼いて、なおかつUSBにもisoを入れろ
ソイツの文字コードはUTFだから気をつけろ


310:デフォルトの名無しさん
12/07/26 09:13:00.95
7/22 日韓国交断絶国民大行進 in 関西
URLリンク(www.nicovideo.jp)

日韓国交断絶デモの公式サイト
URLリンク(haigai.exblog.jp)


URLリンク(pds.exblog.jp)
URLリンク(pds.exblog.jp)
URLリンク(pds.exblog.jp)
URLリンク(pds.exblog.jp)
URLリンク(pds.exblog.jp)
URLリンク(pds.exblog.jp)

URLリンク(www.youtube.com)

311:デフォルトの名無しさん
12/07/26 10:43:52.43
>>304
その議論は無意味ですよ
「今ここ」の話をしているのですから

312:デフォルトの名無しさん
12/07/26 13:02:39.83
>>306
初心者なら codepad.org でいいよ
VCとか自分のPCにはインストールしたくないよね

313:デフォルトの名無しさん
12/07/26 16:08:00.61
>>312
codepad...わかった

314:デフォルトの名無しさん
12/07/26 16:12:47.02
ちなみに「ここで学ぶといいよ」みたいなサイトある?

315:デフォルトの名無しさん
12/07/26 16:21:01.76
猫でもできるでいいんじゃね?

316:デフォルトの名無しさん
12/07/26 16:50:35.82
1から100までの間の奇数の和を求めるプログラムが難しいです
だれか助けてください

#include<stdio.h>
main()
{
int i, sum;
「わからない箇所」;
for(i=1; i<= 99;「わからない箇所」){
「わからない箇所」;
}
printf("sum = %d\n", sum);
}

大学の課題で必要なんですが、すいませんどなたか助けてください…。

317:デフォルトの名無しさん
12/07/26 16:52:49.98
sum=0
i+=2
sum+=i

318:デフォルトの名無しさん
12/07/26 16:59:54.01
sum = 2500
i += 100
sum += 0

319:デフォルトの名無しさん
12/07/26 17:04:39.45
うわ凄い助かります
非常に厚かましいのですが、この場合だとどうすれば良いのでしょうか

キーボードから3桁の整数を入力したとき、それぞれの桁の和を求めるプログラムを作りなさい
たとえば234と入力されたとき2+3+4を求める

#include
main()
{
int a, q, sum;
printf("3桁の整数を入力してください\n");
scanf("%d",&a);
q=「わからない箇所」;//100の位を求める
sum = q;
a =「わからない箇所」;//元の数aから100の位を除く数をあらためてaとする
q =「わからない箇所」;//10の位を求める
sum = sum + q;
a = 「わからない箇所」;//10の位を除く
sum = sum +「わからない箇所」;
printf("和=%d\n",sum);

320:デフォルトの名無しさん
12/07/26 17:07:55.74
>>319
a/100
a-q
a/10
a-q
a

321:デフォルトの名無しさん
12/07/26 17:17:13.72
C言語難しいですね...。勉強します...。
すいません、最後です。できればお願いしますorz

年利率がr%の銀行にa円預金したとき、それがb円になるのに何年かかるかを求めるプログラムを作りなさい

#include <stdio.h>
main()
{
double r, a, b;
int year = 0;
printf("r,a,bを,この順番で,入力してください\n");
scanf("%lf %lf %lf", &r, &a, &b);
while(「わからない箇所…たぶんmoneyだと思うのですが…){
year++;
a「わからない箇所」;
}printf("year=%d\n",year);
}

322:デフォルトの名無しさん
12/07/26 17:22:28.32
a<b
*=1*r/100

323:デフォルトの名無しさん
12/07/26 17:35:59.32
助けてください!
C言語の課題です。

「自分のフルネームをアルファベット小文字で入力し、そのアスキーコードを、10進数で求めて平均、分散、標準偏差を表示」
を表すソースを教えてください。

324:デフォルトの名無しさん
12/07/26 17:38:25.18
いやです。

325:デフォルトの名無しさん
12/07/26 17:38:36.89
課題はこっち

C/C++の宿題片付けます 159代目
スレリンク(tech板)

326:デフォルトの名無しさん
12/07/26 17:40:48.60
ごめんなさい。スレッド違いでしたね…

327:デフォルトの名無しさん
12/07/26 18:01:50.56
課題を人にやってもらったりしてるから
日本で人が育たないんだなあ

328:デフォルトの名無しさん
12/07/26 18:35:29.13
その代わりに課題をやってくれる人が育つので
ある程度問題解決

329:デフォルトの名無しさん
12/07/26 18:47:28.37
だって大学までの勉強なんて入社で評価されないし
遊んだりとか他のリア充活動ばかりが評価されるからなあ
そりゃ普通大学を真面目にやるのは損って思うでしょ
レポートはコピーしてその分遊んだりなんかでリア充した方が職を得やすいんじゃ誰も勉強しないよ
うちの同期のトモダチもそういうやつらはみんな大手決まってるけどコピー元のレポート書いてる俺や他の真面目くんはまだ中小にすら拒否されまくりだよ

330:デフォルトの名無しさん
12/07/26 19:16:37.48
日本人とは限らんしな

331:デフォルトの名無しさん
12/07/26 19:17:32.40
この業界はコミュ力ないクズはコード書けても不採用が常識だろ
コードは三ヶ月で書けるようになるからな

332:デフォルトの名無しさん
12/07/26 21:01:00.93
Qとかな

333:デフォルトの名無しさん
12/07/26 21:24:50.22
コンピュータサイエンスの教科書における問題の1つは、再帰のくだらない例を
掲載していることである。よくあるのは、階乗の計算やフィボナッチ数列の計算だ。
再帰は強力なツールであり、それをこのような状況で使用するとはあきれてものが
言えない。仮に、私の部下が再帰を使って階乗を計算しようものなら、別のだれかを
雇うだろう。

『Code Complete第2版〈上〉』(Steve McConnell,日経BPソフトプレス,2005年,p486)


334:デフォルトの名無しさん
12/07/26 21:29:03.54
コピペマン参上!まで読んだ。

335:デフォルトの名無しさん
12/07/26 21:42:30.19

そのイカした本にはcoooooooooooolなリカーシヴの実例が
載ってるんだろな


336:デフォルトの名無しさん
12/07/26 21:42:37.72
韓国政府 「在日はいい加減に祖国に帰れよ!在日の祖国定着を行うぞ!」 在日の帰国計画を用意
スレリンク(poverty板)


韓国、日本村を造成、在日韓国人の定着支援を計画
在外僑胞の村がある慶尚南道南海郡(キョンサンナムド・ナムヘグン)に日本村と観光休養団地が新たに造成される。
韓国南海郡は24日、郡庁でこうした内容が盛り込まれた事業計画を確定し発表した。
これによると郡は460億ウォン(約31億円)を投じて日本式住宅、コミュニティセンター、小公園などを備えた住宅団地を作る。
また、日本文化体験館、日本食・宿泊体験館、日本歴史文化館も作る。
故郷を離れた後、異国の地に住む在日韓国人の故国定着のためのものだと郡は説明した。

2012/7/25
URLリンク(japanese.joins.com)


337:デフォルトの名無しさん
12/07/26 21:48:06.81
ネトウヨ王に、俺はなる!まで読んだ。

338:デフォルトの名無しさん
12/07/26 21:49:40.51
>>333
フィボナチ数列は、再帰でもいいんじゃない?
まあビネの公式を調べて使えということかもしれないが。

339:デフォルトの名無しさん
12/07/26 22:41:32.51
>>338
違う。
再帰はスタックを消費する。
フィボナッチ数列を再帰で書いたら俺でも怒るわ。
この人は、「普通にループで書けるのに無駄にスタック消費しやがって!もっと考えろ!」ということを言いたいだけ。

もっと言うと、「素晴らしいものが何にでも通用すると思うな!『銀の弾丸』は無い!都度考えろ!」ということ。

340:デフォルトの名無しさん
12/07/26 22:43:57.02
順列調べるのに再帰してごめんなさい

341:デフォルトの名無しさん
12/07/26 22:45:09.15
>>333
Thasts neta, right?

342:デフォルトの名無しさん
12/07/26 22:45:41.69
再帰考えたやつだれだ、出てこい

343:デフォルトの名無しさん
12/07/26 22:46:15.79
>>339
コピペ馬鹿の分際で偉そうなことを言うなって

344:デフォルトの名無しさん
12/07/26 22:49:23.78
>>343
ほう、じゃあ何か偉そうなことを言ってみろ。

345:デフォルトの名無しさん
12/07/26 22:54:21.82
>>340
再帰は素晴らしい機構だが、盲信すんなってことだ。
確かに順列は再帰は不要だな。普通にループすべし。

346:デフォルトの名無しさん
12/07/26 22:55:07.52
私には無理ですなぜなら私が言うとそれは「えらいこと」そのものになってしまい、
「えらそうなこと」にはららないからです。
非常に済みませんが、あたなのような程度の低い低脳が滲み出た
ええらそうなことなることは、言えません。


347:デフォルトの名無しさん
12/07/26 22:55:35.28
順列調べるのにまず手作業で樹形図書いてるからそれに引きずられて再帰しちゃう

348:デフォルトの名無しさん
12/07/26 22:58:58.03
>>346
お疲れ様でした。田舎に帰って実家警備業にでも就いてください。
ついでに精神科にも通ってください。

349:デフォルトの名無しさん
12/07/26 23:04:17.70
itoa()を実装しようと思ったら、ついつい再帰で書いちゃうよね。
でも、ハノイの塔を再帰で書くのは却下w

350:デフォルトの名無しさん
12/07/26 23:05:29.20
末尾再帰なら許す

351:デフォルトの名無しさん
12/07/26 23:33:50.94
>>329
>>331
うわぁもうやめてくれ。

プログラマーって眼鏡かけたリア充の巣窟なんだろうな。
もう吐き気がとまらないわ。
俺は一生新聞配達か。

352:デフォルトの名無しさん
12/07/26 23:43:02.56
>>351
URLリンク(d.hatena.ne.jp)



ループは再帰にできるけど、再帰をループで書くのは面倒なんだっけか

353:デフォルトの名無しさん
12/07/26 23:45:16.23
オタクにもなれない、リア充にもなれない

354:デフォルトの名無しさん
12/07/27 00:08:52.66
>>344
例にそんなに噛み付かないでくれよ
ほら、ジャーキーやるからさ(´・ω・`)

355:デフォルトの名無しさん
12/07/27 00:12:20.79
>>339
スタックを消費するのは仕方ない場合もあるが、
フィボナッチ数列で問題になるのは単純に再帰で実装すると
ループで書いた場合より計算量が増える事でしょ

じゃあどうする?という事で、メモ化や動的計画法の
話題に持っていくのが一つのアプローチ
これ単体では「くだらない」が、例としてはむしろ単純な事が重要

356:デフォルトの名無しさん
12/07/27 00:12:38.43
チクワくれチクワ

357:デフォルトの名無しさん
12/07/27 00:28:40.54
動的計画でフィボナッチどう書くの?

358:デフォルトの名無しさん
12/07/27 00:35:03.68
>>357
#include <stdio.h>

long fib(int n)
{
static long data[50]={1,1};

if(n>=46) return -1;
if(data[n]==0) data[n]=fib(n-1)+fib(n-2);
return data[n];
}

int main(void)
{
int i;
for(i=0;i<50;i++) printf("%ld\n", fib(i));
return 0;
}

359:デフォルトの名無しさん
12/07/27 00:49:42.04
じゃあメモ化は?

360:デフォルトの名無しさん
12/07/27 01:09:07.08
>>359
動的計画法でしょ

361: ◆QZaw55cn4c
12/07/27 04:44:09.61
>>284
仮になんでも知っているとして、それでも知っていることと書けること、それも納期や雑用等のプレッシャーのもとで書けること、とは相関はないと考えています。

362: ◆QZaw55cn4c
12/07/27 04:46:53.82
>>273
二重ポインタ自体の理解困難性というデメリットと、二重ポインタ使用によるループ記述の見通しのよさというメリットを比較して、前者に重きを置く理由を教えてください。

363:デフォルトの名無しさん
12/07/27 05:21:28.32
見通しの良さって明らかなメリットと言えるほどの差が無い

364:デフォルトの名無しさん
12/07/27 05:39:56.40
二重ポインタくらい理解できなくてどうすんのさ
char *argv[]とか

365:デフォルトの名無しさん
12/07/27 05:40:25.05
むしろ悪いよね。
初心者はちゃんと理解もできないし。

366:デフォルトの名無しさん
12/07/27 06:47:49.33
>>358
それ、ただキャッシュしてるだけやん。
なんでそれが動的計画なの?

367:デフォルトの名無しさん
12/07/27 10:02:55.88
理解することとメリットがあることは別物

368:デフォルトの名無しさん
12/07/27 10:04:28.04
お前がそう思うんならそう(ry

369:デフォルトの名無しさん
12/07/27 10:14:18.17
>>361
無職なのに納期?おかしな事を言うなあ
やっぱり狂ってる

370:デフォルトの名無しさん
12/07/27 11:28:24.19
男が女性問題を議論してはいけないと申されるのか

371:デフォルトの名無しさん
12/07/27 13:51:49.24
標準Cで巨大ファイルを扱うにはどうすれば?
整数で扱える範囲を超えてシークできない

372:デフォルトの名無しさん
12/07/27 14:00:31.96
>>371
Win32のCreateFile()、SetFilePointer()、RealFile()、WriteFile()を使えば
64bitまでアクセス出来る

373:デフォルトの名無しさん
12/07/27 14:02:49.21
標準Cとか書いてるのにか。

374:デフォルトの名無しさん
12/07/27 14:03:20.13
64BIT以上はどうするんですか?

375:デフォルトの名無しさん
12/07/27 14:05:48.62
日 本 語 で お k

376:デフォルトの名無しさん
12/07/27 14:06:28.80
C言語初心者だけど

理解しにくい記述は避けるってのが他言語で覚えた掟
perlのワンライナーとかスゴイけど怖い
「これ修正して(´・ω・`)」
「無茶言わないで下さい(´・ω・`)」

ダブルポインターはそこまで鬼畜じゃないか?

377:デフォルトの名無しさん
12/07/27 14:07:59.67
URLリンク(support.microsoft.com)

>>374
64bitだと1680万TiBあるのだが
そういうHDDが出る頃にはもうWin32なんて使われないだろう
からかってるのか?

378:デフォルトの名無しさん
12/07/27 14:22:14.46
>>376
ダブルポインターなんて言葉自体ポインターを理解できない輩の言い訳にしか過ぎない。
ポインターに鬼畜もへったくれも無いので、必要なら必要なだけ使えばいい。

379:デフォルトの名無しさん
12/07/27 14:28:41.04
そういうやつに使われると迷惑なだけなんだが。

380:デフォルトの名無しさん
12/07/27 16:10:05.43
配列の境界チェックを一時的に導入する書き方ってないかな?
デバッグ時だけチェック入りのコードにしてリリース時は速度稼ぐために外したいんだけど


381:デフォルトの名無しさん
12/07/27 16:15:45.71
配列へのアクセスをマクロ経由にすればいい。

382:デフォルトの名無しさん
12/07/27 16:18:57.94
value = array[i];

value = GET(array, i);
こんなのか

383:デフォルトの名無しさん
12/07/27 16:20:21.77
既にあるコードの見た目を変えないようなマクロを導入するのは無理?

384:デフォルトの名無しさん
12/07/27 16:21:29.70
お前、アホだろ。

385:デフォルトの名無しさん
12/07/27 16:28:02.68
とりあえず静的解析ツール使えばいんじゃねーのか?

386:デフォルトの名無しさん
12/07/27 16:29:10.31
そのレベルじゃ途方にくれる結果になるとは思うが。

387:デフォルトの名無しさん
12/07/27 16:31:57.84
assert

388:デフォルトの名無しさん
12/07/27 16:33:14.96
昔C#に移植してみたっけな
手間はかかるがかなり効果はあった


389:デフォルトの名無しさん
12/07/27 16:44:35.63
>>385
それよさそう
お勧めのツールはある?


390:デフォルトの名無しさん
12/07/27 16:51:29.97
Cppcheckでやってみるか

391:デフォルトの名無しさん
12/07/27 16:51:43.60
coverity

392:デフォルトの名無しさん
12/07/27 17:04:54.35
静的解析ツールで境界チェックってできるの?
定数等からある程度はわかるだろうけど実行時にしかわからないものもあるよね。

393:デフォルトの名無しさん
12/07/27 17:36:54.63
とりあえずC++から入って後々Javaとか後付することにした
VC++でいいと聞いてインスコしたんだけど、始めにロゴみたいなの出て一瞬で消えて起動さえしないんだけど。
どゆこと?教えてエロい人

ちなみにOSはWindows7

394:デフォルトの名無しさん
12/07/27 17:40:43.47
再インスコ

395:デフォルトの名無しさん
12/07/27 17:47:02.39
スペインに勝利! 世界は日本を見くびっていた=中国メディア

  ロンドン五輪・男子サッカーが26日開幕し、日本は強豪スペインに1-0で勝利した。中国メディアも日本の勝利を大きく伝え、騰訊網は「世界は日本を見くびっていた」とする評論記事を掲載した。

  記事は、日本についてヨーロッパは「現代サッカーを速やかに吸収する素晴らしい学習者、模倣者」と認識し、中国は「日本のサッカーを学ぶのではなく、日本が他人からどうやって学んできたかを学ぶべき」

  と考えてきたと論じたうえで「これは間違いなく日本に対する過小評価だ」「ヨーロッパにしろ中国にしろ、日本サッカーは『学び続ける』ことだけで強くなってきたと考えることにすっかり慣れてしまった」とした。

  一方、スペイン戦の勝利後、日本代表の関塚隆監督や選手たちが口々に「ボール支配の時間が少なすぎた」と不満をこぼしたことに触れ、

  「彼らは『学習者』としてスペインに挑んだのではない。日本の態度は強い『競争者』意識の表れだ」と分析。「この意識は非常に尊いものだ」とし、「学習」ばかりを強調する中国サッカーの意識を暗に批判した。

  そして、強い競争者意識を持った日本がスペイン戦で見せたパフォーマンスについて「もっとチャンスを生かせていれば、5-0でスペインに勝ってもおかしくなかった」と評価した。(編集担当:柳川俊之)

  URLリンク(news.searchina.ne.jp)


396:デフォルトの名無しさん
12/07/27 17:50:50.61
>>393
始め、ってどの始めだ

397:デフォルトの名無しさん
12/07/27 18:15:18.31
>>394
何度か再インスコしたんだけど無理だった。


>>396
起動すると「Visual C++ 2010 Express」て書かれて、その後その表示が消えて、そのまま何も起こらない。

398:デフォルトの名無しさん
12/07/27 18:19:58.70
VSスレ行け

399: ◆QZaw55cn4c
12/07/27 19:41:43.68
>>380
C++ でoperator[]
ただし、ポインタが境界外っていうのはだめだね。
bcc32 -v -vG はどうだったっけ。

400:デフォルトの名無しさん
12/07/27 19:48:09.66
C++はスレ違い

401:デフォルトの名無しさん
12/07/27 19:57:23.71
インデックス値で境界外を指しても間違いとは限らねーし
Cの文法でインデックス正誤がどうこうの要求自体が間違ってる

402:デフォルトの名無しさん
12/07/27 20:02:22.47
その程度、静的解析ツールはサポートしてるけどな。

403:デフォルトの名無しさん
12/07/27 20:07:18.22
>>380
面倒でもassert使え

404:デフォルトの名無しさん
12/07/27 20:12:33.37
>>401=アホ


405:デフォルトの名無しさん
12/07/27 20:19:38.86
>>404
アホはおまえ
インデックス値で境界外を指す間違っていない例を知らないだけだ

406:デフォルトの名無しさん
12/07/27 20:22:40.59

恥の上塗り

407: ◆QZaw55cn4c
12/07/27 20:27:43.78
>>401
でも i が out of bounds で a[i] に読みにしろ書きにしろアクセスした時点でアウトでしょ?
だったら operator[] は有用だとおもうんですけど。

408:デフォルトの名無しさん
12/07/27 20:29:08.27
URLリンク(ideone.com)

409:デフォルトの名無しさん
12/07/27 20:31:52.10
今更C言語なんかで改変に耐性のないクソコード書くヤツに
煩わされる様な事は無いだろうから
無知は放置の方向で

410:デフォルトの名無しさん
12/07/27 20:34:52.96
世の中には問題にならない例も有る事なんかデバッグしなくていい理由にならんわ
問題が有るからデバッグするんだろ

411:デフォルトの名無しさん
12/07/27 20:36:56.02
>>409=池沼

412: ◆QZaw55cn4c
12/07/27 20:49:02.61
>>408
それ、C99 以降ね。

あと、URLリンク(www.kouno.jp)
>Dennis Ritchieは「Cの実装への根拠 のない馴れ馴れしさ」と呼んだ。

413:デフォルトの名無しさん
12/07/27 20:52:31.95
【社会】 ノーベル賞・利根川進教授の15歳息子、米MITの寮自室で死亡…異臭で発覚、警察「事件性はない」
URLリンク(logsoku.com)

414: ◆QZaw55cn4c
12/07/27 21:10:23.34
>>408
あと、文字列末尾の\0の分は足さなくてもいいのか?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch