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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
C言語の*入門者*向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 73
http://hibari.2ch.net/test/read.cgi/tech/1289049065/
★過去スレ
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++の宿題片付けます 143代目
http://hibari.2ch.net/test/read.cgi/tech/1289913298/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
2デフォルトの名無しさん:2010/11/27(土) 20:41:01
糞スレ
3:2010/11/27(土) 20:42:50
>>1
4デフォルトの名無しさん:2010/11/27(土) 20:51:01
なんだこのスレ
5デフォルトの名無しさん:2010/11/27(土) 20:57:34
↓アイちゃん
6デフォルトの名無しさん:2010/11/27(土) 21:10:53
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
7デフォルトの名無しさん:2010/11/27(土) 23:48:47
ポインタについて質問させてください。
ttp://ratan.dyndns.info/MicrosoftVisualC++/kouzou2.html
こちらのサイトによると
(構造体へのポインタ) -> (メンバ名)
でメンバを参照しているのですが、メンバの数が多いときも毎回上のような方法を取らないといけなんでしょうか?
あとメンバを直接参照することはできないんでしょうか?
よろしくお願いしますm(_ _)m
8デフォルトの名無しさん:2010/11/27(土) 23:51:07
嫌です!
9デフォルトの名無しさん:2010/11/27(土) 23:51:34
struct zzz{
   char car[50];
   int nedan;
   int nebiki;
 };
これを
char car[50];
int nedan;
int nebiki;
こうすれば直接参照できる
10デフォルトの名無しさん:2010/11/27(土) 23:54:26
なんのための構造体だよw
11デフォルトの名無しさん:2010/11/27(土) 23:55:30
VBのwithみたいのを考えてるなら、Cにはないとしか言えない。
12デフォルトの名無しさん:2010/11/28(日) 00:43:34
うそ
13デフォルトの名無しさん:2010/11/28(日) 03:37:00
basic系のwithナツカシス
いまwithといわれたらpythonのwithを連想するわ
14デフォルトの名無しさん:2010/11/28(日) 07:55:25
->で連結されている形なら、途中までの->を他のポインタに代入して
withの替わりのような事をさせるのは良くある
15デフォルトの名無しさん:2010/11/28(日) 12:04:30
でもどうしても1個は残るよね

C++ならメンバ関数作れるけど
16デフォルトの名無しさん:2010/11/28(日) 12:10:36
メンバ関数があるからなんだと
17デフォルトの名無しさん:2010/11/28(日) 12:16:52
メンバ関数じゃなくても、纏めてアクセスする関数を作ればいいだけじゃねぇの。
18デフォルトの名無しさん:2010/11/28(日) 13:52:35
おまいら何か忘れちゃいませんか?

define
19デフォルトの名無しさん:2010/11/28(日) 14:47:11
>>18
お前は何を言ってるんだ。
前処理字句の文字列置換マクロのことなら#defineだが。
さすが糞スレには糞低脳しか糞いないな。
俺のような高脳を見習え。
20デフォルトの名無しさん:2010/11/28(日) 20:13:48
効能を見習うのか...
21デフォルトの名無しさん:2010/11/28(日) 23:01:09
何故これは i が完走してしまうのですか?
http://codepad.org/j7lfrG3S
22デフォルトの名無しさん:2010/11/28(日) 23:13:25
終了条件よく考えてみろよ
23デフォルトの名無しさん:2010/11/28(日) 23:16:27
C言語超初心者です。
if (year % 4 == 0) printf("夏季五輪\n");
if (year % 2 == 0 && year % 4 != 0) printf("冬季五輪\n");
if (year % 2 != 0) printf("五輪なし\n");

何故このプログラムは正しいのか教えてほしいです。。
year%4==0だったら(西暦が4で割り切れない時=0(偽))
だから西暦が4で割り切れない時に表示されるんじゃないんですか?
24デフォルトの名無しさん:2010/11/28(日) 23:21:39
>>22
俺の頭ではよく分からんのよ。
 xが次にとる値と等しければ停止
 i=6以降はxが次にとる値と等しい
 何故止まらん
ってのが俺の頭の中の流れ。
25デフォルトの名無しさん:2010/11/28(日) 23:30:21
整数じゃないんだから!=で比較するのはダメ
26デフォルトの名無しさん:2010/11/28(日) 23:34:07
>>25
どうして? 精度いっぱいまで回すならこれでよいと思っているのですが?
27デフォルトの名無しさん:2010/11/28(日) 23:43:45
いいわけねーだろw
28デフォルトの名無しさん:2010/11/28(日) 23:45:48
納得できんが、下記みたいにしとけばOK?
http://codepad.org/u5RvPlMZ
29デフォルトの名無しさん:2010/11/28(日) 23:48:50
>>21
浮動小数点はせいぜい 10 進法で15 桁か16 桁かそのあたりまでしか正確に表現できない。
x = x - (Sq(x)+Sq(y)-1)/(4*x+1);
の計算で x を更新していくのがニュートン法だが、小数点以下 15桁か16 桁どまりでそれ以上 x を正確に更新できないのではないかと。
(上の収束するときの解とくらべると小数点以下 15 桁めくらいで差異がある。)
浮動小数点の演算では == とか != はつかわないで、ある程度の幅(解を利用するにあたって実用上十分な精度)で打ち切るもの。
30デフォルトの名無しさん:2010/11/28(日) 23:52:53
>>25
了解。doubleに!=や==はつかえないということですね。
http://codepad.org/ZTu5GTBq
31デフォルトの名無しさん:2010/11/28(日) 23:57:07
>>30
では何故これが止まる?
http://codepad.org/gH82yTqJ
32デフォルトの名無しさん:2010/11/28(日) 23:59:53
これもな。たまたまか?
http://codepad.org/t8WZDISt
3329 ◆QZaw55cn4c :2010/11/29(月) 00:04:47
>>31
二分法はかならず止まるアルゴリズム。
ニュートン法は止まるとは限らないし、個々の方程式の収束条件を求めるのは非情に困難。
http://ja.wikipedia.org/wiki/%E3%82%AB%E3%82%AA%E3%82%B9%E7%90%86%E8%AB%96
34デフォルトの名無しさん:2010/11/29(月) 00:15:24
>>33
問題の本質とずれているような。
まぁとにかく、理由は分からんが double に == と != を使うなということで。
マレにうまくいくこともあるが、基本ダメということで。
35デフォルトの名無しさん:2010/11/29(月) 00:22:20
double a,b; とすると
環境によっては a/2/2/2/2/2/2/2/.... = 0.0 となり、
環境によっては a == a+0.0 は真となるが、
a == b はあてにならん。そういうことかね。
36デフォルトの名無しさん:2010/11/29(月) 00:23:44
ふっふっ
3729 ◆QZaw55cn4c :2010/11/29(月) 00:35:29
>>35
二分法は >>31 でいえば、指摘のとおり a は小さくなる一方でやがては機械イプシロンを下回って 0 になる。
でもニュートン法は x(n+1)を x(n) の関数f で求める。 f の個々の計算が正確に計算できるのは機械イプシロン近辺まで。
それ以下になると f の計算がでたらめになるので、x(n + 1) の振る舞いは予測できない。うまくいくかもしれないし、だめかもしれない。
38デフォルトの名無しさん:2010/11/29(月) 00:35:44
ここにはメチャ詳しい人も来るから、
正確な答えがそのうち来ると期待しつつ寝る。
39デフォルトの名無しさん:2010/11/29(月) 00:57:09
double d = 0.1;
if(d * 0.1 == 0.01)
puts("0.01です");
else
puts("0.01ではありません。");

たいていの環境では「0.01ではありません。」になるな。
40デフォルトの名無しさん:2010/11/29(月) 01:05:41
>>23
year % 4 はyearを4で割った余り。
year % 4 == 0 はそれが0であったら真。
つまり、yearが4で割り切れたときに真。

余談だが>23の2番目は、「2で割り切れるが4で割り切れない年」と読める。
パズルではないのだから、「4で割った余りが2の年」と考えてyear % 4 == 2の方が自然だろう。
また、3番目も自然じゃない。五輪がない年は読んで字の如く、「!(year % 4 == 0 || year % 4 == 2)」だろう。
41デフォルトの名無しさん:2010/11/29(月) 02:30:19
まあアプローチはべつにいいじゃん
1+1を解く時の脳の使い方がみんな違うってハナシと似たようなもんだ

オレならそもそも3つ目は条件書かないだろうし、>>23>>40、オレの3人の時点でもうこんだけ違う
多分、剰余を一時変数に入れてswitchに突っ込む人とかもいるぞ

それを考えたときに、自然っていう書き方はまるで>>40が多数意見みたいな感じでちょっとイヤだな
42デフォルトの名無しさん:2010/11/29(月) 02:32:34
俺なら全てのif文に{}を付ける。
43デフォルトの名無しさん:2010/11/29(月) 02:47:08
44デフォルトの名無しさん:2010/11/29(月) 03:53:53
糞スレ
45デフォルトの名無しさん:2010/11/29(月) 04:09:11
今更何を
46デフォルトの名無しさん:2010/11/29(月) 05:20:38
>>43
>まず最初に、「GNU コーディング規約」(GNU coding standards)を入手して印刷してみてください。
>でも、読むために印刷するのではありません。
>印刷した物を燃やすのです。
>この儀式は晴れがましい意思表示なのです。
ワロタw
47デフォルトの名無しさん:2010/11/29(月) 05:38:15
これだからゆとりは
48デフォルトの名無しさん:2010/11/29(月) 07:37:30
>>47
それは良杉
49デフォルトの名無しさん:2010/11/29(月) 08:58:07
ほっほっ
50デフォルトの名無しさん:2010/11/29(月) 12:28:53
どぴゅっどぴゅっ
51デフォルトの名無しさん:2010/11/29(月) 14:38:05
ぶはっぶはっ
52デフォルトの名無しさん:2010/11/29(月) 15:17:32
#include <stdio.h>
#include <direct.h>

void main(){
_mkdir("c:\\testmake");

_chdir("c:\\testmake");
}

コンパイラ通らない・・・
_chdirの使い方間違ってる?
53デフォルトの名無しさん:2010/11/29(月) 15:31:32
>>52
ダイレクト!?
54デフォルトの名無しさん:2010/11/29(月) 17:13:58
ダwwwwイwwレwクwトwwwwwww
wwwwwwwwwwwww
55デフォルトの名無しさん:2010/11/29(月) 17:36:11
もったいぶってないで教えてくれよw
56デフォルトの名無しさん:2010/11/29(月) 18:02:09
通らないと言うと、どんなエラーを出して通らないの?
57デフォルトの名無しさん:2010/11/29(月) 18:08:39
なんでエラーを書いたら負けだと思ってるの
58デフォルトの名無しさん:2010/11/29(月) 18:31:17
>>52
void main() 爆笑

それはともかく、OS と処理系を教えていただければ、場合によってはアドバイスできるかも。
59デフォルトの名無しさん:2010/11/29(月) 18:46:48
_をはずしてみたら?
60デフォルトの名無しさん:2010/11/29(月) 18:50:08
>>52
ヘッダファイルの読み方わかる?
direct.hを探して中を読んでみな

_mkdir()とか_chdir()って関数が定義されているかどうか調べてみると
一番早い
61デフォルトの名無しさん:2010/11/29(月) 19:02:37
「do〜whileを使って1〜10の和を求めよ(但し表示させるのは1〜5の和)」って問題が分からない・・・
誰か教えて
62デフォルトの名無しさん:2010/11/29(月) 19:10:03
int i = 1;
int sum = 0;
do {
sum += i;
i++;
} while (i <= 10);

これでおk
後は付けたしたら良い
63デフォルトの名無しさん:2010/11/29(月) 19:12:35
#include <stdio.h>

int main(void)
{
  int i=1;
  int sum=0;
  do{
    sum += i;
  }while((i++) < 10);
  puts("15");

  return 0;
}
64デフォルトの名無しさん:2010/11/29(月) 19:40:01
ペペロンチーノの作成法を詳しく解説しているサイトを教えてください。
65デフォルトの名無しさん:2010/11/29(月) 19:44:12
自然数nを入力し、2以上n以下の偶数のsumを求めるプログラムを教えて下さい。
66デフォルトの名無しさん:2010/11/29(月) 19:46:05
その前にお礼が先だろ
67デフォルトの名無しさん:2010/11/29(月) 20:26:00
その前にお札が先だろ
68デフォルトの名無しさん:2010/11/29(月) 20:33:08
その前に割礼が先だろ
69デフォルトの名無しさん:2010/11/29(月) 20:37:56
 ┌○┐
 │お|ハ,,ハ
 │断|゚ω゚ )  お断りします
 │り _| //
 └○┘ (⌒)
    し⌒
70デフォルトの名無しさん:2010/11/29(月) 20:38:27
>>58
わからないならレスしないでください
うざいだけです
71デフォルトの名無しさん:2010/11/29(月) 21:02:40
いい雰囲気だ
こうして皆で切磋琢磨することで高脳となる
7258:2010/11/29(月) 21:03:05
>>52
void main() (笑)

それはともかく、
手元の VC++2008EE では無事にコンパイル・実行できました。コンパイ"ル" が通らないのであれば、どんなエラーが出たのか教えてください。
73デフォルトの名無しさん:2010/11/29(月) 21:10:01
┌○┐
 │お|ハ,,ハ
 │断|゚ω゚ )  お断りします
 │り _| //
 └○┘ (⌒)
    し⌒

自力でやれよ。
74デフォルトの名無しさん:2010/11/29(月) 21:27:49
ふっほっはっ
75デフォルトの名無しさん:2010/11/29(月) 21:35:14
コンパイルエラーをコピペしたら負け
76デフォルトの名無しさん:2010/11/29(月) 22:44:26
レベルの低い戦いだなw
77デフォルトの名無しさん:2010/11/29(月) 22:53:25
ほっほっ
78デフォルトの名無しさん:2010/11/29(月) 22:55:37

「C++ クラスと継承完全制覇」 でCとC++の違いを垣間見る

                           ↓

「ロベールのC++入門講座」 でC++の文法など基礎を習得

                           ↓

「Effective C++」 でよりよいC++プログラムの記述法を学ぶ

                           ↓

「STL標準講座 標準テンプレートライブラリを利用したC++プログラミング」 でSTLを習得

                           ↓

「オブジェクト指向における再利用のためのデザインパターン」 で大規模プログラムの設計法について学ぶ

                           ↓

                      神を恐れぬ者の誕生
79デフォルトの名無しさん:2010/11/29(月) 22:59:11
>>78
最後の本、出版社のサイトでサンプルコードを落としてみてみたけど、
大規模の設計方法を学べるとは思えない感じだった。
80デフォルトの名無しさん:2010/11/29(月) 23:13:46
分からない所があるので教えてください。
入力した英字を大文字か小文字に変換するプログラムなのですが
#include<stdio.h>
int main(void)
{char x;
printf("英字を1文字入力しなさい. \n");
scanf("%c",&x);
if('A'<=x&&x<='Z');
x=x+32;
printf("入力された英字%cの小文字は%c\nです. \n",x,x+32);
else if('a'<=x&&x<='z')
x=x-32;
printf("入力された英字%cの大文字は%c\nです. \n",x,x-32);
else printf("英字ではありません.\n");}

これでコンパイルしようとしたところ

In function ‘main’:
9: expected expression before ‘else’
12: expected expression before ‘else’

と出ます。どこがおかしいのか自分では分かりません、どなたかお助けください。
81デフォルトの名無しさん:2010/11/29(月) 23:20:14
>>80
{}
82デフォルトの名無しさん:2010/11/29(月) 23:23:44
>>80
http://codepad.org/ag0RUu34
このあたり読むといい↓。最初から読んでもさほど時間はかからないはず。
http://homepage1.nifty.com/toshio-k/prog/c/
83デフォルトの名無しさん:2010/11/29(月) 23:47:46
>>81>>82
ありがとうございました、大変助かりました。
84デフォルトの名無しさん:2010/11/30(火) 00:07:26
ふっふっ
85デフォルトの名無しさん:2010/11/30(火) 05:38:49
GUHUHU
86デフォルトの名無しさん:2010/11/30(火) 06:50:35
>>83
いえいえ
87デフォルトの名無しさん:2010/11/30(火) 09:48:17
どぴゅっどぴゅっ
88デフォルトの名無しさん:2010/11/30(火) 10:34:46
一人で何やってるの
89デフォルトの名無しさん:2010/11/30(火) 12:51:14
includeのファイルの代わりにプログラムの出力結果を使いたいのだけどどうすればいいの
90デフォルトの名無しさん:2010/11/30(火) 14:13:58
意味わからんが
リダイレクト?
91デフォルトの名無しさん:2010/11/30(火) 14:17:09
最近の子はmakeの使い方というか存在を知らんからね
92デフォルトの名無しさん:2010/11/30(火) 14:21:19
「プログラムの出力結果」がでるのが
コンパイル前の話なのか
コンパイル時に解決しないといけない話なのか
実行中なのかによって違ってくるんじゃ
93デフォルトの名無しさん:2010/11/30(火) 14:42:48
糞スレ
94デフォルトの名無しさん:2010/11/30(火) 14:44:54
最近の子だけど
makeってなによ
95デフォルトの名無しさん:2010/11/30(火) 14:58:59
Antのご先祖様だよ。
96デフォルトの名無しさん:2010/11/30(火) 20:04:06
ふっほっ
97デフォルトの名無しさん:2010/11/30(火) 20:19:46
>>95
アントノフ?
98デフォルトの名無しさん:2010/11/30(火) 21:43:35
make makes many problems
99デフォルトの名無しさん:2010/11/30(火) 21:57:47
ふーん
100デフォルトの名無しさん:2010/11/30(火) 22:01:29
使いたいデータをcのソースとして出力するプログラムを書けばいいだけでしょ
101デフォルトの名無しさん:2010/11/30(火) 22:04:15
ほっほっ
102デフォルトの名無しさん:2010/11/30(火) 23:11:51
むかつく話だが
期末試験で#includeの必要性を問う問題が出題されてて
うちは「プログラムを動かすおまじないのようなもの」と書いたんだが
解答として不適切だって教授に駄目出しされた。
てめぇがそのように教えたんだろうがふざけんな
103デフォルトの名無しさん:2010/11/30(火) 23:14:51
http://codepad.org/kVS2IbxH
どちらかの方法で収束しないはずなのにするのはなぜなんでしょうか
104デフォルトの名無しさん:2010/11/30(火) 23:17:02
教えたことを鵜呑みにする奴はダメだしされてもしかたがない
105デフォルトの名無しさん:2010/11/30(火) 23:26:01
いやまぁでも気持ちはわかるw
その教授はちゃんと説明するべきだったな
106デフォルトの名無しさん:2010/11/30(火) 23:29:13
大学ってのはな、自分で勉強する場なんだよ
ゆとりの餓鬼じゃあるまいしレベルの低い事はやめてくれ
107デフォルトの名無しさん:2010/11/30(火) 23:32:21
おまじないとか言うのは最初のうちだけで、後からちゃんとした意味を説明すると思うんだが
>>102が授業にちゃんと出てなかったとかいうオチだろ
108デフォルトの名無しさん:2010/11/30(火) 23:43:11
>>107
だったら最初からきちんと説明してくれといいたい
109デフォルトの名無しさん:2010/11/30(火) 23:44:16
図星だったのかwww
110デフォルトの名無しさん:2010/11/30(火) 23:55:15
最初から説明しても絶対分からないしむしろ混乱するだけだからおまじないでよろし。
いきなりprintfやらの説明されても困るだろ
111デフォルトの名無しさん:2010/11/30(火) 23:58:31
>>110
だったら「プログラムを動かすおまじないのようなもの」で解答あってんじゃん。
112デフォルトの名無しさん:2010/11/30(火) 23:59:25
逆ギレしている馬鹿生徒がいるというスレはここですか?
113デフォルトの名無しさん:2010/12/01(水) 00:03:31
114デフォルトの名無しさん:2010/12/01(水) 00:11:09
>>103
まず有効桁数が無限であればニュートン法は必ず収束する。
だが有効桁数が有限の場合は収束しない場合がある。下記の場合だ。
 ニュートン法を10回数行ったときの値をf1とし、f1の次の値をf2とする。
 10回目以降の動きを数直線上に示すと、下記のケースとなる場合がある。
  10 f1 解
  11   解 f2
  12 f1 解
    :
 この場合f1とf2で発振し、収束しない。
有効桁数が無限であれば fn と解との距離は無限に小さくなっていくが、
有効桁数が有限の場合は丸めによって途中の値に戻ってしまうことがあるわけ。
場合によっては、
  10 f1 解
  11 f1 解
    :
となって収束する。

> どちらかの方法で収束しない
というのはあくまである環境での話であって、
君の環境でそうなるとは限らない。
115デフォルトの名無しさん:2010/12/01(水) 00:19:10

おまじないって教わったのに駄目出しされた!

                           ↓

最初はおまじない、後の授業で説明したんだろ。

                           ↓

だったら最初の授業から教えろ!

                           ↓

最初から教えても理解出来ないからおまじないで良い。

                           ↓

だったら解答あってんじゃん !

                           ↓

                   
最初はおまじない、後の授業で説明したんだろ。

以下延々ループ処理
116デフォルトの名無しさん:2010/12/01(水) 00:24:54
   _____      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 /:\.____\  / 対ガッ用超高性能ぬるボックスのテスト開始!
 |: ̄\(∩( ;゚∀゚) <   重いので持ち上げたり投げ飛ばしたりするのは不可能
 |:   |: ̄ ̄ ̄∪:|  \ 耐熱耐寒仕様、太陽に突っ込んでも大丈夫
                \___________

   _____      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 /:\.____\  / 圧力にも屈しない。外部からの衝撃で中の人間が死ぬ事もない。
 |: ̄\(∩( ;゚∀゚) <   宇宙空間でも大丈夫。酸素も食料も一生分ある。排泄物も秘密システムで処理できる。
 |:   |: ̄ ̄ ̄∪:|  \ 箱は 外 側 からしか開かない。ふはははは、完璧すぎる。ぬるぽぬるぽぬるぽ!
                \___________
    バタンッ!!
 ________
 |: ̄\      \   <ヌルポヌルポー!!
 |:   |: ̄ ̄ ̄ ̄:|
117デフォルトの名無しさん:2010/12/01(水) 00:26:46
何年前のAAだよw
118デフォルトの名無しさん:2010/12/01(水) 03:37:33
FILE *fp;
fp = fopen( "test.txt", "w" );
fclose(fp);
これで同じディレクトリにtest.txtが作られるはずですが、出来ません。なぜでしょうか。
119デフォルトの名無しさん:2010/12/01(水) 03:47:17
書き込み権限の無いシステムディレクトリだからファイルが作れないとか
VSでやっててソリューションディレクトリとプロジェクトディレクトリを勘違いしてるとか
そもそもfopenした後のfpがNULLかどうか確認したのか?
120デフォルトの名無しさん:2010/12/01(水) 03:55:28
int main ( int argc, char *argv[] )
{
...
FILE *fp;
fp = fopen( "test.txt", "w" );
fclose(fp);
...
}
だと動かないけど

int main ( void )
{
...
FILE *fp;
fp = fopen( "test.txt", "w" );
fclose(fp);
...
}
だとtest.txtが出来上がっていた
121デフォルトの名無しさん:2010/12/01(水) 09:36:03
糞スレ
122デフォルトの名無しさん:2010/12/01(水) 17:14:24
>>102
これ教授の目の前で言ってるのと同じだけど、大丈夫か?
123デフォルトの名無しさん:2010/12/01(水) 17:52:40
大学生でこの文章力だとプログラムの方は絶望的だな
124デフォルトの名無しさん:2010/12/01(水) 17:57:53
>>123
何普通に返してんだよ
125デフォルトの名無しさん:2010/12/02(木) 00:08:53
http://codepad.org/7MRjreIq
参考書のサンプルプログラムです
質問1
このプログラムの2番目のif文はargv[]の2番目を処理しているのですか?
仮に2番目のパラメータだとしたら1番目のパラメータはこのプログラムのこと
を言っているのですか
質問2
while文の記述が私の想像だと
while ((c=fgetc(fp))!=EOF){
fputc(c,stdout)};
fclose(fp);
のようにfputcだけループされる具合になると思うんですがあってますか
質問3
fputcの第2引数stdoutの意味を教えてください(おまけで答えてほしいです)



126デフォルトの名無しさん:2010/12/02(木) 00:26:39
すいません
上の質問すべて解決しました
127デフォルトの名無しさん:2010/12/02(木) 00:29:28
ふっふっ
128デフォルトの名無しさん:2010/12/02(木) 00:33:13
ありがとうございました
129デフォルトの名無しさん:2010/12/02(木) 00:49:04
どういたしまして
130デフォルトの名無しさん:2010/12/02(木) 01:31:38
いえいえ
131デフォルトの名無しさん:2010/12/02(木) 03:14:00
ほっほっ
132デフォルトの名無しさん:2010/12/02(木) 09:11:47
どぴゅっどぴゅっ
133デフォルトの名無しさん:2010/12/02(木) 09:29:23
もしもし
134デフォルトの名無しさん:2010/12/02(木) 09:30:36
かめよ
135デフォルトの名無しさん:2010/12/02(木) 11:46:30
かめさんよ
136デフォルトの名無しさん:2010/12/02(木) 12:04:09
世界のうちにおまえほど歩みののろいものはない
どうしてそんなにのろいのか

なんとおっしゃる うさぎさん
137デフォルトの名無しさん:2010/12/02(木) 14:20:11
つきにかわって
138デフォルトの名無しさん:2010/12/02(木) 15:13:53
おしおきよ
139デフォルトの名無しさん:2010/12/02(木) 17:24:51
良スレの悪寒
140デフォルトの名無しさん:2010/12/02(木) 18:33:59
ふっほっ
141デフォルトの名無しさん:2010/12/02(木) 19:52:58
ぶはっぶはっ
142デフォルトの名無しさん:2010/12/02(木) 23:23:29
http://codepad.org/zBqztw45
参考書のサンプルプログラムのコピペです
どういう動きをするのかわかりやすく解説してほしいです
こんがらがってしまいました
なんで作者はこんなわけのわかんないプログラム作ったかも謎です
143デフォルトの名無しさん:2010/12/02(木) 23:30:20
作者かわいそす
144デフォルトの名無しさん:2010/12/02(木) 23:32:42
参考書なのに、どんなつもりのコードなのか解説がないのかね。
145デフォルトの名無しさん:2010/12/02(木) 23:37:10
ASCIIコードについて説明しようとしてるんじゃね?
146デフォルトの名無しさん:2010/12/02(木) 23:39:59
配列の初期化、配列に代入、配列の出力

終わり
147デフォルトの名無しさん:2010/12/02(木) 23:41:44
>>142
文字もCではただの数字として扱われる。
見たいな事を示したかったんじゃないかな?
http://codepad.org/smhiyESX

後、
(c=getchar())!=EOF
の意味だが、
この辺読めば分かるんじゃないか?
http://homepage1.nifty.com/toshio-k/prog/c/
148デフォルトの名無しさん:2010/12/03(金) 00:32:00
質問です。
縦横5x5つのマス目からなる表の1列目の上から下に向かって、文字列の1文字目から順に当てはめていく。
一番下までいったら、2列目、3列目、・・・に同様に文字を当てはめていく。
この操作を二次元配列を用いて行いたいのですが、どうすればいいのか見当もつきません。
ヒントだけでもいいので教えてください、お願いいたします。
149デフォルトの名無しさん:2010/12/03(金) 00:35:50
へえ
150デフォルトの名無しさん:2010/12/03(金) 00:41:20
char masu[] = "abcdefghijklmnopqrstuvwxyz";
for(int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
printf("%c ", masu[j * 5 + i]);
}
printf("\n");
}
151デフォルトの名無しさん:2010/12/03(金) 01:05:57
>>142です

やっぱこのプログラム糞ですわ、
while((c=getchar())!=EOF)
count[c]++;
ここの部分がほかの処理となんも関係ない
数字を標準入力してその分の配列を作ろうとでもしたのかこれは

ちなみに文字コードのことは解説にはないです

152デフォルトの名無しさん:2010/12/03(金) 01:07:36
全然違います
プログラムが糞なんじゃなくて
ちゃんと読めない君が糞なんじゃないの?
153デフォルトの名無しさん:2010/12/03(金) 01:10:52
いくらなんでも釣りだろ。
こんなアホみたいな簡単なソース読めないのにこんなに偉そうなのはありえない。
154デフォルトの名無しさん:2010/12/03(金) 01:44:04
>>142
標準入力から1バイトずつ読み込んでEOFに相当する値を読み込むまで各値の個数を集計している。
最後に集計した各値の個数を表示して終了。
155デフォルトの名無しさん:2010/12/03(金) 01:44:39
糞スレ
156デフォルトの名無しさん:2010/12/03(金) 02:14:40
>>148
char masu[5][5], moji[] "abcdefghijklmnopqrstuvwxy";
int i, j, k = 0;

for(i = 0; i < 5; i++) for(j = 0; j < 5; j++) masu[j][i] = moji[k++];
157デフォルトの名無しさん:2010/12/03(金) 02:26:22
すいません
ラストオーダーです(汗)
これ以降ロムします
>>142のプログラムについてforやwhileのあとに[]をつけてほしいです
あと
count[c]++は配列、中に格納してある値のどちらをインクリメントしているのか知りたいです

ラストチャンスをください!
158デフォルトの名無しさん:2010/12/03(金) 02:53:14
配列をインクリトリスメントする場合は当然cunt[c++]だろがタイコンデロガ。
よって中の値をインラクリマクリスティメントしてるよ。
159デフォルトの名無しさん:2010/12/03(金) 03:05:39
配列をどうやったらインクリメントできんだよw
160デフォルトの名無しさん:2010/12/03(金) 10:30:24
ヒント
ポインタ演算
161デフォルトの名無しさん:2010/12/03(金) 12:29:52
http://codepad.org/nEINUhJI
変数のポインタを返す関数を
ポインタのポインタを引数にとる関数に渡したいときの書き方が分かりません
URLのように普通に&を付けてみたらエラーが出ます
162デフォルトの名無しさん:2010/12/03(金) 12:58:23
>>161
ttp://codepad.org/9S1VmhwT
一時変数のアドレスが欲しいわけじゃないでしょ
こうやらないとダメ
163デフォルトの名無しさん:2010/12/03(金) 13:25:47
しつもんです〜

Delphiで

TUnkoClass: class of TUnko

function BuildUnko(AType:TUnkoClass):TUnko;
begin
 Result:=AType.Create;
end;

type
 TGeri = class(TUnko)


 TIpponGuso = class(TUnko)



こういうのがあったとして、これをC++でやるにはどうしたらいいんでしょうか。
164デフォルトの名無しさん:2010/12/03(金) 13:40:17
残念ながらここは ++ の付かない C のスレ
165デフォルトの名無しさん:2010/12/03(金) 14:24:06
んじゃCではどうやるんですか?
166デフォルトの名無しさん:2010/12/03(金) 14:48:00
Cにはクラスがないので、まずCでどのようにクラスを実現するのかという問題から議論せねばなるまいな
ただの構造体とするなら、サイズを覚えておいて malloc に渡すだけでいいぞ
167デフォルトの名無しさん:2010/12/03(金) 15:15:15
なるほどw 
まぁ構造体ID→分岐→静的コンストラクタって流れなら問題なく記入したコードぐらいなら再現できるけど
クラスの扱いに関してはC++へ行けって事ですね。

んじゃそうします。
168デフォルトの名無しさん:2010/12/03(金) 15:24:52
ふっほっ
169デフォルトの名無しさん:2010/12/03(金) 16:49:26
ほっほっ
170デフォルトの名無しさん:2010/12/03(金) 18:22:12
どぴゅっどぴゅっ
171デフォルトの名無しさん:2010/12/03(金) 20:26:02
>>151
糞かもしれん。が、糞かどうかは >>142 だけでは判断できんのだ。
前に何が書いてあるのか分からんことには・・・
>>142 はまともなプログラムだから。
172デフォルトの名無しさん:2010/12/03(金) 20:36:05
え?
173デフォルトの名無しさん:2010/12/03(金) 23:05:59
低水準入出力関数でファイルを開いて
ファイルの文字列から1文字うけとって
それをASCIIコードで出力したい場合どうすればいいですか?
174デフォルトの名無しさん:2010/12/03(金) 23:07:30
>>173
open
read
write
close
175デフォルトの名無しさん:2010/12/03(金) 23:09:47
open
read
printf
close
じゃない?
176デフォルトの名無しさん:2010/12/03(金) 23:15:00
>>175
printf()は低水準じゃないぞ。
題意は出力も低水準かも知れん。
177デフォルトの名無しさん:2010/12/03(金) 23:16:52
stdoutのハンドルはどう取ればよいのだ?
178デフォルトの名無しさん:2010/12/03(金) 23:17:37
ファイルから読んだデータをそのまま書き出すんじゃなくて、
出力するときだけわざわざアスキーと書いてるってことは
入力はアスキーじゃないのかとか、いろいろ空想が広がる質問だな。
179デフォルトの名無しさん:2010/12/03(金) 23:18:50
>>177
つ[fileno()]
つーか、1だろ。JK
180デフォルトの名無しさん:2010/12/03(金) 23:19:56
>>177
ファイルハンドルで0だか1だかでしょ? > 標準出力
もう忘れたけど。
181デフォルトの名無しさん:2010/12/03(金) 23:22:25
標準出力が1で標準エラー出力が2じゃないかい
182デフォルトの名無しさん:2010/12/03(金) 23:44:35
ふっふっ
183デフォルトの名無しさん:2010/12/04(土) 00:22:45
おお、1なんだ。初めて知ったわ。
shやbashのやつと同じなのか。
184デフォルトの名無しさん:2010/12/04(土) 00:24:28
stdout
185デフォルトの名無しさん:2010/12/04(土) 03:50:23
へえ
186デフォルトの名無しさん:2010/12/04(土) 12:08:41
ふっほっ
187デフォルトの名無しさん:2010/12/04(土) 17:11:09
>>148です。
返事が遅れてすみません。
>>150 >>156御回答ありがとうございます。
188デフォルトの名無しさん:2010/12/04(土) 18:02:19
関数を呼び出すときって
例えば構造型じゃない変数型の関数
int star(void)
を呼び出す時は
int main(void)の中で
int a,b star();
のようにstar()は{}内の最初の行で定義しなくていいですよね?
でも構造体の場合は
例えば構造体関数の場合, STAR moon(STAR a1)の場合
mainに呼ぶときは
int main(void)の中で
STAR m,n, moon(STAR)のように
{}内の最初の行で宣言が必要なんですか?
こう宣言しとかないとエラーが出ます。
189デフォルトの名無しさん:2010/12/04(土) 18:09:32
>>188
意味が分からん。ここにソース貼ってリンクをくれ。
http://codepad.org/
190デフォルトの名無しさん:2010/12/04(土) 18:10:03
>>188
構造型とか変数型とか勝手に自分用語作るな
日本語もおかしいし
根本的にC言語を理解してないように見える
191デフォルトの名無しさん:2010/12/04(土) 18:10:09
今時宣言なしとかやめてくれ。
192デフォルトの名無しさん:2010/12/04(土) 18:10:16
ちょっと何言ってるか分からないですねえ
193デフォルトの名無しさん:2010/12/04(土) 18:11:12
プロトタイプ宣言のない関数は戻り値が int で引数が不定だと推定される
194デフォルトの名無しさん:2010/12/04(土) 18:14:36
>>188
まず下記のソースをそのまま(順番変えずに)コンパイルすると普通エラーだ。これはいいか?
int main(void) { return star(); }
int star(void) { return 0; }
195デフォルトの名無しさん:2010/12/04(土) 18:26:44
どういう勉強の仕方をしたら>>188みたいなことになるんだろう
196デフォルトの名無しさん:2010/12/04(土) 18:40:01
すいません 日本語不自由で・・・
#include <stdio.h>
int star(int b)
{int c;c=b+1;return c;}
int main(void)
{
int a;a=3;printf("%d\n",star(a));
return 0;
}
このように
int main(){int a, star();
略}
と書かなくてもエラーでませんよ?構造体の場合
int main(){STAR a1,a2,moon()・・・略}
と構造体関数をmainに呼ぶときは最初に宣言しとかないとエラーでます。
197デフォルトの名無しさん:2010/12/04(土) 18:42:53
>>194
すいません、ソースは簡単なもんで良いです。、単に原理の話をしたいのです。
ポインタ、や配列一切考えず、すごい単純な例を考えると原理部分以外でエラー
でないので考えてみましょう。
りんごとみかんの数の合計をそれぞれ出すプログラム作ってみてください。
構造体型関数 FRUITS moon(FRUITS nani FRUITS dore)
の中で二つを計算してmainで呼んでください。
198デフォルトの名無しさん:2010/12/04(土) 18:44:55
>>196
お前が上に張ったコードと
>int main(){int a, star();
これにいったいどんな関連性があるんだ…
構造体関数ってなんだよ本にそう書いてあったのか?
199デフォルトの名無しさん:2010/12/04(土) 18:49:18
エラーが出ると言うコードを略さず全部書いてくれ
200デフォルトの名無しさん:2010/12/04(土) 18:55:19
もう釣りなんじゃないかって気がしてきた
201デフォルトの名無しさん:2010/12/04(土) 18:59:05
ぶはっぶはっ
202デフォルトの名無しさん:2010/12/04(土) 19:17:18
#include <stdio.h>

int main(void)
{

printf("あなたが好きです\n");

 return 0;
}
203デフォルトの名無しさん:2010/12/04(土) 19:21:11
VS でやると、一瞬出て読めないスピードで消えるメッセージですね。
いわゆる、心の中で思っただけという。
204デフォルトの名無しさん:2010/12/04(土) 19:47:45
UNIXじゃないとか
205デフォルトの名無しさん:2010/12/04(土) 20:19:29
>>196
日本語不自由というより、用語がむちゃくちゃで、
意味が全く通じんのよ。
君の造語は全く意味が通じんから、
せめてエラーが出ないソースと、エラーが出ないソース貼れと。
206デフォルトの名無しさん:2010/12/04(土) 20:23:28
構造体の中身を直接観るようなプログラミングをしているということは、
設計に失敗しているという認識でよろしいのでしょうか?
207デフォルトの名無しさん:2010/12/04(土) 20:54:14
#include <stdio.h>
typedef struct {int a,b;}FRUIT;
int main(void){
FRUIT ikutsu,nanen,sougaku,moon();
scanf("りんごが何個何円=(%d,%d)\n",&ikutsu,&nanen);
scanf("みかんが何個何円=(%d,%d)\n",&ikutsu,&nanen);
sougaku = moon(ikutsu,nanen);
printf("りんごの総額、みかんの総額=(%d,%d\n)",sougaku.a,sougaku.b);
}
FRUIT moon (FRUIT nani,dore)
{
static FRUIT nanitodore;
FRUIT nani,dore;
nanitodore.a = (nani.a)*(dore.a);
nanitodore.b = (nani.b)*(dore.b);
return nanitodore;
}
エラーが出ます。t.c:10: error: parse error before "dore"となります・・・どうしたらいいでしょう?
208デフォルトの名無しさん:2010/12/04(土) 20:57:09
(FRUIT nani,dore)
馬鹿か死ね
209デフォルトの名無しさん:2010/12/04(土) 21:02:45
>>207
そんな餌に俺はつられないクマー
210>>207:2010/12/04(土) 21:11:10
>>209
全然釣りじゃありません・・・
普通に構造体をmoonという関数に渡したいだけなんですが・・
二つ渡すので
(FRUIT nani,dore)ですよね?
でFRUITで返したいので
FRUIT moon (FRUIT nani,dore)

教科書とおりにやってるだけですが・・
それで死ねとか。
211デフォルトの名無しさん:2010/12/04(土) 21:20:48
>>210
その教科書を破り捨てろ
お前がそんなおかしなことばかりするのはそれのせいだ
今すぐ捨てろ
212デフォルトの名無しさん:2010/12/04(土) 21:31:01
分からないならレスしなくて結構ですが……
213デフォルトの名無しさん:2010/12/04(土) 21:32:41
>>212
煽っても答えは教えませんよ^^
214デフォルトの名無しさん:2010/12/04(土) 21:39:28
FRUIT nani, FRUIT dore

それ以外にもエラーがありすぎる
解決するまでに10回は質問を繰り返されそうだ
めんどいな
215デフォルトの名無しさん:2010/12/04(土) 21:56:47
そもそも a, b って何だろうな
FRUIT っていったい何を表す構造体なんだろうな
これバナナが増えたら c が増えるのかな

何で static なんて使ってるんだろうな
そもそもこのレベルで static なんてどこで知ったんだろうな
教科書に載ってたのかな

FRUIT moon();

main の中にこんな書き方してる本なんてあるのかな
教科書どおりってことは教科書に載ってたのかな
本当に載ってるならうpしてほしいな

変数名が全部日本語ってすごいな
教科書でも日本語だったのかな

ところで moon って何?月?フルムーン?

というわけで分からないことだらけなので答えようがないのです。
お手上げです。頑張って下さい。
216デフォルトの名無しさん:2010/12/04(土) 22:16:12
typedef struct {int a,b;}FRUIT;
scanf("%d",&ikutsu);

便乗して質問なんだけど構造体の変数にこれで値いれてみたら構造体の最初に宣言した変数に値が入ってた。
これって環境依存?
217デフォルトの名無しさん:2010/12/04(土) 22:23:44
>>216
大抵できるだろうけれど、当てにしないようにね。
218デフォルトの名無しさん:2010/12/04(土) 22:28:16
>>217
なるほど、どうもありがとう。
219デフォルトの名無しさん:2010/12/04(土) 23:50:00
赤鬼さんと朝まで豆まき
220207:2010/12/05(日) 00:00:55
>>213
>>212は俺じゃないです。
>>214
FRUIT moon (FRUIT nani,FRUIT dore)
も当然試しましたが、エラーでました・・
>>215
a,bは構造体のメンバーです。
moonは唯の関数名、意味は何もないです。
staticは初期値みたいな感じです。
221207:2010/12/05(日) 00:02:51
とりあえず>>207の奴でコンパイル(cygwin)でしたら
t.c:10: error: parse error before "dore"
この一行だけのエラーのみでした。
>>215
FRUITっていうのは構造体の変数型名です。
222207:2010/12/05(日) 00:09:53
りんごの個数 3個 一個10円
みかんの個数 2個 一個3円

総額 りんご30円 みかん6円

こんな感じのプログラムが作りたいです。
作りたいんじゃなくて、構造体と関数を同時に勉強したいんで。
こんなもん関数使わなくても出来るプログラムですが。 
223デフォルトの名無しさん:2010/12/05(日) 00:20:06
#include <stdio.h>
typedef struct {
int value;
int count;
} FRUIT;

int moon(FRUIT object)
{
return object.value * object.count;
}

int main(void)
{
FRUIT apple, orange;

printf("りんごが何個何円= ");
scanf("%d %d", &apple.value, &apple.count);

printf("みかんが何個何円= ");
scanf("%d %d", &orange.value, &orange.count);

printf("りんごの総額、みかんの総額=(%d,%d\n)", moon(apple), moon(orange));

return 0;
}
224207:2010/12/05(日) 00:23:24
>>223
int moon(FRUIT object)
ここを

FRUIT moon(FRUIT object1, object2)みたいにできないですかねぇ?・・
型どうりにやりたいんで・・
プログラムを作ることより何故エラーが出るかのほうが今は学びたい気分です。
高校までは暗記ばっかやってたんで。
225デフォルトの名無しさん:2010/12/05(日) 00:29:35
#include <stdio.h>
typedef struct {
int a;
int b;
} FRUIT;

FRUIT moon(FRUIT object1, FRUIT object2)
{
FRUIT nanitodore;
nanitodore.a = object1.a * object1.b;
nanitodore.b = object2.a * object2.b;
return nanitodore;
}

int main(void)
{
FRUIT apple, orange, sougaku;

printf("りんごが何個何円= ");
scanf("%d %d", &apple.a, &apple.b);
printf("みかんが何個何円= ");
scanf("%d %d", &orange.a, &orange.b);
sougaku = moon(apple, orange);
printf("りんごの総額、みかんの総額=(%d,%d\n)",sougaku.a,sougaku.b);

return 0;
}
226207 ◆hRHl1sG9G1dV :2010/12/05(日) 00:33:06
>>225
それエラーでませんかねぇ?
ちょっとやってみます。
227デフォルトの名無しさん:2010/12/05(日) 00:33:43
結局 a, b は何を表したかったんだ
個数と単価なのか。りんごとみかんなのか。
変数名が適当だから意図がさっぱり分からない。
せめて a, b に適切な名前をつけてくれ。ついでに moon にも。
228デフォルトの名無しさん:2010/12/05(日) 00:36:19
本人は理解できなさそうだから、もう突っ込まないほうがいい。
229デフォルトの名無しさん:2010/12/05(日) 00:39:17
>>226
コンパイルチェックしてるよ〜
ただ意味のある変数名に変えることをお勧めする。
230207 ◆SGcgbjkFYo :2010/12/05(日) 00:44:02
>>229
OK牧場
>>227
いや本当にシステム的なことで精いっぱいで・・・
自分でも何が何やら・・・
231デフォルトの名無しさん:2010/12/05(日) 00:44:25
しかし、これは酷いな
せめて配列と個数で渡すようにしないと
りんごとみかんとばななの合計が欲しくなったときにまた引数増やすのか?
232デフォルトの名無しさん:2010/12/05(日) 00:46:03
>>231
これ以上引き延ばすんじゃない
233207 ◆SGcgbjkFYo :2010/12/05(日) 00:49:47
色々厳しいけど最終的に教えてくれるので感謝してます。
ありがとうございました。
234デフォルトの名無しさん:2010/12/05(日) 00:52:33
ボーランドとcygwinってなにが違うんですか?
235デフォルトの名無しさん:2010/12/05(日) 01:25:10
>>233
嫌味じゃないがまぁもうちょっと勉強した方が良いな。
あんまり変な質問したらこのスレだと結構叩かれるからなw
236デフォルトの名無しさん:2010/12/05(日) 01:29:34
>>225>>207ってほとんど変わらんじゃん、何が悪かったんだろう。
237デフォルトの名無しさん:2010/12/05(日) 01:37:06
ほとんど変わらないなら、わずかに違ってる部分こそが問題だってわかるだろうに
238207 ◆SGcgbjkFYo :2010/12/05(日) 01:47:14
>>225
7行目の
FRUIT moon(FRUIT object1, FRUIT object2)

FRUIT moon(FRUIT object1, object2)
じゃだめなんでしょうか?そうならば何故ダメなのでしょう?
239207 ◆SGcgbjkFYo :2010/12/05(日) 01:48:44
一応>>225でエラーチェッカーしましたが
エラーなかったです、ありがとうございました。

後何故
typedef struct {
int a;
int b;
}

のように構造体宣言では
int a; intb;のように;がいるのでしょうか
int main(void;)とはやりませんよね?
240デフォルトの名無しさん:2010/12/05(日) 01:52:34
エラーチェッカーってなんだろう。
コンパイルして動かして確認してるんじゃないんだろうか。
241207 ◆SGcgbjkFYo :2010/12/05(日) 01:53:56
>>240
コンパイルしてエラーチェッカーしました・・
ノンエラーでした・・
242デフォルトの名無しさん:2010/12/05(日) 01:54:23
>>239
取りあえずそれ程時間かからんから↓でも一度読め。
http://homepage1.nifty.com/toshio-k/prog/c/
足し算できないのに掛け算覚えたってほとんど役に立たん。
243デフォルトの名無しさん:2010/12/05(日) 11:22:47
>>238
2ch で人に聞いて勉強しようと思わずに、適当な本を買って読んでみるといい。
その上でわからないことがあれば、あらためてここにくればいい。
暗記ですまさない、ということはいい心がけだが、勉強というものは元来暗記ものだ、後からわかってくるということも多い。

>FRUIT moon(FRUIT object1, object2)
>じゃだめなんでしょうか?そうならば何故ダメなのでしょう?
そういう文法だ、としかいいようがない。関数の引数を指定するときは、いちいち引数の型を全部に書かなければならない。
244デフォルトの名無しさん:2010/12/05(日) 11:24:49
>>239
そういう文法であるから、としかいいようがない。
プログラム言語も所詮人の造りしもの。決め事の細部は開発者がえいや、ときめたところも多い。
245デフォルトの名無しさん:2010/12/05(日) 16:29:32
ふっほっ
246デフォルトの名無しさん:2010/12/05(日) 17:31:46
>>245
キチガイ乙w
247デフォルトの名無しさん:2010/12/05(日) 18:11:36
C だと構造体って中に配列が入っててもまるごとコピーされるんだよね?
だったら普通ポインタで渡すべきなんでしょうか?
248デフォルトの名無しさん:2010/12/05(日) 18:14:06
普通ポインターでやりとりする場合が多い。
小さい構造体なら、そのままの場合もある。
249デフォルトの名無しさん:2010/12/05(日) 18:20:42
>>248
ありがとうございました!
250デフォルトの名無しさん:2010/12/05(日) 18:55:20
ヘッダ struct A : public B{};←変えれない
ソース1 A * p = new A;←変えれない
      q = p ←ここ
ソース2 関数(B型)で関数(q)として使いたい←引数の型は変えられない
の状態なのですがどうしたらいいですか?
ポインタ型のpの中身(アドレス)じゃなくてそのアドレスの中身をqに入れる感じだと思うのですがやり方がわかりません!教えてください

251デフォルトの名無しさん:2010/12/05(日) 18:59:46
>>250
日本語がおかしい
それにここC++スレじゃないから
252デフォルトの名無しさん:2010/12/05(日) 19:02:56
>>251
ごめん
253デフォルトの名無しさん:2010/12/05(日) 19:03:16
>>250
せめてソースぐらいアップロードしてくれないと説明が理解出来ない。
254デフォルトの名無しさん:2010/12/05(日) 19:32:23
ほっほっ
255デフォルトの名無しさん:2010/12/05(日) 21:27:56
「C言語すら知らなかった私が2カ月でiPhoneアプリをリリース」 はてなで話題に
http://hato.2ch.net/test/read.cgi/news/1291551909/
256デフォルトの名無しさん:2010/12/05(日) 21:33:04
さっき見たけど別に凄くないな
257デフォルトの名無しさん:2010/12/05(日) 21:38:45
ビットフィールドってビットフラグに比べてあんまし見かけない気がするんだけどなんか問題でもあるの?
struct X
{
unsigned char valid : 1 ;
unsigned char value: 7 ;
};
struct X x;
if( x.valid ) { printf( "%d", x.value ) ; }
ビットマスクとかより解かりやすいし多分早いと思うんだけど
258デフォルトの名無しさん:2010/12/05(日) 22:01:52
使う必然性がないからだよ。
259デフォルトの名無しさん:2010/12/05(日) 22:04:01
>>257
なんでそれをビットマスクと比較するしw
260デフォルトの名無しさん:2010/12/05(日) 22:04:34
ちなみにビットフィールドに使える型はint, signed int, unsigned int, _Boolだけ
261デフォルトの名無しさん:2010/12/05(日) 22:04:47
>>259
最後の行はビットフラグの間違いでした
262デフォルトの名無しさん:2010/12/05(日) 22:10:08
フラグはフラグで、論理積とか取って一発で比較するので便利。
特定の組み合わせを一つの変数で表現できるのでラク。
263デフォルトの名無しさん:2010/12/05(日) 22:37:24
ビットフィールドってハード屋が、
1アドレスの各ビットに機能詰め込んだとき以外は、
それ程便利とは思わんけど・・・
上記もCPU変わってエンディアン変わると後で大変だから、
面倒でも関数介してアクセスしたりしてる。
264デフォルトの名無しさん:2010/12/05(日) 23:06:04
#include<stdio.h>
main(int ac, char *av[]){
--ac;
*(++av);
printf("%s",*av);
}

エラーの原因がわかりませn 四行目を++av;にすると正常に動作します
なんで??
printfの引数と見比べてみておかしいとおもったんですが
265デフォルトの名無しさん:2010/12/05(日) 23:18:29
>>264
エラーにはならないだろ?
266デフォルトの名無しさん:2010/12/05(日) 23:18:38
>>264
avがアクセスオーバーランしてる
267デフォルトの名無しさん:2010/12/05(日) 23:19:55
>>264
bcc32 や gcc-4 では警告はでるにせよ、コンパイルは通り、
実行結果は第一引数の文字列を表示しています。
エラー、というのはコンパイル時の警告のことですか?
そうだったら、「*(++av) というコードが効果を持たない」という意味の警告がでます。たしかにそれはそのとおりだと思います。
268デフォルトの名無しさん:2010/12/05(日) 23:21:39
>>266
コマンドライン実行時に引数がなくても av は最終的に argv[1]= "" を指すから、オーバーランは発生していません。
269デフォルトの名無しさん:2010/12/05(日) 23:42:48
もう一回コンパイルしたら警告もエラーもでなかった
なんでエラーがでたのか謎 

解決はしました ありがとう
270デフォルトの名無しさん:2010/12/05(日) 23:45:24
>>268
俺は266ではないがそんなことはない。
271デフォルトの名無しさん:2010/12/05(日) 23:56:46
>>268
例えばac==1の時にはav[0]しか指してはいけないのにav[1]を指してるだろ
272デフォルトの名無しさん:2010/12/05(日) 23:57:39
if(ポインタ→ポインタ)ってどういう判定基準なんですか?
273デフォルトの名無しさん:2010/12/06(月) 00:00:54
>>272
char* p0 = (char*)A;
char** p1 = &p0;
if (p1->p0) A≠の時の処理
else A=0の時の処理
274デフォルトの名無しさん:2010/12/06(月) 00:05:00
>>273
if (p1->p0) A≠0の時の処理ですか?
275デフォルトの名無しさん:2010/12/06(月) 00:12:55
>>274
Aに0とか1とか2を入れて試してみればよかろう。
276デフォルトの名無しさん:2010/12/06(月) 00:18:21
>>275
それが今if (p1->p0)のところで
0xC0000005: 場所 0xfeeefef2を読み込み中にエラーが発生しました
と出るのです。よくこれは何も入ってないポインターを使った時に出るのは経験的に知ってたのですが
delete p1,p2をしたので、elseの方に行ってほしいのですが、このエラーのせいで止まってしまうのです
どうしてでしょうか?
277デフォルトの名無しさん:2010/12/06(月) 00:21:36
deleteしても0は入らないよ
自分で0を代入しないと
278デフォルトの名無しさん:2010/12/06(月) 00:24:19
寝ぼけてた。こうな。
#include <stdio.h>
#include <stdlib.h>
struct hoge {
char* p0;
};
int main(void) {
struct hoge obj;
struct hoge* p1 = &obj;
int a,i;
for (i=0 ; i<20 ; i++) {
a = rand()%5;
printf("%d ",obj.p0=(char*)a);
if (p1->p0) printf("true\n");
else printf("false\n");
}
return 0;
}
279デフォルトの名無しさん:2010/12/06(月) 00:25:57
>>277
そうなんですか。ありがとうございました
280 ◆QZaw55cn4c :2010/12/06(月) 00:58:43
>>271
いいえ。この場合はav[1]を指してもよく、av[1]==NULL です。(>>268 は間違っておりました。)
一般に int main(int argc, char *argv[]) において、argv[argc] == NULL であることが保障されています。
ISO/IEC 9899:1999 5.1.2.2.1-2
281デフォルトの名無しさん:2010/12/06(月) 00:59:23
うぜー
282デフォルトの名無しさん:2010/12/06(月) 01:02:44
そんなウザがるなって。
センスがあるかどうかは別として。
◆QZaw55cn4c はそれなりの知識を備えているし、
こうしてかまってもらうことで知識を増強してる。
ある意味いい勉強方法だと思うがな。
283デフォルトの名無しさん:2010/12/06(月) 01:11:27
でもうぜーよな?
284デフォルトの名無しさん:2010/12/06(月) 01:14:47
NULL終端になるって知らんかったわ
285デフォルトの名無しさん:2010/12/06(月) 01:15:52
ねーよ
うざいだけ
居なくても誰も困らない
むしろ初心者にとっては助かる
286デフォルトの名無しさん:2010/12/06(月) 01:19:26
ぶはっぶはっ
287282:2010/12/06(月) 01:19:53
>>283
いや、俺は別にウザイとも思わんが、
ウザイと思う人の気持ちも分かるといった程度。
スレ内で多少意固地になって反論する面もあるが、
その後のソースを見ると全く聞く耳を持たんというほどでもない。
ウザイと思われることでレスを貰い、どんどん成長していきそうだ。
そのうちウザイじゃ済まなくなるかもよ。超ウザイ。ってね。
288デフォルトの名無しさん:2010/12/06(月) 01:25:32
理解した
お前も同類だ
289デフォルトの名無しさん:2010/12/06(月) 01:26:47
282もうざいから消えていいよ
290デフォルトの名無しさん:2010/12/06(月) 01:30:33
分かったよ。名無しにもどるわ。
291デフォルトの名無しさん:2010/12/06(月) 01:43:26
俺は勉強になったけどな。
292デフォルトの名無しさん:2010/12/06(月) 01:46:37
俺は天使になったけどな。
293デフォルトの名無しさん:2010/12/06(月) 01:50:18
◆QZaw55cn4c は自分を分析されるのが嫌いだと見た。
294デフォルトの名無しさん:2010/12/06(月) 01:52:33
どこで?
295デフォルトの名無しさん:2010/12/06(月) 03:22:36
#define HOGE(N) ???

HOGE(1) -> Hoge1() { Hoge2(); }
HOGE(2) -> Hoge2() { Hoge3(); }
HOGE(3) -> Hoge3() { Hoge4(); }

こんな感じで展開されるマクロってどうやって書くの?
296デフォルトの名無しさん:2010/12/06(月) 03:30:30
>>295
#define HOGE(x) Hoge##x() { Hoge##x(); }
297デフォルトの名無しさん:2010/12/06(月) 07:03:31
>>280
でさ、何回も聞くけど、どうしてC99のソースを貼るの?今聞かれているのはC89だと思うんだが
298デフォルトの名無しさん:2010/12/06(月) 09:02:46
ループの中で一回だけその処理をしてその後はまるで//されたみたいにさせる関数はありませんか?
299デフォルトの名無しさん:2010/12/06(月) 09:15:24
>>296
ちげーよよく見ろうんちマン
300デフォルトの名無しさん:2010/12/06(月) 09:18:47
>>298
意味が判らんのだが、こういうことか?
for (int ic = 0; ic < num; ++ic) {
static bool static_1st = true;
if (static_1st) {
func();
static_1st = false;
}
// other sequence
}
301デフォルトの名無しさん:2010/12/06(月) 09:36:36
>>300
ありがとうございます
そんな感じです。多分。
staticをすると2週目にstatic_1stにtrueが入らないのでしょうか?
それなのに一回目にfalseを入れることが可能なのですか?どういう仕組みなのですか?
302デフォルトの名無しさん:2010/12/06(月) 09:48:19
>>301
関数の中で使われるstatic変数の実体は、
ほとんどグローバル変数と思ってよい。
下記2つはほぼ実体は同じ。
1.
int a =0;
void func() { a++; }
2.
void func() { static int a=0; a++; }
2の方は関数内でしか使えないってだけ。
初期化のタイミングはmain関数が呼ばれる前。
func関数が呼ばれるタイミングでは初期化は実行されない。
staticには色んな意味があるので、それ以外は自身で調べて欲しい。
303デフォルトの名無しさん:2010/12/06(月) 11:19:28
>>302
あーなるほど
スコープの中ではグローバル変数と同じように使えるから代入はできる
けどforループ開始前に既に実は初期化されてて、次から初期化部分は無視されるので、trueが入ることはない
こういうことですか?

304デフォルトの名無しさん:2010/12/06(月) 12:50:51
え?
305デフォルトの名無しさん:2010/12/06(月) 12:53:28
ふっほっ
306デフォルトの名無しさん:2010/12/06(月) 12:55:46
それよりstatic変数でその使い方じゃループ全体が二回目呼ばれたときまずくね?
307デフォルトの名無しさん:2010/12/06(月) 15:23:23
二回目呼ばれた時も実行しない仕様なんだと思って読んでたけど
308デフォルトの名無しさん:2010/12/06(月) 15:44:49
ありがとうございます
そんな感じで食傷気味です。多分
309デフォルトの名無しさん:2010/12/06(月) 17:03:09
すいません、mallocって何ですか?
教科書のプログラム例で説明なかったんで・・・
極々簡単な例で教えてくれませんでしょうか?
310デフォルトの名無しさん:2010/12/06(月) 17:05:16
>>309
#include <stdlib.h>

int main(){
char * p;
p = malloc(1);
*p = 'c';
}
311デフォルトの名無しさん:2010/12/06(月) 17:07:56
>>310
ほうほう

char型ポインタpはmalloc(1)をどうするのでしょう?
malloc(1)は何でしょうか?
312デフォルトの名無しさん:2010/12/06(月) 17:14:11
int i;
int *p = malloc(sizeof(int)*10) ;//int10個分のメモリ確保
for ( i = 0 ; i < 10 ; i++ ){
p[i] = i ;//配列として扱える
}
for ( i = 0 ; i < 10 ; i++ ){
printf ( "%d\n", *(p+i) ) ;//もちろんポインタとしても使える
}
free(p);// 確保したメモリ解放
313デフォルトの名無しさん:2010/12/06(月) 17:17:48
>>312
sizeof、freeの二つがわかりません・・すいません。
314デフォルトの名無しさん:2010/12/06(月) 17:18:25
ggrks
315デフォルトの名無しさん:2010/12/06(月) 17:21:09
どうみても釣りです
本当にありがとうございました
316デフォルトの名無しさん:2010/12/06(月) 17:25:35
sizeofはメモリの大きさを出す関数
freeはポインタが指す領域を解放する関数

うーん、良く意味がわからないなぁ。

メモリを確保ってどういうことでしょうか?
317デフォルトの名無しさん:2010/12/06(月) 17:32:46
作業台になる机を借りるんだよ
318デフォルトの名無しさん:2010/12/06(月) 17:34:22
では全てのプログラムはmalloc関数が必要なのですか?
319デフォルトの名無しさん:2010/12/06(月) 17:35:24
int「10個分」の配列が欲しいと最初から分かってるなら
int a[10];
でいいけど
プログラムの計算結果で欲しい数が100個だったり200個だったり決まってない場合
int n=100;
int a[n];
みたいに変数を配列の数にしたい所だが実際は出来なかった(C99からはできる)
なので
int* p = malloc(sizeof(int)*n) ;
のようにして必要な数だけメモリを確保する必要があった
320デフォルトの名無しさん:2010/12/06(月) 17:38:53
>>319
int a[10]とした時点で4byteのメモリが10個確保されるけど
変数個の場合は確保できないってことですね?
出来なかったってどいうことですか?理論的に無理じゃなかった
ってことですか?
321デフォルトの名無しさん:2010/12/06(月) 17:41:37
>>319
わかりやすすぎワロタw
プログラムやってると頭悪い奴と頭良い奴の差が本当に出るなぁ。
322デフォルトの名無しさん:2010/12/06(月) 17:42:40
age
323デフォルトの名無しさん:2010/12/06(月) 17:44:08
教えるのが下手なやつは教えれるほど理解していない。
人に物を教えるには3倍理解していないといけない。
324デフォルトの名無しさん:2010/12/06(月) 17:44:33
プログラミングって実行したら自動的に必要な分だけ
メモリ確保するんじゃないんですか?
325デフォルトの名無しさん:2010/12/06(月) 17:46:00
基本的に、変数や配列の内容を記憶するメモリは確保しないと使えない。

int i; double d[10]; などとして変数や配列が使えるのは、スタックと呼ばれるメモリがすでに確保されているから。
ただし、スタックの量は限られているため、あまり大量に使う事ができない。

そこで、大量のメモリが必要な場合は、ヒープと呼ばれるスタックよりも広いメモリ領域から確保してくる。
そのための関数が malloc() で、引数に指定されたバイト数の領域をヒープから確保してくる。

また、C99 未対応の C 処理系や C++ などでは double d[n]; のように要素数が定数でない配列は確保できないので、
この場合も malloc() で (C++ では new 演算子も使い)、ヒープからメモリを確保する。
326デフォルトの名無しさん:2010/12/06(月) 17:48:46
メモリを使うのと確保するのは意味が違うんですね。
処理にはメモリが必要だけど、確保してないとその範囲内で
処理できないってことですね。
327デフォルトの名無しさん:2010/12/06(月) 17:50:22
昔に比べて説明しにくいよな
限られてるといってもスタック1MBくらいあるもんな
328デフォルトの名無しさん:2010/12/06(月) 17:52:53
何で計算など複雑な処理をするメモリは確保してなくても使えるのですか?
329デフォルトの名無しさん:2010/12/06(月) 18:03:14
>>328
計算に必要なメモリ=計算に使う変数のメモリだから
多分
330デフォルトの名無しさん:2010/12/06(月) 18:05:19
どんな複雑な計算だろうがコンパイル時には既に
その計算に必要な量のメモリが分かっているから

int a[n];
のようにコンパイル時にサイズが解決できない宣言はエラーとなる
331デフォルトの名無しさん:2010/12/06(月) 18:14:55
お願いします。

C言語でGoogleカレンダーに食わせるCSVを作成するツールを作成中です。
Googleカレンダーの仕様上、CSVの日本語部分がUTF-8でなくては文字化けが起こります。
Cでファイルに書き込む時に、明示的に文字コードをUTF-8に指定する方法を教えていただきたいです。

よろしくお願いいたします。
332デフォルトの名無しさん:2010/12/06(月) 18:17:20
開発環境くらい書いてくれないと
333デフォルトの名無しさん:2010/12/06(月) 18:19:44
>>331
Cの仕様に文字コードという存在自体無いので
文字コードをなんとかするにはそれ用のライブラリを入れるしか無い

まぁ環境によっては設定で常にUTF-8を扱う感じにできるかもしれんが
334デフォルトの名無しさん:2010/12/06(月) 18:24:22
>>330
たとえば(100!)^(100!)の計算を算出するプログラムだとどのくらい
メモリ食いますかねぇ?
335デフォルトの名無しさん:2010/12/06(月) 18:25:31
もういい加減しろよ
336デフォルトの名無しさん:2010/12/06(月) 18:27:20
>>332
失礼しました。
開発環境は VIM 7.2 でコンパイラはbcc32.exeです。
作成しているツールはDOS窓内で動く簡単なものです。

>>333
ありがとうございます。
参考になりました。文字コードを指定してファイル出力するには
どんなライブラリを使用すればいいのでしょうか?
337デフォルトの名無しさん:2010/12/06(月) 18:27:36
夕方のここスレは空いている
338デフォルトの名無しさん:2010/12/06(月) 18:31:25
>>336
Linuxだったら普通に書き込んだあとに
system関数でiconvをコールして変換すればいいだけじゃ?
339デフォルトの名無しさん:2010/12/06(月) 18:33:24
>>338
ありがとうございます。
使用中のOSはWindowsです。
使ってもらうのは別の人になるので、
できればツール単体でUTF-8のファイルを吐きだすものに仕上げたいのです。
340 ◆QZaw55cn4c :2010/12/06(月) 18:33:37
>>297
C89 の pdf ファイルがあれば、そっちを貼りますが、残念ながらまだ手に入れていないのです。
K&R2 の付録は確認しています。
今回の内容は C89 でも同じです。
341デフォルトの名無しさん:2010/12/06(月) 18:34:50
>>334
nt型一つで32ビットだから
100が2つで64ビット
342デフォルトの名無しさん:2010/12/06(月) 18:35:48
>>339
じゃあ
MultiByteToWideChar
でぐぐれ
343デフォルトの名無しさん:2010/12/06(月) 18:41:21
>>341
いや処理系のメモリ、
100だと2^5<100だから
6ビットじゃないんですか?
344デフォルトの名無しさん:2010/12/06(月) 18:42:30
対数とれ
345デフォルトの名無しさん:2010/12/06(月) 18:48:15
>>342
ありがとうございます!
やはりあったのですね、こういった関数が。
しかしKERNEL.DLL内に含まれる関数を呼ぶ方法がわかりません。
ご教授お願いします。
346デフォルトの名無しさん:2010/12/06(月) 18:48:42
100
だと
1100100だから7ビットじゃないんですか?
347デフォルトの名無しさん:2010/12/06(月) 19:00:40
ひゅっひゅっ
348デフォルトの名無しさん:2010/12/06(月) 19:07:18
7ビットと7ビットの掛け算
100×100だと49ビットが必要何ですか?
ここらへん良くわかりませんね。
349デフォルトの名無しさん:2010/12/06(月) 19:44:32
unsigned char HOGE[100]を関数の引数・仮引数を使ってchar*型の変数に渡したいのですが、うまくいきません。よい方法はありますか?
350デフォルトの名無しさん:2010/12/06(月) 19:58:47
>>348
少しはネットで調べるなりしろよ。
351デフォルトの名無しさん:2010/12/06(月) 20:08:05
>>349
「うまくいかない」とは、どんな目的が達成できないことを言っているんだ?
その文面を見る限り実行結果は出るはずだが
352デフォルトの名無しさん:2010/12/06(月) 20:25:21
>>350
はい、すいません。
勘違いしてましたね。
100は
1100100は8byte=32bitですよね。
100^100も32bitのメモリがあれば
できるんですか?膨大な計算結果になりますが。
353デフォルトの名無しさん:2010/12/06(月) 20:26:47
>>352
xor なら結果は 0 だべw
354デフォルトの名無しさん:2010/12/06(月) 20:30:57
>>353
どう考えても32bitじゃ足りませんよね。
355デフォルトの名無しさん:2010/12/06(月) 20:32:30
あれ?8byteは64bitか。
356デフォルトの名無しさん:2010/12/06(月) 20:35:11
1byte=8bitだよ
357デフォルトの名無しさん:2010/12/06(月) 20:38:58
>>354
計算する型とか計算結果の型でわかるだろ
もっと大きく欲しけりゃそういうライブラリ使う
そういう時は何桁とか指定する
>>356
とは限らん
358デフォルトの名無しさん:2010/12/06(月) 20:46:57
いや1byte=8bitだろ。
違うの?
359デフォルトの名無しさん:2010/12/06(月) 20:49:56
1byte=8bit
とは限らない何てプログラミングにとってはどうでもいいことだ。
360デフォルトの名無しさん:2010/12/06(月) 20:55:54
9bitのものもある
361デフォルトの名無しさん:2010/12/06(月) 21:13:52
>>348
おまえさんが使ってるそのマシンで計算できてるじゃないか
その文面は 100 の 100 乗を 7bytes つまり 56bits で表現したつもりなんだろ?

計算とは出力を得るための処理であり、その出力の表現次第でどうにでもなる
32bit でも float なら 340282346638528859800000000000000000000.0 くらいまで表現できるし
グラハム数だって貧弱なマシンで「表現」できるわけだ
362デフォルトの名無しさん:2010/12/06(月) 22:00:03
>>358
文字コードのいろいろでいろいろなる場合もある
363デフォルトの名無しさん:2010/12/06(月) 22:03:08
>>348
> 100×100
まず10進で考えよう3桁と3桁掛けて9桁になってるかい?
364デフォルトの名無しさん:2010/12/06(月) 22:09:06
>>348
中学校の数学指数のとこやり直した方がいいな
あと進法についても
365デフォルトの名無しさん:2010/12/07(火) 04:25:23
WCHARやTCHARでユニコードを使ってAPIの関数を使ってプログラムをしているのですが
他の関数の引数はL""で今までできていたのですが、新しいソースファイルをプロジェクトに追加して
同じAPIのある関数を使うとLPCSTR型でないので使えませんと出るようになりました。逆にcharだと上手くいきます
そのソースではTCHARで主に書いていて、さっきとは別のAPIの関数もTCHARで使っていて
今、TCHAR+L””した文字列を使ってその関数の引数にしたいのですが、LPCSTR()でキャストするとできません。
変換する前の文字列はデバッガで見るとちゃんとできています。
wcscpyt等の時にLPCSTR()でキャストすると文字列が短くなってしまいます
どうすれば良いでしょうか?
366デフォルトの名無しさん:2010/12/07(火) 04:32:52
プロジェクトの文字セットの設定で
マルチバイト文字列を使うからUnicodeを使うに変更する
367デフォルトの名無しさん:2010/12/07(火) 04:41:12
WideCharToMultiByteをした後に
chargata[wcslen(wchargata) ] をしたらできました。ありがとうございました
368デフォルトの名無しさん:2010/12/07(火) 04:44:03
>>366
ありがとうございます
Unicode 文字セットを使用するになっています
369デフォルトの名無しさん:2010/12/07(火) 12:52:59
TCHAR+L””じゃなくてTCHAR+_T(””)を使わなきゃ駄目だよ
あとwcscpyじゃなくて_tcscpyを使うようにするとか
WCHARと混ぜて使うのはやめた方がいい
キャストは一切必要ないはず

まぁTCHAR辞めるのが一番の気もするけど
370デフォルトの名無しさん:2010/12/07(火) 13:51:53
英数記号を全角で書く人の言うことってなんか信用できないんだよなあ
おまえほんとにコード書いたことあんのか?って思う
371デフォルトの名無しさん:2010/12/07(火) 13:59:12
ファイルのオープンモードってテキストとバイナリで具体的に何が違うんですか?
改行の変換だけですか?
372デフォルトの名無しさん:2010/12/07(火) 14:04:22
>>351
= (char*)HOGE;で無理やり代入してるんですが、先頭バイトしか入っていないようなのです。
373デフォルトの名無しさん:2010/12/07(火) 14:16:48
>>372
そのソースコードをうp
374デフォルトの名無しさん:2010/12/07(火) 14:26:49
unsigned char hoge[10] = "abc123";
char* c;
c = (char*)hoge;
375デフォルトの名無しさん:2010/12/07(火) 14:49:43
>>374
ここまでは、いいとして・・・。これ以外の部分のソースは?
cの値があれば、文字列hogeの中身を c[0]、c[1]〜 で取り出せるわけだが。
それがうまくいかないってこと?
376デフォルトの名無しさん:2010/12/07(火) 15:16:19
整数i, j,実数x,y それぞれに任意の値を入力し、
i+j, i-j, およびx+y,x/yを計算し、その結果を出力するプログラムを作成せよ
入力にはscanf関数、出力にはprintf関数を用いること
出力結果は
i+j=計算結果の数字
i-j=計算結果の数字
x*y=計算結果の数字
x/y=計算結果の数字

この問題誰かできませんか??TeraPaDでコマンドプロンプトに実行
お願いします
377デフォルトの名無しさん:2010/12/07(火) 15:20:17
これはひどい
378デフォルトの名無しさん:2010/12/07(火) 15:27:44
宿題スレ池
379デフォルトの名無しさん:2010/12/07(火) 15:37:11
すいませんでした
380 ◆QZaw55cn4c :2010/12/07(火) 18:31:22
>>371
環境によって、改行を示す目印として、0x0a 単独の場合と、0x0d 単独の場合と、0x0a + 0x0d 2 バイトで表示する場合とがありました。
それを吸収してユーザーに意識させないのがテキストモードです。
改行を示す目印も単なる文字として扱うのがバイナリモードです。バイナリモードでは 0x0a, 0x0d 両者とも別の1キャラクタとして扱われます。

381デフォルトの名無しさん:2010/12/07(火) 18:36:48
>>380
黙れ

知らない方に
こいつの隔離スレをご覧ください
382デフォルトの名無しさん:2010/12/08(水) 00:43:38
>>380
0x1aの説明が抜けているぞ。
383 ◆QZaw55cn4c :2010/12/08(水) 00:54:54
>>382
そうですね。
でも、それはOS側での raw モード/ cocked モードの話が絡むので、ちょっとややこしいなあ。
384デフォルトの名無しさん:2010/12/08(水) 01:03:24
ぷぷっ
385デフォルトの名無しさん:2010/12/08(水) 01:08:13
知ったかほど痛いものはない
386 ◆QZaw55cn4c :2010/12/08(水) 01:14:23
>>385
ん、raw/cocked は con デバイスだけの話だったかな?昔のことで忘れてしまった。
387デフォルトの名無しさん:2010/12/08(水) 01:16:26
これは恥ずかしい
388デフォルトの名無しさん:2010/12/08(水) 01:19:06
知らないならわざわざネットの付け焼刃知識でレスしなければいいのに
389デフォルトの名無しさん:2010/12/08(水) 01:27:36
まさにグーグル先生状態
390デフォルトの名無しさん:2010/12/08(水) 01:30:58
グーグル先生のほうがまだ信じられる
391デフォルトの名無しさん:2010/12/08(水) 01:32:05
>>386
ググったけど無かったって素直に書けばいいのに…
392デフォルトの名無しさん:2010/12/08(水) 01:47:25
お前ら厳しいなw
393デフォルトの名無しさん:2010/12/08(水) 01:50:47
厳しいって言うかどっちかって言うと個人叩きだな
そこら中で敵作ってるから
394デフォルトの名無しさん:2010/12/08(水) 02:01:09
いるよね、存在自体がウザい奴って。
395デフォルトの名無しさん:2010/12/08(水) 02:08:43
おっとそこまでだ。
396デフォルトの名無しさん:2010/12/08(水) 02:36:18
デバッグ時→コメントアウト
デバッグなしで開始→コメントアウトされない
ってできますか?
397デフォルトの名無しさん:2010/12/08(水) 02:50:02
できます
398デフォルトの名無しさん:2010/12/08(水) 02:53:46
#define と #ifndef あたりを使ってね^^
399デフォルトの名無しさん:2010/12/08(水) 03:28:37
>>398
できませんでした
どう書いたら良いですか?
400デフォルトの名無しさん:2010/12/08(水) 03:43:43
>>399
>398の方法はコンパイルするときに切り替える方法だ。
デバッガから起動されているかどうかを知る一般的な方法はないから、必要ならデバッガまたは環境のスレへ。
401デフォルトの名無しさん:2010/12/08(水) 03:46:12
>>400
ありがとうございます
とりあえずVC++のスレで聞いてきます
402デフォルトの名無しさん:2010/12/08(水) 06:01:56
昨日からC言語の世界に入りました。初歩の初歩ですみません。
NSString *str1;
NSString* str2;

この違いってなんですか?上のポインタ指定は分かります。
下の型宣言に*が付いてるのがいまいちよく分かりません。
どうぞよろしくお願いいたします。
403デフォルトの名無しさん:2010/12/08(水) 06:08:27
違わない
404デフォルトの名無しさん:2010/12/08(水) 09:15:45
ふっほっ
405デフォルトの名無しさん:2010/12/08(水) 10:44:08
弾性係数40g重/pのばねがある。いま,重さy[g重]のおもりをばねにつるしたとする。
scanf関数を用いておもりの重さをキーボードから入力し,ばねの伸びを計算する。
さらにおもりの重さと計算した伸びの両方をディスプレイに表示するプログラムを
作成せよ。おもりの重さy[g重],ばねの伸びx[cm],弾性係数k[g重/cm]の間にはx=y/kの
関係がある。

という問題なんですが,C言語はじめたばかりなので全然わかりません。
どなたか解説お願いします。
406デフォルトの名無しさん:2010/12/08(水) 11:13:12
>>405
C でなければわかるのか?
407デフォルトの名無しさん:2010/12/08(水) 11:16:05
物理の問題としてならわかります。
先ほどからエラーが絶えません。
408デフォルトの名無しさん:2010/12/08(水) 11:18:16
>>405
宿題スレに書けばすぐ答えが帰ってくるぞ
409デフォルトの名無しさん:2010/12/08(水) 11:19:27
>>407
ソース晒してみそ
http://codepad.org/
410デフォルトの名無しさん:2010/12/08(水) 11:25:46
#include <stdio.h>
int main(void)
{
int k=40;
double x, y; /* 実数変数宣言 */
scanf("%d\n %d\n, &x, &y); /* scanf 文 */
x=y/k
printf("x=%f\n", x);
return 0;
}

笑われるかもしれませんが
411デフォルトの名無しさん:2010/12/08(水) 11:27:18
>>410
%d を %lf にすればきっと大丈夫
412デフォルトの名無しさん:2010/12/08(水) 11:32:22
>>410
scanf は %f で \n はいらない
x=y/k の右にセミコロンがない

あと直接的には関係ないが scanf は文ではなく関数な
413412:2010/12/08(水) 11:35:15
わりい訂正
%f じゃなく %lf

あと y も表示するんだったよな
414デフォルトの名無しさん:2010/12/08(水) 11:39:10
#include <stdio.h>
int main(void)
{
int k=40;
double x, y; /* 実数変数宣言 */
scanf("%f %f, &x, &y); /* scanf 文 */
x=y/k;
printf("x=%f\n", x);
return 0;
}
1
2
3
4
5
In function 'main':
Line 6: error: missing terminating " character
Line 7: error: expected ')' before ';' token
Line 10: error: incompatible type for argument 1 of 'scanf'
Line 10: error: expected ';' before '}' token
できません;;
415デフォルトの名無しさん:2010/12/08(水) 11:42:11
>>414
#include <stdio.h>
int main(void)
{
int k=40;
double x, y; /* 実数変数宣言 */
scanf("%lf%lf", &x, &y); /* scanf 文 */
x=y/k;
printf("x=%f\n", x);
return 0;
}
416デフォルトの名無しさん:2010/12/08(水) 11:44:59
題意を満たしているのだろうか?(・∀・)
417デフォルトの名無しさん:2010/12/08(水) 11:51:18
できました。
みなさんありがとうございます。
418デフォルトの名無しさん:2010/12/08(水) 11:54:51
でも,伸びしかディスプレイに表示されないんですが。
おもりの重さと計算した伸びの両方をディスプレイに表示する
プログラムをつくらなけれbならないんですが
419デフォルトの名無しさん:2010/12/08(水) 11:59:12
頑張れよ
420デフォルトの名無しさん:2010/12/08(水) 12:02:24
printf("x=%f[cm], y = %f[g重]\n", x, y);
421デフォルトの名無しさん:2010/12/08(水) 12:09:39
>>420
ありがとうございます。
すこし理解できた気がします。
422デフォルトの名無しさん:2010/12/08(水) 12:17:46
for (j = 0; j < 6; j++, i++) {
a[i] = n % 2 ;
n /= 2 ;

質問です
この文のn /= 2 ;とはどういう処理をしているのでしょうか?
423デフォルトの名無しさん:2010/12/08(水) 12:19:27
n=n/2;
424デフォルトの名無しさん:2010/12/08(水) 12:22:30
>>423
ありがとうございます
425デフォルトの名無しさん:2010/12/08(水) 17:08:31
>>424
いえいえ
426デフォルトの名無しさん:2010/12/08(水) 17:29:47
>>425
どういたしまして
427デフォルトの名無しさん:2010/12/08(水) 17:38:15
私の母は昔から体が弱くて、それが理由かは知らないが、
母の作る弁当はお世辞にも華やかとは言えない質素で見映えの悪い物ばかりだった。
友達に見られるのが恥ずかしくて、毎日食堂へ行き、お弁当はゴミ箱へ捨てていた。
ある朝母が嬉しそうに「今日は〇〇の大好きな海老入れといたよ」と私に言ってきた。
私は生返事でそのまま高校へ行き、こっそり中身を確認した。
すると確に海老が入っていたが殻剥きもめちゃくちゃだし
彩りも悪いし、とても食べられなかった。
家に帰ると母は私に「今日の弁当美味しかった?」としつこく尋ねてきた。
私はその時イライラしていたし、いつもの母の弁当に対する鬱憤も溜っていたので
「うるさいな!あんな汚い弁当捨てたよ!もう作らなくていいから」とついきつく言ってしまった。
母は悲しそうに「気付かなくてごめんね…」と言いそれから弁当を作らなくなった。
それから半年後、母は死んだ。私の知らない病気だった。母の遺品を整理していたら、日記が出てきた。
中を見ると弁当のことばかり書いていた。
「手の震えが止まらず上手く卵が焼けない」 日記はあの日で終わっていた。
428デフォルトの名無しさん:2010/12/08(水) 17:42:36
うおーーーーーーーーーーーーーーん
うおーーーーーーーーーーーーーーん
なげるじゃねぇがいおおおおおおおおおおおおおお
429デフォルトの名無しさん:2010/12/08(水) 17:45:57
何年前のコピペだよw
430デフォルトの名無しさん:2010/12/08(水) 17:48:45
おっと、あぶねぇ。かあちゃんスレを開いてしまったぜ
431デフォルトの名無しさん:2010/12/08(水) 18:42:52
int型で入力した整数を文字配列つかってchar型で表示したいんですけどどうすればいいですか?
432デフォルトの名無しさん:2010/12/08(水) 18:46:10
sprintfを使えばいいです
433デフォルトの名無しさん:2010/12/08(水) 18:46:18
sprintf
434デフォルトの名無しさん:2010/12/08(水) 19:09:50
ふっふっ
435デフォルトの名無しさん:2010/12/08(水) 19:23:42
ttp://ist.ksc.kwansei.ac.jp/~ibaraki/shokodo/list.c
のプログラム何ですが、main()とinsert関数の部分だけの動作だけ
でいいですので分からないこと教えて下さいinsertには常にp,init=NULL
が渡されるのですか?
436デフォルトの名無しさん:2010/12/08(水) 19:43:07
ほっほっ
437デフォルトの名無しさん:2010/12/08(水) 20:18:25
ぶはっぶはっ
438デフォルトの名無しさん:2010/12/08(水) 20:19:33
ぶりぶりぶりゅ
439デフォルトの名無しさん:2010/12/08(水) 20:27:20
キチガイ共
440デフォルトの名無しさん:2010/12/08(水) 20:29:03
ttp://ist.ksc.kwansei.ac.jp/~ibaraki/shokodo/list.c
よくわかりません、insert内の関数rは、main関数内で参照
されるたびに新たに定義されるんですか?後このプログラムの
insert自体は何をしているのでしょうか?noteに書いて理解し
ようとしていますが中々できません。
441デフォルトの名無しさん:2010/12/08(水) 20:31:10
関数rってなにいってんだ?
442デフォルトの名無しさん:2010/12/08(水) 20:34:24
>>441
ポインタrです。
ポインタの階層が多すぎて全然理解できないです。
リストの基本的な例だと思うんですが。
443 ◆QZaw55cn4c :2010/12/08(水) 20:45:06
>>440
基礎的な線形リストです。なんとか体得してください。
444デフォルトの名無しさん:2010/12/08(水) 20:48:09
何この上から目線w
445デフォルトの名無しさん:2010/12/08(水) 20:49:46
説明できないくせにな
446デフォルトの名無しさん:2010/12/08(水) 20:54:21
>>443
そうなんですよねぇ・・
insert関数内のqとかが良く分からん。
後何でmain内でinit,p=NULLとデフォってるのか分からん。
本当に基本的なんだけど。
447デフォルトの名無しさん:2010/12/08(水) 20:55:23
きゅっきゅっ
448 ◆QZaw55cn4c :2010/12/08(水) 21:05:41
>>446
じゃあ、insert() をちょっと書き直してみました。これでどうでしょうか?
struct cell *insert(int x, struct cell *p, struct cell *root) {
struct cell *r;

r = malloc(sizeof(struct cell));
if(p == NULL) {
r->element = x;
r->next = root;
root = r;
} else {
r->element = x;
r->next = p->next;
p->next = r;
}
return(root);
}
449デフォルトの名無しさん:2010/12/08(水) 21:07:40
>>448
余計わからんくなったです。
図書くと余計わからなくなるし。
何のプログラムなのかよくわからない。
リストでcellを途中に入れるプログラム
なんだろうけどそれを可能にするアルゴリズムの
ソースの意味がわからない。
450デフォルトの名無しさん:2010/12/08(水) 22:07:55
じゃあ向いてないんだろうあきらめろ
451デフォルトの名無しさん:2010/12/08(水) 22:26:23
ふっほっ
452デフォルトの名無しさん:2010/12/08(水) 23:26:00
#include <stdio.h> /* 標準入出力のヘッダファイルの読込み */
#include <stdlib.h> /* 標準ライブラリのヘッダファイル */
struct cell {int element; struct cell *next;}; /* 構造体cellの定義 */
struct cell *insert(int x, struct cell *p, struct cell *init);/*関数の宣言*/
main()
/* Manipulation of a linked list of cells. */
{
struct cell *init; struct cell *p, *q; int i;
init=NULL; p=NULL;
for(i=0; i<10; i++) {init=insert(i+1, p, init); p=NULL;}
printf("init = %p\n", init);
q=init;
while(q!=NULL)
{
printf("cell = %d, %p\n", q->element, q->next);
q=q->next;
}
return(0);
}
struct cell *insert(int x, struct cell *p, struct cell *init)
/* ポインタpが指すセルの次にxのセルを挿入; p==NULLなら先頭へ挿入 */ /* 連結リストはポインタinitから始まる */
{
struct cell *q, *r;
r=(struct cell *)malloc(sizeof(struct cell)); /* 新しいポインタの獲得 */
if(p==NULL) {q=init; init=r;} /* 先頭への挿入 */
else {q=p->next; p->next=r;} /* 途中への挿入 */
r->element=x; r->next=q;
return(init);
}
453デフォルトの名無しさん:2010/12/08(水) 23:28:13
delete()消しました。
おそらくリスト構造を作るプログラム何だと思うんですが、配列使えば
一瞬ですよね?後々双方向リストとかでポインタの方が表現の幅広がる
のでポインタで表現したいアルゴリズム何ですが、ポインタはやっぱり
難しいです、全然作用が分かりません。

後、改行多すぎですのウザさは異常。
454 ◆QZaw55cn4c :2010/12/09(木) 01:54:43
>>453
線形リストをはじめとする、ポインタで領域を連結するかたちでのデータの保持、という手段は、基本中の基本です。
時間をおいて見直してみるのもありだと思います。
ここが山場だと思って、あきらめずに、なんどでも「理解しようと」アタックすれば、いつの日かからくりが腑に落ちる日がくると思います。
配列は簡単ですが、データを格納する領域がコンパイル時に固定されてしまう点で、いまひとつ柔軟性にかけるのです。

さらに仕組みを簡単に書き直してみました。同じく delete は省略しています。
http://codepad.org/mGZF188g
455デフォルトの名無しさん:2010/12/09(木) 01:55:04
何この上から目線w
456デフォルトの名無しさん:2010/12/09(木) 02:16:33
http://ja.wikipedia.org/wiki/%E8%87%AA%E5%B7%B1%E6%84%9B%E6%80%A7%E4%BA%BA%E6%A0%BC%E9%9A%9C%E5%AE%B3

自己の重要性に関する誇大な感覚(例:業績や才能を誇張する、十分な業績がないにもかかわらず優れていると認められることを期待する)
限りない成功、権力、才気、美しさ、あるいは理想的な愛の空想にとらわれている。
自分が"特別"であり、独特であり、他の特別なまたは地位の高い人達に(または施設で)しか理解されない、または関係があるべきだ、と信じている。
過剰な称賛を求める。
特権意識、つまり、特別有利な取り計らい、または自分の期待に自動的に従うことを理由なく期待する。
人間関係で相手を不当に利用する。つまり、自分自身の目的を達成するために他人を利用する。
共感の欠如:他人の気持ちおよび欲求を認識しようとしない、またはそれに気付こうとしない。
しばしば他人に嫉妬する、または他人が自分に嫉妬していると思い込む。
尊大で傲慢な行動、または態度。
457デフォルトの名無しさん:2010/12/09(木) 06:49:00
C言語のフリーのコンパイラで何か良いのありますか?
458デフォルトの名無しさん:2010/12/09(木) 06:51:58
LSI C-86試食版
459デフォルトの名無しさん:2010/12/09(木) 07:06:45
>>457
VC++もしくはgccが鉄板
bccでもいい
460デフォルトの名無しさん:2010/12/09(木) 07:52:24
>>458
間違ってもそれはない。
461デフォルトの名無しさん:2010/12/09(木) 08:10:09
C言語で僕のチンコが大きくなる方法を教えてください。
462デフォルトの名無しさん:2010/12/09(木) 08:19:14
間違ってもそれはない。
463デフォルトの名無しさん:2010/12/09(木) 09:36:30
これだからゆとりは
464デフォルトの名無しさん:2010/12/09(木) 09:51:54
組み込み型の
・ビット幅はsizeof(hoge)*CHAR_BITS
・最大最小はlimitsの対応するマクロ以外の方法で調べても保証はできない
で正しいですか?
465デフォルトの名無しさん:2010/12/09(木) 10:03:36
もっと確実な方法があることにはあるが・・・
466デフォルトの名無しさん:2010/12/09(木) 11:13:03
>>453
Cをやるならポインタは避けて通れないし、
また、避けて通るべきではないよ。

ポインタがない言語に移ったとき、その恩恵が分かる。
ポインタ、っていう簡単な仕組みですごくラクできてた。
最初のとっかかりだけは難しいけど。
467デフォルトの名無しさん:2010/12/09(木) 11:16:23
参照渡しでいいじゃん
468デフォルトの名無しさん:2010/12/09(木) 11:17:54
>>466
Cの後継言語C++ではポインタはバグの温床として、ポインタよりイテレータや参照を
積極的に使用するように推奨しているけど、肝心の部分ではやはりポインタを使わないと
書けない所がたくさんあるしな
469デフォルトの名無しさん:2010/12/09(木) 11:54:55
イテレータはポインタとは別の機能だし、参照とテンプレートの相性がいいだけで
ポインタより推奨されてるわけじゃないような
470デフォルトの名無しさん:2010/12/09(木) 12:07:55
イテレータって何ですか?
471デフォルトの名無しさん:2010/12/09(木) 12:10:08
↓ボケて
472デフォルトの名無しさん:2010/12/09(木) 12:13:49
│     _、_
│   ヽ( ,_ノ`)ノ 残念、それは私のおいなりさんだ
│  へノ   /
└→  ω  へノ
473 ◆B3pvyhGHME :2010/12/09(木) 12:15:40
ソノブイってなんですか?
474デフォルトの名無しさん:2010/12/09(木) 12:58:24
ふっふっ
475デフォルトの名無しさん:2010/12/09(木) 13:55:50
ふっほっ
476デフォルトの名無しさん:2010/12/09(木) 13:57:26
つーかポインタ使えないCに存在価値はあるのか?ぶっちゃけ無いよな
477デフォルトの名無しさん:2010/12/09(木) 14:02:37
#pragma と asm の嵐になりそうだな
478デフォルトの名無しさん:2010/12/09(木) 14:09:40
どぴゅっどぴゅっ
479デフォルトの名無しさん:2010/12/09(木) 14:45:32
ほっほっ
480デフォルトの名無しさん:2010/12/09(木) 15:12:08
バイナリストリームに対するfreadみたいにテキストストリームを一括で読み込む方法って在りますか?
fgetsだと改行でとまってしまうし、freadは失敗してしまいます
481デフォルトの名無しさん:2010/12/09(木) 15:13:31
>>480
fread で失敗するなら他の方法も無理だろう
482デフォルトの名無しさん:2010/12/09(木) 15:53:19
>>454
ありがとうございます、1年の段階でこんな難しいポインタを応用した
プログラム書かせる何て難関国立大に入った付けですね。
がんばって見ますね、inserとmain()の関与部分はただ連結リストを
ポインタで作るだけの作用ですね、deleteからが本題のような気がします。
まーがんばって見ます。
483デフォルトの名無しさん:2010/12/09(木) 15:58:06
Cをやる時点で自己参照構造体を使ったリストの作成は必ずやるだろ
484デフォルトの名無しさん:2010/12/09(木) 16:04:26
>>483
だなw 工学部、とくに情報系だとやらんほうがおかしいw
485デフォルトの名無しさん:2010/12/09(木) 16:05:20
>>483
いやいや、構造体、ポインタ、関数が雁字搦めになれば気が遠くなりますよ。
東大理Vの数学の入試問題より難しいです。
486デフォルトの名無しさん:2010/12/09(木) 16:21:46
ほっほっ
487デフォルトの名無しさん:2010/12/09(木) 16:27:51
>>454
struct cell *root = NULL

こうしとかないと最後にエラーが出るんだが
488デフォルトの名無しさん:2010/12/09(木) 16:28:06
ふっふっほっ
489デフォルトの名無しさん:2010/12/09(木) 16:31:19
エラーというよりプログラムが実行時にクラッシュする
490デフォルトの名無しさん:2010/12/09(木) 18:06:03
東大理Vの入試っていつから小学生でも解けるようになったんだ?
491デフォルトの名無しさん:2010/12/09(木) 18:08:43
ふっふっ
492デフォルトの名無しさん:2010/12/09(木) 18:35:10
さすがに理Vの入試問題はPG初歩より難しだろうに。
493デフォルトの名無しさん:2010/12/09(木) 18:35:11
東大って…試験問題共通じゃなかったか?
494デフォルトの名無しさん:2010/12/09(木) 18:38:03
へっふっ
495デフォルトの名無しさん:2010/12/09(木) 18:55:19
>>493
文系・理系で分かれるけど、理I〜理IIIは共通だね
496デフォルトの名無しさん:2010/12/09(木) 18:59:57
ぶはっぶはっ
497デフォルトの名無しさん:2010/12/09(木) 19:12:42
>>495
釣れますか

498デフォルトの名無しさん:2010/12/09(木) 19:51:28
>>497
これだからゆとりは
499デフォルトの名無しさん:2010/12/09(木) 20:16:32
時代によって入試形式は変わるしねぇ。
ちなみにこのスレの人間は高卒がほとんどじゃね?
500デフォルトの名無しさん:2010/12/09(木) 20:26:08
理Vだけ問題が違った時代なんてあんのか?
理Vのみの面接は最近廃止されたらしいけど
501デフォルトの名無しさん:2010/12/09(木) 20:40:27
>>500
願書取り寄せたりしてないから分らん
でも理Vって最難関だから、全部他の学科と同じ問題ってことはないんじゃね?
502デフォルトの名無しさん:2010/12/09(木) 20:44:16
どうでもよすぎワロタw
503デフォルトの名無しさん:2010/12/09(木) 20:45:17
C言語ってコンストラクタないんですか?
504デフォルトの名無しさん:2010/12/09(木) 20:47:47
structだろw
505デフォルトの名無しさん:2010/12/09(木) 21:02:26
>>504
逝去してください
506デフォルトの名無しさん:2010/12/09(木) 21:04:44
Cしか知らない人ってそういう反応するんだなぁと思える良レス。
507 ◆QZaw55cn4c :2010/12/09(木) 22:54:27
>>487
ご指摘感謝。
508デフォルトの名無しさん:2010/12/10(金) 01:15:03
C言語のプログラムの動作についての質問です

while((c=fgetc(fp))!=EOF){
if(iskanji(c)){
fputc(c,stdout);
fputc(fgetc(fp),stdout);
}

参考書のサンプルの一部です fpはFILE型のポインタです
ちなみにiskanji(c)についてはマクロで以下のように定義されてます
#define iskanji(c)\
(0x81 <= (c & 0xff)&&(c & 0xff) <= 0x9f || 0xe0 <= (c & 0xff) && (c & 0xff) <= 0xfc)

どうやらcがシフトジス漢字コードの一バイト目であるかをこれで判断するようです
真の場合ifの条件式以下の[]が実行されます

質問の内容は[]の動作です
fputc(c,stdout);
fputc(fgetc(fp),stdout);
私にはどちらの行も同じ動作をしているように思われます。
この部分の説明をお願いしたいです

509デフォルトの名無しさん:2010/12/10(金) 01:22:46
>>508
前者は変数cの値を出力している。
後者はストリームfpより入力した値を出力している。
但し、後者はEOFにぶち当たった場合に想定外の出力を行なうことになるので不適当。
つまり、その参考書はカス。
510デフォルトの名無しさん:2010/12/10(金) 01:24:50
>>509
短絡的でありいかにも思考停止の典型。
511デフォルトの名無しさん:2010/12/10(金) 01:47:57
>>508
fputc(c,stdout); ← こっちでshift-jisを構成する2byteの1byte目を出力
fputc(fgetc(fp),stdout); ← こっちで2byte目を出力

>>509
の指摘はshift-jisの一文字目に当てはまる文字コードで終わる異常な文字列であれば当てはまるが
基本問題ない
エラー処理が甘いとはいえるが、サンプルだし分かりやすさ重視なだけだろう
512デフォルトの名無しさん:2010/12/10(金) 02:16:55
なんで[]の中二つ書かないといけないんですか
シフトジスのことは調べてみたつもりですが
if(iskanji(c)){
fputc(c,stdout);
}
これじゃだめなんですか?
513デフォルトの名無しさん:2010/12/10(金) 02:21:06
漢字は1文字で2バイトあるのに
1バイトしか出力しなくていいと思いますか?
514デフォルトの名無しさん:2010/12/10(金) 03:15:52
>>508
はじめてのAI入門と見た!
515デフォルトの名無しさん:2010/12/10(金) 05:51:58
>>512
shift-jisの2バイト文字だけ出力したいという処理を作ろうとしている。

ある1byteについて、それがshift-jisの2byte文字の1byte目であるかどうかについては、iskanjiで判断できる。
ある1byteについて、それがshift-jisの2byte文字の2byte目であるかどうかは、今のあなたは道具を持っていない。

このとき、shift-jisの2byte文字の、1byte目、2byte目を共に出力したいとしたら、どうする?
516デフォルトの名無しさん:2010/12/10(金) 13:26:11
朝鮮人か?
517デフォルトの名無しさん:2010/12/10(金) 13:34:40
理解できないのか?
518デフォルトの名無しさん:2010/12/10(金) 14:03:03
519デフォルトの名無しさん:2010/12/10(金) 14:31:36
ほっほっ
520デフォルトの名無しさん:2010/12/10(金) 15:12:50
521デフォルトの名無しさん:2010/12/10(金) 15:15:12
>>520
ちゃんとしたレスついてるじゃん
522デフォルトの名無しさん:2010/12/10(金) 15:27:08
朝鮮人ですよ

なんとなくですがわかりました
Whileの判別で間があくと漢字が出力できないってことですね
523デフォルトの名無しさん:2010/12/10(金) 18:38:32
へっふっ
524デフォルトの名無しさん:2010/12/10(金) 18:42:39
(´・ω・`)
525デフォルトの名無しさん:2010/12/10(金) 19:00:19
>>522
全然違う
526デフォルトの名無しさん:2010/12/10(金) 19:01:13
>>522
もっとかんがえるんだ
527デフォルトの名無しさん:2010/12/10(金) 20:01:25
どぴゅっどぴゅっ
528デフォルトの名無しさん:2010/12/10(金) 21:36:56
大域変数はいくつかあるが、処理が関数に分割されている状態と
大域変数はないが、ほとんどの処理がmain関数に記述されている状態
どっちが健全?
529デフォルトの名無しさん:2010/12/10(金) 21:38:56
>>528
規模によるが両方不健全
530デフォルトの名無しさん:2010/12/10(金) 21:45:03
>>529
いろいろなところで使う変数でもなるべく引数で渡していったほうがいいってこと?
オブジェクト指向に慣れきってしまったせいで処理の分割方法がぜんぜんわかんないです;;

規模は先輩方の書いたコードだと800行ほど(全部main関数)
531デフォルトの名無しさん:2010/12/10(金) 21:48:14
おかしすぎ
>オブジェクト指向に慣れきってしまったせいで処理の分割方法がぜんぜんわかんないです;;
オブジェクト指向に慣れきったら、データー処理に困る事はあり得ない。
OO素人発言だ。
532デフォルトの名無しさん:2010/12/10(金) 21:48:33
>>530
オブジェクト指向でやればいいじゃない
言語のサポートは無いけどな
533528:2010/12/10(金) 21:53:00
なるほど、struct使ってオブジェクト指向っぽいことすればいいのか
534デフォルトの名無しさん:2010/12/10(金) 22:05:47
>>528
迷わず前者が健全

本質的にアプリケーションインスタンスに1:1対応する値は大域変数であるべき
static にしてもゲッタとセッタを作っているパターンは大域変数と結局同じ

main が外部結合を持つこと自体が持つリスクなどどうしようもない
535デフォルトの名無しさん:2010/12/10(金) 22:15:43
>>528
前者は健全というかCでは普通。
後者は論外。
536528:2010/12/10(金) 22:21:31
仮に大域変数を作る場合、利用するのがそのファイル限定ならstaticはつけるべき?
537デフォルトの名無しさん:2010/12/10(金) 22:22:56
>>536
見せなくていいものは見えなくするってのが基本じゃろ
538デフォルトの名無しさん:2010/12/10(金) 22:23:02
constも付けろ
539デフォルトの名無しさん:2010/12/10(金) 22:24:58
>>538
Σ(☉◇☉)
540528:2010/12/10(金) 22:25:37
>>538
まじ?そんな厳しいの?
541デフォルトの名無しさん:2010/12/10(金) 22:34:27
const は転ばぬ先の杖にすぎない
信じすぎるな
542デフォルトの名無しさん:2010/12/10(金) 22:37:33
const 付けたら変更できなくなるじゃんw
543デフォルトの名無しさん:2010/12/10(金) 22:39:01
変更できなくするためにconst付けるんだろが
544528:2010/12/10(金) 22:42:22
ザーッと先輩方のコードを眺めてみましたが、
データのやり取りをする計6つのサーバーに対する
ファイルディスクリプタがあったので、
まずはこれを大域変数にしてみようと思います。

545デフォルトの名無しさん:2010/12/10(金) 23:14:50
>>544
大規模な変更はまずお窺いをたててからにしろ
546デフォルトの名無しさん:2010/12/10(金) 23:17:16
>>544
日記はしチラシの裏にかけ
547デフォルトの名無しさん:2010/12/10(金) 23:17:59
>>544
君にとってそれが最も貢献できる仕事ならそれも良かろう。
548528:2010/12/10(金) 23:21:13
>>545
勉強がてらいじってみろ程度ののりなので大丈夫です
>>546
申し訳ありませんでした

いろいろ参考になりました。ありがとうございました。
549デフォルトの名無しさん:2010/12/10(金) 23:23:21
size_tをprintfしたいときの書式っていったいどうなってるというのです?
550デフォルトの名無しさん:2010/12/10(金) 23:25:30
%zd
551デフォルトの名無しさん:2010/12/10(金) 23:25:49
>>549
こんなかんじかな。
printf("size_t\n");
552デフォルトの名無しさん:2010/12/10(金) 23:29:41
putsでいい
553デフォルトの名無しさん:2010/12/10(金) 23:35:15
おら多少効率悪くてもprintfしか使わねーだ。
putsもputcharもcoutも覚えるのメンドくせーだ。
たまにsprintfとfprintfは使う。これは仕方ない。
554デフォルトの名無しさん:2010/12/10(金) 23:37:11
ぷっつwwww
ぷっつっつwwww
ぷっつんぷりんぎょいwwww
555デフォルトの名無しさん:2010/12/10(金) 23:48:36
putchar
ぷっちゃー
556デフォルトの名無しさん:2010/12/11(土) 00:19:33
printf(str);

よくあるミス
557デフォルトの名無しさん:2010/12/11(土) 01:19:31
printf(fmt, str);

初見では分からない人多数
558デフォルトの名無しさん:2010/12/11(土) 01:55:42
>>556
おお、これいいじゃん!と思った時があったなあと懐かしく。
そのプロジェクトでそれのだめな点に自ら出くわして、ああそりゃそうだなwとおもったのもまた、懐かしい。
559デフォルトの名無しさん:2010/12/11(土) 02:09:03
先生、どこに問題があるのかわからないので教えてください
560デフォルトの名無しさん:2010/12/11(土) 02:45:37
const char* str = ”>>559 is %s”;
printf(str);
561デフォルトの名無しさん:2010/12/11(土) 04:27:17
ほっほっ
562デフォルトの名無しさん:2010/12/11(土) 04:52:47
まぁどうせ、gccならprintf("foo\n")と書いても実態はputs("foo")だしね。
563デフォルトの名無しさん:2010/12/11(土) 05:24:24
第1引数に入る文字列が推測でき,その中にパラメタが無い場合orパラメタも推測できる場合に限る
564デフォルトの名無しさん:2010/12/11(土) 11:51:31
漢字出力可能なコンパイラないですか?
565デフォルトの名無しさん:2010/12/11(土) 11:56:20
>>564
あるよ。
566デフォルトの名無しさん:2010/12/11(土) 11:56:46
聞いたことないな
567デフォルトの名無しさん:2010/12/11(土) 12:32:21
ソースコードに漢字書けばそのまま出ると思うけど・・・。
gcc なら --input-charset、--exec-charset の問題かもしれない
568デフォルトの名無しさん:2010/12/11(土) 12:51:41
C言語ってのはとりあえずEclipse使えばいいんだろ?
みなさんEclipse使ってますか?
569デフォルトの名無しさん:2010/12/11(土) 12:55:54
使ってないぞ。Javaでの開発では、たまに使うけど
570デフォルトの名無しさん:2010/12/11(土) 12:58:21
そうなんですか・・・
JavaだけじゃなくてCもあったので使ってみようかと
ハイパー初心者なんでどれ使えばいいかもわからないんですよね
571デフォルトの名無しさん:2010/12/11(土) 12:59:10
VisualStudioが無償で使えるからそれ使えばいいだろ
572デフォルトの名無しさん:2010/12/11(土) 13:02:44
インスコしなくても使えるんで不足がないならEclipse使おうと思ってるけどいいですか
573デフォルトの名無しさん:2010/12/11(土) 13:03:59
EclipseはNios専用で使ってるけど、
ハイパー初心者ならコマンドプロンプトからコンパイルする奴のほうがいいと思うぞ。
WindowsならMinGW取りあえず入れて、それでやればいいじゃないかね。
574デフォルトの名無しさん:2010/12/11(土) 13:09:05
>>572
「インスコしなくても」ってすでにインストール済みってこと?
じゃ使えばいいと思う。
575デフォルトの名無しさん:2010/12/11(土) 13:09:43
ありがとうごじあます
とりあえずVisualStudio使えってことですね
Visual C++ 2010をいんすこでおk?
VBとC#とWEBなんちゃらがほかにあるけど・・・
576デフォルトの名無しさん:2010/12/11(土) 13:13:08
cygwinかubuntuにしとけ
577デフォルトの名無しさん:2010/12/11(土) 13:19:30
>>575
eclipse入ってるなら、それ使えばいいよ。
別にVCでもいいけど。
578デフォルトの名無しさん:2010/12/11(土) 13:23:44
基本はVisual Cのくうきを感じるんでいんすこしてきます
なんかほかのつかってわかんねぇ!ってなったときVisual C使えよ馬鹿って言われるとあれなんでw
579デフォルトの名無しさん:2010/12/11(土) 13:23:52
visual studioのcl&linuxシェルコマンドだとcygwin以外に選択肢は無いのか?
580440:2010/12/11(土) 13:48:11
やっと理解できました今日・・・
解読に3週間ってかかりすぎですかね?

>-や%pの意味、malloc,callocの意味、ポインタの本質
==NULLなど全部調べたらこんだけかかりました。
ありがとうございました。
これから先不安です。
581デフォルトの名無しさん:2010/12/11(土) 14:04:55
ふっほっ
582デフォルトの名無しさん:2010/12/11(土) 14:05:18
終了
583デフォルトの名無しさん:2010/12/11(土) 14:35:18
「ふっほっ」とか書いてる奴はC言語の話題がなくて面白くないんだろうな
584デフォルトの名無しさん:2010/12/11(土) 16:31:13
ほっほっ
585デフォルトの名無しさん:2010/12/11(土) 16:33:14
>>583
過去ログと空気嫁
586デフォルトの名無しさん:2010/12/11(土) 16:48:52
どぴゅっどぴゅっ
587デフォルトの名無しさん:2010/12/11(土) 16:57:34
キチガイ乙
588デフォルトの名無しさん:2010/12/11(土) 16:58:35
>>579
SFUは?名前変わったかもしれないけど
589デフォルトの名無しさん:2010/12/11(土) 17:11:22
ふっふっ
590デフォルトの名無しさん:2010/12/11(土) 18:56:48
自分でなんか作ってたら何時間でも出来るけど参考書だと1時間くらいで飽きてしまう。
どうすればいいですか?
591デフォルトの名無しさん:2010/12/11(土) 19:04:05
答えもう出てるじゃん
592デフォルトの名無しさん:2010/12/11(土) 22:27:31
だな。
とりあえず何か作って勉強しろ
593デフォルトの名無しさん:2010/12/11(土) 23:30:35
C言語でライブラリ関数や構造体(struct sockaddr_inとか)の宣言を探すスマートな方法ってありますか?
includeパスをgrepするのが確実ですか?
誰が書いたか分からないような解説HPやリファレンス本の情報に頼るのが早いんですか?
594デフォルトの名無しさん:2010/12/11(土) 23:32:44
VCなら右クリックして「定義に移動」
595デフォルトの名無しさん:2010/12/11(土) 23:33:10
>>593
検索用語に msdn を追加するとか
最初から msdn のヘルプをダウンロードしておいて調べるとか
596デフォルトの名無しさん:2010/12/11(土) 23:34:49
 ┌○┐
 │お|ハ,,ハ
 │断|゚ω゚ )  お断りします
 │り _| //
 └○┘ (⌒)
    し⌒
597デフォルトの名無しさん:2010/12/11(土) 23:35:39
>>593
> 誰が書いたか分からないような解説HPやリファレンス本の情報に頼るのが早いんですか?
随分上から目線だが・・・

> includeパスをgrepするのが確実ですか?
信用できなきゃそれでいいんじゃね。
598デフォルトの名無しさん:2010/12/12(日) 00:03:09
コマンドラインでファイルを指定してその内容を画面に出力するプログラムなんだけど
エラーがでまくる 
#include <stdio.h>
#include <stdlib.h>
include<ctype.h>

#define iskanji(c)\
(0x81 <= (c & 0xff)&&(c & 0xff) <= 0x9f || 0xe0 <= (c & 0xff) && (c & 0xff) <= 0xfc)
main(int ac, char *av)
{
FILE fp;

++av;
fp=fopen(av,"r");


while((c=fgetc(fp))!=EOF){
if(iskanji(c)){
fputc(c,stdout);
fputc(fgetc(fp),stdout);
}
else
{
fputc(c,stdout);
}
}
}
ちょっと直してくれませんか コードパッド遅いんでここにかくよ
599デフォルトの名無しさん:2010/12/12(日) 00:08:36
× include<ctype.h>
○ #include <ctype.h>

× FILE fp;
○ FILE *fp;

あと変数 c が無いぜ
600デフォルトの名無しさん:2010/12/12(日) 00:15:32
>>598
#include <stdio.h>
直すつーか完全無視で。
int main (int argc ,char* argv[]) {
int i,c;
FILE* f;
if (argc<2) return 1;
for (i=1 ; i<argc<2 ; i++) {
if (!(f=fopen(argv[i],"r"))) continue;
printf("-- %s --\n",argv[i]);
while ((c=getc(f))!=EOF) putchar(c);
fclose(f);
}
return 0;
}
601デフォルトの名無しさん:2010/12/12(日) 00:18:59
>>600
上の行ピーコしたら間違った。
for (i=1 ; i<argc ; i++) {
602デフォルトの名無しさん:2010/12/12(日) 00:19:32
FILE *fp1, *fp2;
があったとして、それぞれに同じ内容をミラーリングして書き出させる方法はありますか?
(fprintfを2行書くとかforで回すとかは無しで)
603デフォルトの名無しさん:2010/12/12(日) 00:23:32
>>602
putcを2回書け。whileで回せ。
604デフォルトの名無しさん:2010/12/12(日) 00:28:19
パイプってそういうことに使えなかったっけ?
605デフォルトの名無しさん:2010/12/12(日) 00:31:26
cat hoge | tee file1 | tee file2 > file3
見たいな感じか?
606sage:2010/12/12(日) 01:01:08
#include <stdio.h>
#include <stdlib.h>
#include<ctype.h>

#define iskanji(c)\
(0x81 <= (c & 0xff)&&(c & 0xff) <= 0x9f || 0xe0 <= (c & 0xff) && (c & 0xff) <= 0xfc)

main(int ac, char *av)
{
FILE *fp;
++av;
if(av==0){
exit(1);
}

fp=fopen(av,"r");
char c;
while((c=fgetc(fp))!=EOF){
if(iskanji(c)){
fputc(c,stdout);
fputc(fgetc(fp),stdout);
}
else
{
fputc(c,stdout);
}
}
}

segmentation fault (core damped)
です これはなにが原因ですか
607デフォルトの名無しさん:2010/12/12(日) 01:15:57
>>606
コンパイラが gcc なら -Wall をつけてコンパイルしてみろ。
警告出るから、それを無視するな。
CLなら/W4だがこっちはあまりまともな警告出さんな。
608デフォルトの名無しさん:2010/12/12(日) 01:21:41
fgetc()の戻り値はcharで受けちゃダメ〜
609デフォルトの名無しさん:2010/12/12(日) 01:26:00
fp=fopen(av,"r");
の後に、
printf("%d\n",(int)fp);
printf("%s\n",av);
return 0;
をつけて実行してミソ。
610 ◆QZaw55cn4c :2010/12/12(日) 01:58:40
>>606
main(int ac, char **av)
fp=fopen(*av,"r");
と訂正すればとりあえず動きます。が、致命的なミスはもうひとつあって、
>char c;
は、場所も書き方も悪くて、
FILE *fp;
の次の行に
int c;
と書かなければなりません。
理由は省略。
611デフォルトの名無しさん:2010/12/12(日) 02:03:59
誰も使ってないようなC99を根拠にするのに、宣言の場所が悪いとかw
612デフォルトの名無しさん:2010/12/12(日) 02:08:15
>>610
別人ですが、"r","tr"でオープンしてる前提で、
char c に何か実害ありますか?
本来正しくないという意味ではなくて。
俺の環境では↓が1になるんだけど、これって普通?
char c;
printf("%X\n",(c=0xFFFFFFFF)==EOF);
613 ◆QZaw55cn4c :2010/12/12(日) 02:13:29
>>611
たしかに、C99 では任意の場所に変数宣言を置けるんですけれどもね。
C89 の pdf がころがっておればいいんですけどね。そうであれば引用したとしてそれが正しいかどうかチェックがはいりやすくなるし。
614デフォルトの名無しさん:2010/12/12(日) 02:16:18
>>612
自己レスですがintが64ビットであるような環境では0になるのかな。
と言うことで例文は下記とさせてください。
char c;
printf("%d\n",(c=-1)==EOF);
615デフォルトの名無しさん:2010/12/12(日) 02:17:06
>>613
基本C99を論拠にするのはやめた方が・・・・
616デフォルトの名無しさん:2010/12/12(日) 02:17:18
>>613
お前のダブスタっぷりをバカにしてんだよw
617デフォルトの名無しさん:2010/12/12(日) 02:17:51
>>612
fgetc の戻り値は 0〜255 および EOF (全部で257通り) だから char では保持し切れない
テキストファイル限定なら EOF とかぶるような値が来ることはあまりないのだろうけど

char は signed の場合も多いし、EOF は -1 の場合も多いから、普通かと
618sage:2010/12/12(日) 02:17:57
コントロール+Dで終了できない
たすけて
619 ◆QZaw55cn4c :2010/12/12(日) 02:21:11
>>612
fgetc() の返り値は int です。
そうであるのには理由があって、
もし fgetc() の返り値を char で受けていると、
ファイルの終端に達して EOF となったのか、ファイルに 0xff があったのかが区別できません。

>printf("%X\n",(c=0xFFFFFFFF)==EOF);
EOF は負の整数ときまっています。それなのに、正の整数 0xffffffff と等しくなる、というのがどこかおかしくありませんか?
負数が2の補数表現であり、符号拡張があり、整数の格上げがあり、と複数の要素が重なって、
EOF == 0xffffffff
となってしまったのです。
620デフォルトの名無しさん:2010/12/12(日) 02:21:26
char が unsigned で EOF が -1 な環境では fgetc の戻り値を char で受けてたら CTRL+D では終了できないかもね
unsigned char が -1 に一致することはありえんから
621デフォルトの名無しさん:2010/12/12(日) 02:21:46
1.ctrl+c
2.ctrl+z , ps , kill
3.シェル。コマンドプロンプトを閉じる。
4.タスクマネージャで該当プロセスを殺す。
5.再起動してみる。
6.電源ボタンを2秒以上押し続けてみる。
7.AC電源を抜く。
622デフォルトの名無しさん:2010/12/12(日) 02:29:46
>>617-620
了解しました。
623sage:2010/12/12(日) 03:09:38
http://codepad.org/nUMPs1K8
おかげさまでコンパイルとおりました
また漢字の出力についての質問なんですが・・・
fputc(c,stdout);
fputc(fgetc(fp),stdout);
文字の一番目のバイトが漢字コードの場合上の2ブロックが実行されます

これらは同じ動作と思ってたんですが
片方消したり並べ替えたりしてたらそれぞれ違う文字化けが生じることに
気がつきました
この二つの違いってなんなんですか>?

624デフォルトの名無しさん:2010/12/12(日) 03:40:28
>>597
信用できるか出来ないかを判断するのが面倒じゃない?
何度も体験してるだろうけど、検索上位に出てくるサイトにウソ書いてる事って結構あるでしょ。
625デフォルトの名無しさん:2010/12/12(日) 03:56:20
>>623
漢字は2バイトで1文字なんだよ。
626デフォルトの名無しさん:2010/12/12(日) 05:14:07
ほっほっ
627デフォルトの名無しさん:2010/12/12(日) 09:18:36
ふっほっ
628デフォルトの名無しさん:2010/12/12(日) 12:04:21
struct Hohho
{
size_t size; int data[1];
};

struct Hohho *p = (struct Hohho *)malloc(sizeof(size_t)+(N-1)*sizeof(int));

こんなことしていいんですか?
629デフォルトの名無しさん:2010/12/12(日) 12:13:10
>>628
struct Hohho *p = (struct Hohho *)malloc(sizeof(struct Hohho)+(N-1)*sizeof(int));

sizeとdataの間に詰め物がはいる可能性があるからこうで。
(N-1 となってるのは間違いでそ)
630デフォルトの名無しさん:2010/12/12(日) 12:19:52
Hohho
Fuhho
いいなHogeFugaの代わりに使わせてもらおう
631デフォルトの名無しさん:2010/12/12(日) 12:29:27
>>629
mallocの引数はsize_t型のただの数字なんで、
> こんなことしていい?
と聞かれれば。別にかまわんよとの答えとなるかな。
期待した動作ではないと思うけど。
注意点として、
1.sizeof(struct Hohho) とした時点で詰め物含めた構造体のサイズになるよ。
 sizeof(struct Hohho)+(N-1)*sizeof(int) は、
 N>=1の時必要サイズよりも大きなサイズを取るだけで別に問題はない。
2.sizeof(構造体)とsizeof(各構造体の要素)の和は等しくなるわけではない。

これを実行すればイメージつかめるんじゃないかな。
#include <stdio.h>
#define N (10)
struct Hohho {
size_t size; int tumemono[N-1] ; int data[1];
};
struct Hohho2 {
int a; char b; int c;
};
int main (void) {
printf("%d\n",sizeof(struct Hohho));
printf("%d %d\n",sizeof(struct Hohho2),sizeof(int)+sizeof(char)+sizeof(int));

return 0;
}
632デフォルトの名無しさん:2010/12/12(日) 12:48:11
eclipseでpgmの画像ファイルを上下左右反転するプログラムを作ってます。
配列入れ替えで比較的簡単にいけると思ったのですが、

いざ出力されたファイルを見るとなぜか半分だけしか反転されていません。
要するに <− を −>にしようとしたら <>になると言う感じです。

まだまだド素人なもので、今の所
void reverse_pgm(){
int x, y;
for(x = 0; x < x_size; x++){
for(y = 0; y < y_size; y++){
img[y][x] = img[Y_SIZE - y][X_SIZE - x];
}
}
}
こんな無様な状況です。もう一つ変数が必要と言われましたが、
どのように使うのかよく分からないです。
633デフォルトの名無しさん:2010/12/12(日) 12:57:40
>>629,631
ありがとうございます
634デフォルトの名無しさん:2010/12/12(日) 13:10:44
Hohhoを見て思ったんだが、「くっ」とかってローマ字で上手く表せないよな
Hohhoも「ほっほ」だし
635デフォルトの名無しさん:2010/12/12(日) 13:14:29
>>632
void reverse_pgm(){
int x, y;
for(x = 0; x < x_size; x++){
for(y = 0; y < y_size / 2; y++){
pixel tmp = img[y][x];
img[y][x] = img[Y_SIZE - y][X_SIZE - x];
img[Y_SIZE - y][X_SIZE - x] = tmp;
}
}
}

pixel のところはimgと同じ型で。
636デフォルトの名無しさん:2010/12/12(日) 13:21:20
>>634
hoxtuhoxtu
637デフォルトの名無しさん:2010/12/12(日) 15:06:36
ふっほっ
638デフォルトの名無しさん:2010/12/12(日) 17:15:11
ぶっちゃけてしまうと…ファイル読み書きのテキストモードって存在価値なくねーか?
バイナリファイルをはじけるわけでもないし、混乱の元になってるだけだと思うんだが
なんでこれ存在するの?
639デフォルトの名無しさん:2010/12/12(日) 17:16:46
テキストファイルを読み書きしたことないの?
640 ◆QZaw55cn4c :2010/12/12(日) 17:21:47
641 ◆QZaw55cn4c :2010/12/12(日) 17:25:58
642デフォルトの名無しさん:2010/12/12(日) 17:33:53
どちらにしてもフォーマットのチェックは必須だから
最初からバイナリで統一してれば面倒は起きなかっただろうね
643デフォルトの名無しさん:2010/12/12(日) 17:44:02
だいたいなんで改行コードとか違うんだろうな
最初に足並み崩したバカはどこのどいつだよ
市中引き回しの系に処するべきだわ
644デフォルトの名無しさん:2010/12/12(日) 17:47:01
macとlinuxが悪い
645デフォルトの名無しさん:2010/12/12(日) 17:51:50
>>643
元々のasciiコードではCrが「復帰」でLfが「改行」。
従って、プリンタやTTY端末の動きとしてはCrとLfは別々に実装されるのが普通。
しかし、通信プロトコルでは一バイトでも節約したいのでCrにするケースとLfにするケース(或いはその他)に分かれた。
また、テキストファイルにする段階でも、LfとCrLfとCrに分かれてしまった。
最初から足並みはないので、「崩した馬鹿」はいない。
646デフォルトの名無しさん:2010/12/12(日) 17:54:23
復帰は col = 0
改行は row++
か。
647デフォルトの名無しさん:2010/12/12(日) 18:27:10
バイナリでテキスト開いても困ることは無いけど
テキストでバイナリ開くとまず死ぬから基本バイナリでおk
648デフォルトの名無しさん:2010/12/12(日) 19:05:37
分かりにくいからバイナリモードとテキストモードって言えよ
649デフォルトの名無しさん:2010/12/12(日) 21:27:00
ほっほっ
650デフォルトの名無しさん:2010/12/12(日) 22:29:23
http://codepad.org/lAy2GhB3

2分木を生成して、後順走査をしながら解を求めていくプログラムです。
なのですが、うまく左側の木の値を読み込んでくれません。

4行目が
info1= 2, info2= 0, x= 5, y=10, z= 3
となっているんですけど、

xは大きい方を選択するので5
yは足し算なので11
zは大きい方を選択するので6
つまり
info1= 2, info2= 0, x= 5, y=11, z=6
になって欲しいんですけどどこがおかしいですか?
よろしくお願いします。

わからないことなどがありましたら質問お願いします。
651デフォルトの名無しさん:2010/12/12(日) 23:34:15
【アルゴリズム・データ構造】の質問何ですが、スタック構造って、
ポインタでのリスト構造に比べて利点ってあるんですか?
プログラム見ても全然良いところが見つからないんですが・・
自由自在に操作できるポインタリスト構造のほうがいいですよねぇ?
652デフォルトの名無しさん:2010/12/12(日) 23:41:43
>>651
ここはアルゴリズムのスレじゃない、そっち系でやれ。
653デフォルトの名無しさん:2010/12/12(日) 23:52:50
望洋うほうほ
654デフォルトの名無しさん:2010/12/13(月) 00:01:52
スタック構造って具体的にコードレベルでどんなのを指していってるの?

Cの場合リンクリスト・スタック・キューなんかは、実際はどれもデータ構造としてはリンクリストを
使って実装して、操作用関数群でリスト・スタック・キューとして扱えるようにラッピングするのが
ほとんどだよ
655デフォルトの名無しさん:2010/12/13(月) 00:02:44
>>651
配列を使わない単純な一方向リストと仮定してもデータと同じ数のポインタを必要とする
スタックならデータの他にデータ数だけ記憶すればpush,pop,peek全て実装できる
656デフォルトの名無しさん:2010/12/13(月) 00:12:34
スタックを勉強する目的はアレだろ。
関数呼び出し時の戻り番地とか引数の処理を知るためだろ。
657デフォルトの名無しさん:2010/12/13(月) 00:21:49
スタック使った最初の実用的な問題は木の巡回だろう
658650:2010/12/13(月) 00:29:46
>>650をお願いします・・・
659デフォルトの名無しさん:2010/12/13(月) 00:37:21
スタック構造では探索とか複雑なことできないですよね。
ポインタ無しの単純な構造何だから。
660デフォルトの名無しさん:2010/12/13(月) 00:38:46
出来ますよ
661デフォルトの名無しさん:2010/12/13(月) 00:40:51
ポインタ使わずに、木構造の作成、要素の探索、要素の削除、挿入
ってできますか?単純なソース書いてくれませんか?
662デフォルトの名無しさん:2010/12/13(月) 00:41:40
ヒープ構造のことですか?
663デフォルトの名無しさん:2010/12/13(月) 00:47:46
>>662
はい
664デフォルトの名無しさん:2010/12/13(月) 00:51:36
googleの中の人がとても親切で、質問すれば詳しく解説してくれますよ
665デフォルトの名無しさん:2010/12/13(月) 00:53:57
2ちゃんねるに勝手に書き込みをするプログラムってどうやって作るんだろ
666デフォルトの名無しさん:2010/12/13(月) 00:56:26
big ass
667デフォルトの名無しさん:2010/12/13(月) 02:28:19
再帰中に再帰元を終了させることってできますか
668デフォルトの名無しさん:2010/12/13(月) 02:36:24
別スレッドから設定されるフラグも一緒に監視するしかないんじゃない?
669デフォルトの名無しさん:2010/12/13(月) 02:36:41
ふっふっ
670デフォルトの名無しさん:2010/12/13(月) 02:48:16
>>650
struct node *a=&Z,*b=&Z;
aもbも両方ともZを指してるので
*a=postorder(t->left);
*b=postorder(t->right);
これは
Z=postorder(t->left);
Z=postorder(t->right);
に等しい
戻り値を上書きしてしまってるので思った結果にならない
671デフォルトの名無しさん:2010/12/13(月) 02:56:57
>>670
となると、どのようにすればいいですか?
672デフォルトの名無しさん:2010/12/13(月) 06:48:21
673デフォルトの名無しさん:2010/12/13(月) 07:07:59
zが大文字なのは番兵だからだろうけど
他が1文字だったり2文字だったりなのはなぜ?
674デフォルトの名無しさん:2010/12/13(月) 07:14:57
static int max(int a, int b) {return a > b ? a : b;}
static int min(int a, int b) {return a < b ? a : b;}
を定義して使いたいところだな。
675デフォルトの名無しさん:2010/12/13(月) 07:15:53
あー、min()は要らなかったか
676デフォルトの名無しさん:2010/12/13(月) 07:17:27
だったら全部大文字にすればいいのに...
677デフォルトの名無しさん:2010/12/13(月) 07:19:50
ほっほっ
678デフォルトの名無しさん:2010/12/13(月) 08:16:43
だったらがどこから繋がるのかよく分からない。
ttは引数のtとかぶったからかなー。適当感が溢れている。
679デフォルトの名無しさん:2010/12/13(月) 14:31:30
西暦のある年を入力し、その年がうるう年かどうか判断するプログラムを作成せよ。
っていう問題なんですが、
#include <stdio.h>
int main(void)
{
int i,a,b,c;
printf("i=");
scanf("%d", &i,&a,&b,&c);
if(i==4*a && i !=100*b){
printf("うるう年\n");
}
else if(i==400*c){
printf("うるう年\n");
}
else{
printf("うるう年でない\n");
}
return 0;
}

これだと全部うるう年ではないになるんですが、どうすればよくなりますか。
680デフォルトの名無しさん:2010/12/13(月) 14:47:20
まずは、入力された数字が4で割り切れるかどうかのプログラムを作ってみたら?
681デフォルトの名無しさん:2010/12/13(月) 15:20:58
ひっふっ
682デフォルトの名無しさん:2010/12/13(月) 15:29:18
今、あるパラメータがテキストファイルに
0 0 0 0 0 1 1 1 1 ・・・
0 0 0 0 1 1 1 2 2 ・・・



というふうに出力されるファイルがあるのですが、これを
A B C D E F・・・
0 0 0 0 0 1 1 1 1 ・・・
というように上に予め文字を入れるようにするにはどうすればいいですか?
左端にも上から1、2、3、・・・という風に入れたいです。
683デフォルトの名無しさん:2010/12/13(月) 15:38:31
入れるって言うか、出力すればいいじゃん。
こちとら、その出力ルーチンがどうなっているのか知らないからどうすればいいかなんかわかりゃせんのよ。
684デフォルトの名無しさん:2010/12/13(月) 15:40:30
2重ループになってるなら、ここで文字を出力したらどこに出るのかな?とかいろいろ試すといいよ。そのうちできる。
685とかね:2010/12/13(月) 15:44:01
いえ、出力する関数は私が作ってないので手を入れることはできません。
686デフォルトの名無しさん:2010/12/13(月) 15:45:49
strcat( filename, fname);
strcat( filename, ".txt");
fw = fopen( filename ,"wt");
すみません、因みにこのようにしてtxtファイルに出力しています。
どうやれば>>682のように出力できるのですかね・・・
687デフォルトの名無しさん:2010/12/13(月) 15:48:29
ほっほっ
688デフォルトの名無しさん:2010/12/13(月) 15:50:29
>>686
いじれない関数はどういう引数と返り値なんだ?
void func(FILE * fp);
みたいに完全に閉じてるんじゃ
当然書かれたファイルを普通に読んでもっかい出力するしか無いが
689デフォルトの名無しさん:2010/12/13(月) 16:04:45
>>686
それはファイルを開くまでのコードで、ファイルに出力するコードはそれじゃない。
690デフォルトの名無しさん:2010/12/13(月) 16:13:54
>>686
それは出力先のファイルを用意してるだけで出力してない
そのfopenした後fprintf(fw, "A B C D E F・・・");てやれば"A B C D E F・・・"が出力される

ってか、全然わからないのにぽつぽつ端的な質問するより
まずは入門書を一通り読んだほうがいいよ
691デフォルトの名無しさん:2010/12/13(月) 16:16:59
>>680
ありがとうございます。
出来ました。
692デフォルトの名無しさん:2010/12/13(月) 16:49:18
端的な質問ならいいんだけどね
693デフォルトの名無しさん:2010/12/13(月) 17:06:41
ストリームを引数にするユーザー定義関数ってどうなんだ
標準ストリーム渡せるのは便利だけどオープンモードが関数側から見えないのが怖い
694デフォルトの名無しさん:2010/12/13(月) 17:08:20
どぴゅっどぴゅっ
695デフォルトの名無しさん:2010/12/13(月) 17:14:08
ありでしょ。
なしだとしたら、グローバル変数にもたせるの?それとも、関数を呼ぶたびに開きなおすの?
696デフォルトの名無しさん:2010/12/13(月) 17:17:09
関数プロトタイプに fp_in とか fp_inout とか書いて区別すれば大丈夫でしょ
697デフォルトの名無しさん:2010/12/13(月) 17:24:45
inoutだけじゃなくてバイナリかテキストか、追記モードかどうかなども問題になるでしょ
698デフォルトの名無しさん:2010/12/13(月) 17:27:38
基本情報でC言語選択するつもりで勉強してますがそのような類も聞いてもいいんですか?
参考書だけより実際やってみるほうが覚えやすいかなと
699デフォルトの名無しさん:2010/12/13(月) 17:30:39
ほっほっ
700デフォルトの名無しさん:2010/12/13(月) 17:32:51
しろうとならC言語じゃなくてアセンブラにしたほうがいいよ
701デフォルトの名無しさん:2010/12/13(月) 17:33:15
>>698
聞いてみるだけならいくらでもいいぞ
答えられるかどうかはわからないが
702デフォルトの名無しさん:2010/12/13(月) 17:43:59
>>697
モードも渡せばいいじゃん。開き直すにしても、モードを渡さないといけないだろうし。
703デフォルトの名無しさん:2010/12/13(月) 17:44:24
>>700
もう参考書買ってしまってるのでなんとかがんばりたいと思います\(^o^)/
>>701
今のところはまだ自分でぐぐればなんとかなりますがそのときはお願いします
704デフォルトの名無しさん:2010/12/13(月) 17:59:40
>>697
じゃあやっぱり関数呼ぶたびに開きなおすの?
705デフォルトの名無しさん:2010/12/13(月) 18:04:32
/usr/bin/ld: cannot find -lsocket
collect2: ld はステータス 1 で終了しました

上のエラーが解決できなくて困ってる。
/etc/ld.so.confに/usr/bin追加したりしてるんだが一向にsocketライブラリを認識してくれなくてコンパイルできない。誰か助けて
706デフォルトの名無しさん:2010/12/13(月) 18:06:36
>>705
-L で直接指定してみるとか
707デフォルトの名無しさん:2010/12/13(月) 18:07:56
それは何という名前の関数のためにリンクしているの?
実は要らなかったりしないの?
708デフォルトの名無しさん:2010/12/13(月) 18:26:26
>>704
開きなおしはしない
モードが違えば続きの処理のどこかでエラーがでる確立が高くなるからそこで撒き戻せるだけ戻してリターン
だからどうせエラーになるなら期待してないモードは最初っから処理しないでリターンできればベストだね
ひどい場合はエラーが出ずにそのまま通ってしまうことだけどこれはどうしようもないんだよなぁ検知する汎用的な方法が無い
つーかモードを調べる関数ぐらい用意してくれてもいいのにC作ったやつは相頭悪いんだろうなぁいっぺんあって文句言ってやりたいよ
709デフォルトの名無しさん:2010/12/13(月) 18:29:07
互いに相容れないだろうなw
710デフォルトの名無しさん:2010/12/13(月) 18:38:13
>>706
-L socketでコンパイルしたらなんかいけたっぽ。dクス

>>707
サーバー1、クライアント他の双方向のチャットシステムみたいのを作ってる
711デフォルトの名無しさん:2010/12/13(月) 20:30:57
ふっほっ
712デフォルトの名無しさん:2010/12/13(月) 23:00:20
ほっふっ
713デフォルトの名無しさん:2010/12/13(月) 23:00:53
ちんこっ
714デフォルトの名無しさん:2010/12/13(月) 23:11:36
ちんっこっ
715デフォルトの名無しさん:2010/12/14(火) 07:12:33
ほっほっ
716デフォルトの名無しさん:2010/12/14(火) 07:28:25
>>710
ほんとかよw
717デフォルトの名無しさん:2010/12/14(火) 09:58:42
ふっほっ
718デフォルトの名無しさん:2010/12/14(火) 18:21:10
ぶはっぶはっ
719デフォルトの名無しさん:2010/12/14(火) 18:39:41
どぴゅっどぴゅっ
720デフォルトの名無しさん:2010/12/14(火) 19:08:26
くひゅっくひゅっ
721デフォルトの名無しさん:2010/12/14(火) 19:52:13
くぎゅっくぎゅっ
722デフォルトの名無しさん:2010/12/14(火) 19:54:32
キチガイ共乙
723デフォルトの名無しさん:2010/12/14(火) 20:28:17
ほっほっ
724デフォルトの名無しさん:2010/12/14(火) 20:30:00
キチガイが粘着するようになってクソスレ化したな。
725デフォルトの名無しさん:2010/12/14(火) 20:52:02
正規表現で弾けよなんの為の専用ブラウザだ
726デフォルトの名無しさん:2010/12/14(火) 22:28:02
元から糞スレだったじゃん
727デフォルトの名無しさん:2010/12/14(火) 22:43:23
ここは糞スレでいいんだよ
>>2にちゃんと書いてあるじゃん
728デフォルトの名無しさん:2010/12/14(火) 23:16:11
正規表現ということでregex.h使ったことある人いる?
729sage:2010/12/15(水) 01:40:02
参考書のサンプルプログラムについて
int iskanji(int c)
{
if((c&0x80)==0)
return(0);
else
return(1);
}

呼び出し元はif(iskanji(c)){cと次のバイトを出力}です
if((c&0x80)==0)とはどういう意味ですか
わかりやすく解説してもらえるとうれしいです
730デフォルトの名無しさん:2010/12/15(水) 01:43:35
あなたは
>if((c&0x80)==0)
の意味が分からないのではなく、
>&
の意味を知らないだけではないのでしょうか?

もしそうなら、& 演算子の意味を調べましょう。
上達へのコツは「自分は何を分かっていないのか」を考え見つけることです。
731デフォルトの名無しさん:2010/12/15(水) 01:56:41
説明できないなら引っ込んでろよw
732sage:2010/12/15(水) 01:58:26
>>731は別人ですが同意見です
733デフォルトの名無しさん:2010/12/15(水) 02:22:57
ちゃんとヒントもあるのに読解力のない奴だなぁ。
734デフォルトの名無しさん:2010/12/15(水) 02:24:19
なるほど
0x80を2進数になおして両方のビットがたっていたら1たてるやつですね
ifの式の意味はわからないです 
735デフォルトの名無しさん:2010/12/15(水) 02:37:12
ボロノイ図をC言語で組みたいです。
視覚化とかはかんがえてないんですけど
どう組んだらいいですか?
736デフォルトの名無しさん:2010/12/15(水) 03:02:52
>>734
そのifの意味は、文字コードの問題なんで、ちょっと情報が足りない。

記憶で書いてるんでかなり怪しいが、例えばUTF-8だと、
多バイト文字のそれぞれのバイトは、全部先頭ビットが1だったと思う。
(多バイト文字が必ずしも漢字ってわけじゃないけど)
逆に1バイトの文字は先頭ビットが必ず0で、1バイト文字は漢字ではない。
737デフォルトの名無しさん:2010/12/15(水) 03:06:12
ほっほっ
738デフォルトの名無しさん:2010/12/15(水) 03:10:28
>>735
何が分からない?
ボロノイ図の意味 or ボロノイ分割のアルゴリズム or C言語?
739デフォルトの名無しさん:2010/12/15(水) 03:13:14
ふぉっふぉっふぉ
740デフォルトの名無しさん:2010/12/15(水) 03:23:33
>>738
意味はわかるんですけど、
アルゴリズムとC言語がわかりません・・・
741デフォルトの名無しさん:2010/12/15(水) 07:25:26
>>740
最も簡単なアルゴリズムは↓
(1)平面(or空間)内の格子点を決める。
(2)格子点に最も近い母点を検索する。
(3)隣接する格子点が同じ母点を共有していない場合、領域の境界とする。

他には、ドロネー三角形およびボロノイ点を全て見つけ出し、境界線を
計算する方法もある。※ここでは説明しきれないので省略。

高速なアルゴリズムは↓
ttp://en.wikipedia.org/wiki/Fortune's_algorithm

C言語のプログラムサンプルが欲しければ、問題形式にして
宿題スレとかで聞いてみると、誰か答えてくれるかも。
742代行求む:2010/12/15(水) 13:51:48
入力した10進数を16進数、2進数に出力するプログラムをお願いします。
743デフォルトの名無しさん:2010/12/15(水) 13:54:22
>>742
宿題スレにどうぞ
744デフォルトの名無しさん:2010/12/15(水) 15:12:16
お聞きしたいことがあるのですが、
http://codepad.org/2niBczHV
↑のプログラムの宣言のint a[3];ではa[0]からa[2]までしか用意してないのに、
なんでエラーも出ずsegmentation faultにもならないんでしょうか?

745デフォルトの名無しさん:2010/12/15(水) 15:14:58
>>744
別に隣の机を勝手に使ってもいいでしょ。
隣の席の人が帰ってきたらしこたま怒鳴られるけど。
というよく分からない例はおいといても、たまたま動いているだけです。
746デフォルトの名無しさん:2010/12/15(水) 15:16:15
>>744
たまたま偶然うまくいった、もしくは最適化によってa[i]が削除されている。
そのprintfが表示するものは明らか(定数)なので最適化で消える可能性が高い。
747デフォルトの名無しさん:2010/12/15(水) 15:18:48
>>744
> なんでエラーも出ず
C言語はそのようなエラーチェックをしないから

> segmentation faultにもならないんでしょうか?
配列を少しばかり超えてもそこはまだ自分のプロセスの領域内(たぶん他の変数に使っている)だから
748デフォルトの名無しさん:2010/12/15(水) 16:01:54
>>745-747
即レスありがとうございます
偶然なんですね
前プログラム書いた時に配列の要素数MAX+1まで間違えて
ループでインクリメントしてしまい、それでも実行できたのでおかしいなと思い悶々としてました

>配列を少しばかり超えてもそこはまだ自分のプロセスの領域内だから
この説明が一番しっくりきました

みなさんありがとうございました
749デフォルトの名無しさん:2010/12/15(水) 17:16:14
ふっほっ
750デフォルトの名無しさん:2010/12/15(水) 17:57:43
ぽっぽっ
751デフォルトの名無しさん:2010/12/15(水) 18:22:09
キチガイ共乙
752デフォルトの名無しさん:2010/12/15(水) 18:36:27
ぶはっぶはっ
753デフォルトの名無しさん:2010/12/15(水) 19:30:50
べっぽっ
754デフォルトの名無しさん:2010/12/15(水) 19:41:55
C言語の解説書って痒い所に手が届かないように作られてるの多くないか?
例えばライブラリ関数の説明とかでもprintf関数がそうである。みたいに
書いとけばいいものを、わざわざグチグチ文章で説明するおかげで理解の時間
がかなりかった。わざとわかりにくくして楽しい?
755デフォルトの名無しさん:2010/12/15(水) 19:48:20
>例えばライブラリ関数の説明とかでもprintf関数がそうである。
>みたいに書いとけばいいものを

何を言ってるか、よくわかりません><;
756デフォルトの名無しさん:2010/12/15(水) 19:51:14
>>754
何を言いたいのかよくわからないけど、
痒い所に手が届く解説書を探しているなら推薦図書スレへ
楽しいかどうか尋ねたいならその本の著者へ直接連絡して下さい
757デフォルトの名無しさん:2010/12/15(水) 19:54:38
これは本ではなく読解力の問題だな間違いなく
758デフォルトの名無しさん:2010/12/15(水) 20:12:28
まぁ、特に入門書を書いているのは実務経験ない連中だから仕方ないがな。
759デフォルトの名無しさん:2010/12/15(水) 20:19:08
教授はいらない子ですよね
760デフォルトの名無しさん:2010/12/15(水) 20:25:41
わざと分かりにくく書いて、本質的な書き回しの俺かっこいいとか思ってるのかね?
761デフォルトの名無しさん:2010/12/15(水) 20:29:55
どの辺がわかりにくかったの?
762デフォルトの名無しさん:2010/12/15(水) 20:30:08
著者の経歴みたいなどーでもいいことのせいにして言い訳するやつこそ
金をもらうとはどういうことかがわかってない

データシートの類は書いてあることが全てであって
どこの馬の骨が書いたかは一切関係ない
# function を機能と訳されたくらいでガタガタいうな

誤りや欠落が見つかれば注釈を入れて自分らがはまるのを防ぐだけ
それ以上でもそれ以下でもない

情弱ほどここが苦手
763デフォルトの名無しさん:2010/12/15(水) 20:34:50
>>754
分かりやすいC言語の本はいっぱいある。
もちろんそうでないものもあるが。
> 多い
ていうからには何冊も見たんでしょ?
何冊も読んでそれで分かりにくいとか言ってるんだよね。
そりゃお前のほうに問題があると誰しも思うよ。
グチグチ言ってんのはお前じゃないのか?
764デフォルトの名無しさん:2010/12/15(水) 20:37:46
>>763
おしい。
>痒い所に手が届かないように作られてるの多くないか?
といいつつ、痒い所に手が届かない本を読んでいるところにツッコミを。
765デフォルトの名無しさん:2010/12/15(水) 20:54:17
バイナリファイルとテキストファイルの違いとかな。
何でもっとわかりやすく書けないのか疑問に思いすぎて
脱腸した。
766デフォルトの名無しさん:2010/12/15(水) 21:00:19
小学三年生のころVisualBasicの本を初めて読んだ時は、
変数に数字を入れるって”概念”すら、「何のことやら理解不能」だった。

「変数Aに1が入る!! この説明で解らないはずないだろ?」と思うだろうけど、
解らない時は本当にまったく意味不明な説明に聞こえるのである。

「あっ! Aに1が入るって、 Aに1が入ることか!!」と、ある日突然、3日後くらいに
突然ひらめくように理解できる日がくる。
すると今度は、「なんで、こんな簡単なことが、今まで解らなかったのか?」と。解らなかった理由が「解らない」という状態になる。

よくCで恒例の「ポインタがわかりません」も、
解ってる人からすれば「なんで解らないの?? そんなに難しいことか??? これ????」という感じなのである。
たとえば「forループの意味が解りません」と聞かされても、”解らない理由が想像できない”のである。

しかしながら、割合、あたまのデキが悪い人の場合、この「解らなかった期間」を自ら体験していたことが多い。
おかげで、逆に、人に教えるのが上手だったりする。
「何が解らないのか?」の見当が漠然と付くからである。

一方、あたまのデキが良すぎる人の場合、つまり、本を読んだ瞬間に1から10まで理解できてしまう人の場合、
人に説明する時も、本のまんまのノリで説明しがちである。
「…だから!!ポインタはアドレスが入って、参照は実データで…!! なんで解らない???」の調子で。

>>754
その本の作者も、「わざとわかりにくく書く」なんてことはしてないはず。
それどころか、むしろ「この説明で解らない理由が解らない!!」ってくらい分かりやすく説明してるのかもしれない。
…エスパーするが、おそらく、逆にその詳細さが仇になってそうな気がする。w
767デフォルトの名無しさん:2010/12/15(水) 21:06:17
>>766
ワロタww
その通り過ぎてワロタw

俺の分かったとたん、異常に複雑化して、分からない奴に教えたがる
癖が皆にもあるのかと思ったわ・・

768デフォルトの名無しさん:2010/12/15(水) 21:28:35
>>766
元もらしい文ではあるが、全く持って意味が希薄な文だ。
気がついてないだろうな、すごいこと言ったと思ってるに違いない。
769デフォルトの名無しさん:2010/12/15(水) 21:31:38
>>766
まあ当然だわな。経験値というのは現実に存在するからな。
経験したことのない事象を、想像や知ったかで語るヤツは大抵信用ならない。
もちろん本だけ読んで理解した気になってるバカもな。
770デフォルトの名無しさん:2010/12/15(水) 21:44:00
【C#, C♯, C#】 MonoMac 【MonoDevelop】
http://hibari.2ch.net/test/read.cgi/mac/1291602001/

プログラム言語に詳しい奴、ちょっと↑きてくれ
771デフォルトの名無しさん:2010/12/15(水) 21:46:54
C言語みたいな小さい言語なら、いくらかサンプルコードをなぞって
何となくも分からん奴はそもそも向いてないだろ。
あとは作るものとリファレンス、逆引きがあれば
規格を読んで理解できるところまで行ける。
772デフォルトの名無しさん:2010/12/15(水) 21:47:00
行ってどうしろってんだ
773デフォルトの名無しさん:2010/12/15(水) 21:55:05
規格を読めって言う奴にろくな奴はいない
774デフォルトの名無しさん:2010/12/15(水) 21:59:55
規格を読め「としか」言えない奴に多くは期待しない
775デフォルトの名無しさん:2010/12/15(水) 22:02:09
アルゴリズムとデータ構造は、文章を読むだけじゃ皆無に等しい理解しか
得られないが、プログラムソースをみるとそういうことかと理解できると
同時に、文章書いたやつのアスペを疑う。
776デフォルトの名無しさん:2010/12/15(水) 22:04:59
え?学生の頃教科書見ただけで普通にテンプレートクラス化までできましたけど?
それって斜め読みしてるだけじゃないですか?ちゃんと噛み砕いて飲み込んでからページめくってますか?
777デフォルトの名無しさん:2010/12/15(水) 22:05:53
すいません。
ひとつ聞きたいことがあります。
学校でプログラミングをコンパイルするときは
***.cのファイルをテキストエディタでつくり、
コマンドプロンプトで
gcc-4 ***.c -o ***.exe

というふうにやっています。
しかし家ではそのようにすると

「'gcc-4' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません」

とでます。家のパソコンにGccはないということでしょうか。

出来る限り学校のやり方に忠実に再現したいので、どうすればよいのか教えていただければありがたいです。
778デフォルトの名無しさん:2010/12/15(水) 22:08:42
>>777
gcc-4でなくgccでやってもそう?
使ってるパソコンと言うのがwindowsであれば、
自分で入れなきゃgccは使えないよ。
MinGWとかcygwin入れると使えるようになる。
779デフォルトの名無しさん:2010/12/15(水) 22:09:20
学校と同じ環境にする。その環境は何かと言えば、学校で聞きなさい。
780デフォルトの名無しさん:2010/12/15(水) 22:10:52
Cygwinをインストールすればおうちでもコンパイルできるヨ
781デフォルトの名無しさん:2010/12/15(水) 22:11:30
>>772
個人的には「こういう規則で動いてたのか」とか
「これって処理系依存だったのね」とかいうところで
規格読んで一人でニヤニヤするのがオススメ。
782デフォルトの名無しさん:2010/12/15(水) 22:14:36
>>781
こういう人が誰も聞いて無いのに規格ではどうこうってウンチク語りたがるんだよね
783デフォルトの名無しさん:2010/12/15(水) 22:20:17
なんかの本で
「オブジェクト指向とは気持ちよくウンチクをたれて、みんなから嫌われるために存在する。」
見ないな文章を見たことがあるけど、それと似てるね。
784デフォルトの名無しさん:2010/12/15(水) 22:37:41
×みんなから嫌われるために存在する
○レベルの低いみんなから嫌われるために存在する
785デフォルトの名無しさん:2010/12/15(水) 22:40:37
まあ「みんなから嫌われる」とか言うのって、単に自分が嫌いなのを
そう言い換えてるだけだよな。
太宰治もそういってるし。
786デフォルトの名無しさん:2010/12/15(水) 23:36:01
Cygwinって学校以外のやり方をネットで見てやると、パッケージ数が多すぎて
ダウンロード時間が3日かかるときあるぞwww

学校のやり方でやると1/1200分の一の5分でダウンロード終わった。
787デフォルトの名無しさん:2010/12/15(水) 23:44:36
木構造って何のためにあるのか分からない。
普通にリストだけでいいじゃん。直線探索何だから。
788デフォルトの名無しさん:2010/12/15(水) 23:46:17
>>787
少女だったといつの日か分かるときが来るのさ
789デフォルトの名無しさん:2010/12/15(水) 23:47:12
ディレクトリとかファイルとかき構造になってんじゃん
790デフォルトの名無しさん:2010/12/15(水) 23:48:18
>>786
学校のやり方うp
791デフォルトの名無しさん:2010/12/16(木) 00:12:09
>>768
たしかにもともらしいよね
792デフォルトの名無しさん:2010/12/16(木) 00:13:52
>>781
たぶん>>770にいってどうすればいいの?って話
793デフォルトの名無しさん:2010/12/16(木) 01:57:16
ほっほっ
794デフォルトの名無しさん:2010/12/16(木) 15:00:52
パラメータを求めるプログラムで、
2 2 3 4 5 ・・・
3 3 4 5 6 ・・・



という風にtxtファイルにfprintfを使って出力されるのですが、この出力結果を
1 2 2 3 4 5 ・・・
2 3 3 4 5 6 ・・・
3 ・・・
4 ・・・
のように左端に上から1,2,3,4・・・と番号を振るようにするにはどうすればいいでしょうか?
795デフォルトの名無しさん:2010/12/16(木) 15:04:11
>>794
どうするって言われても
普通にfprintfをfor文で回せばよくね?
796デフォルトの名無しさん:2010/12/16(木) 15:58:15
アルゴリズムとデータ構造って大体、どこの学校も同じテーマとして
授業やってるんですね。この科目で計算量O(V)とかO(n^2)とかちょくちょく
出てくるんですが、意味が全然わかりません、意識しなくてもいいでしょうか?
ふつうにプログラムは組めるんで。
797デフォルトの名無しさん:2010/12/16(木) 16:00:25
>>796
スレチだから死ね
798デフォルトの名無しさん:2010/12/16(木) 16:07:50
>>797
どこがスレチなんだwww?
該当スレがないよw
799デフォルトの名無しさん:2010/12/16(木) 16:24:51
>>797はひどい
800デフォルトの名無しさん:2010/12/16(木) 16:27:40
アルゴリズムなら俺に聞けスレを誰か建てれば問題解決
801デフォルトの名無しさん:2010/12/16(木) 16:32:09
計算量はC言語の文法なんかより重要だと思うんだが
802デフォルトの名無しさん:2010/12/16(木) 16:36:22
>>801
例えば?
あんま適当なこと言うなよ。
803デフォルトの名無しさん:2010/12/16(木) 16:38:48
単に、どのプログラムが効率良いかどうかでしょ、計算量何て実際に
測定できるわけないし。
804デフォルトの名無しさん:2010/12/16(木) 16:45:36
O(1)とかO(logx)とかこんなもん覚えるもんじゃねーよww
805デフォルトの名無しさん:2010/12/16(木) 16:49:08
>>801
もともと言語に依存しない知識だから、
比較するようなものでもないと思う
806デフォルトの名無しさん:2010/12/16(木) 16:50:30
CはそれほどでもないけどC++だと必須だよね
知らないと標準ライブラリの使い方がめちゃくちゃになる
807デフォルトの名無しさん:2010/12/16(木) 16:51:59
>>806
例えば?
C++の参考書に計算量の事書いてますか?
書いてる本見た事ありません。プロゴルマーなら計算量は必須勉強事項ですか?
808デフォルトの名無しさん:2010/12/16(木) 16:59:44
文法を覚えるだけならいらないだろうね
でもまともなコードを書こうとすると必須だよ
産業廃棄物を生産したいなら覚える必要はない
809デフォルトの名無しさん:2010/12/16(木) 17:01:02
>>808
大学レベルか、職業レベルかどの変で重要になるんですか?
アルゴリズムとデータ構造の授業やってますが、体系的にまだ
計算量学んでいません
810デフォルトの名無しさん:2010/12/16(木) 17:07:20
>大学レベルか、職業レベル
趣味レベルの方が高度なことやってたりするし
811デフォルトの名無しさん:2010/12/16(木) 17:08:07
大学レベルでは人に迷惑かけるわけじゃないから必要ないよ(普通は身につくものだけど)
もちろん教授がやれといったら勉強しないとだめだよ
でも職業になると知らないと話にならない
同僚にも上司にも顧客にも迷惑がかかる
それでも覚えないなら君の居場所は自宅しかなくなるからね
812デフォルトの名無しさん:2010/12/16(木) 17:18:35
>>810
それは言えてるな。
お前らわかってんじゃん。
813デフォルトの名無しさん:2010/12/16(木) 17:27:44
プログラムには計算量記述できないぞ。
814デフォルトの名無しさん:2010/12/16(木) 17:38:45
知らないでやってるほうがいい時もある。
誤解釈するほうが迷惑
815デフォルトの名無しさん:2010/12/16(木) 18:02:16
>>795
for文でどうやるんですか?
816デフォルトの名無しさん:2010/12/16(木) 18:05:08
配列のスタックが意味が分らん、ポインタは一つだけでいいんですか?
817デフォルトの名無しさん:2010/12/16(木) 18:15:25
いいんじゃない?CPUですらスタックポインタ1つで頑張ってるし
818デフォルトの名無しさん:2010/12/16(木) 18:33:22
どぴゅっどぴゅっ
819デフォルトの名無しさん:2010/12/16(木) 19:21:31
NGワード
ほっほっ
ふっほっ
どぴゅどぴゅ

他になんかあったっけ
820デフォルトの名無しさん:2010/12/16(木) 19:33:17
しゅっしゅっ
821デフォルトの名無しさん:2010/12/16(木) 19:33:59
きゅっきゅっ
822デフォルトの名無しさん:2010/12/16(木) 19:35:14
きゅぅ〜っきゅぅ〜っ

823デフォルトの名無しさん:2010/12/16(木) 19:41:14
すっさっ
824デフォルトの名無しさん:2010/12/16(木) 19:48:02
「俺はしっかりNGしてスルーしてるぜ!」ってスルーできない奴ってまだいたのな
825デフォルトの名無しさん:2010/12/16(木) 19:50:17
糞スレですので
826デフォルトの名無しさん:2010/12/16(木) 19:55:57
自演だと思ってた
827デフォルトの名無しさん:2010/12/16(木) 21:35:28
んで、次にはなんでも自演と言えばいいと思ってる奴が来るんだよなw
828デフォルトの名無しさん:2010/12/16(木) 21:35:58
期待を裏切ってすまない
829デフォルトの名無しさん:2010/12/16(木) 21:55:56
C言語のリンカとかスタックとかメモリ周りを解説してくれてる本の紹介お願いします。
830デフォルトの名無しさん:2010/12/16(木) 22:27:06
このさいだから、Cコンパイラを作ってみてはどうか
831デフォルトの名無しさん:2010/12/16(木) 22:32:39
>>829
リンカ関係の定番。
linker & loader
スタックは取りあえずアセンブリ言語勉強すればそれでいいんじゃね?
メモリ周りって、なんの?
832デフォルトの名無しさん:2010/12/16(木) 22:34:27
ありゃ s が抜けてたわ。
Linkers & Loaders
833デフォルトの名無しさん:2010/12/16(木) 22:47:30
>>830
まだそこまで出来ないかな。
いつかは作ってみたいけど。

>>831
早速見てみます。
どうもありがとう!
834デフォルトの名無しさん:2010/12/16(木) 22:51:42
>>833
後FreeBSDなら
 リンカ・ローダ実践開発テクニック―実行ファイルを作成するために必須の技術
これな。
Windowsなら絶対薦められない。
835デフォルトの名無しさん:2010/12/16(木) 23:00:36
>>834
こちらの方も参考にさせて頂きます。
本当にありがとうございました〜
836デフォルトの名無しさん:2010/12/16(木) 23:29:14
へー、こんな本出てたんだ。面白そう
837デフォルトの名無しさん:2010/12/16(木) 23:56:06
リンカ・ローダの勉強するとものすごくねむたくなる
838デフォルトの名無しさん:2010/12/17(金) 03:38:54
>>807
参考書に書いてるかどうかはしらんが、vector map deque listの各操作に対するコストは
あちらこちらで見つけられるでしょ。

見つけられなかったとして、それぞれの実装がどうなっているかを理解できれば、
各操作に対する計算量は自力で導き出せるようになるための勉強。
知らないといつか恥をかくレベルの知識。
839デフォルトの名無しさん:2010/12/17(金) 03:54:18
オタク的思考だな
コミュ障の可能性が高い
840デフォルトの名無しさん:2010/12/17(金) 03:59:50
アルゴリズムから計算量を求めることも出来ない人が書いたコードをメンテするのはめんどくさい。コード書かないでほしい。
841デフォルトの名無しさん:2010/12/17(金) 03:59:51
オーダーオーダーうるさいアホはろくなコード書けないって身をもって実証してる人いるしなぁ
842デフォルトの名無しさん:2010/12/17(金) 04:05:18
逆に、アルゴリズムを適所で使える人って、オーダーのこと知らなかったとしても、
オーダーの話をしたらすぐ理解できるんだよね。ビッグオー記法を知らないだけで。
843デフォルトの名無しさん:2010/12/17(金) 08:24:21
O記法の形式的な定義とかはどうでもよくて、
だいたいどんな振る舞いをするか知っていることが大切
844デフォルトの名無しさん:2010/12/17(金) 08:28:00
>>841
日本語が破綻していますよ。

>>838
ここはCスレですよ。
845デフォルトの名無しさん:2010/12/17(金) 09:10:48
>>844
>>807に言わないと。
846デフォルトの名無しさん:2010/12/17(金) 11:14:23
>>815
おねがいします
847デフォルトの名無しさん:2010/12/17(金) 11:19:12
>>846>>794?
既存の出力ロジックに追加するだけだろ。例えば既存のロジックが
--
for (int iy = 0; iy < ySize; ++iy) {
for (int ix = 0; ix < xSize; ++ix) {
fprintf(fp, "%d ", array[iy][ix]);
}
fprintf(fp, "\n");
}
--
のようなものなら、ixのループの前にfprintf(fp, "%d ", iy)でも追加すればいい。
848デフォルトの名無しさん:2010/12/17(金) 13:03:04
そろそろこのスレも寒くなってきた
849デフォルトの名無しさん:2010/12/17(金) 16:00:34
以下のサンプルみて関数ポインタの使い方を学習してます。
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
int (*pPuts)( const char *pcMsg ) = puts;
pPuts( "Hello,world!" );
}
これ見て気づいたのですがこうするよりは
直接puts関数呼んだほうが2行を1行で済みますし
そのほうが早く実行できると思うんです。
850デフォルトの名無しさん:2010/12/17(金) 16:02:28
わらた
851デフォルトの名無しさん:2010/12/17(金) 16:02:53
>>849
使い方の説明サンプルにそんなツッコミ入れられても困る
852デフォルトの名無しさん:2010/12/17(金) 16:02:55
>>849
おもろいな!
853デフォルトの名無しさん:2010/12/17(金) 16:10:49
#include <stdio.h>
#include <stdlib.h>

int myPuts(const char *str)
{
fputs(str, stderr);
}

void main(void)
{
int (*pPuts)( const char *pcMsg ) = puts;
pPuts( "Hello,world!" );
pPuts = myPuts;
pPuts( "Hello,world!" );
}
854849:2010/12/17(金) 16:13:51
すみません、どこがおかしいのかわかりません。
849のサンプル考えた人がおかしいといってるんですよね?
855デフォルトの名無しさん:2010/12/17(金) 16:15:16
>>849
の突っ込みが笑えるのよ
856デフォルトの名無しさん:2010/12/17(金) 16:17:25
>>854
つまりな、そのサンプルは関数ポインタの基本的な使い方を説明してるだけで
どう有用なのか解説してるわけじゃないの?
分かるかな?
857デフォルトの名無しさん:2010/12/17(金) 16:39:06
以下のサンプルみて関数ポインタの使い方を学習してます。
#include <stdio.h>
#include <stdlib.h>
int myPuts(const char *str)
{
printf("%s", str);
}
void main(void)
{
int (*pPuts)( const char *pcMsg );
pPuts = myPuts;
pPuts( "Hello,world!" );
pPuts = puts;
pPuts( "Hello,world!" );
}
これ見て気づいたのですがこうするよりは
直接puts関数とprintf関数を呼んだほうが4行を2行で済みますし
そのほうが早く実行できると思うんです。
858デフォルトの名無しさん:2010/12/17(金) 16:39:51
>>857
おいおい5行が2行だろ?
859857:2010/12/17(金) 16:41:59
すまねえな
変数宣言で1行にしたの忘れてただよ
860デフォルトの名無しさん:2010/12/17(金) 16:45:54
使い方のサンプルというのは単に使い方を見せるだけのもので、何か実用的なことをするわけではないのだから、仕方がない
実用的な使い方が知りたければ qsort 関数とかどう
861デフォルトの名無しさん:2010/12/17(金) 17:03:24
糞サンプルだなあ
862デフォルトの名無しさん:2010/12/17(金) 17:03:26
寧ろ、atexit()の方が簡単。
863デフォルトの名無しさん:2010/12/17(金) 17:17:43
別に糞サンプルでもないと思うけどな。
864デフォルトの名無しさん:2010/12/17(金) 17:23:48
まぁ、関数ポインタは使うとちょっと小粋な感じになるだけで
それじゃないと出来ないって事はないからなぁ
可読性が落ちるから絶対使わないって人もいるし
865デフォルトの名無しさん:2010/12/17(金) 17:32:17
関数ポインタを使うと可読性が落ちるような場面ってどんなんだろう。
大抵可読性あがらない?慣れてないから読みにくいとかはナシで。
866デフォルトの名無しさん:2010/12/17(金) 17:32:51
今までのプログラムだとコード生成のランタイムライブラリで"/MT"にすれば、
他人のPCでも問題なく実行できてたんだけど、
今作成してるソフトウェアだと
"アプリケーションを正しく初期化できませんでした(0xc0150002)"ってエラーが出て実行されないらしい。

開発環境はVisualStudio2008でOSはWin7。

よくある対処法は相手にパッケージをインストールさせる、だけど
スタティックリンクとかで相手に負担かけないで実行させたいんだ。
心当たりある人いたら教えてください。
867デフォルトの名無しさん:2010/12/17(金) 17:40:25
インストールさせて解決するってんなら
dllつけときゃいいんじゃねーの?
868デフォルトの名無しさん:2010/12/17(金) 17:42:27
if(state == TITLE){
  title();
}
else if(state == PLAY){
  play();
}
を関数ポインタの配列を使って
func[state]();
とかに変えたらパッと見で何の関数が実行されたか分からないジャン
869デフォルトの名無しさん:2010/12/17(金) 17:44:45
可読性をとるか速度をとるかは大抵トレードトレランス
もっとも>>868のテーブルジャンプで可読性が落ちるとは思えないが
870デフォルトの名無しさん:2010/12/17(金) 17:45:18
stateが何十個もあればどのみちわからんから同じ
871デフォルトの名無しさん:2010/12/17(金) 17:45:28
トレードオフとフォールトトレランスがゴチャ混ぜになったorz
872デフォルトの名無しさん:2010/12/17(金) 18:02:31
ttp://ist.ksc.kwansei.ac.jp/~ibaraki/algo.htmlの
4.整列のアルゴリズムの
第p要素を選ぶSELECTとデータファイルselectdataを
それぞれプログラムソースselect.cとデータファイルselectdata.datとして同じユーザーディレクトリ
に保存して、cygwin上でコンパイル(gcc select.c)してもエラーは出ないですが、実行(a.exe)
とすると
6[main]a 4656_cygtls::handle_exceptionx:Error while dumping state(probably corrupted stack)
Segmentation fault (core dumped)
となります。
どうしたらいいでしょうか?
873デフォルトの名無しさん:2010/12/17(金) 18:09:27
ダンプファイルが生成されてるわけだからgdbで見てみればいいじゃない
874デフォルトの名無しさん:2010/12/17(金) 18:16:12
フェルミ分布をグラフにしたいんですが、どんなプログラム書けばいいですか?
875デフォルトの名無しさん:2010/12/17(金) 18:16:19
プログラム側で開こうとしてるデータファイル名よく見てみ
876デフォルトの名無しさん:2010/12/17(金) 18:16:55
fopenの返り値を見てない、fopen("selectdata", "r")、selectdata.dat
この符丁が意味するものは一つ・・・・・・・
877デフォルトの名無しさん:2010/12/17(金) 18:18:31
>>873
よくわかりません・・
>>875
selectdata.datじゃだめですか?
selectdata.c
selectdata
どれもダメでしたが・・
よくわかりません。
878デフォルトの名無しさん:2010/12/17(金) 18:22:26
めんどいんでプログラム側をselectdata.datにしたらどうよ
879デフォルトの名無しさん:2010/12/17(金) 18:37:53
main関数は実行されてるのか?printfを入れてどこまで実行されているか確認したのか?
880872:2010/12/17(金) 18:59:29
どうしたらいいでしょうか?
881デフォルトの名無しさん:2010/12/17(金) 19:05:47
>>880
自分が書いたプログラムが自分の想定通りに動いているのか、1行1行追いかけるんだ。
この作業を「デバッグ」と言う。
デバッグしないでまともに動くプログラムなんてほんとにちっちゃいものしかないよ。
882872:2010/12/17(金) 19:07:10
>>881
自分が書いたプログラムじゃないですw
参考書に書いてるソースの完成版がが公開されてるので、
それをコピペして実行して駄目だったんです。
883デフォルトの名無しさん:2010/12/17(金) 19:07:27
土方が作ればそうだろうよ。
884デフォルトの名無しさん:2010/12/17(金) 19:08:52
なんでprintfデバッグをやらない?
885デフォルトの名無しさん:2010/12/17(金) 19:09:54
>>882
先ずはフォルダオプションで「拡張子を隠す」のチェックを外すんだ。
886デフォルトの名無しさん:2010/12/17(金) 19:09:59
>>884
完成されたソースなのにデバッグも何もないと思いますが・・
いじるところない程単純なソースですし。例えば?
887デフォルトの名無しさん:2010/12/17(金) 19:10:59
>>886
まぁ、fopen()の戻り値くらい確認しておこうか。
888デフォルトの名無しさん:2010/12/17(金) 19:11:11
コードなりURLなりをなぜここにコピペしない
889デフォルトの名無しさん:2010/12/17(金) 19:12:24
まだ試すべきことがいくつもあるのに何もせずただ動きませんじゃな。仕事だったらダメな奴認定されて終わりだ。
890デフォルトの名無しさん:2010/12/17(金) 19:12:27
>>888
>>872にURL貼ってます。
891デフォルトの名無しさん:2010/12/17(金) 19:17:17
selectdataは?
892891:2010/12/17(金) 19:17:57
あった。失礼。
893デフォルトの名無しさん:2010/12/17(金) 19:18:50
>>891
はい。
11 8

7
5
1
12
8
3
13
0
4
20
10

ですね、これも>>872のリンク先にあります。
894デフォルトの名無しさん:2010/12/17(金) 19:20:06
fopenの引数が「selectdata.dat」かどうか確認する
データファイルの名前が「selectdata.dat」であることを確認する
cygwinなら大丈夫だとは思うが「登録されている拡張子を表示しない」がオフになっているか確認する
fopenの戻り値チェック
fopenの前後でprintfデバッグ
これを全て行うまでレスするな
895デフォルトの名無しさん:2010/12/17(金) 19:22:27
printfデバッグってただの確認作業で、例えバグがあっても
直しようがないですよね?何も手をつけるところがないというか。
896デフォルトの名無しさん:2010/12/17(金) 19:24:54
ひっへっ
897デフォルトの名無しさん:2010/12/17(金) 19:24:54
はぁ?
898デフォルトの名無しさん:2010/12/17(金) 19:25:08
釣りかよレス乞食がw
899デフォルトの名無しさん:2010/12/17(金) 19:26:14
>>898
釣りとかじゃなく、自分が作ったプログラムじゃないから
施しようがない、どうしたらいいかわからない状態、それよか
ここのスレの人に実行してもらって確認してもらいたい。
同じようにミスがでたなら、また考えるし。
900デフォルトの名無しさん:2010/12/17(金) 19:26:50
はっあっ
901デフォルトの名無しさん:2010/12/17(金) 19:29:41
小学生は算数ドリルでもやってろよw
902デフォルトの名無しさん:2010/12/17(金) 19:30:13
>>895
先ずは、実行モジュールのあるディレクトリでlsして、その結果を貼り付けるところからやってみよう。
903デフォルトの名無しさん:2010/12/17(金) 19:30:54
デバッグしたくないでござる!!!絶対にデバッグしたくないでござる!!!
904デフォルトの名無しさん:2010/12/17(金) 19:31:00
>>902
で出来ました?エラー出ました?それだけでもいいから教えてください。
905デフォルトの名無しさん:2010/12/17(金) 19:32:02
>>902
いってる意味が分らんwww
ここ入門編だよなぁ・・
906デフォルトの名無しさん:2010/12/17(金) 19:35:20
初心者の振りをして自称Cプログラマをからかうスレがあると聞いて
907デフォルトの名無しさん:2010/12/17(金) 19:39:59
質問者の振りをするカスがいるからな
908デフォルトの名無しさん:2010/12/17(金) 19:41:46
>>904
出ませんでした。教えてあげました。
909デフォルトの名無しさん:2010/12/17(金) 19:42:13
>>907
いや違いますって、まじで。
本当に困ってます。
皆さんがどうだったかどうかだけでいいから知りたい。
普通に実行してもらえば済むことなんで。
910デフォルトの名無しさん:2010/12/17(金) 19:45:44
>>908
実行結果どうなりました?
出力も教えてください、それ以降は自分で考えます。
911デフォルトの名無しさん:2010/12/17(金) 19:46:42
n = 11
A = 7 5 1 12 8 3 13 0 4 20 10
8-th smallest element = 10
912デフォルトの名無しさん:2010/12/17(金) 19:47:33
>>911
ありがとうございます。
コマンドは?

913デフォルトの名無しさん:2010/12/17(金) 19:47:40
開こうとしてるファイル名が違うのにいつ気づくんだろうw
914デフォルトの名無しさん:2010/12/17(金) 19:59:18
あああああ
915デフォルトの名無しさん:2010/12/17(金) 20:01:51
ふぁd
916デフォルトの名無しさん:2010/12/17(金) 20:08:20
ふつうにプログラム中にselect.datと書き直したら
実行できた・・

でも>>908
は書き直さなくてもエラー出なかったんだよな、どういうことだ・・
917デフォルトの名無しさん:2010/12/17(金) 20:11:46
プログラムを書き直さなくても
データファイルの方を名前合わせればエラー出ないが
918デフォルトの名無しさん:2010/12/17(金) 20:15:27
言われたことは何にもしないであほうかいな。
919デフォルトの名無しさん:2010/12/17(金) 20:28:58
キモいな
920デフォルトの名無しさん:2010/12/17(金) 20:33:20
でもプログラムの方では拡張子不明じゃないか。
921デフォルトの名無しさん:2010/12/17(金) 20:41:56
不明と無しは違う
922デフォルトの名無しさん:2010/12/17(金) 20:42:27
プログラミングやってると口滑らせたらダメだなぁって思うよな。
先生とかでもディスプレイの事を画面と発言した先生はいない。
専門用語以外を使うと異様に幼稚臭くなる。
923デフォルトの名無しさん:2010/12/17(金) 20:44:10
先生(笑)
924デフォルトの名無しさん:2010/12/17(金) 20:51:43
ディスプレイ(笑)
925デフォルトの名無しさん:2010/12/17(金) 20:57:10
別に画面て言っても何ら問題ないぞ
926デフォルトの名無しさん:2010/12/17(金) 20:58:58
アルゴリズムとはプログラムと同じ事である。
こういう発言する先生も一人もいなかったわ。
何かパソコンに携わってると物事を遠回しに
表現したくなるよね。
927デフォルトの名無しさん:2010/12/17(金) 21:05:37
>>925
100発100中でディスプレイだったけどな。
画面というと透明のカバーであって出力という意味では意味合いが違ってくるらしい。
毎回ドキドキしながら先生の発言カウントしてる。
928デフォルトの名無しさん:2010/12/17(金) 21:10:17
これがゆとりか
929デフォルトの名無しさん:2010/12/17(金) 21:14:23
コンソールに出力とかウインドウに描画って言わないと分かりにくいだろ
930デフォルトの名無しさん:2010/12/17(金) 21:18:55
コンソーメって何ですか?
931203:2010/12/17(金) 21:22:13
先生(笑)
932デフォルトの名無しさん:2010/12/17(金) 21:37:01
>>927
そんな些細な事でしか人をけなす事が出来ない。
恥ずかしい人間であると、公言しているんですね。
933デフォルトの名無しさん:2010/12/17(金) 21:53:27
意味合いが正しく伝われば言葉は何でもいいよ。
画面、コンソール、出力、アウトプット。テレビ…はない。
934デフォルトの名無しさん:2010/12/17(金) 22:07:35
「先生がディスプレイを画面と言えば、
私が先生よりも優秀であることが証明され…。 …はやく言え!」

先生「…で、これで画面に…」
私「よっしゃーーーーーーーーーー!!! 俺の方が優秀だっ!!!」

ってことでしょ?


なんか悩み無さそうで羨ましいです(苦笑
935デフォルトの名無しさん:2010/12/17(金) 22:08:39
以前マトリックスと呼んでいる輩がいてだな

どうやら前任者が黒背景に緑文字の設定にしてたみたいで
緑文字が流れていく様で映画のマトリックスを連想したらしい
936デフォルトの名無しさん:2010/12/17(金) 22:19:05
モニターはさすがにないよなw
恥ずかしさが尋常じゃない。
937デフォルトの名無しさん:2010/12/17(金) 22:36:51
>>936
映像業界では普通に使いますよ。
あと重工業の監視画面なんかもモニターと呼ぶのが一般的。
938デフォルトの名無しさん:2010/12/17(金) 22:41:11
>>937
単純過ぎて恥ずかしくないですか?日本には詫び錆びの精神があるし
ダイレクトな言葉は嫌われますよね。
939デフォルトの名無しさん:2010/12/17(金) 22:44:12
モニターはダイレクトな言葉で、画面はダイレクトな言葉じゃないとか? どういう基準だよ?
940デフォルトの名無しさん:2010/12/17(金) 22:49:01
まあ厳密に言うと、モニターは監視専用みたいな意味合いがあるので。
入力と出力が完全に別系統で、その内出力専用の監視目的に使われるものを呼ぶね。
941デフォルトの名無しさん:2010/12/17(金) 22:52:09
入力と出力の違いが分かりにく過ぎないか。
ファイルにデータを書き込みするとき入力と出力かどっちか分からない時がある。
942デフォルトの名無しさん:2010/12/17(金) 23:02:19
おまいらの抽象概念はどうでもいいからCの話をしろ。

>>941
書き込むほうが出力で、読み込むほうが入力だ。
あんたの身体についているキャベツ大の代物も、
目や耳で入力した情報を手足や喉を使って出力しているわけだ。
943デフォルトの名無しさん:2010/12/17(金) 23:02:37
モニターは>>940のいうように監視(確認)するって意味合いがあるからな
ネトワク系でもパケットモニターとかモニタリングとかいうだろ?
944デフォルトの名無しさん:2010/12/17(金) 23:06:39
エキスパートCプログラミングってどう?
945デフォルトの名無しさん:2010/12/17(金) 23:09:02
入力した情報はプログラム上に出力されるんじゃないんですか?
プログラムが実行される前に出力という事は行われているのでは?
946デフォルトの名無しさん:2010/12/17(金) 23:11:13
どこを基準に観測するかによって入力/出力は変わる
947デフォルトの名無しさん:2010/12/17(金) 23:16:09
>>944
まだ出版されてることから察しろ
948デフォルトの名無しさん:2010/12/17(金) 23:18:35

           「C実践プログラミング」 でCの文法、make、デバッグ技法など、基礎を習得

                                ↓

     「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する

                                ↓

「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得

                                ↓

    「C言語によるオブジェクト指向プログラミング入門」 で実践的な大規模プログラムの作り方を学ぶ

                                ↓

                              神の誕生
949デフォルトの名無しさん:2010/12/17(金) 23:19:58
シェルコマンドが全く分からん。
>とか<とか>>とか意味不明。
何かわかりやすいサイト無いですかね?
Cシェルの分かりやすいサイト教えて下さい。
950デフォルトの名無しさん:2010/12/17(金) 23:54:34
>>949
cshでggrks
951デフォルトの名無しさん:2010/12/18(土) 00:05:28
教えてくれ
16進数の小文字を大文字に変換するコードの一部らしいんだが、意味がわからん

int main(){
int moji ;

scanf (%d,&moji);
moji -10+‘A’;
↑何やってんのこれ?
}

952デフォルトの名無しさん:2010/12/18(土) 00:14:05
>>951
「16進数の小文字を大文字に変換する」
953デフォルトの名無しさん:2010/12/18(土) 00:15:18
>>951
写し間違いだろうけど、それは意味無いよ
954デフォルトの名無しさん:2010/12/18(土) 00:28:01
>>951
asciiコードでggrks
955デフォルトの名無しさん:2010/12/18(土) 00:36:34
ほっほっ
956デフォルトの名無しさん:2010/12/18(土) 00:37:52
なんかどんどんわけわからなくなってきたので、思い切って最初から勉強しなおそうと思う。
教科書は猫cでいいよな?
957デフォルトの名無しさん:2010/12/18(土) 00:41:44
いいよ
958デフォルトの名無しさん:2010/12/18(土) 00:42:46
猫Cは今でもたまに見るわ
959デフォルトの名無しさん:2010/12/18(土) 01:00:18
猫は読み返す分なら良い本。
960デフォルトの名無しさん:2010/12/18(土) 04:35:05
そうか、あんなもん読んでるからここの連中は馬鹿ばっかりなのか。なんだか納得。
961デフォルトの名無しさん:2010/12/18(土) 05:07:23
石原都知事乙
962デフォルトの名無しさん:2010/12/18(土) 05:11:59
猫Cをあんなもんって言えるからには、自分もそれを読んだ馬鹿ってことか
読んでないであんなもんって言ってるならもっと馬鹿だしな
963デフォルトの名無しさん:2010/12/18(土) 06:27:24
ふっほっ
964デフォルトの名無しさん:2010/12/18(土) 10:39:57
C++を0の状態から勉強している者です。

「ロベール読め」

って事でロベールの入門講座を読みながら学んでいるのですが、
p144のオーバーロードの項で詰まりました。
本の内容を見比べ、ソースを打ち込んで試しているのですが、
「関数 'double abs(double)' は既に本体を持っています。」とエラーが出ます。
(関数名を変えれば勿論動きます)

http://codepad.org/0i4ByGfl
が自分の書いたソースです。

私はVC++2010を使用しているのですが、
ロベールは2008を前提として書いてるようで、そこら辺の違いもあるのでしょうか?
965デフォルトの名無しさん:2010/12/18(土) 10:43:56
スレタイ読めるくらいに日本語勉強するのが先
966デフォルトの名無しさん:2010/12/18(土) 10:51:06
++と比べたCの利点を述べようぜ
967デフォルトの名無しさん:2010/12/18(土) 10:55:01
よそでやれ
968デフォルトの名無しさん:2010/12/18(土) 10:56:11
すいません、スレタイ勘違いしていました。
出直します。
969デフォルトの名無しさん:2010/12/18(土) 12:06:36
ふっふっ
970デフォルトの名無しさん:2010/12/18(土) 14:57:20
ふっひっ
971デフォルトの名無しさん:2010/12/18(土) 14:58:07
むっふっ
972デフォルトの名無しさん:2010/12/18(土) 15:02:06
糞スレ
973デフォルトの名無しさん:2010/12/18(土) 15:03:19
おウンチ
974デフォルトの名無しさん:2010/12/18(土) 18:45:56
975デフォルトの名無しさん:2010/12/18(土) 19:50:41
>>2の予測は正しかった
976デフォルトの名無しさん:2010/12/18(土) 21:13:01
ある本でメモ帳みたいなテキストエディタをつくるというのがあり、それのファイルの読み込みで
ファイルサイズを取得し、それに応じてメモリを確保して読み込む
また、書き込みで
書き込む内容のサイズを取得し、それに応じてメモリを確保して書き込む
というのがありますが、これは安全といえる方法なんでしょうか?
何ギガというファイルを読み書きしようとしたらメモリを確保できずに大惨事になりそうで怖いのですが
977デフォルトの名無しさん:2010/12/18(土) 21:16:15
ファイルがでかいと、そもそも標準でファイル読むことすら安心して出来ません
978デフォルトの名無しさん:2010/12/18(土) 21:19:41
書き込みでもメモリ確保が必要なのか。
979デフォルトの名無しさん:2010/12/18(土) 21:24:25
emacsとかオンメモリでデータもってるんじゃないの?
昔windowsのemacsででかいファイルを読み込もうとしたら固まったけど、
DOS時代からあるエディタは、オンメモリで処理してないからストレスなく
編集できてた。
980デフォルトの名無しさん:2010/12/18(土) 21:25:57
ええとアレだ
ファイルマッピングとかでアレしろ
981デフォルトの名無しさん:2010/12/18(土) 21:26:37
>>977
そうだったんですね ありがとうございました

>>978
そこは間違えました すいません
982デフォルトの名無しさん:2010/12/18(土) 21:29:31
うっほっ
983デフォルトの名無しさん:2010/12/18(土) 22:13:54
ふっすっ
984デフォルトの名無しさん:2010/12/18(土) 22:17:26
むっひっ
985デフォルトの名無しさん:2010/12/18(土) 22:21:20
ぶっひっ
986デフォルトの名無しさん:2010/12/18(土) 22:23:43
987デフォルトの名無しさん:2010/12/18(土) 22:26:55
>986
C言語の将来はJ#の末路ということ?
988デフォルトの名無しさん:2010/12/18(土) 22:35:26
C言語の代わりになる高級アセンブラってなかなか出ないな
989デフォルトの名無しさん:2010/12/18(土) 23:09:39
D
990デフォルトの名無しさん:2010/12/18(土) 23:32:31
次スレ立てます
991デフォルトの名無しさん:2010/12/18(土) 23:33:50 BE:378684858-S★(532000)
次スレ立てました
C言語なら俺に聞け(入門編)Part 75
http://hibari.2ch.net/test/read.cgi/tech/1292682816/
992デフォルトの名無しさん:2010/12/18(土) 23:34:30
2つの整数xとyを入力として受付、xがyで割り切れるときにはxをyで割った答えを、そうでないときにはxをそのまま出力せよ。
という問題があって、このような文でコンパイルしたら「12行目」で記述エラーを発見しました。「identifier」を付け忘れています。とでました...。

また授業も初回で、まったくわからないのでよかったら意味と解決方を教えてください。よろしくお願いします。


#include <stdio.h>
int main(void)
{
int x,y;
scanf("%d",&x);
scanf("%d",&y);
if(x%y==0);
{
printf("%d\n",x/y);
}
else
{
printf("%d\n",x);
}
return(0);
}
993デフォルトの名無しさん:2010/12/18(土) 23:39:32
>>992
ifのあとのセミコロンはいらない。
994デフォルトの名無しさん:2010/12/18(土) 23:39:57
ifのセミコロンが余計
995デフォルトの名無しさん:2010/12/18(土) 23:40:32
>>993

ほんとうにありがとうございます!!
やっと解決できましたorz
996デフォルトの名無しさん:2010/12/18(土) 23:42:57
if()の後に;がくっついているでおじゃる
997デフォルトの名無しさん:2010/12/19(日) 00:12:15
>>991
乙梅
998デフォルトの名無しさん:2010/12/19(日) 00:25:11
Cでプログラミングするには人生は短すぎる
999デフォルトの名無しさん:2010/12/19(日) 00:34:46
あと少しで人間の寿命800年にする技術が開発できるめどが立ってるんだってさ
800年もCなんか書き続けたら気が狂ってしまうよな
1000デフォルトの名無しさん:2010/12/19(日) 00:37:36
世の女性が身も心も若々しいなら素敵だが
ヨボヨボや妖怪を量産するくらいなら死んだほうがマシ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。