まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。 質問する前には最低限検索を。 GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目) ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。 エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。
自己解決しました
自己解決しました
5 :
デフォルトの名無しさん :04/07/24 16:03
自己解決しました
unsigned char c = 257; cが1になる事は、規格で保障されてますか?
新スレ乙
第一群 「頭悪すぎ」「池沼」「バカ」「馬鹿」「ばか」「アホ」「あほ」「まぬけ」「間抜け」 「アフォ」「くず」「クズ」「アフォ」「キモイ」「低脳」「タコ」「クソ」「死ね」 「餓鬼」「バッカ」「香ばしい」「ゲラゲラ」「(プ」「プゲラッチョ」 「莫迦」「逝け」「キモい」「キモイ」「消えろ」「失せろ」「晒し上げ」 第二群 「函数」「scanf」「gets」「goto」「コーディングスタイル」 「コメント」「セキュア」「セキュリティ」 第三群 「空白あけろ」「空白あけるな」「空白のあけかた」「空白の空け方」「空白空けるな」 「空白入れろ」「空白入れない」 「ボ○ケ」「ぼけぇ」「ヴぉけ」「ぼけ」「ボケ」 第四群 「;-)」 「;)」「すぎー」「初歩的な質問」「初心者です」「初心者」 「;-;」「異端」「脳内変換」「UNIX厨」「M$」「初心者的な質問」「のー?」 「日下部陽一」「勝利」「敗北」「妄想」「素人」 第一群:言葉自体の有害度が大きい。 第二群:言葉自体は有害ではないものの、使う人の技量や目的によってはフレームの原因になる。 第三群:荒らしが好んで使う言葉。 第四群:その他。主観で分類してください。
11 :
デフォルトの名無しさん :04/07/24 16:15
立て直した方がいいね。
∵ ∴ ∴∵∴ ∴
∴∵∴∵∴∵∴∵∴∵∴∵∴∴∵
∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵
∴∵∴∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴
∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵/ ⌒ヽ∴∵∴∵∴
∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵| | |∴∵∴∵
∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∪ / ノ∴∵∴∵∴∵
.. ∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵| ||∵∴∵∴∵
.∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∪∪∴∵∴∵∴∵
.∵∴∵∴∵∴∵∴∵:(・)∴∴.(・)∵∴∵∴∵∴∵∴∵∴∵∴∵∴
∵∴∵∴∵∴∵∴∵∴/ ○\∵∴∵∴∵∴∵∴∵∴∵∴
..∵∴∵∴∵∴∵∴∵/三 | 三ヽ∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵
. ∴∵∴∵∴∵∴∵ | __|__ │∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵ tanasinn
.∵∴∵∴∵∴∵∴∵| === │∵∴∵∴∵∴ 【注意点】 -------
.∵∴∵∴∵∴∵∴∵\___/∵∴∵∴ ・問題はしっかりと解いてもらう方にわかりやすいように
..∴∴∵/ ̄.. \∴∵∵∴∵∴∵∴∵∴∵∴問題文などの省きはやめ、エラーなどは適切に書きましょう
∴∵∴/ ,. i ∵∵∴∵∴∵∴∵∴∵∴∵ 全文を書いてしまうか、分かりやすくまとめましょう。
∴∵∴| /.| |.∵∵∴∵∴∵∴∵∴∵∴∵∴
∵∴| | :| |.∵∴∵∴∵∴∵∴∵∴∵∴∵∴ ・後になって問題につけたしをするのはやめましょう。
∴| | |::| |.∵∴∵∴∵∴∵∴∵∴∵∴∵ 解いてもらっている方に失礼になってしまいます。
∴| | |∵U∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴
| | |∵∴∵∴∵∴∵∴∵∴∵ ・計算問題は必ず数式自体をあげ、どのような計算を
/ / / ∵∴∵∴∵∴∵∴∵∴∵ ∵ するのかくわしく説明してください。
/ / / ∴∵∴∵∴ ----------------------
.しし’ ∵
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html 【歴代スレは
>>2-10 】
自己解決野郎って前スレ消すのが目的だったんだろうか?
こんな糞タイトルと
>>1 の内容では駄目だ。
立て直してくる。
しかし前スレも同じタイトルだった:D
>>1 は全然違うだろ。
前スレへのリンクやC FAQへのリンクを勝手に
>>2 にしやがって。
ついでに言えば前スレ立てたの俺だ:$ 一部テンプレ貼りミスったけど誰にも指摘されなかった:[
>>2 じゃなくて
>>3 だ。しかも1!=3だろうから意図的に削りやがったな。
ちなみに前スレからコンパイラリンクにVSTKを追加したんだが、それにも誰も触れなかった:^) 特にライセンス上の問題も無いし、良いコンパイラだと思うんだけどな:S
おっとVSTKじゃなくてVCTKだ、すまんな
(1=3)!=2です。
>>23 そういう書き方をしてると正体不明のバグに悩まされることになるぞ。
評価されるのは
3!=2だから。
自分の頭もバグってるな。 1=3の時点で左辺値異常でコンパイル止められるか。
プ
新スレ立ったので 以降このスレは放置&削除で
age
避難所か喧嘩専用スレッドにするか。
Cでインクリメンコしたときにキャリーフグリの変化を調べる方法はありますか?
emit
っていうか 標準Cにはインクリメンコもキャリーフグリも存在しない。
誰も標準的にとは言って無いだろ。 質問よく読めよ。ばか
emit
自己解決しました
ソレはヨカッタ!
喧嘩専用スレッド決定
バカの相手は疲れる
42 :
デフォルトの名無しさん :04/07/24 18:53
unsigned char c = (unsigned char)257; c=1を誰か保証してくれませんか?
>>42 俺の手元の本では
unsigned→unsigned(変換先の方がサイズが小さい場合)だと、変換元の数 % (1 + 変換先の型の上限値)
って書いてある。
42の例を当てはめると257 % (1 + UCHAR_MAX)
仮にUCHAR_MAXが255だとすれば257 % 256で1になると思うけど。
________. | ・・・「からけ」? ||| | \____ __ ||| | )\ ∨ ||| 空 気. <⌒ヽ ヽ ||| \ ( ´ー`) ∧∧ |||_________V( 丿V^ ●Д゚,,) |,,| |,,| ヽ ( と ,) ノ ) | |~ し`J,,.
mandokuse('A');
自己解決しますか
自決しますか
賛成多数により自己可決しました。
50 :
デフォルトの名無しさん :04/07/28 14:37
あげるべ
このスレは削除依頼されています
でも本スレの流れ早いし再利用できるだろ
再利用の必要も無い。
本スレごと削除しちゃっていいんじゃ?
scanf gets 専用スレ
DATTE やってらんないじゃん sscanf より scanf でしょ gets LOVE LOVE モードじゃん
からあげ
60 :
デフォルトの名無しさん :04/08/03 01:51
うまうま
int *p; p = (int*)malloc(sizeof(int) * 50); for(int i = 0; i < 50; i++) scanf("%d", &p[i]); scanfの部分で不正アクセスとなるんですが、どんな違反ですか?
62 :
デフォルトの名無しさん :04/08/03 02:38
scanfを使うからだよボケ
scanf("%d", p[i]);
不正にアクセスした違反ではないのかね?
65 :
デフォルトの名無しさん :04/08/03 03:41
そのとおり
ここはふがいないインター納豆ですね
67 :
デフォルトの名無しさん :04/08/03 04:22
下記のような動作をする文字数をカウントするプログラムで、 scanf で文字列を取得するとスペースが入った場合に正確に取得できません。 getchar を使うと一文字しか取得できないですし…。 他に、どのような方法が考えられますか? >aiu kakiku a: 2 i: 2 u: 2 k: 3
>>67 char buf[100];
scanf("%99[^\n]", buf);
或いは、
char buf[100];
fgets(buf, sizeof(buf), stdin);
char * p = buf + strlen(buf) - 1;
if (* p == '\n') {
* p = '\0';
}
マジレスされた(鬱
> * p = '\0'; きもーーーーーーーーーーーーーーーーーーーーーー
71 :
デフォルトの名無しさん :04/08/03 07:52
っていうか if (* p == '\n') { は成立するのか?
>>71 fgetsは改行もバッファに入れるから成立する。
この流れでscanf()を使う辺り…
fgetsでの解と併記だから、バ カ が喚かないように気を使ってるだけだろ。
入力ストリームが EOF だったら strlen(buf) - 1; でこけるんじゃないかしら?
76 :
デフォルトの名無しさん :04/08/03 19:10
POINT a[100]; POINT b; と定義したとき aに入っているn番目のxとyの値をbにコピーしたいとき b.x = a[n].x; b.y = a]n].y; としなければいけないのでしょうか? ポインタを使ってbがaのn番目のアドレスを指すようにできないでしょうか?
>>76 b.y = a[n].y;
の間違いです,すいません.
環境はVC6です.
b=a[n]
n番目の要素の代入なら、 b = a[n - 1]; Cには参照はない。 受け側をポインタ変数にするなら、 POINT *b; b = a + n - 1;
80 :
デフォルトの名無しさん :04/08/03 19:19
>>78 ,79
すいません,CとC++の境目があまりわかって無くて...
受け側をポインタ変数にしたとき
aが構造体のメンバだったときはどうすればよいでしょうか?
例えば,
typedef struct{
POINT a[100];
} HOGE;
HOGE hoge;
POINT *b; //受け側
このようなとき
同様にbがaのn番目のポインタを指すようにしたいときは
どうすればいいのかわかりませんでした.
いろいろやってみましたがエラーが...
そのまんまだけど… 分かり易い方でどうぞ b = hoge.a + n - 1; b = &hoge.a[n - 1];
b = &(n - 1)[hoge.a];
ありがとうございます,とりあえず動きました.
84 :
デフォルトの名無しさん :04/08/04 19:22
自動でバックグラウンドでデフラグするプログラムはどう書けばいいですか。 止められないファイルサーバーの断片化を防ぎたいのです。
スレ違いどころか板違い。しかるべきOSの板池
WINDOWSXPです。逝ってきます。
88 :
デフォルトの名無しさん :04/08/05 08:55
struct hoge{ ・・・ } orz; と typedef struct hoge{ ・・・ } orz; ってどう違うんですか?
>>88 前者はorzはstruct hoge型の変数。
後者のorzはstruct hoge型の別名でstruct hogeの代わりに使える。
ぶっちゃけ使い方に違いはないよな
あるだろ。。実態と参照じゃないか。
ぶっちゃけ意味不明
説明してる89が哀れだな
ありがとうございました><
質問するな 回答するな
103 :デフォルトの名無しさん :04/08/11 17:46
任意の数値を逆に並び替えるアルゴリズムを教えてください
1234→4321
852→258
ってな風に・・・
頭弱くて素でわからん
104 :103 :04/08/11 17:46
age忘れた
105 :103 :04/08/11 18:08
漏れが馬鹿すぎた・・・わかりました。すみません。
106 :デフォルトの名無しさん :04/08/11 19:04
>>103-105 なかなか面白い奴だな。
...そんなに面白いのか?!
質問するな 回答するな
100 :
デフォルトの名無しさん :04/08/15 17:52
100
101 :
デフォルトの名無しさん :04/09/15 14:36:19
ぬるぽ
質問するな 回答するな 書き込みするな
Cでファイル入力を行うとき, 100,200,300 のような書式でデータが並んでいる場合fscanfを使えば fscanf(pFile,"%d,%d,%d",&data1,&data2,&data3); のように簡単に分割して取得できるのですが, char str[128]="100,200,300"の用に変数にデータが入っていた場合も 同様に簡単に分割して取得できないでしょうか?
>>104 質問するな
回答するな
書き込みするな
>>105 質問するな
回答するな
相手するな
書き込むな
息をするな
> 息をするな なんかすげーちっちゃいころに言ったことあるような気がしてきた
>>107 質問するな
回答するな
相手するな
書き込むな
息をするな
懐かしむな
ワラタ
110 :
デフォルトの名無しさん :04/09/16 02:47:07
hade
1+(1+2)+(1+2+3).....(1+2+3+4+5+6+7+8+9+10)を計算するプログラムをお願いします。 テストで出たけど分からなかったorz
114 :
デフォルトの名無しさん :04/09/16 18:25:58
しまった アゲ
>>114 ネタスレだ。ここは。
質問するな
回答するな
相手するな
書き込むな
息をするな
ネタすれなんてつくんないでよー
>>113 int n;
n = 1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+5)+(1+2+3+4+5+6)+(1+2+3+4+5+6+7)+(1+2+3+4+5+6+7+8)+(1+2+3+4+5+6+7+8+9)+(1+2+3+4+5+6+7+8+9+10);
>>116 文句を言うなら削除依頼出したら?
重複スレだから通るだろう
質問するな 回答するな 相手するな 書き込むな 息をするな
121 :
デフォルトの名無しさん :04/09/18 00:58:43
ぬるぽ
122 :
デフォルトの名無しさん :04/09/18 01:24:11
このスレもスト決行だ
フラグを立てる場合は frag |= 0x2; みたいな感じですが 同じフラグを降ろす?場合は frag &= ~0x2; で良いのでしょうか
>>126 ありがとうございます、おかげで安心しました
#include<stdio.h> int main(void) { union udt{ int a; char c; }; union udt uni; uni.c = 'a'; printf("int a=%d char c=%d",uni.a,uni.c); return 0; } 出力結果 int a=353 char c=97 なぜaが353になんでしょうか?教えて下さい。
#include<stdio.h> int main(void) { union udt{ int a; char c; }; union udt uni; printf("int a=%d char c=%d",uni.a,uni.c); return 0; } 何も入れなくても、 int a=307 char c=51 と出ました。 ............こんなの何かの仕様じゃないですよね?
int main(void) { int a; printf("int a=%d", a); return 0; }
aの値が未定義と言われましたが、1を出力しました。 何でなんでしょうか?
割り当てられてないメモリをintサイズで取得して 初期化してないのでそこにあったデータが1だっただけでしょ
まて、ここはネタスレだ。 いいか、ここに質問するのも解答するのもネタでなければならないんだぞ。
>>128-131 ローカル変数の中身はstatic/グローバル変数と違って0で初期化されない。
変数の中に何が入っているかは131のメッセージの通り「未定義」。
それででたらめな数字が出る。
>132>134 ありがとうございます。納得しました。
く! 135の意図が読めん!何をする気だ!?
耐性菌作り。
138 :
デフォルトの名無しさん :04/09/18 19:45:28
永久ループはfor (;;)と書くとおもうのですが、while (1)と書く人がいます。 やめてくれませんかねえ。
for (;;) の方が変だろ?
for (;;) キモイ
#define LOOP for(;;) LOOP{ /* 適当な処理 */ }
永久ループなんか書くな。
for(1;1;1) {;} これで文句ないだろ
>>143 質問するな
回答するな
相手するな
書き込むな
息をするな
>>138 >やめてくれませんかねえ。
確かに
>>138 のような、
定数の論理式すら理解できない奴が働く職場では
止めるべきかも知れないな・・・
最適化の存在を知らないで、チリのようなオーバーヘッドを気にする旧世代の人間かもよ。
チリもつもればヤマト映画化になるんだよ
>>148 いや、これが最後ですって言いながら何本も作るんだよ。
#いかん、マジレスしてしまった
for(int i=0;i<9999999999;i++){}
>>150 9999999999はintだとオーバ風呂
大葉風呂?香りがよさそうだな。
大葉と朴葉の区別が出来ない
>>153 はフランス人。
>>154 そうそれ。
いやぁ、連想してくれて助かった。
生き字引ってやつ?
確かに朴葉は大きいけどねぇ。 #詳しくは日下部味噌醤油醸造のHPで(ぉぃ
ム板における日下部は、常に別の意味を持つことを知らんようだなm9(・∀・)
ということにしたいのですね。
LSI C-86 Ver. 3.30c 試食版についてですが、 これのintやlong intなどの表現範囲をどなたかご存知ありませんでしょうか。
160 :
デフォルトの名無しさん :04/09/19 18:23:41
int a=1; int b=3; int c=a/b*b; これで実行するとcは0になってしまいます doubleやfloatを使わずにcを1にすることは可能でしょうか? c=a/b*bの式の変数の順番や演算子は変えずにお願いします
質問するな 回答するな 相手するな 書き込むな 息をするな
int a=1; int b=3; int c=!(a/b*b); ( ´,_ゝ`)
>>163 お前のようなやつがいるから調子にのって質問するやつが出てくるんだドアホ
166 :
デフォルトの名無しさん :04/09/19 21:05:16
VisualCでmmsystem.hとwinmm.libをもちいてwavファイルを再生する もっとも簡単な方法ってどういう関数使うんですか?? MFCでプログラム書いてるんですが、ぼたんは1つでそのボタンを押せば、 wavが流れるようにしたいんです。 (例えば、そのプロジェクトフォルダに○○.wavってファイルをおいといて、 そのファイルを再生するような)
おまえら!
169 :
デフォルトの名無しさん :04/09/19 22:17:40
#include<stdio.h> main() { float a[2],x[2]={1,3}; int k,n,t; for(k=0;k<2;k++){ t=0; for(n=0;n<2;n++){ t=t+x[n]*k*n*3.14159; } a[k]=t; } for(k=0;k<2;k++){ printf("X[%d]=%f\n",k,a[k]); } return(0); } 実行結果 X[0]=0.000000 X[1]=9.000000 ↑小数点以下0になるんだけど どうやったらX[1]=9.4247…って出るの?
>>169 このスレでマトモなレス期待されてもなぁ
>>169 氏ね。ここで質問するな。
(tをfloatで宣言しときな)
(・ω・*)ありがとん
>>171 質問するな
回答するな
相手するな
書き込むな
息をするな
NGワード質問するな 回答するな 相手するな 書き込むな 息をするな
池沼ってなんですか?
Ruby!!!!!
の指輪
178 :
デフォルトの名無しさん :04/09/21 02:20:40
ぬるぽ
寺尾聰
180 :
デフォルトの名無しさん :04/09/21 03:22:58
VisualCでファイルを選択して読みこんだりできますよね? 例えば、あるフォルダFolder1にName1.txtとかName2.txtとかってあるのを 1つ選択するみたいな。 じゃあ、こんなことできますかね? あるFolder1に3つのテキストファイルa.txt, b.txt, c.txtに対して a.txtをひらくと残りのb.txt, c.txtも読みこめるようなことってできます?? フォルダFolder1, Folder2, ...というふうにフォルダがたくさんある中で、 これら全てのフォルダの中にa.txt, b.txt, c.txtといった3つのファイルがあるとします。
181 :
デフォルトの名無しさん :04/09/21 03:44:29
>>180 何歳?男の子?女の子?お友達多いほう?少ないほう?
>VisualCでファイルを選択して読みこんだりできますよね? 同意を求めるな。 >例えば、あるフォルダFolder1にName1.txtとかName2.txtとかってあるのを >1つ選択するみたいな。 「みたいな」なんだ。文章を途切れさせるな。 >じゃあ、こんなことできますかね? だから同意を求めるな。 >あるFolder1に3つのテキストファイルa.txt, b.txt, c.txtに対して >a.txtをひらくと残りのb.txt, c.txtも読みこめるようなことってできます?? a.txtを開くことができたのなら残りも開けるか試してみろ。 >フォルダFolder1, Folder2, ...というふうにフォルダがたくさんある中で、 >これら全てのフォルダの中にa.txt, b.txt, c.txtといった3つのファイルがあるとします。 なかったらどうするんだ。 それ以前に、 質問するな 書き込むな 息をするな
Ruby >>>>>>>>>>>>>>>>>>>>>> C言語
185 :
◆74b43bwcDM :04/09/21 05:54:53
孤独が好きな俺さ、気にしないで行っていいよ 気が変わらぬうちに早く消えてくれ
2進数表示ってないんですか?
C言語のシーについて
スィーだバカ
フルートの最低音 C が出ないんですが
>>193 最低音のCはもともと出にくい音ですが、原因はふたつ考えられます。
ひとつ目はアンブシュァと息の使い方が安定していない場合です。
この場合はG位から初めて半音づつ下がりながらロングトーンを練習してください。
もう一つは右手小指でふたつのキーを押えないといけませんが、小指は弱い指なので
完全に押えられていない場合です。友達などに見てもらうと良いでしょう。E♭のキーに
小指が触れていないかも要注意です。また、リングキーをお使いなら右小指を伸ばした
時、薬指と中指にわずかな隙間が開く時がありますので、これにも注意してください。
楽器の調整が悪いとふたつのキーを押しても一方に隙間が開く場合があるので
楽器屋さんに相談したほうが良いかもしれません。
195 :
ぬこ :04/09/28 22:07:03
IPヘッダの構造体を使うとおかしくなるにゃん・・・ (´・ω・`)ショボーン struct iphdr { #if __BYTE_ORDER == __LITTLE_ENDIAN unsigned int ihl:4; unsigned int version:4; #elif __BYTE_ORDER == __BIG_ENDIAN unsigned int version:4; unsigned int ihl:4; #else #error "__BYTE_ORDER is undefined" #endif u_int8_t tos; u_int16_t tot_len; u_int16_t id; u_int16_t frag_off; u_int8_t ttl; u_int8_t protocol; u_int16_t check; u_int32_t saddr; u_int32_t daddr; }; これが問題の構造体だにゃん どうもメモリのアライメントが起きているみたいで、ずれるにゃん ip->tot_len がオフセット6、7になるにゃん・・・ (´・ω・`)ショボーン
>>195 素直にihlとversionあわせてu_int8_tで読み込んで
後でバラすとか。
printf("%13d ← %s",ans,ss); とすると%sのところが(NULL)になりますが、 printf("%13d ← ",ans);printf("%s",ss); と分けると普通に表示してくれます。なぜでしょうか。
199 :
デフォルトの名無しさん :04/09/29 15:44:42
ansがintより大きな型だから。
>>199 %sがNULLになるんでね?
>>198 ssがNULLだったりNULLじゃなかったりするコード書いてるからだろ
201 :
hana :04/09/29 18:02:43
for(i=0;i<=X_NO;i++) for(j=0;j<=Y_NO;j++){ if( a > b) printf("big\n"); }else if ( b < a ){ printf("small\n"); } } このプログラムだと、for文が画像を一点ずつ読んでいるため SMALLがいくつも表示されてしまうのですが、 これを ひとつの表示にまとめたい場合 どうすればいいですか?
オレオレ。オレに聞け。
FILE* fp=fopen("print.c","wt"); fprintf(fp,"printf(\""); for(i=0;i<=X_NO;i++) for(j=0;j<=Y_NO;j++){ if( a > b) fprintf(fp,"big\\\n"); }else if ( b < a ){ fprintf(fp,"small\\\n"); } } fprintf(fp,");\n"); fclose(fp); を実行して、ソースから print.c をインクルード
205 :
どなたかコードを・・ :04/09/29 23:41:24
C言語初心者です。 すいませんどうか助けてください。 ファイルから読み込みそれを別にファイルに書き込む基本的なことしてるんですが、 条件がありまして、 ①fgetc(fp)で順次読み込んだ文字がリターンキーなら次に文字を見る。 ②その文字が 0 ~ 9 か 'ー' ~ '九' ならファイルをcloseする。 という仕様なんですが文字列操作がうまくいきません。 かな文字や関数字の判定ができません。 イメージとしては while ((ch = fgetc(fp)) = EOF) { fputc(ch,fwp); if (ch == 13) ← リターンキーのasciicode { ch = fgetc(fp); ← これで次にすすめているのか怪しい 以下不明・・ } } すいませんが文字をすすめたり漢数字の'一'判定のために どのようなコードを書けばよいかわからないので どなたか教えてください・・
206 :
205 :04/09/29 23:45:31
while ((ch = fgetc(fp)) != EOF) でした。すいません
208 :
デフォルトの名無しさん :04/09/30 02:26:14
cmathとmath.hの使い分けについて教えてください
>>208 cmathはC++のヘッダ。関数がすべてstd名前空間に内包される。
要はスレ違い
ぬるぽするならイマノウチ
ガッ
グローバル領域で256M以上使用しようとすると、 「トータルイメージサイズが最大値 (268435456) を越えています」 とエラーが出てしまいます。(Windows XP VC++) もし最大値を変更する方法があれば教えて下さい。
malloc
VC++のmallocは内部でHeapAllocを呼んでいるからVirtualAllocを直接呼んだ方が良い。 数MB以上確保したいときにはHeapAllocよりVirtualAllocとMSDNに書いてある。
むしろ、なんで256MBもの変数があるのか?中身が気になる。
>>215 仕事で膨大な列車データと駅データを一度に保持しなければならない状況がありまして・・・
VirtualAllocを直接呼ぶことで対応したいと思います。 ありがとうございました。
>>217 列車本数は兎も角駅の数なんて高が知れてる。
つーかそれ以前に設計思想が根本的に間違ってる悪寒。
#include <stdio.h> main () { char ch = 0xff; if (ch == 0xff) { printf("CHはFF"); } return(0); } で・・・なんでCHはFFって表示されないのですか? これがわからなくてCの勉強が進みません。
たぶん、コンパイラがおかしいのでは?
unsigned char ch = 0xff; でやってみよう。
できましたが、どうしてですか? 教えてくださいませ。
>>222 chに入ってるのは-1
0xFFは255
224 :
デフォルトの名無しさん :04/10/10 14:34:02
多分、この初心者はそういうことをききたいのではなく。 unsigned char って何かを知りたいのだと思う。
charは文字をあらわしてるんだからクオートしないとおかしくなんの。 char ch = '\xff'; if (ch == '\xff') {
charは文字をあらわしてるんだからcharは文字をあらわしてるんだからcharは文字をあらわしてるんだから charは文字をあらわしてるんだからcharは文字をあらわしてるんだからcharは文字をあらわしてるんだから charは文字をあらわしてるんだからcharは文字をあらわしてるんだからcharは文字をあらわしてるんだから charは文字をあらわしてるんだからcharは文字をあらわしてるんだからcharは文字をあらわしてるんだから
>>222 charは符号(±)がついて、unsigned charには符号がつかないのは
分かるよな。
if(ch == 0xff)では、大きい方のintで比較される。
charの0xffは-1なので、intにすると0xffffffff(-1)になる。
右辺はintなので、0xffはそのまま255。
0xffffffff(-1) == 0x000000ff(255)は成り立たないので、表示されない。
(※charが8bit、intが32bitの環境であることが前提)
>>228 charに符号がつくかどうかは規定されていなくなかったっけ?
つーかここはネタスレ。
230 :
デフォルトの名無しさん :04/10/10 15:14:47
つーか、ここを何のスレだと思ってんだ。 れっきとした、ネタスレだぞ。 まだ、本スレで自分の知識を語るのは しょうがないと思うが。 たいしたことない知識をひけらかすな。バカ。
234 :
デフォルトの名無しさん :04/10/10 15:51:51
ああ、これ重複スレか。
236 :
デフォルトの名無しさん :04/10/10 16:18:25
は?
ネタスレが本スレより上にあったら問題だろ
238 :
デフォルトの名無しさん :04/10/10 17:14:33
文句言うなら削除依頼出して来いよ
239 :
デフォルトの名無しさん :04/10/10 19:14:02
ネタスレなんだからどこにあっても問題なし。
(´・ω・`)ショボーン
>>219 比較したけりゃ(ch & 0xFF) == 0xFF
242 :
デフォルトの名無しさん :04/10/12 15:27:37
+-*/をつかわないで1ずつ加算していくスマートな方法ってあるかなぁ 全加算器で考えたら(@o@)状態...
まず命令アドレスにその変数を代入します。そして 次の命令で命令アドレス読み直します。アドレスが 少しずつ増える特徴をうまく応用してください。
244 :
デフォルトの名無しさん :04/10/12 18:19:24
>>243 糸口がつかめたような気がします。
ありがとうございます。
いままでに1~7(4bit)を全加算器関数を4回コールx7
してあげるのは作りれたのですが、これだと
nbitまで演算可能なカウンタ拡張など改善の余地ありです。
書いてる途中で気がついたのですが
Part 92がlatestなのですね。
ネタを本スレ(part92)に書かれても困る。
>>242 これでどう?
#include <stdio.h>
unsigned Inc(unsigned n, unsigned c)
{
return n & c ? Inc(n & ~c, c << 1) : n | c;
}
int main(void)
{
int i, a = 0;
for (i = 0; i < 100; i++) {
printf("%d\n", a);
a = Inc(a, 1);
}
return 0;
}
248 :
いなむらきよし :04/10/12 19:40:12
__asm { mov ecx, num ; num=+1したい変数 inc ecx mov num, ecx } 一応+は使ってない・・・ダメ?
>>249 >ダメ?
自分の心に聞け。
分かるだろ?
>>247 とほとんど一緒だけどちょっと違う
unsigned inc(unsigned a)
{
if(a & 1){
return inc(a >> 1) << 1;
}else{
return a | 1;
}
}
252 :
デフォルトの名無しさん :04/10/12 22:56:10
#include <io.h> #include <fcntl.h> unsigned inc() { return open("a", O_CREAT | O_APPEND); }
__ i<´ }\ , - 、 ヽ.._\./ .ンく r-兮、 __ ∠`ヽ.! / ヾニEヲぐ ,ゝ-> さすがゴッグだ、 /_`シ'K-───‐-、l∠ イ ネタ書きこに反応無くても l´__,/l\、_ ̄0¨0)゙@Yヘ, -┤ 何ともないぜ . l'___|⌒ヾ''ー==、ーr='イ i二| / .」 i /./7r‐く lー! . f. ヽ‐i人.∠'< _i. l,.-ゝ. トiヘヘ「ト〈 `X トレi7__| 〉ト:トハj`! i. / トー┤lルj,リ /‐+----+‐l iー--i---ヾ'〃 . l_i____i__| |___i,__i_|
>>247 さん
i++;使ってよいななら
printf("%d\n",i);
で済んでしまうのでは?
>>254 アフォか。ただの動作確認だろ。
aのインクリマンコには使われていない。
. /~ヽ /~~ヽ . | |i _∧ゝ ノ .. ノ ノ ;´Д`)/ . ( ノ ソ その手があったか! .. ヽ ヽ . \ \ . \ \ _ / 鬱 .\ _ /ミ (⌒Y. / ̄.\ .\ ミヽ  ̄\ ,_ _,/ \,_ _,ノ
257 :
デフォルトの名無しさん :04/10/13 06:21:03
+-*/をつかわないでと言っているんだから++は使って構わないのでは。
+=
>>252 自分のプログラムで使ってみたら時々数字が飛ぶんですけど・・・
必要以上にハンドルが消費されるのか。
261 :
デフォルトの名無しさん :04/10/14 02:14:32
構造体の配列を用意したいのですが、数が未定です。 このような場合はどのように書くといいのでしょうか。
262 :
デフォルトの名無しさん :04/10/14 02:16:17
263 :
デフォルトの名無しさん :04/10/14 02:24:22
ヘルプで文字列の場合が書いてありましたが、構造体で書こうとすると わからなくなります。 mallocを使う注意点としては、必要となるメモリの大きさを知ることだと思うのですが、 よくわかりません。
264 :
デフォルトの名無しさん :04/10/14 02:25:32
>>263 233個のstruct kozotaiの配列をつくりたいならmalloc(sizeof(struct kozotai)*233)
265 :
デフォルトの名無しさん :04/10/14 02:28:22
即レスありがとうございます。 メモリを確保するとき、数が未定なんです(例でいったら233)。 で、それでどうしていいか困っています。
266 :
デフォルトの名無しさん :04/10/14 02:29:13
233を変数にする nならmalloc(sizeof(struct kozotai)*n)
mallocは引数がコンパイル時定数である必要はないから 普通に計算して渡せばいいよ。
ありがとうございます。 もし、数が確保するときには計算できなくて、(何個必要になるかわからない) 確保した後でその数がわかるという場合はどうすればいいのでしょうか。
269 :
デフォルトの名無しさん :04/10/14 02:34:53
>>268 とりあえず適当な大きさで確保しておいて、足りなくなったら泣きながらreallocでサイズを変更する。
「泣きながら」がミソ
reallocですね。ありがとうございます。調べてみます。
そこまでやるなら連結リストにするとか 用途によるけど
>>272 typedef struct tagListChar{
char ch;
struct tagListChar *next;
} LCHAR;
if(0255 != '\255')
このスレは保守しておいた方がいいんだろうか…
281 :
デフォルトの名無しさん :04/10/31 18:06:57
続きをやるぞ。age!
とりあえず、freeがいらないといっている奴は、 C言語の規格書からプログラム終了時にOS依存ではなく、 C言語として必ずメモリが解放されると記述している場所を示せ。
私はもうやらない。 あ~疲れた。 いーちぬーけたー
おまえらaborの前とかexitの前とかでもfreeしてますか?
abor?
(゚Д゚)アボァ
>>284 多少でも構造化していれば、exitとfreeが並んでいたりしないだろう。
free以降もまだプロセスが続くか、すぐにexit/abortするかなんて考えて関数書かない。
爆縮の仕方を教えて下ちい?
289 :
デフォルトの名無しさん :04/11/02 05:12:04
C++はCに比べてどのくらい遅いですか? typedef struct { int prop; } tst; int tst_method(tst* p) { return p->prop; } tst* p = (tst*)malloc(sizeof(tst)); class tst { public: int prop; int method() { return prop; } }; tst* p = new tst(); class tst { public: int prop; virtual int method() { return prop; } }; tst* p = new tst(); とそれぞれ別ファイルで作ってみて10000000回くらいのループの中で p->prop = ループカウンタ; p->method(); または tst_method(p); などとしてみたら最適化無しで実行時間が↓、 gccでコンパイルしたstruct版 350 g++でコンパイルしたclass版 350 g++でコンパイルしたvirtual版 440 O2の最適化では↓でした。 gccでコンパイルしたstruct版 50 g++でコンパイルしたclass版 50 g++でコンパイルしたvirtual版 250 C++はvirtual使わなかったら速度はCとあまり変わらなかったりしますか?
C++がどのように実装されてるか調べりゃわかるだろ
ここはCのスレだ
つーか、ネタスレ?
294 :
デフォルトの名無しさん :04/11/02 12:44:17
カスタムコントールってどうやって作るの? とりあえず、CEditから派生させてCEditExを作りました。 (1)どうやってCEditViewに結びつけるの? (2)どうやってダイアログに貼り付けるの?
296 :
デフォルトの名無しさん :04/11/02 21:06:38
#include <stdio.h> #include <stdlib.h> /*****************************************************************************/ typedef struct {int x; int y;} def_in_swap; typedef struct {int x; int y;} def_out_swap; def_out_swap swap(def_in_swap in) { def_out_swap out; out.y = in.x; out.x = in.y; return out; } /*****************************************************************************/ /*****************************************************************************/ int main(void ){ def_in_swap in; def_out_swap out; in.x = 0; in.y = 100; out = swap(in); printf("in x = %4d y = %4d: ", in.x, in.y); printf("out x = %4d y = %4d\n", out.x, out.y); in.x = 90; in.y = 10; out = swap(in); printf("in x = %4d y = %4d: ", in.x, in.y); printf("out x = %4d y = %4d\n", out.x, out.y); return EXIT_SUCCESS; } と言うコーディングスタイルを貫きたいのですが問題ありますか?
297 :
デフォルトの名無しさん :04/11/02 21:12:57
>>296 >コーディングスタイルを貫きたい
目的意識からズレてる香具師に何言っても無駄
俺の職場に来たら攻撃モードロックオン
>>296 >>297 みたいな恐いおにいさん(おっさん)と目をあわせちゃダメよ
ところで、どのあたりが独自スタイルなのかな。。
えと、同じ内容の構造体なのに分ける必要性ってあるの?
将来def_in_swapとdef_out_swapの中身は変わるの?
>>296 あんたはスレも選べない知能の低い人間だ
そのうち世間がお前を抹殺するだろう
>>296 def_はうざい、意味なし。
/***...***/もせっかく書くなら関数の説明とか入れとけ。
多少奇天烈なスタイルではあるけどどうしてもというなら貫いとけ。
301 :
デフォルトの名無しさん :04/11/02 21:31:47
>>296 です。
入力と出力を見た目に分けた方が分かりやすいと思ったのね。
>>301 論外。そんなことやり始めたら
typedef int pos_x;
typedef int pos_y;
とかきりがない。
303 :
デフォルトの名無しさん :04/11/02 21:46:26
>>296 です。
補足すると関数は上からデータを
入れ下から出すのが自然だと思うとです。
>>303 ヒロシです のつもりか?お前はネタも文も面白くない。
チラシの裏にでも書いてニヤニヤしてろ。このウジムシ野郎。
306 :
デフォルトの名無しさん :04/11/02 22:44:28
(=゜ρ゜=)ボヘーー
307 :
デフォルトの名無しさん :04/11/02 23:23:16
おまえらの書いた凄いプログラムを言ってみろよ。 どうせパクリか出来そこないだろ。
>>307 このスレが気に入らないのなら削除依頼出して来い。
#include <stdio.h> int main() { printf("Hello world.\n"); return 0; } 凄いプログラムだろう
#include <sugoi.h> SugoiResult Sugoi_Main() { return Sugoi_Run(); }
311 :
デフォルトの名無しさん :04/11/03 00:36:05
main() { while(1) fork(); }
main(){ void *ptr; __asm { lea eax,main mov ptr,eax } ptr(); }
313 :
デフォルトの名無しさん :04/11/03 01:37:12
#include <stdio.h> main() { /* 関数は明日17:00までに田中が作る。*/ } /**/
/ ̄ ̄ ̄ ̄ ̄ ミ / ,――――-ミ / / / \ | | / ,(・) (・) | (6 つ | | ___ | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ | /__/ / < 作らねーよ! /| /\ \_______
315 :
田中 :04/11/03 10:37:56
#include <stdio.h> void subcontract() { /* 関数は明日15:00までにドラえもんが作る。 */ } main() { subcontract(); } 作ったぜ
316 :
デフォルトの名無しさん :04/11/04 02:31:06
質問です。 二次元配列の構造体って struct a{ … }bc[x][y]; じゃできないんですけど、どうしたらいいですか?
318 :
デフォルトの名無しさん :04/11/04 02:44:09
初心者なんでお願いします。
俺はどんな奴でも容赦しない・・・・消えろ
320 :
デフォルトの名無しさん :04/11/04 02:50:23
まじたのむ~~~!
>>318 ネタスレに書いても、ネタしか還ってこないのは当たり前だよ。
322 :
デフォルトの名無しさん :04/11/04 02:52:33
どこにかけばいいんだ~?
324 :
デフォルトの名無しさん :04/11/04 02:55:30
ぉぃ。
325 :
デフォルトの名無しさん :04/11/04 09:40:38
書いたあるいはぱくったプログラムはちゃんとテストしていますか? ユーザにプログラムが間違っていることを証明しろと言ってませんか?
ネタスレでマジレスすると 基本的にはバグ取りや堅牢性の確保はプログラマの責任。 しかしユーザーが使って初めて出てくるバグもある。 ひとによってはプログラマが予想しない使い方をするから。
327 :
デフォルトの名無しさん :04/11/04 19:43:00
>>316 それは構造体の二次元配列だ。
ところで、何が「できない」んだ?
これは煽りでも何でもなく技術屋の資質だぞ【質問のしかた】は。
下手な奴は容赦なく捨てられる、明日のメシに直結の死活問題だ。
笑い事じゃなく憶えるしかないんだよ。わかるか?
329 :
デフォルトの名無しさん :04/11/04 20:12:38
>>327 あ、何か悪いのかよ?
あんた何の権限で俺にそんな命令できるんだ?
後学のため根拠法令でも聞こうか。
「俺の気分」法とかだったらしばくぞ。
祭りデスカイ?
>>329 後学はね、こうがくって読むんだよ
ごがくなんて読んでるわけじゃないよね?
332 :
デフォルトの名無しさん :04/11/04 20:24:37
ここはテメエ様のストレス発散所じゃないんだよ
334 :
デフォルトの名無しさん :04/11/04 20:39:45
どう痛しまして
336 :
デフォルトの名無しさん :04/11/04 21:45:22
まあ全部違うやつなんだがな
ネタスレだけあってバカばっかりだな
339 :
デフォルトの名無しさん :04/11/05 09:57:53
同じようなプログラムをたくさんの人が書いてるのは無駄ではないでしょうか?
340 :
コピペ推奨 :04/11/05 10:08:55
341 :
コピペ推奨 :04/11/05 10:24:16
342 :
デフォルトの名無しさん :04/11/07 21:52:12
下から二番目だけ、ポインタが約20ほど先に進みます なぜでしょう? えろい方、よろしくお願いします。 #include <stdio.h> int main(void) { char str[20]; printf("%p\n", str); printf("%p\n", &str[0]); printf("%p\n\n", &str); /* OK */ printf("%p\n", str + 1); printf("%p\n", &str[0] + 1); printf("%p\n", &str + 1); /* NG */ printf("%p\n", &(*(str + 1))); return (0); }
>>342 上から型はchar[20]、char *、char (*)[20]、char *、char *、
char (*)[20]、char *となる。char[20]へのポインタをインクリメント
すればそのサイズである20だけポインタの値が進むのは道理。
なるほど!(豆球点灯) 型を意識すると このへんのごちゃごちゃがすっきりするのですね。 どうもありがとうございます。 また、くだらない質問で失礼しました。 sage
346 :
デフォルトの名無しさん :04/11/07 22:14:09
∧_∧
( ´∀` ) おまえか、人のすることにごちゃごちゃ難癖ばっかりつけてまわってるゴミ虫は
/⌒ `ヽ
/ / ノ.\_M
( /ヽ |\___E)
\ / | / \
( _ノ | / ウワァァン ヽ
| / / |ヽ(`Д´)ノ|
| / / ヽ(
>>343 )ノ
( ) )  ̄ ̄ ̄
| | /
| | |.
/ |\ \
∠/
347 :
デフォルトの名無しさん :04/11/07 22:44:37
どこのスレにもいるんですよ。age書き込みを見ると発狂する人が。
今更ageもsageも関係ないとおもわね? 専ブラ率多いだろ
ageもsageも2ch住人数が少ない時は意味があると思うけれど、 多くなると関係ないね。 専用ブラウザ使っている人が多いとはいえ、新規の人はIEなどのWEBブラウザで 見て来るわけだから、ageられているような活発なスレでないと掲示板での コミュニケーションを身近に感じないだろうね。 もっとも、現状ではageが議論の活発さを必ずしも意味しないというのは住人の マナーの悪さ故だと思うけれど。
351 :
デフォルトの名無しさん :04/11/07 23:07:44
hoodgっていう決定木のアルゴリズムのc言語のプログラムどっかありませんか?
353 :
デフォルトの名無しさん :04/11/07 23:13:35
やっと本来するべきことに気付いてくれたと思った矢先、また堂々巡りを始めやがった・・・ ヤレヤレ
355 :
デフォルトの名無しさん :04/11/07 23:19:03
356 :
デフォルトの名無しさん :04/11/08 00:01:04
358 :
デフォルトの名無しさん :04/11/08 00:33:11
↑あげてやったぞ。這いつくばって感謝汁!
orz
ここには
>>351 に答えられるレベルの人はいないと。
うん、居ない だから質問スレへ逝け
362 :
デフォルトの名無しさん :04/11/08 16:24:49
12*12+12*12みたいな文字列を 式に直して計算するにはどうしたらよいでしょうか?
>>362 www.pro.or.jp/~fuji/puzzlestudy/recursive/expr6.c
Google の電卓機能はどなたでも簡単にご利用いただけます。 検索ボックスに計算式または数値を入力し、 Enter キーまたは Google 検索ボタンをクリックするだけです。 この電卓機能は、基礎的な計算 ( 5+2*2 や 2^20 など ) はもちろん、 複雑な計算 (e^(i pi)+1) も実行することができます。 そのほか 16 進数や 2 進数などの進数法などにもご利用いただけます。 なお、数字は半角で入力してください。
すいません。教えてください。 for (i = 0; i < N; i++) { if (flag_a) { 処理A; } if (flag_b) { 処理B; } } ループの中で、flag_aとflag_bに変化は無いとします。 上記の様なプログラムだと、毎回フラグの判定をするので 効率が悪いのでしょうか? それともコンパイラが最適化してくれるので気にしなくていいのでしょうか?
気にするとなると、自分の知識ではこうなるのですが、プログラムとして かっこ悪すぎます。 if (flag_a){ if (flag_b){ for (i = 0; i < N; i++){ 処理A; 処理B;} } else { for (i = 0; i < N; i++){ 処理A;} } } else{ if (flag_b){ for (i = 0; i < N; i++){ 処理B;} } }
気にするな
関数に切れよ
>>371 つまり気にしろということですか?
関数にしてもやっぱりすっきりしないと思うのですが・・・
if (flag_a){
if (flag_b){
func_a_b ();
}
else{
func_a ();
}
}
else{
if (flag_b){
func_b ();
}
}
void func_a_b (void){ for (i = 0; i < N; i++){ 処理A; 処理B;} } void func_a (void){ for (i = 0; i < N; i++){ 処理A;} } void func_b (void){ if (flag_b){ for (i = 0; i < N; i++){ 処理B;} } func_a_b は、func_a と func_b でも大丈夫ですけど、そうすると無駄に for ループを 回すことになりますし・・・
1億回ぐらい回しても大して違わないような気がする。 遅いと感じたら最適化やればいいんじゃね。
教えてください。 (1)calloc(500, sizeof(unsigned long))とmalloc(sizeof(unsigned long)*500)は0クリアされるかされないかの違いですか? (2)下記のa)、b)、c)は結果的にファイルに書かれる内容は同じですか? int num[5]; a)fwrite(num, sizeof(int), 5, fp); b)fwrite(num, sizeof(num), 1, fp); c)for (int i=0; i<5; i++){ fwrite(&num[i], sizeof(int), 1, fp); } (3)for (int i=0; i<5; i++){ fscanf(fp, "%d", num[i]); } のようにiがインクリメントされていくとファイルポインタは次の行の先頭に移っていくのですか?ファイルポインタの動きを教えてください。
>>376 ここはネタスレなので質問は質問スレへ。
>>376 (1)いいえ
malloc()だけではメモリの割付が起きなくてスワップは発生しませんが、
calloc()では0クリアするためにスワップが発生する場合があります。
即ち、malloc()+memset()でほぼ同じになると言うことです。
(2)いいえ
その後、fflush()かfclose()で内部バッファがフラッシュされるまでに何が起きるかによって変わります。
(3)いいえ
fscanf()では空白を見つけたところでファイルポインタが止まります。
即ち、数値の後に改行がなければ次の行には移りません。
補足。 仮想関数を使うってのは、要するにTemplate Methodにして、 条件によって実体を選択するってことな。
381 :
デフォルトの名無しさん :04/11/09 22:15:22
>>368 ある特定の最適化を前提にしたコーディングは
処理系依存であるという認識はあるか?
384 :
デフォルトの名無しさん :04/11/09 22:39:28
その程度の処理で気にするのは杞憂。 分岐が増えてきたら、管理上のことも考慮して、 関数ポインタの配列を使ってディスパッチすればいい。
387 :
デフォルトの名無しさん :04/11/09 23:01:05
389 :
デフォルトの名無しさん :04/11/09 23:05:19
だから何だよw
だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw
391 :
デフォルトの名無しさん :04/11/09 23:06:36
ま、俺がsageるまでそうやってろよ 自演しても無駄だし 絶対にsageてやんねーw
392 :
デフォルトの名無しさん :04/11/09 23:07:58
裸になってソフト書くと調子いい人いますか?
>>391 スレ埋め立てに利用されてる事もわからないのか。
395 :
デフォルトの名無しさん :04/11/09 23:30:17
だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw
397 :
デフォルトの名無しさん :04/11/10 00:04:11
UNIX GCCでコンパイルして正常に実行できたファイルが、 Win LSI-Cじゃ正常に実行できません。 LSIではexit関数の宣言が無いためにint型にされてしまうのですが、 それが原因でしょうか?
>>397 解決しました。
でも、
#include <stdlib.h>
これ入れてなくてもGCCでは正常にコンパイルされてた気がします。
400 :
デフォルトの名無しさん :04/11/10 00:11:45
お、また元に戻ったなw 俺はいつ寝るかわからんけど まあ一晩中張り付いてろや
だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw だから何だよw
403 :
デフォルトの名無しさん :04/11/10 00:13:08
削除依頼の出し方もわからん低脳 (プ
>>402 それです。
#include <stdlib.h>
#include <ctype.h>
この二つが無かったため、正常に動かなかったようです。
gccでは-oしかつけませんでした。
それでもキチンと動いたんですが・・・
>>403 自作自演はほどほどに。
ここでしか構って貰えない人生って、寂しくない?
406 :
デフォルトの名無しさん :04/11/10 00:21:09
>>405 自演はてめーだろ
俺はsageねーつってんだよ ぼけ
408 :
デフォルトの名無しさん :04/11/10 00:27:19
>>404 gccは、特に標準関数に関していろいろ気をきかせてやってくれるはず。
とりあえず、-Wallつければ、「型あってねーぞゴルァ」とか
怒ってくれるから間違いもすくなくなるはず。
>>379 ありがとうございました。
あまり気にせず、自分の好きなスタイルで書けばいいんですね。
> 比較命令は消せないが、分岐予測とかって言葉は聞いたことあるだろ?
いや、すいません。
想像されているよりもずっと低いレベルなもんで・・
C言語の参考書を買ったのですが サンプルプログラムを実行しようとするとよくエラーが出ます 具体的に言うと GetStockObject(WHITE_BRUSH) を (HBRUSH)GetStockObject(WHITE_BRUSH) に直さなくちゃいけなかったり WM_MOUSEWHEEL を使う前に #define WM_MOUSEWHEEL 0x020A を定義しなくちゃいけない等です これはバージョンの違いでしょうか?それとも単に参考書が間違ってるのでしょうか? 教えてください
コンパイラのバージョンが新しすぎるんだよ、きっと。
>>411 WM_MOUSEWHEELはWindows 98/NT4から使えるようになったメッセージだから、
windows.hをインクルードする前に次のうちどっちかを書く必要がある。
#define _WIN32_WINDOWS 0410 // Win98以上で動くプログラムの作成時に
#define _WIN32_WINNT 0x400 // こっちはWinNT4以降で動くプログラムの作成時に
なる程、おかげ様で解決しました。ありがとうございます
いまからCを勉強しようと思うんだが、具体的にCで何ができるか おしえてくれないか? もう習得済みなおまいら、是非とも教えてくれ!!
>>415 ピンからキリまでできます。
例えば、モニタ上にただhello world!とだけ表示されるような簡単なものから
Windows自体まで作ろうと思えば作れます。
貴方がおおよそ目にするようなプログラムのほとんどをCで書くことが可能です。
可能性はあるのですがそれが「書きやすい」のかどうかというのが重要になって
くるのです。
いかに大規模なプログラムをまちがいなく(バグがなく)作ることができるか、
または、いかに大規模なプログラムを、これからのことも考えて後の人が理解
しやすいようにできるか、短時間で作れるか、などというような事が重要に
なってくるのです。
そういった点を考慮して、たくさんの言語が生まれていったのです。
一つの完璧なコンピュータ言語というのは未だ作られておらず、現在でも
試行錯誤で言語が作られているのが現状です。
さしあたり、C言語は現在では少し「遅れている」と言われる事が多いでしょう。
>>416 丁寧なレスありがとう!!
なるほど。そこまでできるのか・・・
参考書ちょっとしか読んでなかったから
実感わかなかったんだが、がんがってみるよ!
自演厨乙
420 :
デフォルトの名無しさん :04/11/12 14:36:20
C言語プログラムは一行いくらで取引されていますか?
32円です
422 :
デフォルトの名無しさん :04/11/12 17:45:15
えーーーっ、俺のとこなんか21円なのに・・・・・・・・
うちのところは300円くらいだな
自演厨乙
完全な素人ですが、プログラムって1行いくらみたいな感じの契約はあるんですか? プログラムなんていくらでも行数を稼げると思うのですが。 むしろ同じ内容で短いほうが優秀な気がする。
if(~~){ ~~~; } if(~~) { ~~~; }
>>426 すげー、それで1200円?
時給60000円くらいは楽勝だな
if ( ~~ ) { ~~ }
>むしろ同じ内容で短いほうが優秀な気がする。 嘘、邪悪なソースコンテストでも覗いて見るべし
431 :
デフォルトの名無しさん :04/11/13 13:16:23
>>425 本来マ板で聞くべきことだぞ
行数じゃなく結果を売って金をもらう
依頼主は「何行書いてくれ」とは注文してこない
商談では(現状+問題点+要求+納期)に値段をつける
ネタスレにネタ書いてるだけじゃねえか おまえばかじゃねえの?
433 :
デフォルトの名無しさん :04/11/13 13:23:38
礼儀知らず
434 :
デフォルトの名無しさん :04/11/13 13:45:01
ここをネタスレだと気づいていない香具師がいたとは…
大文字小文字を区別しないときに良く付く i (stricmpとか)って何の略?
inpo
大文字も小文字もIssho
英語で整数と書くときに良く付く int(integerとか)って何の略?
自分でintegerって買いてるじゃん
444 :
デフォルトの名無しさん :04/11/13 23:48:45
>>443 uzeeeeeeeeeeeeeeeeeeeeee
しつもんします。 古い文法だと↓のようなのが通るようです。 これは、どのコンパイラでも通るでしょうか。 #include <stdio.h> void auuu(boo) char *boo; { char **nko = &boo; while (*nko) puts(*nko++); } main() { auuu("domo", "kon", "ban", "wan", NULL); }
446 :
デフォルトの名無しさん :04/11/14 06:30:48
main() { auuu("domo", "kon", "ban", "wan", (char*)0); } auuu(boo) char *boo; { char **nko = &boo; while(*nko) puts(*nko++); }
448 :
デフォルトの名無しさん :04/11/14 10:52:38
無駄に行数を稼いだプログラムを見る=>二度と契約しない。そしてチクる。
// // FuncA( // char *prm_a; // char *prm_b; // int prm_c // ); // // 引数(Parameters) // prm_a: ~~~~(日本語説明) // ~~~~(英語説明) // prm_b: ~~~~(日本語説明) // ~~~~(英語説明) // prm_c: ~~~~(日本語説明) // ~~~~(英語説明) // // 戻り値(Result) // ~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~(日本語説明) // ~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~(英語説明) // // 概要(Outline) // ~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~(日本語説明) // ~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~(英語説明) // 全ての関数にだらだらと説明を書く。更に関数を乱用する。
450 :
デフォルトの名無しさん :04/11/14 11:22:11
2以上の整数nを入力してnが素数かどうかを判定する
プログラムを作りました。他の人が書いたプログラムも見たいです。
お願いします。
#include <stdio.h>
main()
{
int n,answer;
do{
printf("2以上の整数を入力してください>>>");
scanf("%d",&n);
if(n%2!=0 && n%3!=0 && n!=1 || n==2 || n==3){
printf("%dは素数です\n",n);
}
else{
printf("%dは素数ではありません\n",n);
}
printf("続けますか?[yes>
>>1 no>
>>0 ]");
scanf("%d",&answer);
}while(answer);
}
| ぱくっ| /V\ /◎;;;,;,,,,ヽ そんなエサで _ ム::::(,,゚Д゚)::| 俺様が釣られると思ってんのか!! ヽツ.(ノ:::::::::.:::::::.:..|) ヾソ:::::::::::::::::.:ノ ` ー U'"U' #include <math.h> #define FALSE 0 #define TRUE 1 int prime(int n){ int i,N; N =(int)sqrt(n); for( i=2; i<N; i++ ){ if( (n%i) == 0 ) return FALSE; } return TRUE; }
>>452 っていうか 21 は素数じゃないと判定されるが
>>452 >>455 とりあえず
if(n%2!=0 && n%3!=0 && n%5!=0 && n!=1 || n==2 || n==3 || n==5){
49は?
>>457 じゃあ
if(n%2!=0 && n%3!=0 && n%5!=0 && n%7!=0 && n!=1 || n==2 || n==3 || n==5 || n==7){
これで121まで大丈夫
>>459 それじゃあ49までだよ
n%2!=0 && n%3!=0 && n%5!=0 && n%7!=0 && n%11!=0 && n!=1 || n==2 || n==3 || n==5 || n==7 || n==11
これで121まで大丈夫
やったね!ボブ!サイコーだよ!
460 :
デフォルトの名無しさん :04/11/14 18:55:51
>>448 ある出向先では注釈が完全なドキュメントになっていたよ
本の行数を数える人がいないのと同じで(ry
int flg, n, i; int primemap[] = {2, 3, 5, 7, 11, 13, 17, -1}; for(i=0,flg=n==1?-1:0;flg==0&&primemap[i]>1;i++)flg=n%primemap[i]!=0?0:(n==primemap[i]?1:-1); if(flg >= 0) puts("n is 素数!!!");
>>461 新しい素数を見つけたんならそれを primemap に追加してさらに次を目指しなさい。
464 :
デフォルトの名無しさん :04/11/15 00:25:43
字下げは何文字に設定してる?
なんでエラトステネスのふるいを使わないの?
ここが寝たスレだから。
Nestleがんがれ!
469 :
デフォルトの名無しさん :04/11/20 13:18:24
470 :
デフォルトの名無しさん :04/11/20 15:36:56
よく考えてみたら&&と||は &と|で十分なのでは? if (0<a && a<15) は if (0<a & a<15)と同じ。と思ったけど、間違い?
クマー
ヌルポー
1 && 2 ともに0以外(真)なので、真です。 1 & 2 同じビットが立っていないので、0(偽)です。 (A) && (B) (A)が偽の時、(B)は実行されません。 (A) & (B) (A)が偽でも(B)は実行されます。
474 :
デフォルトの名無しさん :04/11/20 19:33:15
Visual C++.netを使ってるんですが、 プログラムを打って実行すると、 フォルダに実行ファイルができますよね? それをクリックして実行すると、 プログラムが終わると同時にコンソール画面が消えちゃうんですが、 何かボタンを押したら消える、とかいうふうにはできないんでしょうか?
つscanf(); てか、コンソールプログラムの為にVCとかアフォなことすな
ネタスレなんだから相手すんなよ
>>477 普通にネタじゃないんですが。。
>>476 どもです。
VC以外に使うものがないんですけど。。
こっち俺俺かよ('A`)
482 :
デフォルトの名無しさん :04/11/20 20:32:00
これを再利用する?
>>482 ここでいいんじゃない?
このスレ消費しないと、ずっと残ってるぜ。
前スレ 975 です 次スレ立てられませんですた すみません orz
そうだな。 とりあえずこっちを再利用してさっさと終わらせた方がいいな。 その後で Part 95 でいいだろう。
やだー、やめてよ。こっちのスレしか読んでない人だって居るんだから。
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
停止したのか?
なーんちゃって
書けるじゃん
>>486 せめてスレくらいはまともに立てろよ低脳。
てか、このスレって何であるんだ?
誰も削除依頼出さないからあるんだ。
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************
再開
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************
再開
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************
return(1);
**************** 糸冬 了 ****************
returnに無意味な()をつける奴
**************** 糸冬 了 ****************();
return 1 | a = 2;
509 :
デフォルトの名無しさん :04/11/21 15:14:32
↑ これで括弧を書きたがる理由を示したつもりだとしたらすげー馬鹿
これで括弧を書きたがる理由を示したつもりだとしたらすげー馬鹿(-1);
return 3; と同じ
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
ここは削除依頼出てます
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************
本スレ誘導
C言語なら俺に聞け! Part 95
http://pc5.2ch.net/test/read.cgi/tech/1100956766/
513 :
デフォルトの名無しさん :04/11/21 18:29:32
てすと
フェイエノート最高
火がついたみたい
516 :
デフォルトの名無しさん :04/11/22 09:28:31
517 :
デフォルトの名無しさん :04/11/22 11:14:04
518 :
デフォルトの名無しさん :04/11/22 12:04:50
return(NULL);
return 1 | 2; これはよくて return (1 | a = 2); (return 1 | a = 2;も同様) これがまずい理由って何?invalid lvalue in assigmentとなるけど、 a=2の結果:2と1の論理輪を取って3になっていいと思うんだけど。
もう少し試してみたところ、 return a = 2 | 1; は大丈夫だった。orは左結合だから、orを取る前にa=2の処理を終わらせとかないと いけないということかな?
ようやく分かった。K&Rによると|の優先度は=より高い。だから
1 | a = 2とすると(1 | a) = 2という不正な代入処理を行うように
解釈される。これを防ぐ為には1 | (a = 2)としてやればよい、と。
んで、
>>520 がうまくいった理由は
a = (2 | 1)、すなわちa = 3が計算され、その結果が式の結果として
returnされるからだった。為になるなぁ、このスレ。
君だけ
日本公共広告機構はチラシの裏を無地にする事を あらゆる企業に強制すべきである と真剣にオモタ
日本公共広告機構はチラシの裏を無地にする事を あらゆる企業に強制すべきである と真剣にオモタ。全裸で。
使わない人には紙の無駄
526 :
デフォルトの名無しさん :04/11/22 21:49:02
age
日本公共広告機構はあらゆるSPAMチラシの回収をすべきである
日本公共広告機構はあらゆるSPAMチラシの回収をすべきである。全裸で。
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
ここは削除依頼出てます
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************
本スレ誘導
C言語なら俺に聞け! Part 95
http://pc5.2ch.net/test/read.cgi/tech/1100956766/
531 :
デフォルトの名無しさん :04/11/23 13:41:16
Test
配列Tを T[N][N]としたんですが このようなエラーメッセージがでました。 declaration of `T' as multidimensional array must have bounds for all dimensions except the first これってなんですか?教えてください。
なんでマルチポストする
>>532 こっちはネタスレ。本スレ逝け。ソース持ってな。
640 :デフォルトの名無しさん :04/11/23 19:43:16
>>616 配列って定数でしかサイズ指定できないだろ
どうやって動かしたんだ?
641 :デフォルトの名無しさん :04/11/23 19:50:51
>>640 C99では許可されている
ワロタ
536 :
デフォルトの名無しさん :04/11/29 00:16:24
stableなスレはこちらですか
stableすぎて消されないか心配ですが:-P
そのうちこっちにもなだれこんできますよ。
539 :
デフォルトの名無しさん :04/11/29 16:55:40
C言語は儲かり真っ赤?
真っ青
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
test
test
break; break; break; break; break; break; break; break; break; break; break; break; break; break;
return 0; }
547 :
デフォルトの名無しさん :04/12/06 01:08:54
C言語以前の話になってしまうかもしれないのですが、0の割り算について質問させて下さい。 0 / 10; という風に 0 を割ることができないのでしたでしょうか? それとも 10 / 0; という風に 0 で割ることができないのでしたでしょうか? あと同じように、 0 % 10; 10 % 0; という計算については可能なのでしょうか? 教えて下さい。お願いいたします。
10/0は不可 0/10==0 0%10==0 10%0は不可
真面目に答えていいものか迷っちゃっうよね
551 :
デフォルトの名無しさん :04/12/06 07:36:43
> 10/0は不可 間違い
0で除算しますた
553 :
デフォルトの名無しさん :04/12/06 11:41:30
絵を書くとC言語プログラムが出来て実行もしてくれるツール知りませんか?
コーディングスタイルの話になると思いますが、 識別名にマルチバイトを使う事について 皆さんだったらどう思われますか? 例えば、 ある関数に定数を与えて処理したい場合、 move_command_set( COMMAND_右に動く, MOVE_STEP_1 ) move_command_set( COMMAND_左に動く, MOVE_STEP_1 ) とか・・・ さすがに、識別名すべてをマルチバイトにするつもりは無いんだけど、 日本人として生まれたからには、こういう書き方を「アリ」に していく流れって作れないかなーって思っているのですが・・・ 昔だったら、こういうことかなり抵抗があったんだけど、 もう今となってはいいかなぁーって感じになってます。
ひまわりでも使って路
556 :
デフォルトの名無しさん :04/12/06 15:07:06
557 :
デフォルトの名無しさん :04/12/06 15:12:18
>>554 最近は中国人やインド人に頼むことが多い。
日本人だけならいいだろうけど
558 :
デフォルトの名無しさん :04/12/06 15:20:54
c:\program files この半角スペースって何で表せるんでしたっけ。 %なんとか。
%20世紀 のこと?
少なくともCで半角スペースの代わりに%20は使えないということだけは一応言っておこう
562 :
デフォルトの名無しさん :04/12/06 22:23:20
助けてください。 OSはUNIXでc言語でお願いします。期日は早めでお願いします。 1.c言語を用いてスロットマシーンをつくってください。 2.構造体利用を用いたプログラムをつくって下さい。 以上の二つです。
助けてください。 OSはUNIXでc言語でお願いします。期日は早めでお願いします。 1.c言語を用いてスロットマシーンをつくってください。 2.構造体利用を用いたプログラムをつくって下さい。 以上の二つです。
565 :
デフォルトの名無しさん :04/12/06 22:55:56
>>563 いい加減にするのは君だ
答えられない~答えたくない者はレスするな
人に不快感を与えることのみを目的とする書き込みは
荒らし行為であることを忘れてはならない
>>565 ちょっと待て。
>>562 はあちこちのスレにマルチポストしている。
マルチポストを咎めるのは良くない事だろうか?
567 :
デフォルトの名無しさん :04/12/06 23:02:52
>>566 してはならない書き込みを見たら削除板へ逝け
そこで棄却られたなら、あんたの主張が2chでは身勝手とされただけのこと
腐っても技術者、物事を客観的に捉えられなくてどうする
569 :
デフォルトの名無しさん :04/12/06 23:05:33
570 :
デフォルトの名無しさん :04/12/06 23:06:53
571 :
デフォルトの名無しさん :04/12/06 23:11:05
>>570 以後気をつけたまえは君だ
答えられない~答えたくない者はレスするな
人に不快感を与えることのみを目的とする書き込みは
荒らし行為であることを忘れてはならない
>>570 気を付けるのはお前の方。不必要に煽るな。
お前のせいでどれだけ不要なレスが書き込まれたと思ってるんだ。
573 :
デフォルトの名無しさん :04/12/06 23:12:12
>>570 してはならない書き込みを見たら削除板へ逝け
そこで棄却られたなら、あんたの主張が2chでは身勝手とされただけのこと
腐っても技術者、物事を客観的に捉えられなくてどうする
574 :
デフォルトの名無しさん :04/12/06 23:15:39
>>571 不当要求を非難することは社会を健全に保つ努力だ
お前たちはマルチポストが禁止事項であるという論点先取をしてはならない
暇だな。
577 :
デフォルトの名無しさん :04/12/06 23:18:10
578 :
デフォルトの名無しさん :04/12/06 23:18:49
580 :
デフォルトの名無しさん :04/12/06 23:21:06
俺俺スレらしい展開になってまいりました
>>580 ゴタクはどうでもいいから誰にでも理解できる平易な日本語を使え。
今宵は1000まで行こう。
584 :
デフォルトの名無しさん :04/12/06 23:23:11
>>582 使ってる
マルチポストにしても用語にしても
あんたは身勝手な要求ばかりしている
>>584 あんたの方がよほど身勝手なんですけど。
586 :
デフォルトの名無しさん :04/12/06 23:24:25
>>585 こちらが身勝手という論点先取をしてはならない
うっせハゲ。自分の土俵だけで相撲を取ろうとして、人の話に耳を貸さない 香具師とはもうこれ以上議論したくないね。
588 :
デフォルトの名無しさん :04/12/06 23:26:31
議論に参加しないのは勝手だが、それなら欠席裁判をするのもこちらの勝手だな。
>>589 いや、そうではなく、議論になってないと言っているのだが。
君の独断場に過ぎない。
勝手に演説してるだけじゃん。
591 :
デフォルトの名無しさん :04/12/06 23:28:24
俺様がすべて正しいからお前らは全員間違っている。
もう終わりか
なんかメンヘラーっぽいのが一匹混ざってるなあ
ダメだよー にゃんにゃん
596 :
デフォルトの名無しさん :04/12/07 06:40:21
質問です。 HEX形式、SREC形式、ELF、COFFの違いがわかりません。 みんなファイルのフォーマットのようなのですが。
>>596 コンパイル&リンクした後の実行ファイルの形式の種類
598 :
デフォルトの名無しさん :04/12/07 21:52:12
>>596 マゾレスすると
HEXとSRECはROM化するときに使う
ほとんどのROMライターがサポートしてるフォーマット
で、こいつらはobjcopyなんかで実行形式から作る
COFFやELFは実行形式やオブジェクトファイルのフォーマット
異常
#include <stdio.h> #include <time.h> #include <stdlib.h> #define WMAX 3 #definr NMAX 10 struct slot{ unsigned int number[WMAX]; }; void roll_slot(struct slot *s) unsigned int i; for(i=0;i<WMAX;i++) s->number[i] = rand()%NMAX; } struct slot newslot(){ struct slot s; srand((unsigned int)time()); roll_slot(&s); return s; }
600 :
デフォルトの名無しさん :04/12/07 22:25:26
スレ違いな気もしますが・・・ ARM系CPUのCPUボードを作成しました。 そこでメモリの実装検査を行うためのアルゴリズムを考えているのですが、 なにか良い物はないでしょうか? あくまでも実装不良を検査するのが目的でメモリ自体は問題ないという前提です。 memtest86はメモリ自体の検査を行う事が主な目的の様なので、 参考にして良いのか悩んでいます。 宜しくお願いします。
601 :
デフォルトの名無しさん :04/12/07 22:26:34
ついに俺俺スレも600レス到達か
602 :
デフォルトの名無しさん :04/12/07 22:56:33
>>600 チップセレクトをどう作ったかでほぼ決まりじゃないか?
603 :
デフォルトの名無しさん :04/12/07 23:11:58
既知概がいればもっと早く消滅するんだが
size_tってなんのためにあるんだよ
俺のためだ
ありがとう、助かったよ
>>605 知ったかはよせ。
俺のためにあるんだぜ?
そうかよ。君にゆずるよ。俺のお古だけどな。
610 :
デフォルトの名無しさん :04/12/11 22:29:55
教えてください。 入力した文字列を格納した配列のポインタを戻したいんですけど、警告がでました。 警告1:プロトタイプ宣言のない関数'input'の呼び出し。(関数 main) 警告2:コードは効果をもたない。(関数 main) 警告3:問題のあるポインタの変換。(関数 input) ソース↓ #include <stdio.h> #define MAX 256 char *input(); void main() { *input(); } char *input() { char s[MAX]; printf("COMMAND:"); scanf("%s", s); return s; }
#include <stdio.h> #define MAX 256 char *input(void); void main(void) { char *p=input(); } char *input(void) { staic char s[MAX]; printf("COMMAND:"); scanf("%s", s); return s; }
612 :
デフォルトの名無しさん :04/12/11 23:01:35
>>610 質問になってない。
警告が出たらしいが、それで何を聞きたいのかが欠落している。
949 :デフォルトの名無しさん :04/12/11 21:42:51 初心者です。 参考書によって void main() と書いてあるものと int main() と書いてあるものの2種類ありますよね。 intにしてreturnしても、どこにも使われてないし プログラムも問題なく動くので 全部voidでいいと思うんですが。 voidにしてはいけない理由でもあるのでしょうか。
993 :デフォルトの名無しさん :04/12/11 23:09:50
その通り、処理系が認めていればなんでもいい。
ただし、コードの可搬性はなくなる。
994 :デフォルトの名無しさん :04/12/11 23:11:27
>>993 可搬性をどの程度持たせるべきかとは、全く別な議論だな
996 :993 :04/12/11 23:12:30
>>994 その通り。個人だったら個人で、団体なら団体で勝手に決めればいい。
ISO/IEC 9899:1999
5.1.2.2.1 Program startup
1 The function called at program startup is named main. The implementation declares no
prototype for this function. It shall be defined with a return type of int and with no
parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names may be
used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent;9) or in some other implementation-defined manner.
997 :デフォルトの名無しさん :04/12/11 23:12:42
>>980 他
JIS X3010:2003(いわゆるC99)ではこういう風に書いてある。(ISO/ANSIも同じだろう)
5.1.2.2 ホスト環境
5.1.2.2.1 プログラム開始処理
プログラム開始時に呼ばれる関数はmainとする。
処理系はこの関数に対してプロトタイプを宣言しない。
この関数は次の4種類の方法のいずれかで定義しなければならない。
1. int main(void);
2. int main(int argc, char *argv[]);
3. 上記2つの方法のいずれかと等価なもの。
4. 処理系定義
ちなみに5.1.2.1でフリースタンディング環境の場合プログラム開始時に呼ばれる関数は(戻り値の型・引数含め)処理系定義と書いてある。
もうやめろよ
617 :
デフォルトの名無しさん :04/12/12 00:02:35
ageとこう
618 :
デフォルトの名無しさん :04/12/12 00:07:10
あるレコードデータのヘッダ部分 (intやらcharやらいろんな型の値が入ってる) 数バイト読み飛ばして そっからまた数バイト読み込みたいのですが てっとり早い方法といえばなんでしょーか。 オフセット使ったmemcpy()?
619 :
デフォルトの名無しさん :04/12/12 00:13:16
>>618 メモリーならそれ。
ファイルならfseekのあとfread
メモリ上なら、単に操作対象アドレスをずらすだけで済みそうな
621 :
デフォルトの名無しさん :04/12/12 00:26:42
構造体か関数 memcpyを裸で使う香具師はアフォ
622 :
デフォルトの名無しさん :04/12/12 00:32:31
その関数をつくっているのだとしたら
623 :
デフォルトの名無しさん :04/12/12 00:38:33
624 :
デフォルトの名無しさん :04/12/12 01:20:34
>>621 ギガ単位のファイルから1メガのデータブロック読み込んで
そっから64~1024バイトの可変長のレコードデータ読み込んで
一個上のレイヤがmallocで確保した領域に収めるっていう
関数作ってるんすけど
625 :
デフォルトの名無しさん :04/12/12 01:23:19
626 :
デフォルトの名無しさん :04/12/12 02:10:19
int i; charline[100] = "1234 123,4214,1214,1324,321,32134"; char*token, *sep = ", "; i = 0; token = strtok(line, sep); while(token != NULL){ data[i++] = atof(token); token = strtok(NULL, sep); } これと似たようなことをscanfと正規表現(のようなもの?)を使って書く方法を忘れました。 知ってる方教えてください。
有限状態オートマトンを使えと
"%[1-9]%[^1-9]%n"
正規表現ってのは『始めに言葉ありき』ってな感じでブラックボックスとして使っちゃってもいいと思うよ。 本を楽に一冊書けるぐらいボリュームのあるものだから。
半角数字と英字を全角に変換する標準関数を 知っていれば教えて下さい。 なければ、どの様に作れば、きれいな処理に なるでしょうか。
int c = '3'; if (isdigit(c)) { printf("%s", "0\01\02\03\04\05\06\07\08\09"+(c-'0')*2); }
*3だった。後から\0挟んだら間違えた。
>>631 英字がねぇじゃん。回答するならちゃんと質問読めよ。
isalphaとislowerの条件文を加えるだけ
(c-'0')*2 の部分が顔に見える・・・・・・
文字コードすら明らかにしていない、環境依存で不明確な質問には 「(ソース上に)表示されている文字列から選ぶ」方式以外 回答は無理だろうね。
>>631 ありがとうございました。
英字の方も同じ様に考えて作ってみます。
>>636 すみません。
WindowsXP VC++.net シフトJIS
文字列の入ったテキストファイルを読み込んで、 あらかじめ作っておいた配列に格納する方法を教えてください C言語でお願いします
宿題は宿題スレへ
C言語なら振り込め!
642 :
デフォルトの名無しさん :04/12/19 23:05:40
Cプロ書くとき何食ってる?
ポリフェノールに期待してココア
ご飯と納豆
645 :
デフォルトの名無しさん :04/12/19 23:17:38
虎屋の上等なやつ
647 :
デフォルトの名無しさん :04/12/19 23:22:48
キシリトールガム食い過ぎであごがクタクタ
>>646 え、ココアって低カロリーじゃなかったの?
>>647 キシリトールばっか取ってたらお腹が緩む
651 :
デフォルトの名無しさん :04/12/19 23:59:43
スーパードライ
653 :
デフォルトの名無しさん :04/12/20 04:08:54
まったりした話題の中に、こんな質問すいません。 配列 a,b,c,d,e に10種類以上の整数値を入力し、 それぞれの平均値 ma,mb,mc,md,me を求め、 ma, mb, mc, md, me を大きい順に並べるプログラムを書け。 ma ~ me は m[0],....に格納すること。 また平均値を求める部分は関数を使って書け。 って問題があるんですが、ひたすら頭捻っても、よくわかりません。 どなたか教えてください。 よろしくお願いします。 とりあえず、頭に浮かんだ部分は次に書きます。
654 :
デフォルトの名無しさん :04/12/20 04:12:22
・5回も入力させる部分を繰り返し書くのは変だから、そこはfor文で繰り返させる。 ・平均を出すのだから、何回入力したのかカウントするものが要る。 ・while文の中にwhile文をぶち込んで、外側でカウント、内側で入力&合計をやらせると 合計結果があぼーんする。 今分かっているのは、これくらいです。 よろしくお願いします。
655 :
デフォルトの名無しさん :04/12/20 04:21:29
突然失礼します。 この問題を教えていただきたいのですが。 (問題) sinの値が以下のように与えられている場合、ラグランジュの公式を用いて、 sin25°の値を計算せよ。また、その誤差を検討せよ。角度はラジアンに直せ。 xi(°)={0,10,20,30,40,50,60,70,80,90} sin(xi)={0.000000,0.173648,0.342020,0.500000,0.642788,0.766044,0.866025,0.939693,0.984808,1.000000} 言語はCです。よろしくお願いします。
657 :
655 :04/12/20 04:30:10
朝までにやらないといけないんです。
659 :
653 :04/12/20 05:46:25
ずーーっと考えて、解決しました。 やっぱり、自分でできる部分は十分に頭を捻った方がいいですね。 もし、本当の難問にぶち当たったら、そのときはお願いします。
660 :
デフォルトの名無しさん :04/12/20 15:07:07
double a: a=1/(1/2); これをやると、「除算、剰余演算が 0 で行われています」。 となってしまいますなんででしょうか。 よろしくお願いします。
(1/2)が0だから。 (1./2)とかで括弧内を浮動小数点仕様の値で出力させればOKかも。
663 :
デフォルトの名無しさん :04/12/20 17:27:11
すみませんが教えてください。下の式を式変形せずにコンピューターに計算させてxを求めるにはどうしたらいいのでしょうか。 (x+1) * (x+1) - x*x = 0 √(1+x)-1 / √(1+x) = 0 宜しくお願いします
666 :
663 :04/12/20 18:13:38
2分法ですか・・・勉強不足で正直よくわかりませんでしたが、ヒントをくれてどうもありがとうございました。なんとかやってみます。
数値計算法とか、勉強したことないの?
今、やろうと思ったのに、言うんだものなあ
670 :
デフォルトの名無しさん :04/12/21 08:12:13
671 :
デフォルトの名無しさん :04/12/21 16:00:54
DATE型←→time_t型変換ってできます?
>>671 Cの標準規格にはDATE型などない。
だけどどんな定義だろうと変換するためのコードを書けばできる。
673 :
デフォルトの名無しさん :04/12/23 12:01:50
スイッチ文を繰り返し使って、 方位を出すプログラムなんですが 乳力例 N E 12 出力例 N 12°E → 12° NとEと入力した後、終わってします 困っています助けてください
674 :
デフォルトの名無しさん :04/12/23 12:07:50
675 :
673 :04/12/23 12:08:13
scanf("%c", &n1); scanf("%c", &n2); scanf("%d", &ang1); switch(n1) { case 'N': switch(n2) { case 'E': ang2 = 0 + ang1; printf("%c %3d %c → 0+%3d\n", n1, ang1, n2, ang2); break; case 'W': ang2 = 360 - ang1; printf("%s %3d %s → 360-%3d\n", n1, ang1, n2, ang2); break; } break; //ここから同じようなものが続くので省略します case 'E': switch(n2) { ・・・・ } ・・・・ } return EXIT_SUCCESS; }
676 :
デフォルトの名無しさん :04/12/23 12:11:00
・ang2はどこから出てきたのか ・%cと%sが混在するのはなぜか ・「360-%3d」じゃなくて、「%3d」だけにして、後ろの引数を360-ang2としたいのではないか
677 :
676 :04/12/23 12:12:45
すまん、適当にレスしてしまった。 >・ang2はどこから出てきたのか は取り消す。 >・「360-%3d」じゃなくて、「%3d」だけにして、後ろの引数を360-ang2としたいのではないか は、「360-%3d」じゃなくて、「%3d」だけにすればいいのでは、に訂正
678 :
デフォルトの名無しさん :04/12/23 12:17:59
>>676 ごめんなさい
ang2は間違いました。0+ang1とその下は360-ang1でした。
%sは%cです。色々試してましたのでその時のままでした。
679 :
デフォルトの名無しさん :04/12/23 12:21:26
>NとEと入力した後、終わってします これどういう意味? 環境も何もわからんけど、NとEを入力したあと、ダイアログが出て強制終了するとか?
680 :
デフォルトの名無しさん :04/12/23 12:24:42
>>679 NとEの2つの文字を入力した後
ang1に値を入れるため、入力待ちになるはずなんですが、
普通にPress any key to continue
となって終わってしまいます。
681 :
デフォルトの名無しさん :04/12/23 12:26:24
>>680 ちゅーことはVCでやってんのか。
「現時点の最新のソース」を1行目からswitchの入り口くらいまで
全部貼ってみて。
>>675 switchのネストなんて生まれて初めて見た
長生きしてよかった
683 :
デフォルトの名無しさん :04/12/23 12:33:22
#include <stdio.h> #include <stdlib.h> int main() { char n1, n2; int ang1, ang2; scanf("%c", &n1); scanf("%c", &n2); scanf("%d", &ang1); switch(n1) { case 'N': switch(n2) { case 'E': ang2 = 0 + ang1; printf("%c %3d %c → 0+%3d\n", n1, ang1, n2, ang2); break; case 'W': ang2 = 360 - ang1; printf("%c %3d %c → 360-%3d\n", n1, ang1, n2, ang2); break; } break;
684 :
デフォルトの名無しさん :04/12/23 12:33:57
case 'E': switch(n2) { case 'S': ang2 = 90 + ang1; printf("%c %3d %c → 90+%3d\n", n1, ang1, n2, ang2); break; case 'N': ang2 = 90 - ang1; printf("%c %3d %c → 90-%3d\n", n1, ang1, n2, ang2); break; } break; case 'S': switch(n2) { case 'W': ang2 = 180 + ang1; printf("%c %3d %c → 180+%3d\n", n1, ang1, n2, ang2); break; case 'E': ang2 = 360 - ang1; printf("%c %3d %c → 180-%3d\n", n1, ang1, n2, ang2); break; } break;
685 :
デフォルトの名無しさん :04/12/23 12:34:29
case 'W': switch(n2) { case 'N': ang2 = 270 + ang1; printf("%c %3d %c → 270+%3d\n", n1, ang1, n2, ang2); break; case 'S': ang2 = 270 - ang1; printf("%c %3d %c → 270-%3d\n", n1, ang1, n2, ang2); break; } break; } return EXIT_SUCCESS; }
686 :
デフォルトの名無しさん :04/12/23 12:35:11
長くなってごめなさい よろしくおねがいします
687 :
デフォルトの名無しさん :04/12/23 12:39:16
>>686 こうしろ。
scanf("%c %c", &n1, &n2);
688 :
デフォルトの名無しさん :04/12/23 12:42:57
長くなりますが質問させていただきます。よろしくご教授ください BPSK波形を作るプログラムを作ったのですが符号を入力しても位相が変わりません。 codeで判定し、resultで反転(-1か1を乗算する)しています。 その他は問題ありません 環境Win2000SP4 コンパイラVC6++ 以下にソースを示します。
#include <stdio.h> #include <math.h> #include <string.h> #define pi 3.141592654 int main(void) { FILE *fout; char code[256]; double result; double p,n,t,f,i,r; double sqrt(double p); unsigned int code_length,u; if((fout=fopen("fout.txt","wt"))==NULL){ printf("can't open file\n"); return 1; } printf("一周期のbit数:"); scanf("%lf",&p); printf("code入力(ex:1010):"); scanf("%s",&code);
691 :
デフォルトの名無しさん :04/12/23 12:47:25
if(code[256]=='1') result=1; else result=-1; r=sqrt(p); i=f=1/r; code_length=strlen((const char*)code); for(u=0;u<=code_length-1;u++){ for(t=0;t<=r;t+=i){ n=result*sin(2*pi*f*t); printf("%lf,\n",n); fprintf(fout,"%lf,\n",n); } } fclose(fout); return 0; }
693 :
デフォルトの名無しさん :04/12/23 12:50:37
code[256]=='1'って…。255か?
694 :
デフォルトの名無しさん :04/12/23 15:32:47
695 :
デフォルトの名無しさん :04/12/23 15:35:27
とりあえず、
>>689 は、256を0に変えてやってみると間違いに気づくかと
何をしてるのかわからないがなw
ひょっとしてここが本スレ?
698 :
デフォルトの名無しさん :04/12/23 18:22:54
>>697 とりあえず、codeを101000111・・・101って入力を255文字も入れるのか?
そこが聞きたい。
>>698 入れないです。だいたい64bitぐらいを想定していますが念のため256bitとっています
700 :
デフォルトの名無しさん :04/12/23 19:42:03
>>699 返信遅れてごめんね
じゃあ、あれだ
f(code[256]=='1')
この部分がおかしい
これでは、255文字目が1のときしか
result=1を実行しないんですよ
この256に変数wでも入れて
for文でくくってあげるといいよ
んで、変数iは配列にしてね
701 :
デフォルトの名無しさん :04/12/23 19:50:25
iじゃないresultを配列にして 今手が離せないから プログラム書くから待って
>>700 どうもありがとうございます!なるほど配列の部分がおかしかったのですね
703 :
デフォルトの名無しさん :04/12/23 20:34:03
おい、ネタスレだって事忘れてないか?
いや、まだ出来ていないです。。。 勘違いさせてごめんなさい 出来ればコード書いていただけないでしょうか? よろしくお願い致します
おい、ネタスレだって事忘れてないか?
707 :
デフォルトの名無しさん :04/12/23 21:55:08
printf("一周期のbit数:"); scanf("%lf",&p); printf("code入力:"); //ここから while(1){ scanf("%s",code); if(code[w]=='1') result[w]=1; else result[w]=-1; if(strcmp(code, "E") == 0) break; w++; } r=sqrt(p); i=f=1/r; for(u=0;u<=w-1;u++){ for(t=0;t<=r;t+=i){ n=result[u]*sin(2*pi*f*t); printf("%lf,\n",n); fprintf(fout,"%lf,\n",n); } } まだプログラム初心者ですが、一応動きます
708 :
デフォルトの名無しさん :04/12/23 21:56:20
ちょっと、入力にEを入れないと終わらないのでかっこ悪いけど勘弁して
709 :
デフォルトの名無しさん :04/12/23 21:58:04
おっと、それから、入力は続けて1010じゃなくて 1 0 1 0 になってしまいましたorz 誰かもっといいプログラムあったら教えて
>>707 どうも忙しい中、教えてくれてありがとうございます 非常に参考になりました
>>707 すいません、wの型はintでしょうか?なぜか僕の環境ではうまく動作しません・・・
コンパイルはエラー無しです。環境はWin2000 VC++6です
712 :
デフォルトの名無しさん :04/12/25 00:03:35
>>711 int型です
最初に
int w=0;って初期化しないと無理
って、少し考えれば分かると思うが・・・
こんなことで質問してるような連中は最初から考える気など無い
>>713 連中は考える気が無いんじゃなくて、考える知能がない!残念!
715 :
デフォルトの名無しさん :04/12/26 16:49:13
C言語文法の著作権を主張したら幾らになっていましたか?
716 :
デフォルトの名無しさん :04/12/26 17:30:07
717 :
デフォルトの名無しさん :04/12/26 17:43:05
C言語でテキストファイルから1行だけ文字列を読み込んで配列に格納したいときにfgets関数をつかいますよね。 しかし読み込む文字列の上限を1行につき30文字までと指定、fgets(配列,30,*ファイル)とやった場合 一行に50文字ある場合30文字と20文字というように後半の20文字をシカトしたいのに、後半の20文字も読み込んでしまいます。 それをシカトして次の行を読み込むプログラムはどのようにすればよいのでしょうか?
718 :
デフォルトの名無しさん :04/12/26 17:45:01
文字列を反転する関数です。 #include<stdio.h> char * hoge(char *); int main(void){ char str[] = "foo"; printf("%s\n", hoge(str)); return 0; } char * hoge(char *p){ int len, i, j; char str[8]; for(i = 2, j = 0; i > -1; i--, j++) str[j] = *(p + i); str[j] = '\0'; return str; } printf("%s\n", hoge(str)) がうまくいきません。 oofが表示されれば成功なのですが、文字化けした状態で表示されます。 printf(str)で試したところ、成功しました。 ご教示ください。お願いします。
>>718 ( ゚Д゚)ポカーン
変数の有効な範囲を考えれ
>>719 これが噂に聞くあいつか、ローカル関数へのポインタというやつか。
なかなか強そうな奴だ
>>718 #include<stdio.h>
#include<string.h>
char * hoge(char *);
int main(void){
char str[] = "foo";
printf("%s\n", hoge(str));
return 0;
}
char * hoge(char *p){
int len, i, j;
char str[8];
for(i = 2, j = 0; i > -1; i--, j++)
str[j] = *(p + i);
str[j] = '\0';
strcpy(p, str)
return p;
}
722 :
デフォルトの名無しさん :04/12/26 17:56:49
>>721 ありがとうございます。動きました。
return strでも動きそうな感じなのに、勉強不足ですねorz
>>722 char str[8]; は関数を抜けた時点で無効になるから…
724 :
デフォルトの名無しさん :04/12/26 18:01:20
>>718 >変数の有効な範囲を考えれ
hoge()のstrのことですよね?
アドレスを返してるから大丈夫だと思ったのですが…。
>>717 取りこんだ文字列の最後が'\n'じゃ無い時は
次ぎのfgetsはまだ同じ行だから空読みしろ
>>724 void hoge()
{
int a; // int型のローカル変数が確保される
・・・
} // ここでローカル変数が破棄される(スコープを抜ける)
ローカル変数のポインタを返してはいけないのはこのため
727 :
デフォルトの名無しさん :04/12/26 18:04:14
>>723 なるほど。すっかり忘れてました。
でも、printf(hoge(str))で動くのは何故なんでしょう?この場合も
>char str[8]; は関数を抜けた時点で無効になるから…
になるような。
>>727 抜けた時点で無効になるとはいっても、値が消されているとは限らない。
たまたま値が残っていただけ と考えるのが妥当かと。
もうちょっと突っ込んで考えてみると、
"%s\n"をPUSHした段階でスタックが動いて、アドレスが無効になったんだと思う。
729 :
デフォルトの名無しさん :04/12/26 18:09:08
>>726 >>728 どうもです。
わかり易い説明ですね。これで、二度と同じ失敗をしないと思います。
ありがとうございました。
730 :
デフォルトの名無しさん :04/12/26 18:14:26
>>725 空読みとはどのようにするのでしょうか?
>>722 関数内で、staticを付けた変数以外は、
その関数の中でしか使えない。
>>730 fgetsとかで読み込むだけで、中身を使わないこと。
733 :
デフォルトの名無しさん :04/12/26 18:31:10
>>732 なるほど、ではif文などの条件文をつかって30文字を超えたらfgets()が発動するようにすればいいんですね?
734 :
デフォルトの名無しさん :04/12/26 18:54:40
>>732 fgetsをつかって1行の文字を30文字だけ読み込みたいとき1行の文字が30文字超えたらfgetsの空呼び出しってどうゆう条件判定すればいいですかね?
度々申し訳ございません。
すみません、訳の分からない質問かも知れませんが、 P2DS とはC言語でしょうか?
>734 てか参考書見るなりググルなりして fgetsの動作を理解して方が早いよ
>>734 fgets()は指定したバッファサイズ-1文字、又は '\n'まで読みこんで、
'\0'が付加される・・から最大29文字までしか読み込まれない筈
739 :
デフォルトの名無しさん :04/12/26 19:30:26
nCrを計算するプログラムです。 #include <stdio.h> int comb(int,int); main() { int n,r; printf("nを入力して下さい:"); scanf("%d%d",&n,&r); printf("%dC%d=%d\n",n,r,comb(n,r)); } int comb(int n,int r) { if(r==1) return n; else return ((n-r+1)/r)*comb(n,r-1); } これで、例えばn=6,r=3を入れると答えは20なのですが、12と出てしまいます。 どこを修正すればいいのでしょうか…
>>739 n、rともに十分大きな数を入れたらstack overflowとかわけわからんメッセージが出て
なんか不正なコードが実行されて大事なエロ画像が警視庁にメールされてしまいました。
742 :
デフォルトの名無しさん :04/12/26 19:43:15
if(strlen(moji[i])==29) { if(moji[i][28]!='\n') fgets(,,f_in);//式の構文エラー } 空読みしようとしてるのですがこの部分がエラーになってしまいます。・゚・(ノД`)・゚・。
>>742 何の言語の影響か知らんが引数省略すんな。
744 :
デフォルトの名無しさん :04/12/26 19:51:20
>>743 空読みってこうゆうのじゃないんですか?
ぐぐっても空読みの仕方が見つからなかったんで・・・orz
>>742 char tmp[30];
fgets(tmo, 30, f_in);
>>739 return ((n-r+1)/r)*comb(n,r-1);
この部分がいけない。計算時にint型にキャストされて、小数点以下が切捨てられるためにエラーが出る。
n=6,r=3のときは (6-3+1)/3*(6-4+1)/2*6 であり、人間ならば先に分子をきれいに消して計算するが
(6-3+1)/3=1、(6-4+1)/2=2 としてしまうために、計算結果が12になってしまう。
>>739 整数で切り捨てられるから。
例えば、4/3 は 1 になる。
先にかけ算を行い、最後に全体を割ればよい。
return ((n-r+1)*comb(n,r-1))/r;
748 :
デフォルトの名無しさん :04/12/26 20:00:55
>>745 なるほど、そのように空読み専用の配列を作るのですね。
>>746 ,747
な、なるほど!漏れこの間違い多いんだよなぁ…
ありがとう!
>>748 あとfgetsの戻り値がNULLの時の判別も必要だな
751 :
デフォルトの名無しさん :04/12/26 20:53:59
すいません、空読み専用の配列を作る方法ではなぜかうまくいきません fgetsを'無駄に'n-1回呼べば、その次のfgetsでn行目が取り出せるらしいですが、なにか無駄にfgetsを呼び出す方法ありますかね?
{ char* str = (char*)calloc(1, 50); char* buf=str; strcpy(str,"hogehoge"); sprintf(buf,"\"%s\"",str); } 最終行を sprintf(str,"\"%s\"",str); こうすると期待する結果は得られない(逆に言うと上のようにすれば期待する結果が得られた)わけで、 このやり方は正常といえるのでしょうか。
754 :
デフォルトの名無しさん :04/12/26 21:17:24
すまそ、主だったトコだけ抜き出して
>>753 を出したけど、そのままでコンパイルしてみたら期待する結果は得られなかった。
だめなのね
>>751 単にこれで良いんじゃないの?
5行目が欲しいなら
n=5;
while (--n) fgets(buf, sizeof buf, fp);
fgets(buf, sizeof buf, fp); //5行目をゲット
bufの大きさより長い行があるとうまくいかないけど
ああ、途中で str++; を入れたら言うような結果が出たよ・・・
758 :
質問 :04/12/26 21:26:13
2入力のinput関数を作りたいんですができません。 入力したのを格納する変数を グローバル変数として定義してやる方法しかわかりません。 もっとかっこいい方法はありませんか? おねいがいします //グローバル変数 int a; int b; ・・・ void input() { scanf("%d", &a); scanf("%d", &b); return; } ・・・
>>757 馬鹿?
つーか、ここはお前の日記帳じゃないぞ。
>>758 scanf()は何のためにポインタを渡す必要があると思う?
二つなら構造体かポインタ使う。というか 一度に二つ入力させないで一つずつ二回呼び出せばいいじゃん。 int a, b; a = input; b = input; int input(void) { int i; scanf("%d", &i); return i; }
input();でした。
>>760 ダメすぎ。他人に教える前に勉強しなおしたら?
#あ、無駄か。
763 :
758 :04/12/26 21:41:32
つーか、ここネタスレなんだけど…
765 :
デフォルトの名無しさん :04/12/26 21:45:25
>>756 なるほどとても勉強になります。
しかしどの行が30文字オーバーかということはわからない設定の上ですから。
>>765 ネタスレに何を期待しているんだ?
fgets()で改行まで読めなかったら、残りを無理にfgets()で読まずにfgetc()で読み飛ばせばいいだろ?
ああ↑見たけどそういうことだったのね。ならこれで。 char buf[30]; n = 5; while (--n) { fgets(buf, 30, fp); while (buf[28] != '\n') fgets(buf, 30, fp); } fgets(buf, 30, fp); //5行目をゲット
すまん駄目だ。 こうかな。 while (--n) { fgets(buf, 30, fp); while (buf[strlen(buf) - 1] != '\n') fgets(buf, 30, fp); } fgets(buf, 30, fp);
文字列で7.0599とか0.0000345のように十進数で表現されている 浮動小数点数の仮数部を 浮動小数点数を使わずに シフトで扱える形式にして、 仮数部 1.xxxxxx -> 指数部:シフト量 + 127 ... のようにして、 最終的に char fpnum[32 + 1] (32ビット+'\0') のようなものに格納しよう、と思ったのですが、 なんだか、むつかしいです。 どうすればいいですか? ヘルプ。
>>767 >766を読んで最初からやり直し。
>>769 double aho = 7.0599;
float * manuke = (float *) aho;
printf("%#08x%08x\n", manuke[0], manuke[1]);
でも実行してゆっくり考えろ。
上で2入力input関数の質問をした者です 考えた結果がこれです。 いろいろ指摘おねいがいします。 int main() { int *a, *b; int c, d; a = &c; b = &d; input(a, b); printf("%d, %d\n", *a, *b); return 0; } void input(int *a, int *b) { scanf("%d", a); scanf("%d", b); return; }
773 :
デフォルトの名無しさん :04/12/26 22:15:39
int main() { int *a, *b; int c, d; a = &c; b = &d; input(a, b); printf("%d, %d\n", *a, *b); return 0; } void input(int *a, int *b) { scanf("%d", a); scanf("%d", b); return; }
774 :
デフォルトの名無しさん :04/12/26 22:17:52
int main() { int *a, *b; int c, d; a = &c; b = &d; input(a, b); printf("%d, %d\n", *a, *b); return 0; } void input(int *a, int *b) { scanf("%d", a); scanf("%d", b); return; } 見えにくいので修正しました。 間違いで二重書き込みしてしまいましたごめんなさい。
そもそもなんで int main() { int c, d; scanf("%d%d", &c, &d); printf("%d, %d\n", c, d); return 0; } じゃないのかと。
えーーダブルあほが7.0599で あほをフロートをさすポインタにキャストして まぬけがポインタになったあほの中身を指して... まぬけと次のまぬけを...
float * manuke = (float *) &aho; だな。
778 :
デフォルトの名無しさん :04/12/26 22:25:02
>>775 本当は、別のプログラムを組んでいるのですが
質問を分かりやすくするために
こんな意味のないプログラムになってしまいました
目的は、グローバル変数を使わないで
2入力input関数を作れたらなってことで質問しました
32ビットとか64ビットだと、 わかりにくいので 寝て、おきてから ふごう 1ビット しすう 3ビット かすう 4ビット ぐらいで考えてみることにします。 どうも、しつれいしました。
main関数内のint *a, *bは消せますね 無駄でした。 なんとか事故解決しました
781 :
デフォルトの名無しさん :04/12/26 23:02:43
↓mallocで領域を確保しようとしてもなぜか4byte分しかとってこれません。 どこに問題があるのでしょうか? #include <stdio.h> int main(void) { int hogesize; char buf[256]; char *str; printf("How many characters you want to input?\n"); fgets(buf, sizeof(buf), stdin); sscanf(buf, "%d", &hogesize); fprintf(stdout, "OK. Now you can input %d characters\n", hogesize); str = malloc((sizeof(char) * hogesize) + 1); printf("Input the word.\n"); fgets(str, sizeof(str), stdin); fprintf(stdout, "The word you inputted is: %s\n", str); return 0; }
× : sizeof(str)
>>781 > fgets(str, sizeof(str), stdin);
もしstrが配列ならsizeof(str)は可能ですが、あいにくstrはただのポインタですから
これでは要素数を得ることはできません。
要素数を得る方法はありませんから、確保した時に使った値を使いまわしてください。
784 :
デフォルトの名無しさん :04/12/26 23:14:37
-(a + b) のとき括弧が必要だから -(1) と書くんだと主張しているようなものだな
>>781 駄目なのはsizeof (str)だ。sizeof (str) == sizeof (char *) == (お前の環境では)4ということだ。
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int bufsize;
char buf[256];
char *str;
puts("How many characters you want to input?");
fgets(buf, sizeof buf, stdin);
bufsize = atoi(buf);
printf("OK. Now you can input %d characters\n", bufsize);
//別にsizeof (char) == 1は規格で保証されているので要らないが一応残しておいた。
str = malloc((sizeof (char) * bufsize) + 1);
puts("Input the word.");
fgets(str, bufsize, stdin);
printf("The word you inputted is: %s\n", str);
free(str);
return 0;
}
俺の好みでいろいろ書き替えちゃっているけどこんなのでどうだ?
787 :
デフォルトの名無しさん :04/12/26 23:18:26
エロいな・・・
789 :
デフォルトの名無しさん :04/12/26 23:21:25
>一応残しておいた。 理由をはっきり言えないのは ぼけ だからと白状しろ
790 :
781 :04/12/26 23:28:35
みなさんありがとうございます。修正してこんな感じに無事落ち着きました。 int hogesize; char buf[256]; char *str; printf("How many characters you want to input?\n"); fgets(buf, sizeof(buf), stdin); sscanf(buf, "%d", &hogesize); printf("OK. Now you can input %d characters\n", hogesize); str = malloc(1 * hogesize + 1); printf("Input the word.\n"); fgets(str, hogesize + 1, stdin); printf("The word you inputted is: %s\n", str); free(str);
791 :
781 :04/12/26 23:30:33
1 * hogesize //1 * いらないですね、アホだorz
正規表現使いたいんですけどregex.hがないって言われます。
Lo = W/pow(T, 3) * pow(10, 7) Wは体重です Tは身長です Loはローレル指数です この計算をオーバーフローせずに計算させるにはどうしたらいいですか?;
794 :
デフォルトの名無しさん :04/12/26 23:38:11
オーバーフローしないハードウェアを使う。
double Lo;です Loがdouble型からはみ出て、正しい値が出ません
int hogesize; char buf[256]; char *str; printf("How many Timpos you want to insert?\n"); fgets(buf, sizeof(buf), stdin); sscanf(buf, "%d", &hogesize); printf("OK. Now you can insert %d penis \n", hogesize); str = malloc(1 * hogesize + 1); printf("Insert the vibrator.\n"); fgets(str, hogesize + 1, stdin); printf("The timpo you inserted is: %s\n", str); free(str);
797 :
デフォルトの名無しさん :04/12/26 23:42:52
>>793 悪いことはいわない
数学DQNはPGはやめとけ
>>797 アルゴリズムを300題解いているんですが
その中の一つにこれがあったんです
決して、数学専攻みたいな者ではないです
799 :
781 :04/12/26 23:48:05
800 :
デフォルトの名無しさん :04/12/26 23:50:10
>>798 専攻とかいうレベルかよ・・・
だからDQNと言ったんだ
801 :
デフォルトの名無しさん :04/12/26 23:51:19
> pow(10, 7) 10000000.0と書いてはいけないのか?
802 :
デフォルトの名無しさん :04/12/26 23:52:48
printf("%f\n", 1e+7);
803 :
793=798 :04/12/26 23:58:16
804 :
デフォルトの名無しさん :04/12/27 00:02:16
誰もオーバーフロー対策なんて言っていない。
みなさんごめんなさい できました 何がいけなかったのか聞かないでください なんだか悲しくなってきました・・・orz
806 :
デフォルトの名無しさん :04/12/27 00:07:56
>>803 powの返却値は何型で、最大と最小はいくつだ?
それで T の許容範囲がわかるよな
Wは何型で、最大と最小はいくつだ?
除算ならゼロ除算の回避も必要だよな
1e+7倍して Lo の最小から最大に収まる W/pow(T,3) の値はどんな範囲だ?
厨房にもできそうな問題だが、厨房か?
そんな当たり前のことを偉そうに聞かれると自分がバカにされてるみたいで不愉快です。 もっと中身のある話を僕はしたい。
そんな当たり前のことを偉そうに聞かれると自分がバカにされてるみたいで不愉快です。 もっと中身のある話を僕はしたい。
809 :
デフォルトの名無しさん :04/12/27 00:42:47
そんな当たり前のことを偉そうに聞かれると自分がバカにされてるみたいで不愉快です。 もっと中身のある話を僕はしたい。
811 :
デフォルトの名無しさん :04/12/27 01:23:08
806 だが 810 は俺じゃない
>>811 自分で言っといて、随分と言い訳苦しいですね。潔くないですよ。
813 :
◆NiaLAovDN6 :04/12/27 01:27:39
うん
814 :
デフォルトの名無しさん :04/12/27 03:39:44
793=798 だが 807-809 は俺じゃない さっきよりは中身のある質問するから待ってろ
815 :
デフォルトの名無しさん :04/12/27 04:03:05
線形リストを使って、10個の整数を足して合計を求めるプログラムで ファイルに入力した数字と合計の出力を書き込む関数を作りたいんですけど どうやって構造体の中身を引っ張りだせばいいんですか アドバイスお願いします 次に主なプログラムを出します 現時点では、プログラムの結果だけしかファイルにとりこめません
816 :
デフォルトの名無しさん :04/12/27 04:07:48
struct list { int num; struct list *next; }; int main() { int res; sum(&res); file_output(res); return EXIT_SUCCESS; }
817 :
デフォルトの名無しさん :04/12/27 04:08:20
//線形リスト void sum(int *sum) { struct list *a, *b; char str[16]; int i = 0; *sum = 0; b = NULL; printf("整数[%2d] = ", i+1); scanf("%s", str); while(1) { if (i != 10) a = (struct list *)malloc(sizeof(struct list)); else break; a->num = atoi(str); *sum += a->num; a->next = b; b = a; if (i == 9) break; printf("整数[%2d] = ", i+2); scanf("%s", str); ++i; } return ; }
818 :
デフォルトの名無しさん :04/12/27 04:08:42
//ファイル出力 void output(int sum) { printf("sum = %d\n", sum); return; }
819 :
デフォルトの名無しさん :04/12/27 04:09:57
おねがいします
820 :
815 :04/12/27 04:21:49
やり方が分かりました。 sum関数の引数に配列を置いて その配列でデータ取って それを使ってファイル関数に入れれば できるみたいです
それじゃ線形リストにする意味がないだろが('A`)
すみません質問です ファイル関係のことなんですが プログラム書いて実行しても なにも実感がわきません なにか実感が沸くようなコードありませんか?
825 :
デフォルトの名無しさん :04/12/27 14:25:22
ハァ?
826 :
デフォルトの名無しさん :04/12/27 17:49:51
はぁ?
ハァハァ…
828 :
デフォルトの名無しさん :04/12/27 20:52:23
>>823 圧縮ツールでも作ってみたら?
LHA や ZIP があるから必要性は全然ないけど、
遊んでみるには楽しいネタだと思う
圧縮ツールとはあまり関係ないのだが、 WinRARで.iso(ISO9660)の中身を覗けるのを見て、 統合アーカイバプロジェクトにUnISO9660.DLLがあればいいのに、と思ったことがある。 (展開にDLLを使っているファイラとかで使えればと)
>>823 datファイルをhtmlに変換するプログラム
これほすぃ
832 :
デフォルトの名無しさん :04/12/27 21:21:27
>>823 du なんかもオモロイな
64bit 必要になるし
いやいや、823の課題でつよ。 決して作れないわけじゃないですが 特に率先して作る理由もない。 だからつくらないと。
834 :
デフォルトの名無しさん :04/12/28 01:28:39
#include<stdio.h> main(){ int a=1; printf("%f\n",(float)1.-a); return 0; } 1.-a とはどういうことですか?
(float)1.0 - a
837 :
デフォルトの名無しさん :04/12/28 01:34:11
1.0-aのことでしたか。 どうもです。
(float)1.よりも1.fにしろ。 わからない奴にとって余計に見た目は難解になるが。
839 :
連結リスト :04/12/28 14:31:50
↓構造体を配列指定ではなく連結リストを使って最初に入力した数の分だけ 用意したいのですがこの後どうすればいいのかわかりません。 (というか連結リストの仕組みが理解できていないわけなのですが・・。) どのようにすれば良いのでしょうか? #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { char *name; int *age; struct Data *next; } Data; void readname(FILE *fp, char *buf, char **name) { fgets(buf, 256, fp); buf[strlen(buf) - 1] = '\0'; *name = malloc(sizeof(char) * (strlen(buf) + 1)); strcpy(*name, buf); } void readage(FILE *fp, char *buf, int **age) { fgets(buf, 256, fp); *age = malloc(sizeof(int) * (strlen(buf) + 1)); sscanf(buf, "%d", &*age); } ↓続きます
840 :
連結リスト :04/12/28 14:32:12
int main(void) { char buf[256]; Data *data; int i; int num; data = malloc(sizeof(Data)); fprintf(stdout, "Inout how many people are.\n"); fgets(buf, 256, stdin); sscanf(buf, "%d", &num); fprintf(stdout, "OK. %d persons' data.\n", num); for (i = 0; i < num; i++){ fprintf(stdout, "Input name of No.%d.\n", i + 1); readname(stdin, buf, &data->name); } for (i = 0; i < num; i++){ fprintf(stdout, "Input age of No.%d.\n", i + 1); readage(stdin, buf, &data->age); } for (i = 0; i < num; i++){ fprintf(stdout, "No.%d data:\n", i + 1); fprintf(stdout, "name: %s\n", data->name); fprintf(stdout, "age: %d\n", data->age); } return 0; }
841 :
839 :04/12/28 14:32:27
すいません、やっぱやめます。
842 :
連結リスト :04/12/28 14:33:35
↑自分ではないです。よろしくお願いします。
>>842 >どのようにすれば良いのでしょうか?
連結リストの仕組みを理解する。
それができないなら祈る。
844 :
ネタスレだったんですか :04/12/28 15:19:54
>>843 それはそうと・・
そうですね、よく考えたら甘えすぎました。
もっかい本読んで挑戦してきます。
846 :
26 :04/12/28 15:33:59
>>845 誘導ありがとうございます。
自分の読解力が本に負けたらそちらに行ってきますorz
(´∀`)今日もこのスレは平和でいいなぁ
848 :
デフォルトの名無しさん :04/12/28 15:39:13
質問なんですが、 円の半径(r)と中心点(cx,cy)がわかっていて、 この円上に座標点(x,y)を取り、基準点を(cx,cy+r)としたとき、 この座標点の角度を求めるプログラムを作るには、 どのような式を使えばよいでしょうか? ちなみにasinとacosを使用したいです。
またか!
850 :
848 :04/12/28 15:45:09
質問するんじゃねー。ここは本スレじゃねーんだ。
852 :
848 :04/12/28 15:49:05
すいません。本スレに書き込んできます。
853 :
デフォルトの名無しさん :04/12/28 22:48:50
本スレ上げ
854 :
デフォルトの名無しさん :04/12/28 22:49:53
最近Cが分からなくなってきた。
最近女房がご無沙汰で…
風俗でも行けよ
858 :
デフォルトの名無しさん :04/12/29 18:22:06
最近痔であなるがひりひりするから、Cやるのがつらい
859 :
デフォルトの名無しさん :04/12/29 18:24:40
Cより、うんこするほうが難しい
860 :
デフォルトの名無しさん :04/12/29 20:00:41
すけべイス座っとけ
861 :
デフォルトの名無しさん :04/12/30 02:31:40
...
残念!
864 :
デフォルトの名無しさん :05/01/03 02:50:19
865 :
デフォルトの名無しさん :05/01/03 05:15:25
ちょっと分からんので誰か教えてください。 以下のようなプログラムの場合 int getstr(char* in, char* out) { /* inを処理して可変長のoutを得る*/ } int main(void) { char str1[10]="aaaaaaaaaa"; char *str2; [str2の領域確保?] getstr(str1,str2); printf("%s",str2); [str2の領域解放?] return 0; } mainではstr2の長さが分からないので領域確保できないですが どうしたらよいでしょうか?
866 :
デフォルトの名無しさん :05/01/03 05:17:42
867 :
865 :05/01/03 05:18:30
しまった。本スレと間違った。 逝ってきます。
そこでStringBufferですよ
俺俺に振り込め!
あ、婆ちゃん?俺だよ俺!孫の! 仕送り送りたいんで口座番号教えて!
な、なんだってー
void swap1(int *i, int *j) { int k[2]; k[0] = *i; k[1] = *j; *i = k[1]; *j = k[0]; } void swap2(int *i, int *j) { int tmp; tmp = *i; *i = *j; *j = tmp; }
よく似ているというか、同じになりますた。すげー。 それだけ。おわり。 08048364 <swap1>: 8048364: 55 push %ebp 8048365: 89 e5 mov %esp,%ebp 8048367: 53 push %ebx 8048368: 8b 55 08 mov 0x8(%ebp),%edx 804836b: 8b 4d 0c mov 0xc(%ebp),%ecx 804836e: 8b 1a mov (%edx),%ebx 8048370: 8b 01 mov (%ecx),%eax 8048372: 89 02 mov %eax,(%edx) 8048374: 89 19 mov %ebx,(%ecx) 8048376: 5b pop %ebx 8048377: 5d pop %ebp 8048378: c3 ret 08048379 <swap2>: 8048379: 55 push %ebp 804837a: 89 e5 mov %esp,%ebp 804837c: 53 push %ebx 804837d: 8b 55 08 mov 0x8(%ebp),%edx 8048380: 8b 4d 0c mov 0xc(%ebp),%ecx 8048383: 8b 1a mov (%edx),%ebx 8048385: 8b 01 mov (%ecx),%eax 8048387: 89 02 mov %eax,(%edx) 8048389: 89 19 mov %ebx,(%ecx) 804838b: 5b pop %ebx 804838c: 5d pop %ebp 804838d: c3 ret
874 :
デフォルトの名無しさん :05/01/06 23:41:04
>>873 よくできました。ぱちぱち
・・・今後も確認を怠らないように。
詐欺スレに書くなー
876 :
デフォルトの名無しさん :05/01/07 18:57:01
文句あるなら削除依頼でもしてきたら?
>>876 ム板のスレに削除依頼して通るとでも思っているのか!
削除人に見放された、この板で!m9(´・ω・`)プボーン
878 :
デフォルトの名無しさん :05/01/07 20:01:19
>>877 なぜだと思う?
くだらねえこと気にするしかなくなるのはPGの恥だぞ
879 :
デフォルトの名無しさん :05/01/07 20:34:31
>>877 見放されてはいないぞ。
ただ担当の削除人が甘いだけ。
えーほんじつは、クロス環境(gcc)をぼけ中。 とりあえずmips。libcはまだない、しかしgcc -Sまで可。 swap2: .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, extra= 0 .mask 0x00000000,0 .fmask 0x00000000,0 .set noreorder .cpload $25 .set reorder lw $6,0($4) lw $3,0($5) #nop # ?ストール? sw $3,0($4) .set noreorder .set nomacro j $31 sw $6,0($5) # ?遅延分岐? .set macro .set reorder .end swap2
...gcc -c でobjdump可ですた。 00000030 <swap2>: 30: 3c1c0000 lui gp,0x0 34: 279c0000 addiu gp,gp,0 38: 0399e021 addu gp,gp,t9 3c: 8c860000 lw a2,0(a0) 40: 8ca30000 lw v1,0(a1) 44: 00000000 nop 48: ac830000 sw v1,0(a0) 4c: 03e00008 jr ra 50: aca60000 sw a2,0(a1)
882 :
デフォルトの名無しさん :05/01/10 20:44:43
array[12]は12[array]と同等であるが12[array]はなぜ許されているのだろう?
それをシンタックスシュガーと言う
>>882 array[12] == *(array + (12)) == *(12 + (array)) == 12[array]
885 :
デフォルトの名無しさん :05/01/11 18:51:00
息の長いスレだねぇ
30万近くあるデータをバイナリファイルから読み込んで できるだけ高速に大きい順にソートしたいんですが、 どなたかソート部分のソースお願いします
訂正 バイナリファイルから数十万の数値データを読み込んで できるだけ高速に大きい順位並べてからテキストファイルに書き出すソフトが作りたいです ソート部分と書き込み/読み出し部分のソースをよろしくおねがいします
データ形式
>>886 で、読み込まれたデータはどういう形で保存されているの?
>>890 数万のdouble型の値としかかかれていませんでした・・
i=0;
while(1==fread(&a[i],sizeof(double),1,fp)){
i++;
}
n=i;
のように読み出せとのことなんですが、
実際クイックソートするとなるとサンプルや文献読んでもよくわからなかったので
お願いしました。
892 :
デフォルトの名無しさん :05/01/11 21:07:29
sizeof(double) == 4 として5MBか…ま、qsortで大丈夫かな。
>891 ずいぶん遅い方法で読み込むんだな。出題者はどあぽに違いない
895 :
886 :05/01/11 21:13:13
いろんな文献やHPでqsort関数ってものの存在は見たんですが 関数という考え方がよくわかってないもので使ってなかったんですが int main(void); というのがmain関数なんですよね・・・?? ただ関数にqsortという名前をつけるだけなのかなと考えたんですが・・・
>891のような読み出し方する意図が不明だな aのサイズは決め打ち? ファイルのサイズで確保するなら1個づつ読み出す意味もわからないし
898 :
デフォルトの名無しさん :05/01/11 21:20:55
>895 main関数はプログラム起動時に最初に職員室に呼び出される、プログラムに必須の関数。
900 :
デフォルトの名無しさん :05/01/12 04:01:27
> それをシンタックスシュガーと言う いわねーよ ぼけ。 シンタックスシュガーってのはそういう意味ではない。
>>900 へへへ、だんな、ではどういうのをシンタックスシュガーというんで?
# おれは元吉さんの「糖衣構文」て訳語が好きだなあ
902 :
デフォルトの名無しさん :05/01/12 11:09:44
char a[]={'a','b','c','\0'};をchar a[]="abc";と書けるとか、 (*a).bをa->bと書けるとか。
こ こ は ネ タ ス レ だ っ て の
構文糖、一刀両断!
905 :
デフォルトの名無しさん :05/01/16 17:56:44
捕手
ほっ、ほぁーっ! ほぁーっ!! ぬるぽ
907 :
デフォルトの名無しさん :05/01/31 09:18:22
捕手
908 :
デフォルトの名無しさん :05/02/07 00:19:29
捕手
909 :
コスモス :05/02/07 12:04:24
標準入力から3個の整数を読みとり、正三角形、2等辺三角形、一般の三角形を判定するC言語のプログラムを教えてください!
911 :
デフォルトの名無しさん :05/02/07 12:33:45
2時間ぐらいで誰か代わりにプログラムをくんでくれ ax' = b (mod m) (ただし,a,b∈整数,m∈整数>0)の解放 Step 1.拡張ユークリッド互除法を、a,mに適用して、 ax' + my' = d , d = (a,m) なる整数x',y',dを求める。 Step 2.もし d | bでないなら、「解なし」と画面出力して終了。 そうでないならStep 3へいく。 Step 3. x1 = b/d*x1 を計算。 Step 4. x0 ≡ (mod m/d),0=<x0<m/dなる整数x0を計算して出力
912 :
デフォルトの名無しさん :05/02/07 12:34:34
ちなみに拡張ユークリッド互除法のプログラム #include<stdio.h> main(void) { int a,b,c,d,e,f,g,h; a = b = g = h = 0; c = f = 1; d = e = 0; printf("整数を2つ入力してください = "); scanf("%d %d",&a,&b); while(b!=0){ g = a/b; h = a-g*b; a = b; b = h; h = c-g*d; c = d; d = h; h = e-g*f; e = f; f = h; } printf("最大公約数は%dで、Cは%d、Eは%dです\n",a,c,e); return 0; }
くんだらいくらくれるんだ?
914 :
デフォルトの名無しさん :05/02/07 12:43:51
>>909 #include<stdio.h>
int main()
{
int a,b,c;
printf("三辺を入力してください\n");
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
if(a == b){
if(b == c){
printf("正三角形です");
}else{
printf("二等辺三角形です");
}
}else if(b == c){
printf("二等辺三角形です");
}else{
printf("三角形です");
}
return 0;
}
#include <stdio.h> #include <stdlib.h> int GetStdinToInt() { char buf[256]; int result; char* check; while(1){ fgets(buf, 255, stdin); result = (int)strtol(buf, &check, 0); if(check != buf) break; printf("もう一度入力してください:"); } return result; }
916 :
デフォルトの名無しさん :05/02/07 12:44:56
>>909 0,0,0 の入力だと(ry
5,1,1 の入力だと(ry
int main() { int a, b, c; printf("辺1の長さを入れてください:"); a = GetStdinToInt(); printf("辺2の長さを入れてください:"); b = GetStdinToInt(); printf("辺3の長さを入れてください:"); c = GetStdinToInt(); if(a == b){ if(a == c){ printf("正三角形です\n"); }else{ printf("二等辺三角形です\n"); } }else if(a == c || b == c){ printf("二等辺三角形です\n"); }else{ printf("普通の三角形です\n"); } return 0; }
920 :
デフォルトの名無しさん :05/02/07 12:48:19
ここにはC言語のエキスパートがいると聞きましたが本当ですか?
921 :
デフォルトの名無しさん :05/02/07 12:49:37
>>920 C言語のエキスを抽出する様なパートさんはおりません。
>>914 3
4
3
って入れたら間違った答えが出てきたよ
925 :
デフォルトの名無しさん :05/02/07 14:06:47
926 :
デフォルトの名無しさん :05/02/07 14:22:35
低レベルの奴らばっかり。
>>923 えーと、最も長い辺の二乗が他の辺の二乗の和より大きかったら書けないということになるのかな?
んなこたーない。
何でわざわざ二乗にするんだよ
最も長い辺の長さが他の二辺の長さの和よりも長いと書けないんじゃなかったか?
931 :
デフォルトの名無しさん :05/02/07 15:28:16
配列でa[]={1,2,3,4,5}ぐらいのものから、ランダムに集合を 作りたいのですが教えて下さい。 出力結果は、{1,2,3},{2,4},{3,{2,4}}とこんな感じのものが欲しいです。
条件が少なすぎ。 集合の中の集合もありなのか? 何重のネストまで可なんだ? 同一要素はどこに出てきていいんだ? 何をもって十分乱雑だというんだ? 適当に推測するなら枝数5以下の木構造をランダムに作って、 葉にランダムに数字をわりふるとか?
933 :
931 :05/02/07 16:30:03
>>932 すいませんでした。
集合の集合もありです。むしろ欲しいです。
入れ子はできれば少ない方がいいくらいで、特に制限はありません。
勘違いしてましたが、{3,{2,4}}ではなく、{{3},{2,4}}という感じがいいです。
{1,2},{3,4,5},{{1,2},{1,3},{2,3,4}}→○ {2,3,3},{{1,1,1},{4,4,5}}→x
{1,2}={2,1}です。組合せです。
すべての集合を作るのではなく、n個の集合が欲しいです。
934 :
デフォルトの名無しさん :05/02/07 16:30:10
C++で時間の取得ってどうすればいいんですか? 現在時刻(時、分、秒)とタイマーとアラームを動かしたいんです
質問は本スレでやれ C++はC++のスレでやれ ネタはここでやれ おかずは閉店前を狙え
>>934 環境わかんないんで適当に標準関数使いたいものと仮定するが
time
gmtime
localtime
あたりを適当にぐぐれ
そういや2038年までもうすこしだなぁ…
そのころSEの人乙
937 :
デフォルトの名無しさん :05/02/07 16:48:59
{1,2}っていうのは、{{1},{2}}の意味か? 必要なのは{1, 2, 3, 4, 5}のべき集合のべき集合の中の ランダムな要素の集合か系列というところか?
939 :
931 :05/02/07 17:08:47
あ、僕自分で何言ってんのか・・・_| ̄|○
すいません。何か頭ん中ごちゃごちゃになって(汗
{{3},{2,4}}がいいとか言ってるのですが、やっぱり{3,{2,4}}ですね(汗
で、{1,2}はそのまま{1,2}です(汗
そうですね。
>>938 さんのいう所です(汗
迷惑かけてすいません。集合の作り方がわからなくて_| ̄|○
まだ混乱していると思うので、ちゃんと整理してから出直した方がよい。 仕様がかたまっていなければそもそもC以前の問題だし、ここはネタスレだから。
「ここはネタスレ」を、逃げに、使うなっっ!!!
じゃあおまえが集合の基礎から教えてやれ
というのもネタだから。
947 :
デフォルトの名無しさん :05/02/07 17:41:54
Cで、 char ch[128]; として、後にstrtokで分けるために chに"one two three"等複数の文字列を1行として入力するにはどうすればよいでしょうか。
>>947 fgets(ch, sizeof ch, stdin);
Hahahahaha
だれか次スレ立てて
なるほど、fgetsですか。 getsだと危険だから使用するなとか出たので困ってました。 ありがとうございます。
>>951 getsはバッファの大きさを指定しないためオーバーフロー起こす可能性あるからねぇ…
まぁ、個人で使うときとかオーバーフロー起こさないって確証あるなら使っても構わないと思う
955 :
デフォルトの名無しさん :05/02/07 17:56:45
gets->fgetsに置き換えて安心してる奴はアフォ バッファ切れたらまともに動かねーだろドアフォ
>>954 確証なんてものはないと思う。
キーボードを前に眠り込む香具師は多いだろ?
957 :
デフォルトの名無しさん :05/02/07 21:12:58
一般に出荷しちゃマズい危険性を持った実験器具をひたすら罵倒して優等生ぶってる special 君が多いな・・・
俺は超エリート中学生だ。
959 :
デフォルトの名無しさん :05/02/07 21:35:02
special の意味も知らんようだな 罵倒語くらって天狗になる奴は珍しい
>>959 お前あれだろ、「片手落ち」が差別用語だと思っているタイプ?
>>960 何故片手落ちを差別用語にしようとしているか知らないのか?
>>962 あなたは知識に不自由な人ですね
わかりやすく言うと、あなたは無知です
>>961 リチャードキンブルが真犯人を見付け出すためだ
965 :
デフォルトの名無しさん :05/02/08 00:29:24
3時間もかかるなw
>>961 誰かが差別用語にしようとしている、なんて「噂」を信じている事が、お前の性格を表
しているよ。
誰が差別用語にしようとしているか、なんて事はどうでもいいし、今は関係ない。
きっと、こういうタイプは毎朝占いを見てから出勤するんだろうな。
>>966 無知を自覚していないようですね
恥の上塗りですよ
>>967 貴方が誇れる知識は何ですか?
人を無知と呼ぶ根拠はその一点ですか?
私が知らないといつ書きました?
貴方は少し妄想癖があるようですね。
>>968 知っているんですね
ではお聞きしましょう
どうぞ
ということにしたいのですね
>>969 ここで書いて誇る程の事ではないし、調べてから書いたことでないとどうして証明できる?
ナンセンス。
というわけで、彼(
>>973 )はこういう厨でした。
というわけで、彼(
>>974 )はこういう厨でした。
埋めようとしてるだけだろ
その通り。
UMEYOZEEEEEEEEEEEEEEEEEEEE
PCを実践するのは結構だけど押し付ける奴は基地外
>>979 物書きを押しつけるのは基地外か?
小学生が無理矢理漢字を覚えさせられるのは不当だと?
もはやPCの使い方を知っていることは、ペンで紙に文字を書くのと同じくらい重要に
なってきている。
そこでゆとり教育ですよ
ここはPCの意味すら分からないアホばっかだな
>>983 ぱーそなるこんぴゅーた。
なんか文句あるか
980超えたから埋め立てはもういいよ。
最後まで行くぜ。
ほ、ほーっ、ホアアーッ!! ホアーッ!!
ぬるぽ
989
a
991
基地外が二人いるのかw
が
996
4ね
998
あーあ
C1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。