C言語なら俺に聞け! Part 117

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

GUIなどの標準Cではできない事の質問,ソース丸投げ、宿題、書籍 は専門の別スレッドがあるのでそこへさようなら。

エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/

他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
前スレ
C言語なら俺に聞け! Part 116
http://pc8.2ch.net/test/read.cgi/tech/1129589500/
2デフォルトの名無しさん:2005/11/06(日) 22:12:07
2gets
3デフォルトの名無しさん:2005/11/06(日) 22:32:29
char gets3;
gets(gets3);
puts(gets3);
3gets
3gets
4デフォルトの名無しさん:2005/11/06(日) 22:46:29
>>1
5デフォルトの名無しさん:2005/11/07(月) 00:18:49
printf("乙");
6デフォルトの名無しさん:2005/11/07(月) 00:33:13
puts("乙");
7デフォルトの名無しさん:2005/11/07(月) 00:35:32
echo 乙
8デフォルトの名無しさん:2005/11/07(月) 00:53:06
System.out.println("乙");
9デフォルトの名無しさん:2005/11/07(月) 00:57:47
fputs("乙",stdout);
10デフォルトの名無しさん:2005/11/07(月) 01:18:45
stdotu
11デフォルトの名無しさん:2005/11/07(月) 01:22:38
int (*p1)[3]=a;
int *p2=a[0];

としたとき、型は別としてアドレスとしては*p1=a=a[0]=p2ということですよね?
12デフォルトの名無しさん:2005/11/07(月) 01:28:48
変数を全部表示させてみれ。
13デフォルトの名無しさん:2005/11/07(月) 01:29:18
>>10
ワロタ
14デフォルトの名無しさん:2005/11/07(月) 01:34:20
>>11
すいませんaの宣言を忘れてました・・・。
int a[2][3];
です。
15デフォルトの名無しさん:2005/11/07(月) 01:47:21
っ【printf("%d %d %d %d",*p1,a,a[0],p2)】
16デフォルトの名無しさん:2005/11/07(月) 02:05:43
わかってんのか?
*p1の中身は配列だぞ?

つーかさ、
int a;
int *p = &a;
printf("%d\n", *p);
で、何が表示されるか、わかってるの?(俺はわからないけど)
それと同じ事をやろうとしてるんだけど、わかってる?
17デフォルトの名無しさん:2005/11/07(月) 02:11:30
ゴミ値が表示されるな
18デフォルトの名無しさん:2005/11/07(月) 02:15:11
>>16
それじゃ
int a[2][3]={{1,2,3},{4,5,6}};
とでも初期化してください。
19デフォルトの名無しさん:2005/11/07(月) 02:23:35
つーか、アドレス値表示したところで根本的なことは分からないぞ。
>>11
int a[2][3];の意味を理解してますか?
20デフォルトの名無しさん:2005/11/07(月) 02:25:55
>>19
そう書かれると不安になるんですが、aは配列の配列(配列を要素にもつ配列)ですよね?
21デフォルトの名無しさん:2005/11/07(月) 02:56:58
二重配列の返り値ってできますか?
float[10][10] hoge(float in[10][10])
とかやっても出来ないんですけど…
22デフォルトの名無しさん:2005/11/07(月) 03:17:45
char[10] strcpy(char *, const char *)
みたいな書き方って出来たっけ?
返せるのは配列じゃなくてポインタだけだった気がするが。
つまり、返り値の型をfloat (*)[10]にするしかない。

面倒くさいのはtypedefして使え。
typedef float (*fl10_t)[10];
fl10_t hoge(fl10_t in)
みたいな。
↑が通るかは確認してないが。
23デフォルトの名無しさん:2005/11/07(月) 04:56:53
>11
printf("%d %d %d\n",&a,a,a[0]);
printf("%d %d %d\n",&a + 1,a + 1,a[0] + 1);
24デフォルトの名無しさん:2005/11/07(月) 08:53:39
つ%p
25デフォルトの名無しさん:2005/11/07(月) 08:55:37
>>24
乙、親切だな。
26デフォルトの名無しさん:2005/11/07(月) 10:43:43
27デフォルトの名無しさん:2005/11/07(月) 11:49:37
>>26
乙、面倒見よすぎ。
28デフォルトの名無しさん:2005/11/07(月) 15:09:17
>>21
配列を戻り値を通して直接返すのは無理。
対処法は2通りある。

1. 引数を通して返す。
つまり、

hoge(const float in[10][10], float result[10][10]);

として、result に結果を書き込む。

2. 戻り値を構造体にする。
つまり、

typedef struct hoge_result {
 float data[10][10];
} hoge_result;

hoge_result hoge(const float in[10][10]);

とする。

普通は 1. の方法を使う。
29デフォルトの名無しさん:2005/11/07(月) 15:36:11
テンテー! 関数へのポインタを返す関数の定義方法があれば、教えてください。
30デフォルトの名無しさん:2005/11/07(月) 15:41:50
>>29
typedefを使えばいい。そうしなくともできるけど大変面倒なことになる。
typedef void (*pfunc_t)();
pfunc_t f();

void hello()
{
  puts("hello, world");
}

pfunc_t f()
{
  return hello;
}

int main(void)
{
  f()();
  return 0;
}
31デフォルトの名無しさん:2005/11/07(月) 16:23:42
void (*f())();
32デフォルトの名無しさん:2005/11/07(月) 16:50:12
別にこの程度ならtypedefなんぞイラネ
33デフォルトの名無しさん:2005/11/07(月) 17:43:47
関数ポインタで typedef が必要なわけ。


・見やすい
・タイプしやすい
・あとで引数変えたくなった場合に一括して変えられる
34デフォルトの名無しさん:2005/11/07(月) 17:45:01
>>33
その論拠じゃ「必要」じゃなくて「便利」のレベルでしかないな。
35デフォルトの名無しさん:2005/11/07(月) 18:12:56
これを「必要」じゃなくて「便利」と捉えてるうちは
まともなプログラムは書けない。
36デフォルトの名無しさん:2005/11/07(月) 18:30:39
>>33 の説明だと必要性があるようには見えないってだけだろ
37デフォルトの名無しさん:2005/11/07(月) 18:41:32
これで必要性があるように見えないうちは
まともなプログラムは書けない。
38デフォルトの名無しさん:2005/11/07(月) 18:43:34
俺はまともなプログラムが書きたい。(´・ω・`)
39デフォルトの名無しさん:2005/11/07(月) 18:45:20
まともなプログラムって何よ?wwwww







と言ってるうちは
まともなプログラムは書けない。
40デフォルトの名無しさん:2005/11/07(月) 19:11:44
>>33 は、「可読性&保守性は必要」って言いたいの?
41デフォルトの名無しさん:2005/11/07(月) 19:55:47
これからはプログラマを選ぶコードの時代です
42デフォルトの名無しさん:2005/11/07(月) 20:00:47
part40辺りから居る俺に楯突くつもりか?
43デフォルトの名無しさん:2005/11/07(月) 20:28:22
>>42
いいかげん卒業しろよ…
44デフォルトの名無しさん:2005/11/07(月) 20:38:53
>>32
同意だね
配列ポインタと違って関数ポインタは typedef する意味うすいし
45デフォルトの名無しさん:2005/11/07(月) 20:45:37
お前ら初心者だったときにtypedefなしのsignalの宣言を見て一発で理解できたのか?
46デフォルトの名無しさん:2005/11/07(月) 20:46:38
>>45
K&Rのおかげで。
47デフォルトの名無しさん:2005/11/07(月) 20:53:11
>>45
うん (きっぱり)
48デフォルトの名無しさん:2005/11/07(月) 21:21:19
signalて何?
49デフォルトの名無しさん:2005/11/07(月) 21:22:58
>>45
Cの宣言まわりのsyntaxは醜いけど、別にルールが複雑怪奇な訳じゃないから
読み方さえ分かってりゃ誰でも読める。
それにCのsyntaxも理解できないようじゃ、C++にはとても手がだせんだろ。
50デフォルトの名無しさん:2005/11/07(月) 21:30:55
そんなことが言えるのはもはや初心者脱出の証。

複雑な宣言
初心者:わからない。作れない(作らない)。
中級者:わかる。自分でも使う。
上級者:わかる。自分が作るときにはtypedefを使う。
51デフォルトの名無しさん:2005/11/07(月) 21:33:18
>>50
>上級者:わかる。自分が作るときにはtypedefを使う。
                             ↑
                             も
52デフォルトの名無しさん:2005/11/07(月) 21:39:59
上級者:わかる。自分が作るときにはtypedefをもう。
53デフォルトの名無しさん:2005/11/07(月) 21:45:26
なるほど、signal()やqsort()の宣言にtypedefを用いないCの標準委員会の連中は
上級者ではないというワケだw
54デフォルトの名無しさん:2005/11/07(月) 21:46:36
複雑な宣言が使えたら上級者だと(プ
複雑な宣言という概念がまだ残ってるのにね
55デフォルトの名無しさん:2005/11/07(月) 21:48:01
>>53
処理系の実装時にtypedefを使ってはいけないとはどこにも書いていない。
56デフォルトの名無しさん:2005/11/07(月) 21:51:19
>>55
で、typedef使ってる実装系の具体例は?w
57デフォルトの名無しさん:2005/11/07(月) 22:00:36
WNDPROC

別にどーでもいーけど
ふつーに邪魔
58zako:2005/11/07(月) 22:10:19
こんにちは。JAVAプログラミングのプロジェクトなのですが
最初に「Please insert the # of IQ scores」と表示させ、
その後一つのintの値をコマンドラインから入力し、
次に「Please insert -入力した数値- scores」と受け取った数を表示させて、
その数だけのIQスコアをさらにコマンドラインから入力して、
そのIQスコアの値で100以上が幾つ、100以下が幾つと表示させるプログラムです。

メインとともに二つのメソッド、
readdataとaboveandbelowというメソッドが必要です。
readdataメソッドはIQスコアをゲットして、配列を使って受け取り、
aboveandbelowを使って100以下か以上かを調べるようです。

皆さんの助けを必要としています。
よろしくお願いいたします!
ここまではできています。
どなたか、アドバイスお願いします。


import java.io.*;
import java.util.*;


public class Getscores{


public static int readdata(String[] args){
int noIq, s;


System.out.println("please insert the # of IQ scores:");
59デフォルトの名無しさん:2005/11/07(月) 22:29:43
>>58
釣りか誤爆か、どちらにしても

  ス レ 違 い で す よ。
60デフォルトの名無しさん:2005/11/07(月) 22:49:21
>>56
意味の無い切り替えし乙
61デフォルトの名無しさん:2005/11/07(月) 23:58:33
このコードは、C++でつか?

struct sockaddr_in sadd;

sadd.sin_family = AF_INET;

62デフォルトの名無しさん:2005/11/08(火) 00:02:33
いきなりmainに現れたこの構造体みたいなの

構造体風なのに、中身が何処にも書かれていません!
63デフォルトの名無しさん:2005/11/08(火) 00:03:12
socket
64デフォルトの名無しさん:2005/11/08(火) 00:04:31
ライブラリの構造体やクラスがでてくるたびに一々そんな風に驚くのか?
65デフォルトの名無しさん:2005/11/08(火) 00:04:44
socket.h

つーか、スレ違い。
66デフォルトの名無しさん:2005/11/08(火) 00:04:49
>>61
Cでも通りそうですね。ソケットライブラリ関連でしょうか。
67デフォルトの名無しさん:2005/11/08(火) 00:07:10
>>64
C++のクラスのように思えたンでつよ
68デフォルトの名無しさん:2005/11/08(火) 00:15:13
えらいねー (ぱちぱち
69デフォルトの名無しさん:2005/11/08(火) 00:15:48
ブリブリブリブリィィィ
70デフォルトの名無しさん:2005/11/08(火) 00:18:49
今日も大漁です
71デフォルトの名無しさん:2005/11/08(火) 01:47:48
bisonでの構文解析器にプログラム内から文字列を渡すには
どうすればいいんでしょうか
72デフォルトの名無しさん:2005/11/08(火) 02:00:42
ちなみに字句解析器をflexで作ってます
どちらかというとこっちのyylexに文字列で渡せればいいんですが
FILE*型yyinに文字列を与える方法がよくわかりません

fprintf(yyin,"hello");

としたら実行時エラーになりました
73デフォルトの名無しさん:2005/11/08(火) 02:11:14
>>72
プログラム内からパーサに渡す、の意味がわからないが、字句解析側からパーサに渡すという意味ならyylval。
yyinは入力ですぞ(デフォルトでstdinが入ってる)。

つーかむしろ標準Cでないのでスレ違いかな

「コンパイラ・スクリプトエンジン」相談室8
http://pc8.2ch.net/test/read.cgi/tech/1131273918/

Bison、Flexについて語ろう
http://pc8.2ch.net/test/read.cgi/tech/1131293088/
(↑このスレどうなん?)
74デフォルトの名無しさん:2005/11/08(火) 02:22:28
>>73
どうもありがとうございます
そんなスレがあるとは知りませんでした、と思ったら最近たったようですね

すいませんプログラム内からパーサに渡すというのは間違いですね
レクサに渡したいのです
つまり標準入力からではなく、たとえば
char* w = "hello"としてこれを対象に
字句・構文解析させたいわけです

yylvalというのはパーサ側のレセプタですよね
75デフォルトの名無しさん:2005/11/08(火) 02:27:59
すいません、質問です。
区間[-0.01,0.01]の一様乱数を発生させるにはどうすればいいでしょうか。
既出だったらごめんなさい。
76デフォルトの名無しさん:2005/11/08(火) 02:36:19
どの程度一様か精度を要求してるの?
じゃないんだったら
(double)rand()/(double)RAND_MAX*2.0-1.0

とか?
77デフォルトの名無しさん:2005/11/08(火) 02:46:50
>>76
それだと最大でも-0.5じゃね?
78デフォルトの名無しさん:2005/11/08(火) 02:48:04
いや[-1.0:1.0]だな
79デフォルトの名無しさん:2005/11/08(火) 02:50:20
>>74
いや、上の方のスレは前々からあるんだが。

ちなみに文字列をflexのyyinに渡すってのはちと難しいんで内科医?
文字列をファイルに書き出すか、自分でyylex書く(もしくはflexの出力を細工する)か、自分でFILE構造体を用意してバッファの末尾にEOFくっつけてyyinに渡すという変態的な方法を使うか。
80デフォルトの名無しさん:2005/11/08(火) 02:52:17
>>78
すまん、寝ぼけてるのか演算子の優先度を取り違えてた
81デフォルトの名無しさん:2005/11/08(火) 02:55:46
>>79
そうでつか・・・
flexも万能ではないですね・・・
吐き出すコードはおおよそ人外のものですし

でもいったん文字列をファイルに書き出して、というのは
作成するプログラムの性格に沿うものでもあるので
その線で言ってみます

助言、ありがとうございました
82デフォルトの名無しさん:2005/11/08(火) 03:02:09
以前yylexをC++モードで生成すると
ストリームを使えるから自在にディレクティブできるが
bison側がC++に対応してないのであぼーん

というのを見た気がする
8379:2005/11/08(火) 03:14:31
>>82
たしかに、C++のストリーム使えたならstringstreamとかで文字列→ストリームの変換が楽にできたのにね。
つーかCで文字列からストリームに変換みたいなのって何かうまいやり方あったりするのかな。
74みたいに文字列を入出力バッファとみなしてFILE*で渡したい、みたいな場合。
もしそういうの誰か知ってたら参考までに聞いておきたい。
84デフォルトの名無しさん:2005/11/08(火) 03:31:29
flex は C++ 用のコードも吐けるが、それじゃダメなのか?
C++ を知らんでも、それ以外の部分をほとんど C 風に書けば問題ないと思うが。
85デフォルトの名無しさん:2005/11/08(火) 04:10:33
BisonがC++に対応してないからな。
・・・と思ったら、yylexのラッパでうまくいくみたいね。
http://kentn.at.infoseek.co.jp/cpp/parser.html

まあ移植性なんかの問題でCしか使えないとか、個人的な趣味でC++使いたくないとか色々事情もあるんでない?
86デフォルトの名無しさん:2005/11/08(火) 15:36:03
メモリ上のバイト列や文字列をファイルストリームに見立てるって関数あった気がするが。
fmemopen()とか。
87デフォルトの名無しさん:2005/11/08(火) 19:31:24
>>86
BSDだとfunopen()のような関数がある。が、移植性は全く無い。

とりあえず、lexの変種によって文字列から読ませるためのやり方は全く違うようだ。
flexの場合は、YY_INPUTマクロの再定義でいけるらしい(今でもそれでいいかどうか
は知らない)。
いずれにせよPOSIXでは入力元を変更するための方法が定義されていないので、
完全に処理系依存の話になるな。
88デフォルトの名無しさん:2005/11/09(水) 22:07:04
CSVファイルを読み込んで処理するプログラムを組むことに
なったのですが、1バイトづつカンマを探しながら項目を取得するのと
strtokのような関数を使って項目を取得するのではどっちが一般的
なんですか?また、動作環境はUNIXサーバ(Solaris)でかつCSVデータも
住所録などの2バイト文字を扱うことになるので、文字コードで
注意すべきことはあるでしょうか?
89デフォルトの名無しさん:2005/11/09(水) 22:12:41
>>88
やるべきことを机上でまとめてみる
見つかった論理のうち標準関数で置き換えられるものを置き換える
ただし、信頼性にはレベルがあるので、もちろん基準を満たさないものは使わない
90デフォルトの名無しさん:2005/11/09(水) 22:38:59
カンマを含むデータをどうするかによるな。
91デフォルトの名無しさん:2005/11/09(水) 22:44:50
クォートとカラム内改行の両方を扱うとなると結構面倒だな
まあがんがれ
92デフォルトの名無しさん:2005/11/09(水) 22:48:57
処理は単純に住所録テーブルに項目ごとに格納するだけの予定です。
データ項目数は固定で、項目には必ずなんらかの値が入っていることが
前提です。最低限のチェックとしては項目長のチェックはやるつもりです。
93デフォルトの名無しさん:2005/11/09(水) 23:37:02
既出だと思うが、CSVのライブラリはある。
プログラミング書法だったかプログラミング作法だったかに載っている。
ソース内の著作権表示をきちんとのこしておけば商用、非商用問わず無料でつかえる。
94デフォルトの名無しさん:2005/11/09(水) 23:48:10
ようするに、一般に言うCSV形式をちゃんと扱おうには、それなりに
手間が必要で、カンマを探したりstrtok程度の関数では力不足、
発想(質問)自体が一般的でない… (制限を明確にした準(?)CSVなら
ともかく。だからライブラリ探せと)
文字コードに関しては、まずは特にはCSVに限らない話そのままで…
95デフォルトの名無しさん:2005/11/10(木) 03:11:05
住所録のデータは実はCSVにしづらかったりする
データ中に","が出てくる可能性があるからね
96デフォルトの名無しさん:2005/11/10(木) 03:22:30
>>95
何か問題でも?
97デフォルトの名無しさん:2005/11/10(木) 04:46:01
パソコンの部品データもCSVにすると泣けるんだよね。
なんでこう、'"'のエスケープの仕方が複数あるんだろ。
98デフォルトの名無しさん:2005/11/10(木) 05:17:22
CSVの書式を標準化しる……と思ったけどそれはXMLなのか?
99デフォルトの名無しさん:2005/11/10(木) 05:32:15
CSVのクォーティングのハンドリングが面倒なだけなら、通常はTSVで十分
まータブだの改行だのには対応しとらんがな
100デフォルトの名無しさん:2005/11/10(木) 10:30:16
http://www.rfc-editor.org/rfc/rfc4180.txt
標準化されてますが
101デフォルトの名無しさん:2005/11/10(木) 11:10:56
October 2005 の RFC かよ
102デフォルトの名無しさん:2005/11/10(木) 11:30:16
CVSファイルの文字列を2次元の構造に格納するのって、
新人さんのいい課題だけど
それを知った上でC++のSTLを知ると、目から鱗になるんだよな
vector<vector<string>> を読み書きする共通を作っておいて
後は、それぞれの実装で煮るなり焼くなりできる
STLを知る前にMFCのコンテナを知ってしまった人は
廃人になるし、プロジェクトは破綻するけど
103デフォルトの名無しさん:2005/11/10(木) 12:09:47
CSVだった・・・
104デフォルトの名無しさん:2005/11/10(木) 20:19:35
すみません
Cでtelnetでログインしてコマンド実行するのにシステムコール以外で出来るやり方って
ありますか?
105デフォルトの名無しさん:2005/11/10(木) 20:28:04
>>104
パイプでがんばる
106デフォルトの名無しさん:2005/11/10(木) 20:48:12
自前でtelnet喋る話かい?
107デフォルトの名無しさん:2005/11/10(木) 21:38:31
>>102
スレ違い
108デフォルトの名無しさん:2005/11/10(木) 21:44:41
UBS の読み取り方でも教えてやれw
109デフォルトの名無しさん:2005/11/10(木) 22:07:25
それは激しく興味あり
110デフォルトの名無しさん:2005/11/10(木) 23:35:06
char *array="11111111";
FILE *fout;

fopen("nullpo.txt","w");
while(1){
fputs(array,fout);
};

これを学校のサーバーで実行して昼食を食べてたら、怒られました。
友達に頼まれたんだけどな〜・・・
111デフォルトの名無しさん:2005/11/10(木) 23:44:35
>>110
それ実行したまま席離れて放置してたのか?
俺が管理者ならそんな奴のアカウントは1週間ほど凍結する
112デフォルトの名無しさん:2005/11/10(木) 23:45:33
凍結以前にうちなら使えなくなるがな。
113デフォルトの名無しさん:2005/11/11(金) 00:12:00
>>105-106
どうもです
telnetで別鯖にログインしてコマンド実行した結果をプログラム内で使いたいんですよ
素直にpopenでも使います
114デフォルトの名無しさん:2005/11/11(金) 00:30:08
>>110
そのコードならセグフォで落ちるから問題ないだろうがな
115デフォルトの名無しさん:2005/11/11(金) 00:42:11
ネタ確定
116デフォルトの名無しさん:2005/11/11(金) 02:51:31
935 名前: デフォルトの名無しさん [sage] 投稿日: 2005/11/06(日) 15:25:10
このsageない基地外なんか過去から全部同じ椰子じゃないかとまで思ってしまう。
(ネタがつまらんのが致命的にキモイ)
117デフォルトの名無しさん:2005/11/11(金) 19:20:30
C言語1級のもんだい聞いていいですか?
118デフォルトの名無しさん:2005/11/11(金) 19:23:59
2級のオレ様がきましたよ
119simano:2005/11/12(土) 01:14:38
SN比の求め方がわかりません。
pgmファイルの求め方がわかりませんのでプログラムお願いします。
/* SN比*/
g = 0.0;
f = 0.0;
for (y = 0; y <= ysize ; y++){
for (x = 0; x <= xsize ; x++){
g = g + a[x][y] * a[x][y];
f = f + (a[x][y] - b[x][y]) * (a[x][y] - b[x][y]);
}
}
h = 20 * log(sqrt(g/f));
printf(" %lf\n",h);
exit(0);
}
まではわかります
急いでます
120デフォルトの名無しさん:2005/11/12(土) 01:32:12
人に質問する方法を先ず学びたまえ。
121初心者:2005/11/12(土) 08:14:36
OSはRedHat Linux 8 なんですが、

open関数がうまく動かないんです。

int fd; //ファイル記述子
fd=open("data",O_WRONLY);
printf("fd=%d\n",fd);

実行結果
fd=0
となって、戻り値が0なんです、原因が分かりません。
さらに、その後にwrite(3,"hello\n",6);とすると実際にファイル"data"に書き込めるんです
つまりオープンはできているのに戻り値がおかしいんです(3となるはずが0が返る)

どうしてなんでしょうか?


122初心者:2005/11/12(土) 08:41:33
121です

すいません、自己解決しました。
って言うか、俺のミスでした。openは正しく動いてました。
首つってきます。さようなら
123デフォルトの名無しさん:2005/11/12(土) 12:58:01
上のやつで

char array[9]={'1','1','1','1','1','1','1','1','\0'};
char *array2="11111111";

って全く同じですか?
124デフォルトの名無しさん:2005/11/12(土) 13:01:02
全然ちがいます。
125デフォルトの名無しさん:2005/11/12(土) 13:06:46
char array[9]={'1','1','1','1','1','1','1','1','\0'};
はarrayという配列に11111111が格納されている。

char *array2="11111111";
はarray2が何処かに11111111が格納された配列が作られて
それを指してる、って感じで良いんでしょうか?
126デフォルトの名無しさん:2005/11/12(土) 13:06:56
char array[9]={'1','1','1','1','1','1','1','1','\0'};
char array2[]="11111111";

なら同じ。
ポインタと配列の違いはきちんと理解すべし。
127デフォルトの名無しさん:2005/11/12(土) 16:01:27
配列の最後に\0はイラネ
128akky:2005/11/12(土) 16:54:42
ファイル入出力わかりません

だれか教えてちょうだい
129デフォルトの名無しさん:2005/11/12(土) 16:58:47
とりあえず入門書嫁。
130akky:2005/11/12(土) 17:13:22
おすすめの入門書って何ですか?
131デフォルトの名無しさん:2005/11/12(土) 17:21:22
「推薦図書/必読書のためのスレッド」とその過去ログを漁ってこい
132akky:2005/11/12(土) 17:22:41
おすすめの入門書って何ですか?
133デフォルトの名無しさん:2005/11/12(土) 17:26:34
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/open.2.html
このopenを使ってファイルに書き込むと、
O_APPEND指定していないにもかかわらず、追加書き込みになってしまいます。
これを回避するにはどうしたらよいでしょうか?
134デフォルトの名無しさん:2005/11/12(土) 17:32:07
**pはどういう意味ですか?
135デフォルトの名無しさん:2005/11/12(土) 17:42:24
>>134
当ててごらん
136133:2005/11/12(土) 17:43:59
自己レス。
O_APPENDはseek位置を最後に持ってくるだけで、
O_WONLYかつO_APPEND無しで開いても上書きモードになるみたいです。
このためSEEK_ENDに移動すると元々のファイルの最後に行ってしまい、
追加書き込みのようになってしまっているようです。

stdioのように、書き込みのみで開いた場合は元々のファイルを消すにはどうしたら良いでしょうか。
137デフォルトの名無しさん:2005/11/12(土) 17:46:06
>>134
ポインタへのポインタ
138デフォルトの名無しさん:2005/11/12(土) 17:49:45
すみません、教えてもらいたいのですが、
typedef struct test * test_ptr;
という形で定義しているソースを見たのですが、
これはtest構造体型の領域を指しているtest_ptrポインタ
という解釈でよいのでしょうか?

それと、
typedef struct test *test_ptr;
でも同じだと思いますが、* 半角スペース test_ptrとする
意味はあるんでしょうか?単に見た目の問題ですか?
139デフォルトの名無しさん:2005/11/12(土) 17:56:00
>>138
test_ptr ::= (構造体testへのポインタ)でおk
スペース入れるのも見た目だけ
140sage:2005/11/12(土) 17:59:26
>>139
どうもありがとうございます。
たぶん見た目だけなんだろうと思いつつもモヤモヤしたものが
あって気持ち悪かったので聞いてみました。
助かりました。
141デフォルトの名無しさん:2005/11/12(土) 20:43:21
>>136
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/open.2.html


O_TRUNC
...の場合, 長さ 0 に切り詰め(truncate)られる。
って, 書いてあるがこれじゃだめなのか?
142デフォルトの名無しさん:2005/11/12(土) 21:53:37
>>139
って
test構造体を指すポインタの名前をtest_ptrとtypedefしたから
test_ptr ptr
と書いたらptrはtest構造体を指すポインタ

という感じですよね?
143デフォルトの名無しさん:2005/11/12(土) 22:00:54
>>130
この板の類似スレだと、
『Cの絵本』
『猫でもわかるC言語プログラミング』
『やさしいC』
辺りを推す奴が多いな。
ちなみに、俺は上の2冊しか読んだことないが、その2冊の内ならば絵本の方をお勧めしておく。(あくまでも初学者向け&俺の主観)

ただ、できることなら、プログラミング学習の最初の段階は、分かる人に(オフラインで)教わりながらの方が良いと思うけど。
144デフォルトの名無しさん:2005/11/12(土) 22:59:05
なんとあるクラス(Aとします)のpublicな静的int型変数(Bとします)を
プログラムの実行前に初期化(例A::B=1)してもプログラム中にA::Bの値を参照すると0になっています。
これだけでもよくわからない(実際同様に使っているA::CやA::Dに代入した値は問題ない)のですが
さらに変数名をDに変えるだけで問題なくなりました。
環境はVC.netです。
原因誰か教えていただけるでしょうか?
145デフォルトの名無しさん:2005/11/12(土) 23:03:36
それC言語じゃないだろ
146デフォルトの名無しさん:2005/11/12(土) 23:10:00
うーん、問題がCの問題なのかVCの問題なのかすらよくわからないのでこちらで聞きました。
147デフォルトの名無しさん:2005/11/12(土) 23:11:20
C++?
148デフォルトの名無しさん:2005/11/12(土) 23:13:55
>>144
ソース出せ
どうせどこかが間違ってる
149デフォルトの名無しさん:2005/11/13(日) 00:08:20
変数や関数の文字長って実行時の処理に影響するんですか?
150デフォルトの名無しさん:2005/11/13(日) 00:09:26
>>149
まず影響しません。
151デフォルトの名無しさん:2005/11/13(日) 00:09:33
もうちょっと理解しやすい質問にしてください
152デフォルトの名無しさん:2005/11/13(日) 00:14:14
>>149
コンパイラなら全く影響しない。
Cインタプリタとかあったら知らんが。
153149:2005/11/13(日) 00:16:03
>>151
失礼しました。
例えば、関数の文字長が長かったら、呼び出しに時間が掛かる等の影響を受けるかと訊きたかったんです。

>>150,152
影響しないのですか。
回答ありがとうございました。
154デフォルトの名無しさん:2005/11/13(日) 00:20:11
>>153
プログラムがどういうふうに実行されているのか調べてみれ
155デフォルトの名無しさん:2005/11/13(日) 00:28:50
>>154
機械語レベルで見ろということですよね?
調べてみます。
156デフォルトの名無しさん:2005/11/13(日) 00:40:08
しーらC
157デフォルトの名無しさん:2005/11/13(日) 03:54:47
fork();
printf("Hi!\n");

↑このプログラムはどういう出力をするんですか?
いまC言語が使える環境にないのでどなたかおしえてください
158デフォルトの名無しさん:2005/11/13(日) 04:00:35
コンパイルエラーになります。
159デフォルトの名無しさん:2005/11/13(日) 04:03:35
>>158
Hi!
160デフォルトの名無しさん:2005/11/13(日) 04:23:54
C++のストリームからファイルポインタに変換するような機能ってありますか?
161デフォルトの名無しさん:2005/11/13(日) 04:41:46
execl という関数はUnix のどのようなコマンドを実行しているか.
という問題が出たんですがこの問題だけ
どうしてもわかりません。
どなたか教えてください
162デフォルトの名無しさん:2005/11/13(日) 04:44:42
>>161
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/exec.3.html
manpageぐらいみろよ
つーか、なんの課題だよ。POSIX1準拠の非標準関数が何やってるか何て
知らなくていいだろ
163デフォルトの名無しさん:2005/11/13(日) 04:44:57
何もかもがスレ違い
164デフォルトの名無しさん:2005/11/13(日) 04:49:59
結局どのコマンドつかってるん?
165デフォルトの名無しさん:2005/11/13(日) 07:55:13
>>164
/bin/sh
166デフォルトの名無しさん:2005/11/13(日) 16:56:27
WindowsでVC++6.0です。
unistd.h がないといわれるんですが、どうすればいいですか ?
167デフォルトの名無しさん:2005/11/13(日) 16:57:41
諦める
168デフォルトの名無しさん:2005/11/13(日) 17:16:02
fgetsからsscanfで読み込んだ文字列の長さを計るのは
どうしたらいいですか?
strlenは最後の\0を見つけて長さを計ると思いますが
sscanfで読んだ文字列は\0がついてないのでどうすればいいのやら
169デフォルトの名無しさん:2005/11/13(日) 17:25:46
>>168
> sscanfで読んだ文字列は\0がついてない
ついてるだろ
170デフォルトの名無しさん:2005/11/13(日) 17:27:10
そもそも「文字列」と自分で言っているじゃないか
171デフォルトの名無しさん:2005/11/13(日) 17:50:39
fgetsからsscanfで読み込んだ文字列って意味わからん
172デフォルトの名無しさん:2005/11/13(日) 18:00:01
fgets で一行切り出して、
それを使って sscanf するだけじゃないのよ。
173デフォルトの名無しさん:2005/11/13(日) 18:38:34
>>168
末尾が改行+\0になってる事に対処できないのか?
174デフォルトの名無しさん:2005/11/13(日) 20:04:58
すいません、表現がまずかったみたいで;
"abc def\n"をfgetsで読み込んで
sscanf(*,"%s",b)すると
char*bにはabc\0が入るってことですか?
strlen(b)って書くとlintでwarningが出るんで
これがまずいのかとおもったんでつ
175デフォルトの名無しさん:2005/11/13(日) 20:14:48
ポインタの実体が無いという警告なんじゃないか……?
176デフォルトの名無しさん:2005/11/13(日) 20:20:32
>>174
ポインタと配列を理解しろ。
メモリを意識しろ。
177デフォルトの名無しさん:2005/11/13(日) 21:52:44
>>175,176
3x.何となく分かりますた
char b[256]ってすればおkってことですね
もしかして非常にまずい事をしていたのかも(汗)
178デフォルトの名無しさん:2005/11/13(日) 21:56:12
もしかしなくても非常にまずい事をしてた。
179デフォルトの名無しさん:2005/11/13(日) 23:40:24
C99を勉強中です
restrict修飾子したポインタは

対象ポインタのエイリアスがない事をコンパイラが保障してくれるわけではなく、
コンパイラに最適化のヒントを与えるだけ

という認識でいいんでしょうか
180デフォルトの名無しさん:2005/11/13(日) 23:46:00
>>179
コンパイラが保障するんじゃなくてコードを書く奴が保障する。
それによって最適化してくれるかもしれないよってこと。
181デフォルトの名無しさん:2005/11/13(日) 23:51:14
>>180
ありがとうございます

よく考えたら

>対象ポインタのエイリアスがない事をコンパイラが保障

なんてコンパイル時点でわからない事が多いすよね
182デフォルトの名無しさん:2005/11/13(日) 23:57:21
exeの中にフォルダを作る方法ってありますか?
183デフォルトの名無しさん:2005/11/13(日) 23:58:28
eフォルダxe
184デフォルトの名無しさん:2005/11/14(月) 00:06:58
>>183 レスありがと。
具体例をあげると、プログラミング練習用のタイピングゲームを
つくろうとしてるんだけど、スペックとしてプレイヤーが題材を
作れる仕様。
でも、dll & path は好みでない。
185デフォルトの名無しさん:2005/11/14(月) 00:09:02
>>184
おまえは多分色々わかってない

これからこのスレの善良なエスパーが色々質問すると思うので
答える準備をしておこう
186デフォルトの名無しさん:2005/11/14(月) 00:09:44
>>182
アウトプロセスサーバ?
187デフォルトの名無しさん:2005/11/14(月) 00:15:16
NTFS副ストリーム、と言ってみる。
188デフォルトの名無しさん:2005/11/14(月) 00:18:10
アウトプロセスサーバ? わかりません。
独立したアプリに後付けのファイルをリンクさせたい
というのは、矛盾してるのかな?
189デフォルトの名無しさん:2005/11/14(月) 00:18:59
フォルダのアイコンを用いる、エクスプローラを
完全にエミュレートするようなプログラムを書く。
190デフォルトの名無しさん:2005/11/14(月) 00:21:56
フォルダのアイコンを用いる、エクスプローラを
完全にエミュレートするようなプログラムを書く。
(注)dll & path は好みでない。
191デフォルトの名無しさん:2005/11/14(月) 00:25:34
フォルダのアイコンを用いる、エクスプローラを
完全にエミュレートするようなプログラムを書く。

(注)dll & path は好みでない。

独立したアプリに後付けのファイルをリンクさせる。

(注)矛盾してはいけない。

192デフォルトの名無しさん:2005/11/14(月) 00:30:10
そーだね、とりあえずデルパスでつくって
プレイヤーがスーパーハッカーとなり
書き換えてくれるのを期待しよう。
おさわがせしました。
193デフォルトの名無しさん:2005/11/14(月) 00:30:34
(注)あんま弄るな
194デフォルトの名無しさん:2005/11/14(月) 00:32:01
DLLのかわりにCOMやらSOAPを使う、データはすべてレジストリに保存する。
195デフォルトの名無しさん:2005/11/14(月) 00:40:18
>>194 おおっ!COM!
SOAPは、ぱっと見ちがうかな。
今から勉強しなおして良い物をつくっちゃ。
本当にありがと!
196デフォルトの名無しさん:2005/11/14(月) 00:54:54
おいおいCOMはDL(ry
197デフォルトの名無しさん:2005/11/14(月) 01:21:05
>>196
いやいや、exeでもCOM作れますよ

とその前に質問者>>184の妄想ではexe内にデータを持たせてと考えているようだけど
ユーザーからの入力でデータを書き換える物を実行プログラム内に持たせるというのは余り良い設計とはいえ無い
通常は別ファイルとして提供する
そのファイルの形式を複数ファイルのアーカイブした形にするのか、1ファイルで内部のデータ構造で実現するのかといった所を検討すべき
198デフォルトの名無しさん:2005/11/14(月) 01:27:34
俺は内部的にほとんどStringとintで持てるデータばっかし扱うんでテキストファイルで吐いたりしてるが
あんまり中身見られても面白くないんで、CAB or LZHファイルからの読み書き考えようかな。

ZIPって再圧縮はできてもアーカイブから1ファイルだけ削除とかできなかったよな。
199デフォルトの名無しさん:2005/11/14(月) 01:28:32
バカは黙ってていただきたい
200デフォルトの名無しさん:2005/11/14(月) 01:36:32

Macの実行バイナリってのは実はディレクトリ構造で、内部にプログラム本体や
GUIリソース、設定ファイルを内包できる。だから1ファイル(に見えるディレクトリツリー)を移動するだけで
インスコ&アンインスコができる。

EXEの前や後ろのほうにデータを付け足していくプログラムって、ウィルスが現にそれやってるから
可能ではあるんだけど、気持ち悪い罠。
201デフォルトの名無しさん:2005/11/14(月) 01:46:21
自分の環境だとfloat型のNaNは
0x7f800000みたいなんですけど
これってC言語の仕様ですか?
202デフォルトの名無しさん:2005/11/14(月) 01:46:57
>>200
Macの場合はって事でしょ
Winの世界ではユーザーが更新できるデータは余り実行形式の中には置かない
もちろん更新しないデータはリソースの形で内部に持つ事もある
自己書き換えするプログラムもあるが実行中はロックがかかっていたりするので色々とめんどくさい
203デフォルトの名無しさん:2005/11/14(月) 01:55:41
>>201
IEEE
204デフォルトの名無しさん:2005/11/14(月) 01:57:57
>>203
thxです
205デフォルトの名無しさん:2005/11/14(月) 02:03:30
構造体内のメンバへのポインタって可能でうっか?
206デフォルトの名無しさん:2005/11/14(月) 02:19:41
>>205
可能です
207デフォルトの名無しさん:2005/11/14(月) 02:20:24
>>206
どもです!
208デフォルトの名無しさん:2005/11/14(月) 02:34:59
聞く前に自分でサンプルコードを書いてみようぜ。
209デフォルトの名無しさん:2005/11/14(月) 02:48:56
2つの文字列を入力して、ASCII文字順の早い方を表示させるプログラムなんですが、

#include<stdio.h>
#define N 80

int main(){
int a;
char word1[N],word2[N];
char *p1,*p2;
p1 = word1 ; p2 = word2;

fgets(p1, N, stdin), fgets(p2, N, stdin);

for(; *p1 && *p1 == *p2 ; p1++ , p2++);
a = *p1 - *p2;

if(a <= 0)
printf("%s\n",word1);
else
printf("%s\n",word2);
}


char と char * で文字を置いてるんですが、*を使わないでできる方法はありませんか?

あと、
for(; *p1 && *p1 == *p2 ; p1++ , p2++);
a = *p1 - *p2;
なぜ *p1 && *p1 == *p2 としてるのか分からないのですが、教えてくださいませ
210デフォルトの名無しさん:2005/11/14(月) 02:59:49
*p1 != 0 の超カッコイイ書き方が *p1

ちなみに 配列→ポインタ の超かっこいい書き方は
char* p1 = (char *)&word1[0];

役に立つから覚えておけい。

211デフォルトの名無しさん:2005/11/14(月) 03:01:37
>>209
もしp1とp2に全く同じ文字列を与えたら、
文字の終端('\0')まで一致しちゃって最悪止まらなくなるから、
終端であれば無条件で終了させるようにしている(*p1)んじゃないかな
212デフォルトの名無しさん:2005/11/14(月) 03:02:23
>>210
ジュン ジュワー
213デフォルトの名無しさん:2005/11/14(月) 03:15:45
>>210
>>211
ありがと〜う、あんまり分かってないけど・・・
214デフォルトの名無しさん:2005/11/14(月) 03:24:59
使用ツールはVC++6.0とDXライブラリです。
Win 32 Apprication → 空のプロジェクトで開始。
select.hの中に構造体を二つ書きました

struct senshi{
char name[ 20 ] ; int hp ; int sm ;int sp ;int str ;int vit ;int mid ;int tokushu1;
} ;
struct senshi heisi = { "兵士" , 1000 , 80 , 5 , 4 , 4 , 6 , 1 } ;
struct senshi kyoukaheisi = { "強化兵士" , 1800 , 140 , 8 , 5 , 6 , 6 , 0 } ;
などなど

struct skill{
char name[ 40 ] ;int damageValue ;int rt ;int smConsumption ;int hit ;int tokushu1 ;
} ;
struct waza heisi_1 = { "切る" , 2 , 5 , 0 , 3 , 0 } ;
struct waza heisi_2 = { "回復" , 1 , 5 , 0 , 6 , 4 }
struct waza kyoukaheisi_1 = { "切る" , 2 , 5 , 0 , 3 , 0 } ;
struct waza kyoukaheisi_2 = { "回復" , 1 , 5 , 0 , 6 , 4 }
などなど

このヘッダファイルを二つの4つのcppで #include "Select.h"こうして インクルードしています。実際に構造体を変数に代入したりしているのは二つのcppだけです。
最初は、エラーが出てそのまま何も弄らずに続けて CTRL + F5 でコンパイルするとなぜかエラーが無くなって実行されて、
名前とかもちゃんと表示されていたんですが、構造体の変数(?)をたくさん他の変数に代入しているうちに
エラーがたくさん出るようになり。何度実行してもエラーが取れなくなりました。
エラーはこういうのです。
char_select.obj : error LNK2005: "struct skill heisi_2" (?heisi_2@@3Uskill@@A) はすでに Battle.obj で定義されています

どうやったらエラーを回避できるんでしょうか? なんとかこのヘッダファイルから構造体を読み込みたいんですが・・・
215デフォルトの名無しさん:2005/11/14(月) 03:28:00
>>214
ヘッダのグローバル変数の定義を全てselect.cあたりに移し、
ヘッダでは
extern struct senshi heisi;
extern struct senshi kyoukaheisi;
のように宣言すればいい
216デフォルトの名無しさん:2005/11/14(月) 03:41:13
変数の初期化はヘッダでやっちゃ駄目。実体の初期化はCソース本体で。
同じ名前のグローバル変数がファイルごとに宣言されてるわけよ、今の状況。


まぁ藤藁某のCプログラミング診断室でも嫁や。
C++でやってるんならクラスで表現したほうがエレガントだけどな。
引数テンプレートかなんかで。

あと、構造体を書き換えしない&プログラム実体に重複するデータが存在してもいいなら、
static constにやっちゃうのも有り。
217デフォルトの名無しさん:2005/11/14(月) 03:54:41
>>215
: error C2027: 認識できない型 'skill' が使われています。
: 'skill' の宣言を確認してください。

というエラーが出てダメでした。

>>216
static struct にしたらエラーがなくなりました 半日ぶりにプログラムが動きました

皆さんありがとうございました。

クラスとか良くわかって無いので勉強します
218デフォルトの名無しさん:2005/11/14(月) 07:08:11
インクルードってのが何をしてる作業なのか
ちゃんと理解しないことにはダメやね。
219デフォルトの名無しさん:2005/11/14(月) 08:06:01
えーと
宣言の集まりみたいなもんですか?
よそで定義したものを参照できるための
あと#defineのマクロ、定数とか?
220デフォルトの名無しさん:2005/11/14(月) 11:57:34
>>217
このスレ的にはおまえは大きな間違いをしている。
Cにはクラスはない。
221デフォルトの名無しさん:2005/11/14(月) 12:40:14
すみません、今ソートの部分で索引(index)をプログラムに追加する宿題が出ているのですが、
索引について詳しく解説しているページは無いでしょうか?
授業で扱われていないのに宿題に出たので困惑しているところです…
222デフォルトの名無しさん:2005/11/14(月) 13:02:50
>>219
違う。
分割コンパイルと合わせてプリプロセッサを勉強し直せ。
223デフォルトの名無しさん:2005/11/14(月) 13:10:28
>>221
スレ違い。
224初心者:2005/11/14(月) 13:38:22
突然の書き込み失礼します。rand関数を使ってリスト構造を作っている最中なんですが、重複しないで乱数を格納していきたいのですが・・・
考えても考えてもうまくできないのです。↓は途中のソースコードです。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedef struct list{
int data;/*値*/
int key;/*位置*/
struct list *next;
}LIST;
int main(void){
int i,j,target;
LIST *p,*n,*tail,*prev,*hd=NULL;
hd=(LIST*)malloc(sizeof(LIST));
tail=(LIST*)malloc(sizeof(LIST));
hd->next=tail;
tail->next=NULL;
target=0;
srand((unsigned)time(NULL));
for(i=0;i<10;i++){
LIST *n;
n=(LIST*)malloc(sizeof(LIST));
n->data=rand()%100;
n->key=10-i;
n->next=hd;
hd=n;
/*重複判定*/
( 1)
}
}
(1)をどう書けばいいんでしょうか?
わからないので指導 よろしくお願いします。
225デフォルトの名無しさん:2005/11/14(月) 13:51:22
>>224
スレ違い。
つーか、いろんなことを一遍に実装しようとせず、一つずつこなした方がいい。
あんたは未だそんなレベルジャマイカ。
リスト構造なんて背伸びしないで普通に作ってみたらどうだ?
#で、以降の質問はC学習スレなり初心者スレなり肌に合いそうなところを探すといい。
226デフォルトの名無しさん:2005/11/14(月) 13:58:53
先頭から順に比較していけばいいじゃねーか
リスト構造自体をあんまり理解してないみたいだな
227デフォルトの名無しさん:2005/11/14(月) 19:50:23
>>225〜226
もう一度、ガンバってみます。
ありがとうございました。

228デフォルトの名無しさん:2005/11/14(月) 21:31:25
リストか・・・ 「初心者」には秀逸な練習ネタだな
そんくらいのは凝りすぎてなんかいないよ

問題を分離して少しずつ考えるのは、初心者ではなくなってからでいい
本当に「初心者」のうちはいっぺんに考えられる頭の基礎体力をつけたほうがいい
システム全体を見通す発想力は失ったあとではなかなか治らないから
229デフォルトの名無しさん:2005/11/14(月) 21:42:52
ジャンケンゲームをつくってみたんですが 1 を入力しても時々「0〜2で入力してください」とでます。
その理由がわからないのですが、誰か教えてくれませんでしょうか。
ソースです↓

#include <stdio.h>
#include <time.h>

int main() {
int jibun;
int times;
int cp;

printf("ジャンケンゲームです ");
while(1){
times = time(NULL);
cp = times % 3;
printf("どれか入力してください(0.グー 1.チョキ 2.パー)...");
scanf("%d",&jibun);

if ((jibun == cp)) {printf("アイコです "); continue;}
if ((jibun == 0) && (jibun != cp) && (cp == 1)) {printf("あなたの勝ちです"); break;}
if ((jibun == 0) && (jibun != cp) && (cp == 2)) {printf("あなたの負けです"); break;}
if ((jibun == 1) && (jibun != cp) && (cp == 2)) {printf("あなたの勝ちです"); break;}
if ((jibun == 1) && (jibun != cp) && (cp == 1)) {printf("あなたの負けです"); break;}
if ((jibun == 2) && (jibun != cp) && (cp == 0)) {printf("あなたの勝ちです"); break;}
if ((jibun == 2) && (jibun != cp) && (cp == 1)) {printf("あなたの負けです"); break;}
else {printf("0〜2で選んでください\n"); continue;}
}
return 0;
}
230デフォルトの名無しさん:2005/11/14(月) 21:44:29
トンカツは?
231sage:2005/11/14(月) 21:45:56
すいません・・・書き込んだ後気づきました・・・

× if ((jibun == 1) && (jibun != cp) && (cp == 1)) {printf("あなたの負けです"); break;}
○ if ((jibun == 1) && (jibun != cp) && (cp == 0)) {printf("あなたの負けです"); break;}

こんだけだったみたいです・・・ すいませんでした・・
232デフォルトの名無しさん:2005/11/14(月) 21:58:00
論理性の欠片もないコードだな。
233デフォルトの名無しさん:2005/11/14(月) 23:19:16
御前等exit()を使うときは#include<stdlib.h>を忘れないようにね

でないと returm9(^ω^)プギャってされちゃうよ
234デフォルトの名無しさん:2005/11/14(月) 23:27:01
暗黙の宣言使えば別に#include要らないじゃん。
235デフォルトの名無しさん:2005/11/14(月) 23:32:00
典型的なプギャ返しだなw
236デフォルトの名無しさん:2005/11/14(月) 23:36:54
>>229
無駄多すぎ
237デフォルトの名無しさん:2005/11/14(月) 23:38:29
さあ話をそらしにかかりました
238デフォルトの名無しさん:2005/11/14(月) 23:39:14
>>237
俺さっき来たんだがw
239デフォルトの名無しさん:2005/11/14(月) 23:40:55
(・∀・)ニヤニヤ
240デフォルトの名無しさん:2005/11/14(月) 23:41:37
>オブジェクト指向ではみんなそうなってる
241デフォルトの名無しさん:2005/11/14(月) 23:43:10
>>237
m9(^Д^)プギャー!!ww
242デフォルトの名無しさん:2005/11/14(月) 23:43:22
>>239
ちょwwwwwマジだってwwwwww
243デフォルトの名無しさん:2005/11/14(月) 23:45:46
main()
{
extern i, puts, exit;
for( ; i < 10; i++) puts("afo");
exit(0);
}
i 0;
244デフォルトの名無しさん:2005/11/14(月) 23:46:10
>>237
935 名前: デフォルトの名無しさん [sage] 投稿日: 2005/11/06(日) 15:25:10
このsageない基地外なんか過去から全部同じ椰子じゃないかとまで思ってしまう。
(ネタがつまらんのが致命的にキモイ)
245デフォルトの名無しさん:2005/11/14(月) 23:47:46
必死だなw
246237:2005/11/14(月) 23:50:22
かかってこいや!!!(・∀・)イライラwwwww.majam.org/p/pr/pview.cgi?p=uZmwc3EgqKoZZtM8s9HdeY
247デフォルトの名無しさん:2005/11/14(月) 23:53:39
御前等exit()を使うときは#include<stdlib.h>を忘れないようにね
御前等exit()を使うときは#include<stdlib.h>を忘れないようにね
御前等exit()を使うときは#include<stdlib.h>を忘れないようにね
御前等exit()を使うときは#include<stdlib.h>を忘れないようにね
御前等exit()を使うときは#include<stdlib.h>を忘れないようにね
248デフォルトの名無しさん:2005/11/14(月) 23:56:55
Lv0: 報告のみ
Lv1: 自動訂正あり(出力あり)
Lv2: 翻訳中止(出力なし)
Lv3: 処理系が異常な状態に陥った(出力不定)

さて #include しなかった場合の「ぷぎゃ」はレベルいくつだろうw
249みずき ◆WnmizUKIg6 :2005/11/14(月) 23:57:21 BE:74691825-##
#include <stdio.h>
#include <stdlib.h>

int main()
{
int i , flg = 0;
exit();

return 0;
}

これでおk?
250デフォルトの名無しさん:2005/11/15(火) 00:12:31
>>249
exit()の引き数がありません。
251デフォルトの名無しさん:2005/11/15(火) 00:18:12
>>249
ヒント:
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
252デフォルトの名無しさん:2005/11/15(火) 00:18:45
exitなんて使ってる時点で低能
253デフォルトの名無しさん:2005/11/15(火) 00:23:24
>>252
このスレではね
254デフォルトの名無しさん:2005/11/15(火) 00:25:38
祭り会場と聞いて駆けつけますた
255デフォルトの名無しさん:2005/11/15(火) 00:26:45
_exit(main(argc, argv));
256デフォルトの名無しさん:2005/11/15(火) 00:31:31
■幸福のコピペ(チョピペ)■
他のスレに貼り付けると□□□□■□□□□■□□□
□■■隠された文字が■浮き出るよ□□■■■□□□□
http://pc8.2ch.net/test/read.cgi/tech/1131282679/l50
□□□■■□■■□□□□□■■□□■■□■□□
237 :デフォルトの名無しさん :2005/11/14(月) 23:38:29
さあ話をそらしにかかりました□□□□■□□□■■□
□■■□□■□□□□■■□□■□□□□□■■□
257デフォルトの名無しさん:2005/11/15(火) 00:34:04
258デフォルトの名無しさん:2005/11/15(火) 00:35:09
atexit(main);
259デフォルトの名無しさん:2005/11/15(火) 00:36:04
260デフォルトの名無しさん:2005/11/15(火) 00:38:10
261デフォルトの名無しさん:2005/11/15(火) 01:12:08
分かった俺の負けだ。正直そこまで考慮にいれていなかった
262デフォルトの名無しさん:2005/11/15(火) 01:12:46
いや、勝ち負けの問題じゃないよ。
こういう遣り取りは周りも知識の獲得になるし、我々も再確認になるからね。
263デフォルトの名無しさん:2005/11/15(火) 01:21:22
fgetsで末尾が改行にならない手順をおしえろ
環境はwindowsです
よろしくお願いします
264デフォルトの名無しさん:2005/11/15(火) 01:31:39
>>263
さようなら。
265デフォルトの名無しさん:2005/11/15(火) 01:44:06
>>263
fgets(buf, BUFFER, fp);
sscanf(buf, "%s\n", line);
あんまりいい方法じゃないと思うけど。
266デフォルトの名無しさん:2005/11/15(火) 01:52:34
( ゚д゚)カポーン
267デフォルトの名無しさん:2005/11/15(火) 02:02:26
>>265
たぶんそれじゃ無理

>>263
strchr
268デフォルトの名無しさん:2005/11/15(火) 02:48:47
fgets(buf, BUFFER, fp);
buf[strcspn(buf, "\n")] = '\0';


269デフォルトの名無しさん:2005/11/15(火) 03:03:17
ハァ?
270デフォルトの名無しさん:2005/11/15(火) 03:13:03
っ [cin.getline]
271デフォルトの名無しさん:2005/11/15(火) 03:26:54
size_t size;

fgets(buf, BUFSIZE, fp);
size = strlen(buf);
if(buf[size - 1] == '\n') {
 buf[size - 1] = '\0';
}
272デフォルトの名無しさん:2005/11/15(火) 03:28:01
改行があっても読み込みが止まらないfgetsは無いですか?
\0があったときだけ止まって欲しいです
273デフォルトの名無しさん:2005/11/15(火) 03:54:07
そのくらい自作しなさい
getcharでも使って
274デフォルトの名無しさん:2005/11/15(火) 04:33:55
fgetsって頭悪いよね、なんで戻り値が引数で渡した文字列そのまんまなんだよw
普通は読み出したサイズを返すべきだろw
むかついたからfgetsのソースを書き換えて戻り値を読み出した文字数に換えてやったさwww
275デフォルトの名無しさん:2005/11/15(火) 04:41:32
標準化委員会ってなぜ使わない(使い物にならない)関数をずっと大事にしてるの?
互換性のためならそれはそれで残しておいて新しい関数を追加すればいいのに
276デフォルトの名無しさん:2005/11/15(火) 04:47:27
新しい関数を追加したら、それはそれで互換性の問題が出るでしょ。

277デフォルトの名無しさん:2005/11/15(火) 05:38:25
なるほど効率を捨てて互換性を取るというわけですか
278デフォルトの名無しさん:2005/11/15(火) 06:10:47
>>274どうやって書き換えるの?
279デフォルトの名無しさん:2005/11/15(火) 06:57:09
fgets.cを見ながら書き換えるだけ
280デフォルトの名無しさん:2005/11/15(火) 07:29:56
つか、標準関数なんて書き換えるなよ。
新しい関数作ればいいだろ?
281デフォルトの名無しさん:2005/11/15(火) 08:06:18
そっか
282デフォルトの名無しさん:2005/11/15(火) 09:06:10
CからFortranのライブラリを呼び出したいのですが、
具体的な方法が分かりません。
自分はVisualC++6.0を使っています。できれば無料、Unixなどを
使わずWindowsでできる方法があればと思っているのですが・・・

おおまかに教えてもらえれば残りは自分で調べますのでヒントを
おねがいします。
283デフォルトの名無しさん:2005/11/15(火) 09:09:22
質問です。
malloc()したポインタをfree()すると
それはポインタの宣言された変数から領域を切り離すのか、領域そのものを開放するのか
どちらなのでしょうか?
例えば

int *ptr;
int *ptr2;
ptr=(int *)malloc(sizeof(int));
ptr2=ptr;

free(ptr);
ptr2++;
とかは可能なのでしょうか?
これを実行してみましたが、すんなり動いてしまいました。
規格どおりなのか、たまたまなのかわからないんです・・・。
284283:2005/11/15(火) 09:10:53
間違えました・・・
ptr2++;ではなく*ptr++;
です。すみません、、、
285283:2005/11/15(火) 09:11:26
*ptr++;ではなく、*ptr2++;でした。。。。
何度もすみません。。。
286デフォルトの名無しさん:2005/11/15(火) 09:34:19
たまたま
287デフォルトの名無しさん:2005/11/15(火) 09:42:22
>>283
明らかにやばいです。
malloc()でヒープから確保されたメモリはfree()の時点で未使用になっています。
解放直後は正しく動いているように見えても、他の場所でmalloc()を使うと、
ptr2と同じ場所にメモリを確保する可能性があるということです。
288デフォルトの名無しさん:2005/11/15(火) 10:01:13
>>282
f2c を使うのが一番簡単かと。

Windows でタダの FORTRAN コンパイラは、
おそらく MinGW の g77 しかないと思うけど、
オブジェクトファイルの形式が
g77 (ELF) と VC++ (COFF) とで違うから面倒臭い。
289デフォルトの名無しさん:2005/11/15(火) 10:05:58
>>288
objcopyは使えないの?
290デフォルトの名無しさん:2005/11/15(火) 10:10:35
f2c が一番手間要らずかと。
291デフォルトの名無しさん:2005/11/15(火) 10:30:28
MinGWはELFじゃないですぞ?
292デフォルトの名無しさん:2005/11/15(火) 11:08:15
お? COFF だっけ?
293デフォルトの名無しさん:2005/11/15(火) 12:15:37
>>285
多分、*ptr2++で、ptr2の指す数値を++するつもりだと思いますが、
これだとポインタが++されてしまいます。
正しくは(*ptr2)++;としないとダメ。
294デフォルトの名無しさん:2005/11/15(火) 12:16:03
ちがうよ COFFEEだよ
295:2005/11/15(火) 12:18:02
タイミングがずれてしまったorz スルーよろしく

                  ・・・・・・・・・・・・・くだらなくてすみません
296デフォルトの名無しさん:2005/11/15(火) 13:30:55
>>282
纏めるとこんな感じかな。

・Fortranのライブラリのソースがある。
→f2cを使ってみてはどうか。以下、環境依存OKスレへ。
・MinGWのg77でコンパイルされたライブラリモジュールしかない。
→MinGWライブラリをVC6から呼び出す。以下、MinGW関連スレへ。
・静的ライブラリではなくDLLしかない。
→DLL呼び出し用の定義ファイルを作ればいい。以下、VC関連スレへ。

>>295
ご愁傷様。

>>293
それ以前の問題があるんだから的外れなこと書くまでもないでしょ。
297デフォルトの名無しさん:2005/11/15(火) 14:42:03
しがない大学生です。
単刀直入なのですが、C言語を用いて
外部プログラムを呼び出したりすることって
できますか?

私はSPICEというプログラムを呼び出して
ネットリストを読み込ませたいのですが、
SPICEを何度も呼び出す(引数を何度も渡すってことでも可)
ので繰り返しが得意なプログラムを利用しようと思いまして。
さいわい、SPICEはコマンドラインみたいになっているので
ネットリストの読み込みはできそうですが、
一連の操作をするプログラムをどうしたものか・・・。

いろいろ調べたところPERLという言語なんかはできるみたいに
書いてあるのですが、UNIXをしようしているので
環境の設定などもあり、またプログラムをCから
はじめてやっと好きになってきたころなので
まだまだCで何ができるかしりたくて。
スキルなどありませんが、参考書は独習Cです。
どなたかよろしくおねがいします。
298デフォルトの名無しさん:2005/11/15(火) 15:06:41
>>297
Cでなくてもバッチで済みそうな気がするし、PerlをWindowsで動かしてもいいだろう。
そうしたければExcelからVBAを使ってもいいし、手段は色々ある。

もし、Cでやってみたいのなら書籍に当たってみよう。
system()関数ならC言語の標準関数だし、popen()もポピュラーな環境なら使えるはずだ。
調べてみて判らなくなったら初心者スレで聞いてみるといい。
299297:2005/11/15(火) 16:59:18
ありがとうございます!
SYSTEM関数などについてチャックして見ます!

あとUNIXを使用しているのでバッチというご意見から
シェルスクリプトというのも調べてみます。
ありがとうござました。
300デフォルトの名無しさん:2005/11/15(火) 17:14:29
なんだ、Unix使いだったのか。
Windows用のPerlを知らないWin使いかと思ってしまった。
だったら素直にmanで調べればいいね。
301デフォルトの名無しさん:2005/11/15(火) 18:59:54
[問題4/中級]文字列 MOJI に代入されている文字の中から、数字(0から9)だけ
を取り出して、それを小さい順に表示するプログラムを作りなさい。
例えば、MOJI[]="9B2C3ADC31" ならば 12339 と表示する。

「問題6/上級]次の問題の中から、どれか1つを選び、プログラムを作成して答えを
求めなさい。
(問題6−1)太郎君が9歳になるまで,花子さんの年齢が太郎君の年齢の整数倍にな
る年がちょうど7回ある。このとき、太郎君と花子さんの年齢差はいくつか?
 
解答ヨロシクお願いします。自分お手上げです(泣
302デフォルトの名無しさん:2005/11/15(火) 19:08:52
>>301
宿題スレへ行け。
303デフォルトの名無しさん:2005/11/15(火) 19:21:04
>1 すら読まない >>301 にもお手上げです(呆
304デフォルトの名無しさん:2005/11/15(火) 20:34:21
C言語勉強中の中学生です。
いきなり質問なのですが、xミリ秒経過するのを待つやつなんですが

int sleep(unsigned long x)
{
clock_t c , s = clock();

do {
if ((c = clock()) == (clock_t)-1)
return 0;
}while (1000UL * (c - s) / CLOCKS_PER_SEC < x);
return 1;
}

これの 1000UL ってなんなのでしょうか?
良かったら教えてください orz
305デフォルトの名無しさん:2005/11/15(火) 20:38:31
unsigned long
306デフォルトの名無しさん:2005/11/15(火) 20:59:11
わざわざUL付ける意味あるか?
307デフォルトの名無しさん:2005/11/15(火) 21:07:04
>>306
殆どない。
308デフォルトの名無しさん:2005/11/16(水) 00:41:36
オーバーフロー対策。
普通オーバーフローしないじゃんと言っても、
予想外の出来事が起こればありうる。

あとは、clock_t ってのがプリミティブ型で何型なのか分からないが、
とりあえず UL 付けとけば < の型チェック警告を抑制できる。
309デフォルトの名無しさん:2005/11/16(水) 01:14:32
後段はまぁいいとして、前段は間違い。
310デフォルトの名無しさん:2005/11/16(水) 01:48:30
long が8バイトの環境もあろうぜ。
gcc の古い奴とかそうじゃなかったっけ?
311デフォルトの名無しさん:2005/11/16(水) 03:16:30
10000は暗黙の格上げされるだけだから、ULつける意味はないね。
312デフォルトの名無しさん:2005/11/16(水) 04:53:14
流れ読まずに質問ですみません。IEEE1394の通信をOver Ethenetさせたく思い、それの開発に適した言語を学ぼうと思っています。
IEEE1394の通信をLANに参加させたりすることができればIEEE1394通信に対応したゲームなどをイーサネットからVPNを組み、
ブロードバンドを利用して遠距離にいる人との通信対戦などが可能になるのではと考えました。

VPNを組むソフトとしてはSoftEtherを考えています。(ttp://www.softether.com/jp/vpn2/
このソフトはC言語で記述されているそうなので親和性があがるかと思いこのスレに質問させていただきました。
他に適した言語やスレッドがありましたらそちらに誘導していただけると幸いです。


このようなソフトの開発に参考になるような書籍やWebサイトがありましたらレスをお願いいたします。
313デフォルトの名無しさん:2005/11/16(水) 05:14:02
流れは読まなくてもいいから
タイトルと>>1を読め
314デフォルトの名無しさん:2005/11/16(水) 07:00:30
>>312
おもしろそうではあるけど今から言語を学ぼうとしているであろう>>312が一人でそのソフトを開発するには
途方もない時間と根気がないとむりかと。
315デフォルトの名無しさん:2005/11/16(水) 07:04:04
>>312
標準で出来るだろ
Windows舐めんな
316デフォルトの名無しさん:2005/11/16(水) 07:10:33
1394 over Ethernet?なんじゃそりゃ。
IEEE1394通信に対応したゲーム、ってなんだそりゃ。
317314:2005/11/16(水) 07:14:39
>>315
マジかよ。恥ずかしいこといっちゃったじゃマイカ。
318デフォルトの名無しさん:2005/11/16(水) 07:23:09
>>315
それは、IP over 1394じゃなくて?
319デフォルトの名無しさん:2005/11/16(水) 07:28:57
Windows しか使ってない人って自分の環境をちゃんと書かないよな。
320デフォルトの名無しさん:2005/11/16(水) 07:37:02
IEEE1394まで読んだ。
321デフォルトの名無しさん:2005/11/16(水) 07:56:46
312です。

>>313さんの指摘通り開発に際してのアドバイスなどとしてはスレ違いだったようです。読解力が足りず申し訳ございません。

>>315
XPのブリッジ接続などを使うのでしょうか。無知ながらそのあたりは試してみたのですが、よければ詳しく方法を教えていただけないでしょうか。

>>316
言葉足らずですみません。家庭用ゲーム機PlayStationのソフトを指していました>ゲーム
IEEE1394通信を使って二台以上のハードを用いた対戦が可能となっているソフトが存在し、このIEEE1394の通信をインターネット越しに行わせる(IEEE1394のネットワーク形式をEthernetにする)ソフトを作ろうと思っていました。

>>319
お察しの通りWindowsXPpro SP2をメインに使用しています。他にはサーバー用途に使っているLinuxがありますが、子供が牛乳をぶっかけたりしているため不調です。
322デフォルトの名無しさん:2005/11/16(水) 10:09:26
>>321
> 子供が

なんだ、ネタかよ…
323デフォルトの名無しさん:2005/11/16(水) 10:27:42
以下の二つの機能を実装すればいいんじゃ?
・IEEE1394のデータを拾って、IPネットワークに乗せる。
・IPネットワークのデータを拾って、IEEE1394に乗せる。
324デフォルトの名無しさん:2005/11/16(水) 10:40:33
まぁ、遅延が発生するだろうからゲームが正常稼働するかは怪しいけどな。
325デフォルトの名無しさん:2005/11/16(水) 11:02:54
誘導してくれるまで居座っちゃうぞ、という事か?
326デフォルトの名無しさん:2005/11/16(水) 13:18:41
>>323
具体的なアドバイスありがとうございます。
仕事の片手間では何年かかるかといった感じですが少しずつがんばっていきたいと思います。
>>324
そうですね、やはり例えソフトができたとしてもラグや通信エラーによる切断が多そうです。
>>325
すみません、ちょっと長く居すぎでした。
327デフォルトの名無しさん:2005/11/16(水) 15:11:37
シェルソートのhの系列で最も良いものは解明されていませんが、
h=h*3+1が一般的に良いとされています。これには何か理由があるのでしょうか?
328デフォルトの名無しさん:2005/11/16(水) 18:02:37
>>326
一応マジレスすると、Interface誌のバックナンバーで
Ethernetドライバの作成を解説したものや、
IEEE1394を特集したものを読むと概略は分かるかと。
329デフォルトの名無しさん:2005/11/16(水) 18:15:31
Ethernetはドライバまで見なくても、普通にソケットレベルのI/Oでいいんじゃないか?
330デフォルトの名無しさん:2005/11/16(水) 19:07:07
ただのブリッジならそうだね
331デフォルトの名無しさん:2005/11/17(木) 01:26:35
このライブラリの利用を考えています。

http://wase.urz.uni-magdeburg.de/jschulen/spin/

UNIXでの使い方しか書いてないのですがWindowsでも使えますか?
解凍するとちゃんとソースは出てくるのですが・・・
簡単でいいので方法を教えてもらえないでしょうか?
332デフォルトの名無しさん:2005/11/17(木) 01:31:30
無理です
333331:2005/11/17(木) 01:48:49
そうですか・・・残念です。
334デフォルトの名無しさん:2005/11/18(金) 00:02:52
UNKO_SIZE(30)
#include "hoge.h"

hoge.h にはグローバル変数 char g_unko[XXX] があります。
インクルードする前に、UNKO_SIZE(30)と記述があれば、XXX が30に置き換わり、
そうでない場合は、デフォルトの 32と置き換えるようマクロを組みたいのですが、
不可能なのでしょうか?
335デフォルトの名無しさん:2005/11/18(金) 00:10:39
可能
336デフォルトの名無しさん:2005/11/18(金) 00:10:43
#ifdefとか
337デフォルトの名無しさん:2005/11/18(金) 00:44:27
>>334
素直に
#define XXX 30
ではいかんのけ?
338デフォルトの名無しさん:2005/11/18(金) 02:21:58
>>334
そもそもそんなギミックが必要となる設計自体に疑問を感じる。
339デフォルトの名無しさん:2005/11/18(金) 02:39:05
>>338
あなたの感想はどうでもいいです。
不可能かどうかが知りたいのです。
340デフォルトの名無しさん:2005/11/18(金) 02:44:29
>>338
全くですね
要は>>339が池沼なんですよ
341デフォルトの名無しさん:2005/11/18(金) 02:46:54
>>340
自分が答えられないと、人を池沼呼ばわりですか?
342デフォルトの名無しさん:2005/11/18(金) 02:53:18
>>338
コンパイル時にパラメタを決定する場合などでは、よく使う手法ですね。
343デフォルトの名無しさん:2005/11/18(金) 02:56:15
>>338
こんなの一般的な設計だろ。



#define UNKO_SIZE 30


#ifdef UNKO_SIZE
const int XXX = UNKO_SIZE;
#else
const int XXX = 32;
#endif
344デフォルトの名無しさん:2005/11/18(金) 03:03:36
UNKOっていう名前はどうにかならんもんかな
345デフォルトの名無しさん:2005/11/18(金) 03:04:11
Windows.hなんかでよく使ってるね
346デフォルトの名無しさん:2005/11/18(金) 03:08:44
windows.hってほとんどインクルードの筈だが(w
347デフォルトの名無しさん:2005/11/18(金) 04:07:55
>>346
UNKOの話ですけど
348デフォルトの名無しさん:2005/11/18(金) 06:15:12
うんうん
windows.hの中身を見てビックリしたよ
UNKOとか一杯書いてあるし・・・
349デフォルトの名無しさん:2005/11/18(金) 06:30:16
grep UNKO *.h
350デフォルトの名無しさん:2005/11/18(金) 14:38:42
0U とか 1U ってどういう意味ですか?
351350:2005/11/18(金) 14:41:37
すんません、自己解決しました。
unsigned int型の1とか0
352デフォルトの名無しさん:2005/11/18(金) 15:30:42
ファイル操作に関する質問です。

あるプログラムで入力した文字列を
あるファイルの名前にする方法とかってありますか?
もちろんOSでリネームするときも同じようなこと
してるんだと思いますが
FOPEN とか SYSTEM関数で引数に変数指定できないように思って
よろしくおねがいします・
353デフォルトの名無しさん:2005/11/18(金) 15:34:02
>>352
char * p = "foo";
fopen(p, "r");
したいのか、
char buf[200];
sprintf(buf, "mv %s %s", p, "bar");
system(buf);
したいのか、どっちみち初心者スレにでも行ってくれ。
#つーか、関数名を大文字にするなや。
354デフォルトの名無しさん:2005/11/18(金) 16:21:46
mouasgfirejgtreag
re
gregreger
gregggggggqegreg
eryg45r3gr5g5rregtr
qetaq4w3gtifa4q3igt4i3g
qatgr4jigjoi45joijrti4r

で出来るはず。
355352:2005/11/18(金) 16:22:45
おお。上の方法でできました。
ついでにsprintfについても知れてよかったです。
こんなのさがしてたんだ。
サンクス
356デフォルトの名無しさん:2005/11/18(金) 16:25:00
fopen(argv[1], "r")とか見たこと無いのか?
357デフォルトの名無しさん:2005/11/18(金) 17:28:10
上の方法って、まさか>>354
これってどの形式でエンコードされてるの?
358デフォルトの名無しさん:2005/11/18(金) 18:00:23
たぶん猫デコーダでソースになるはず
359デフォルトの名無しさん:2005/11/18(金) 18:14:48
>>354
ワロタ
凄いなコレ
最初全然意味わからん買った
360デフォルトの名無しさん:2005/11/18(金) 18:19:35
猫デコーダって何?
グーグル先生も知らないようだが
361デフォルトの名無しさん:2005/11/19(土) 05:56:20
362デフォルトの名無しさん:2005/11/20(日) 02:27:09

realloc()関数についての質問です。

char *p;

p = (char*)malloc(10);
strcpy(p, "aaa");

p = realloc(p, 20);

とやった時に、realloc の引数に渡された p のメモリー領域と
realloc 後の p は異なる場合があり得ると思いますが、その際
realloc に渡された引数の方の p の領域はfree()される事は
保証されてるのでしょうか?つまり、上の場合その都度
p2 = realloc(p1, 20);  free(p1);
とかやらなくてよくて、最後に、free(p) しとけば良いという事に
なりますか?
363デフォルトの名無しさん:2005/11/20(日) 03:07:40
>>362
それでいい。
ISO/IEC 9899:1999 7.20.3.4 The realloc function 2
The realloc function deallocates the old object pointed to by ptr
and returns a pointer to a new object that has the size specified by size.
364デフォルトの名無しさん:2005/11/20(日) 04:50:40
>>363
9899:1999ってC99の規格じゃないの?ANSI-Cの質問だと思うのだが。
365デフォルトの名無しさん:2005/11/20(日) 04:55:19
ANSIってアメリカローカルの規格だと思った。

日本ならJISだが、C99はJISでも規格化されてる。C#すらあるくらいだからな。
366デフォルトの名無しさん:2005/11/20(日) 04:58:18
realloc の話題多いですね ややこしいから使わなきゃいいのに
367デフォルトの名無しさん:2005/11/20(日) 04:59:38
というかreallocはやることが多杉るんだよな
典型的なダメ関数
368・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/20(日) 05:13:47
リアルロックは誠にお塩学先生のような関数ですね

369デフォルトの名無しさん:2005/11/20(日) 05:19:11
>>362
別件だけど・・・・

p = realloc(p, 20);
もしreallocが新しく20を確保できなかった場合NULLを返す
pにはNULLが代入されるがもともとのpはどこからも参照されなくなる
370デフォルトの名無しさん:2005/11/20(日) 05:28:37
で、p = realloc(p, 0);
という、実質freeに相当する使い方も許している(FAQ参照)。
この場合は必ずNULLが返るはず。
371デフォルトの名無しさん:2005/11/20(日) 05:53:22
ホント、見れば見るほどダメな設計だなw>realloc
372デフォルトの名無しさん:2005/11/20(日) 06:04:46
いやでもこれ以外にあまりやりようが無いだろ

realloc(&p, 20);
として戻り値は成否だけ返すほうがいいかな
うーん・・・難しいぞ
373デフォルトの名無しさん:2005/11/20(日) 06:22:20
>>369
マジかよ、
じゃあ、予めpは別のポインタ変数にポインタをコピーしてバックアップとっとけって話?
374デフォルトの名無しさん:2005/11/20(日) 06:49:55
まあそうだけど
reallocに失敗した(==メモリが足りない)プログラムで
そのまま実行を継続するのか、という話もある。
終了するつもりなら、多少リークしてても問題ないわけだし。
375まゆ:2005/11/20(日) 07:19:28
おはようござぃますw
プログラミング学校でゃってるんですヶド、わからなぃので質問させて下さぃ
問題です↓
実数型変数a, b を宣言し,和と差を計算して,結果を画面に表示するプログラムを考える.
 このとき,ポインタ変数 *pwa, *psa をmain関数内で準備し,
 関数 wasa に a, b, &pwa, &psa を引数として渡して,
 関数 wasa 内で「アドレス内のデータ」として和と差を計算せよ.
アドバイス等ぁったら是非お願いしますw
376デフォルトの名無しさん:2005/11/20(日) 07:27:11
>>375
さようなら
377デフォルトの名無しさん:2005/11/20(日) 08:28:04
>>375
アドバイスか・・・。そうだな・・・、自分でやれ。
378デフォルトの名無しさん:2005/11/20(日) 08:41:43
アドバイスぐらいちゃんとやってやれよ。

で、そんなことも解らないのなら、
プログラミング学校に行くこと自体見直してみては?
向いてない。
379デフォルトの名無しさん:2005/11/20(日) 08:44:14
>>375
とりあえず、今自分で出来る範囲を間違ってても良いから書いて見れ。
どの範囲まで出来て、どこが分からないのか把握できないと、アドバイスのしようがない。
380デフォルトの名無しさん:2005/11/20(日) 08:46:16
>>375
まず教官をジャーマンスープレックスか茹ですぎ卍固めにすることからだな
アドレスにデータはない、これがわかっている人を探せ
381378:2005/11/20(日) 08:51:49
しょうがない。あんまりにも自分のつっこみが厳しかったので助けるか。

>このとき,ポインタ変数 *pwa, *psa をmain関数内で準備し,
ここがおかしい。ポインタ=代名詞みたいなもの。
「あの実数」「この実数」みたいにいえるけど、実体は存在しない。
double *pwa,*psaと宣言してしまうと、
>関数 wasa に a, b, &pwa, &psa を引数として渡して,
&pwaは(pwaが指定している実数値へのポインタ)のポインタになる。
これでは正常動作しない。

main関数でpwa、psaを宣言し、
wasaにそのポインタを指定してやるのが正しい。

とりあえず問題・解説か学校見直してくれ。
382デフォルトの名無しさん:2005/11/20(日) 08:54:34
int main(void){
>実数型変数a, b を宣言し,
int a,b;
>このとき,ポインタ変数 *pwa, *psa をmain関数内で準備し,
int *pwa, *psa;

>関数 wasa に a, b, &pwa, &psa を引数として渡して,
wasa(a, b, &pwa , &psa);

return 0;
}

>関数 wasa 内で「アドレス内のデータ」として和と差を計算せよ.
void wasa(int a, int b, int **pwa, int **psa){
**pwa=a+b;
**psa=a-b;
>和と差を計算して,結果を画面に表示するプログラムを考える.
printf("和%d, 差%d\n",**pwa, **psa);
}

なんか値渡し(**)が謎なプログラムだな?
何の意図があるんだ?w


383382:2005/11/20(日) 08:58:24
ああ、あと、領域確保は自分でやってくれ。
malloc使わんと、これどこも刺して無いからな>*pwa,*psa
384デフォルトの名無しさん:2005/11/20(日) 09:01:24
おはようござぃますw
プログラミング学校でゃってるんですヶド、わからなぃので質問させて下さぃ
問題です↓
「まず教官をジャーマンスープレックスか茹ですぎ卍固めにすることからだな 」
茹ですぎ卍固めってなんですか?是非お願いしますw
385デフォルトの名無しさん:2005/11/20(日) 09:06:15

今、釣りかシロートの臭いプンプンしない?
386デフォルトの名無しさん:2005/11/20(日) 09:07:55
ゆで過ぎ逆卍固めのことじゃないか?
387デフォルトの名無しさん:2005/11/20(日) 09:30:53
>>386
ttp://blog.goo.ne.jp/prowrestle/e/7b6cbd637447b0f502657ae8c4426029
解決しました!!ありがとうございます!!
388デフォルトの名無しさん:2005/11/20(日) 09:57:36
まあ、宿題は宿題スレでって感じかな。
389まゆ:2005/11/20(日) 14:56:42
返事遅れてすぃません・・・↓↓
382番の答えでぁってるんでしょうか?

390デフォルトの名無しさん:2005/11/20(日) 15:04:00
>>389
知らん。それを判断するのは君の仕事だ。
391まゆ:2005/11/20(日) 15:09:15
ですょねw
コンパイルしてみますw
392まゆ:2005/11/20(日) 15:14:18
エラーになってしまうのですが・・・;
393デフォルトの名無しさん:2005/11/20(日) 15:18:04
メアドは伏せとくことをおすすめする。。。
394デフォルトの名無しさん:2005/11/20(日) 15:25:21
 ,j;;;;;j,. ---一、 `  ―--‐、_ l;;;;;;  女のふりして質問すれば回答率が高い
 {;;;;;;ゝ T辷iフ i    f'辷jァ  !i;;;;; 
  ヾ;;;ハ    ノ       .::!lリ;;r゙  
   `Z;i   〈.,_..,.      ノ;;;;;;;;>  そんなふうに考えていた時期が
   ,;ぇハ、 、_,.ー-、_',.    ,f゙: Y;;f     俺にもありました
   ~''戈ヽ   `二´    r'´:::. `!
395デフォルトの名無しさん:2005/11/20(日) 15:28:39
2ch で女の名前を使う奴は全員ネカマ。これ定説。
396まゆ:2005/11/20(日) 15:32:37
この問題が先にぁりました!!
1.実数型変数a, b を宣言し、そのアドレスを画面に表示するプログラムを作成。
2.上記のプログラムでポインタ変数 *pa, *pb を準備し、それぞれに変数 a, b のアドレスを入力して、それを画面に表示させる。
3.上記のプログラムで変数 a, b にキーボードから数値を入力し、その和 sum を計算して画面に表示させる。ただしポインタ *pa, *pb を用いて和を計算する。
一応、2番までは理解できたんですヶド、先ほど書いた問題のと関連ぁるんでしょうかね?
397デフォルトの名無しさん:2005/11/20(日) 15:33:20
宿題は宿題スレへ。
398デフォルトの名無しさん:2005/11/20(日) 15:34:04
399まゆ:2005/11/20(日) 15:35:37
ネカマぢゃなぃですから・・・;
400デフォルトの名無しさん:2005/11/20(日) 15:40:13
>>399
きもいギャルみたいな文面使うなよまじめに答える気も失せる
ネカマでも女でもどっちでもいいがとりあえずエラーの内容くらい晒せ
401デフォルトの名無しさん:2005/11/20(日) 15:45:04
>>399
ネカマじゃないっていうんだったら出すもん出して証拠見せてみろよ(`・ω・´)
402デフォルトの名無しさん:2005/11/20(日) 15:47:25
>>401
不毛になるからやめれ。
403デフォルトの名無しさん:2005/11/20(日) 15:50:42
とりあえず、おっぱいうpしてくれたら信じる。
404デフォルトの名無しさん:2005/11/20(日) 15:52:16
001.c:9: warning: type mismatch with previous implicit declaration
001.c:4: warning: previous implicit declaration of `wasa'
001.c:9: warning: `wasa' was previously implicitly declared to return `int'
ってでました。
405デフォルトの名無しさん:2005/11/20(日) 15:52:58
>>374
リークしたまま終了したら、リークしたままなのでまずいんジャマイカ?
Javaとかなら掃除してから終わってくれそうだが
406デフォルトの名無しさん:2005/11/20(日) 15:55:31
言語じゃなくてOSの問題なんじゃないの?
407デフォルトの名無しさん:2005/11/20(日) 15:59:10
>>399
よし、 1 年 R O M っ て ろ 。

な。
408デフォルトの名無しさん:2005/11/20(日) 16:03:33
>>407
おいおい、かわいそうだろ。半年間にしてやれよ。
409デフォルトの名無しさん:2005/11/20(日) 16:05:19
プログラムが確保したメモリー領域を開放するのは、そのプログラムの責任。
410デフォルトの名無しさん:2005/11/20(日) 16:10:15
>>405
OSによっては、OSが処理してくれる。
まぁ、そんな気持ち悪いプログラム組みたくはないが。
411デフォルトの名無しさん:2005/11/20(日) 16:13:20
gcc使ってんのか?一番目のは関数のプロトタイプ宣言してねえから出てんじゃないの?
412デフォルトの名無しさん:2005/11/20(日) 16:14:16
まゆちゃああああああああああああああん
413デフォルトの名無しさん:2005/11/20(日) 16:14:43
>>404
あそこまで詳しく書いてくれてるんだから、それくらい自己解決してやれよ・・・。
まず、プロトタイプ宣言を入れりゃ、動くだろ

int main(void){
の上に
void wasa(int a, int b, int **pwa, int **psa);
を追加


int *pwa, *psa;
の下に
pwa=malloc(sizeof(int));
ppsa=malloc(sizeof(int));
を追加すれば、とりあえず動く

あと、aとbに何らかの値入れないと答えでないぞ。
414デフォルトの名無しさん:2005/11/20(日) 16:15:55
キャストしろやはげ
415デフォルトの名無しさん:2005/11/20(日) 16:16:59
まゆちゃんでぬきぬきしたい
416デフォルトの名無しさん:2005/11/20(日) 16:18:53
413番さんもありがとうございますです!!
C言語できる人ってあたしから見たら天才ですよ・・・w
417デフォルトの名無しさん:2005/11/20(日) 16:19:39
まあ今日は2回セックスしたし明日はすっきり工程レビュー
418デフォルトの名無しさん:2005/11/20(日) 16:20:18
>405
fjにカエレ
419デフォルトの名無しさん:2005/11/20(日) 16:22:56
>>416
おみゃーの脳が足りてねえだけだろ
420デフォルトの名無しさん:2005/11/20(日) 17:15:37
382番の方の(**)を使わずに、ってできますか??
malloc(sizeof(int))とかも習ってないので;
421デフォルトの名無しさん:2005/11/20(日) 17:19:48
できる
422デフォルトの名無しさん:2005/11/20(日) 17:22:31
是非教えてください!
423デフォルトの名無しさん:2005/11/20(日) 17:23:24
424デフォルトの名無しさん:2005/11/20(日) 17:24:15
先コンビニいってくるわ、ほんでウンコしてきてから教えてやる
425デフォルトの名無しさん:2005/11/20(日) 17:28:28
381番も見てるんですけど、わからないんです・・。
426デフォルトの名無しさん:2005/11/20(日) 17:28:48
習ってないって・・・
その辺のサイト見りゃ載ってるよ
427デフォルトの名無しさん:2005/11/20(日) 17:35:59
>>425
>とりあえず問題・解説か学校見直してくれ。
>>1
いい加減にしてくれ。
428デフォルトの名無しさん:2005/11/20(日) 17:37:22
学校の宿題をここで聞くなボケ
宿題スレがあるだろボケ
死ねぼけ
カスぼけ
429デフォルトの名無しさん:2005/11/20(日) 17:47:15
381 が言ってるのは「手抜きせず問題文を丸写ししろ」ってこと
382 がダメ押しとして、その仕様をママ実装するとこーなって変だろといってる
428 は http://pc8.2ch.net/test/read.cgi/tech/1132102992/ に移動することを薦めてる
430デフォルトの名無しさん:2005/11/20(日) 18:56:52
で、おっぱいでpは?
431デフォルトの名無しさん:2005/11/20(日) 19:57:32
         _       
          ,.'´   ヽ ))   
       l ノメノハ)〉   ペコリ  
        ! (!l - -ノ| ))    ゴメンナサイ
        ノノ( JJ)リ!
       ` `i_j_j
432デフォルトの名無しさん:2005/11/20(日) 20:10:46
ε=(ノ゚ー゚)ノタダイマ ?
433デフォルトの名無しさん:2005/11/20(日) 20:16:20
マイクロソフトが出しているvisual C++って普通のC言語と同じ?
独習Cっていう本をかってC言語を勉強しようと思っているんですけど
ソフトはVisual C++でいいのかな?つーかこれくらいしか安めのないし。
あとアカデミック版だかという4500円くらいのCとjavaとbasicがセットになった
visualも売ってて、それとvisual C++ってCに関しては同じ機能なの?
Visual C++のほうは20000円だからほかに何か機能でもあるんですか?
あとこれらのソフトを買えば普通にC言語できますよね。コンパイラーだかを
買う必要はないんですか?
434デフォルトの名無しさん:2005/11/20(日) 20:20:57
>>433
スレ違い。この板だけでもVC++の話題は腐るほどあるんだからその辺ででも聞け。
435デフォルトの名無しさん:2005/11/20(日) 20:30:12
>>433
雑誌類は何読んでる?
あなたに合った単行本はそれによると思うけど
436デフォルトの名無しさん:2005/11/20(日) 20:36:53
とりあえず、コンパイラはタダででもOK。
437デフォルトの名無しさん:2005/11/20(日) 21:08:48
ダータ=サポートなし
438デフォルトの名無しさん:2005/11/20(日) 21:19:44
有料コンパイラを買って、「独習Cのxxページの例題が動かないのですが」とサポートに電話する。
受け付けてくれるの?
439デフォルトの名無しさん:2005/11/20(日) 21:32:52
>>433
独習Cを使ってCの勉強をするんなら、添付のCD-ROMに入っている
Borland C++ Compilerで十分なのでは?
Cygwinとかでもいいだろうし。
Visual C++を買う必要はないと思うよ。
440デフォルトの名無しさん:2005/11/20(日) 21:40:04
ダータ=マニュアル冷たい (内容的にはともかく)
441デフォルトの名無しさん:2005/11/20(日) 21:41:44
gcc ベースで FAQ まとめてるサイトが「初心者」という設定で話しているケースは珍しい
たいてい UNIX 系 OS の SG くらい自力でやってるだろうって前提で話している
442デフォルトの名無しさん:2005/11/20(日) 21:43:59
フリーコンパイラの導入の仕方を書いたページなら
hello, world程度までのコンパイル方法くらいは書いてくれてるだろう。
443デフォルトの名無しさん:2005/11/20(日) 22:14:41
>>442
独習CにはBorland C++のインストール方や設定についての記載が
あったな・・・
444デフォルトの名無しさん:2005/11/20(日) 22:45:23
COSx=Σ * (-1)~n / (2n)! * x~2n
Θ * M_PI / 180.0
を使ってcos(x)の求め方を教えてください。
自力で求める為の式です。
それとも、他の解き方あったらお願いします。
445デフォルトの名無しさん:2005/11/20(日) 22:46:44
>>444
宿題は宿題スレへ。
446444:2005/11/20(日) 22:56:28
いぁ、独習なのですがテキストには
<math.h>のほうが載ってまして。興味あって調べているのです。
数学板とwikipediaのお世話でやっとオイラーの展開までたどり着いたんです。
こういうのは宿題スレ行きなのですか?
学校で勉強してるわけじゃないのでどこで聞けばいいのかなと思ったのですが。
向こうのほういいですか?
447デフォルトの名無しさん:2005/11/20(日) 23:00:19
>>446
テイラー展開をして(マクローリンでも良い)適当なところまで計算させる。
448デフォルトの名無しさん:2005/11/20(日) 23:07:17
グーグルで検索すると最初のほーにCのソースがあるんだが。
449デフォルトの名無しさん:2005/11/20(日) 23:25:53
>>433
おまいがニートもしくは学生をちゃちゃと卒業して
とっととVCとかC#つかって開発やってる会社に入れば
只で満喫できるだろう。その辺をがんばれ
450444:2005/11/20(日) 23:30:30
>>447-8
トントン。
方針がわかってきました。ありがと〜。
451デフォルトの名無しさん :2005/11/20(日) 23:36:59
Cでのインラインアッセンブラの質問してもOK?
452デフォルトの名無しさん:2005/11/20(日) 23:41:43
>>451
標準Cの範囲内でないのでスレ違い。
453デフォルトの名無しさん:2005/11/20(日) 23:42:13
ソデスカ・・・
454デフォルトの名無しさん:2005/11/20(日) 23:42:17
>>451
それはスレ違い
455デフォルトの名無しさん:2005/11/20(日) 23:43:13
>>451
質問の内容による
判定条件がかなりタイトなので
よーく調べて聞いてね(はぁと
456・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/20(日) 23:47:23
先に釘さすようだけど、VC使っていく気なら、最新の2005では、インラインアセンブラが一切使えない。
SIMDやCPUID呼ぶならIntrinsics使うか関数丸ごとアセンブラで書くしかないから
そっち覚えたほうがいいよ。
457デフォルトの名無しさん:2005/11/21(月) 00:03:43
>>456
マヂデスカ!2005使えないんですか・・・→2005購入予定削除
サンクスデス。
>>455
ちなみに質問というのは
int(なんでもいい)の変数のポインタにどうやって
レジスタ(この際eax)の内容を叩き込んでやれば
いいか、という質問でした。
458デフォルトの名無しさん:2005/11/21(月) 00:08:36
いや、インラインアセンブラがない如きでVC 2005を捨てるのは惜しいと思う。
459デフォルトの名無しさん:2005/11/21(月) 00:12:11
そもそもOS自体にバグが満載。
460デフォルトの名無しさん:2005/11/21(月) 00:18:05
VCでやってることって、数学計算くらいしかないので
速度が優先できなければVC2005使ってもどうしようないわけですよ。
作ったプログラムもLinuxと互換性のあるプログラムを作成することが目的なので、
Win系のインターフェースを使うわけにもいかないですし・・・
(でも、自動ベクトル化の機能がどれだけ備わっているかによっては、
即時購入って方向もあるんですけどね・・・)
461デフォルトの名無しさん:2005/11/21(月) 00:18:29
VCでコンボボックスについてお聞きしたいのですが・・・
▼で登録済の文言をリストから選ばずに、直接そこに手入力した
文言をCStringの変数に取得させることはできますか?
462デフォルトの名無しさん:2005/11/21(月) 00:25:44
>>460
cygwin+gccでいいやん。
463デフォルトの名無しさん:2005/11/21(月) 00:26:35
できるっつーかすれ違い
464デフォルトの名無しさん460:2005/11/21(月) 00:30:18
>>462
逆からっすか。
んー、考えてみます。
(情報サンクス)
465・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/21(月) 00:32:56
>>460
っ[Intel C++]

2005でためしにIntrinsicsでMMXとかSSE使ってみたけど、2003のがまだ速い。
上位エディションに付くプロファイリング機能無しじゃ全然遅い。

ICCならせいぜい4万程度の投資なんで、ネイティブアプリにこだわるなら
VC++ Standardあたりとインテグレートすればいいと思われ。


>>461
おもっきしスレチガイだけどマジレス。
コンボボックスはエディトコントロールとリストボックスの組み合わせなんで、
エディト部のハンドル拾ってGetWindowText
466デフォルトの名無しさん460:2005/11/21(月) 00:40:15
>>465
うちの教授に買ってくれるか相談してみます。(w
467461:2005/11/21(月) 00:42:14
>>465
質問する場所が違ってました。すみません
GetWindowText の使い方を調べてみます
ありがとうございます
468デフォルトの名無しさん:2005/11/21(月) 03:29:38
いい加減、スレ違いの質問に答えるの止めろ阿呆。
莫迦がしつこく居座るだけだ。
469↑バ〜カ、死ねよw:2005/11/21(月) 08:58:20
 
470デフォルトの名無しさん:2005/11/21(月) 11:44:23
>>469
ほらね。
471デフォルトの名無しさん:2005/11/21(月) 20:05:54
どもです。

lintみたいな静的な解析ツールで、以下のソースで警告なんかを出してくれる
やつってありますか? splintは色々やってみたんだけど警告出してくれませんで
した。もしかしたらsplintの使い方を間違えている可能性もあるのですが。。。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int
main(void)
{
char *p;
char *p2;

if ((p2 = malloc(10))!= NULL) {
goto end;
}
p = NULL;

end:
free(p);
return 0;
}

472471:2005/11/21(月) 20:08:10
書き忘れました。

出して欲しい警告は、pが不定値のままfreeに渡される可能性があるって
事と、p2をfreeし忘れている事です。
473デフォルトの名無しさん:2005/11/21(月) 22:36:57
巡回セールスマン問題の解を求めるプログラムを作ったのですが、これでは全ての回路が表示されてしまいます。最小値だけでしかも順列の最初の値が0の回路だけを表示させるにはどうすればいいのでしょうか?どなたか教えてください。長くてすいません。

#include<stdio.h>
#define MAXN (100)
#define YES (1)
#define NO (0)

void perm(int d);
int n, a[MAXN], used[MAXN];
int dist[MAXN][MAXN];

int main(void)
{
int i;
int j;

// printf("Input n: ");
scanf("%d", &n);

for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &dist[i][j]);
}
}

474デフォルトの名無しさん:2005/11/21(月) 22:37:33
if (n > MAXN) {
printf("Change the value MAXN.\n");
exit(1);
}
else if (n < 0) {
printf("Error!(Input nonnegative integer.)\n");
exit(1);
}

for (i = 0; i < n; i++) used[i] = NO; /* 始めはどの値も使っていない */
perm(0);

for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%2d ", dist[i][j]);
}
printf("\n");
}
}
475デフォルトの名無しさん:2005/11/21(月) 22:38:38

/* 深さdの節点を根とする木を作成する関数 */
void perm(int d)
{
int i;

if (d == n) {
for(i = 0; i < n; i++) printf("%d", a[i]);
printf("\n");
}
else {
for (i = 0; i < n; i++) {
if (used[i] == NO) {
a[d] = i; /* 配列のd番目にiを代入する */
used[i] = YES; /* iを使ったことを記憶する */
perm(d + 1); /* 再帰呼び出し */
used[i] = NO; /* 命令文を追加する */
}
}
}
}
476デフォルトの名無しさん:2005/11/21(月) 23:06:09
>>471-472
最近の VIPPER は手口が巧妙だなぁ。

>>473
>>1
>ソース丸投げ、宿題、書籍 は専門の別スレッドがあるのでそこへさようなら。
477デフォルトの名無しさん:2005/11/21(月) 23:14:34
変数の宣言に関して質問です。
私の今読んでいる入門書には
>これを次のように記述するとコンパイルエラーになります。
int idt; //宣言
idt=100; //それを使用する
double ddt; //また変数を宣言する
ddt=23.45 //それを使用する。

とあるのですが、実際にはエラーになりませんでした。
これは推奨できないが可能である、という意味でしょうか?
478477:2005/11/21(月) 23:16:03
追記。以下の項についてです。
変数は先頭部分にまとめて記述します。
例えば
・・・
479デフォルトの名無しさん:2005/11/21(月) 23:17:17
>>473 ソースは全く読んでないが、

プロセスごとに減点する
減点数が大きいなら以降は枝切りしつつ、全部チェックする

最高得点とその経路を記録
最高得点以上のものがあれば、得点と経路を上書き、
最高得点と同じ得点ならば、経路を追記、


でいいんじゃないの
480デフォルトの名無しさん:2005/11/21(月) 23:27:52
>>477
拡張子を.cにしてみれば?
481477:2005/11/21(月) 23:37:49
borlandというコンパイラ?を使っているのですが、
実行しても通常通り表示されましたが。
改訂98年発行の本だからでしょうか
482デフォルトの名無しさん:2005/11/22(火) 00:34:47
>>477 は、C99 に準拠していれば無問題。
483デフォルトの名無しさん:2005/11/22(火) 06:38:34
>改訂98年発行の本だからでしょうか

あくまで非標準拡張だった頃のものだな
484デフォルトの名無しさん:2005/11/22(火) 06:55:17
bccはC99対応じゃないし。
・・・C++に対応しているだけで。
485デフォルトの名無しさん:2005/11/22(火) 07:14:27
C++対応も中途半端
ちょっと複雑なことをするとコンパイル通らない
Boostなんてもちろんダメ
486デフォルトの名無しさん:2005/11/22(火) 07:47:57
>>477
そうできるほうが便利だったり都合が良いこともあってC++ではできるようになった。
BorlandのコンパイラもC++コンパイラ。
487デフォルトの名無しさん:2005/11/22(火) 08:06:58
>>485
「当時の標準規格」への対応度は、そう悪くなかったよ。
VC++6.0がダメだとかgcc2.9xが対応してないとかと同レベル。
488デフォルトの名無しさん:2005/11/22(火) 08:19:47
>>487
そうは言っても某の最新コンパイラがアレなんだから擁護する気にならん
489デフォルトの名無しさん:2005/11/22(火) 09:07:59
最新って6でしょ?
6でもあんななの?
490デフォルトの名無しさん:2005/11/22(火) 09:12:46
最新は5.64(BCBやBCBXに付属)
一時期6のプレビュー版も公開されてたようだけど今でも入手方法あるの?
491デフォルトの名無しさん:2005/11/22(火) 09:30:05
BCB6 って、入ってるコンパイラのバージョンって 5.64 なんだ。
なんとまぁ・・・。
492デフォルトの名無しさん:2005/11/22(火) 12:15:14
デカイプログラムのいろんな場所にある浮動小数点数計算を
固定小数点数計算に変更したいんですが、
どういうアプローチを取るのが効率的ですか?

1) それっぽい場所を grep した後手作業
2) Perl で頑張った後手作業
3) Emacs-Lispで頑張った後手作業
4) yaccを使う(自動化可能?)

など考えましたか、yacc は知らないので敷居が高いです。
地道にやるしか無いと思いますが、
俺だったらこうやる的な案があれば教えて下さい。

493デフォルトの名無しさん:2005/11/22(火) 12:25:46
1) float, doubleを fixに置換
2) コンパイル
3) コンパイルエラーを潰す

C++だったら固定小数点クラスの演算子定義しちゃえば、
置換だけですみそうだけどな。
494デフォルトの名無しさん:2005/11/22(火) 13:18:50
>>493
ありがと。
やっぱ無難にそんな感じですかね。
量が多いんで修正ミスでバグが入りそうというのが気がかりです。

演算子定義という方法は忘れてました。
CだけどC++に書き換えようかな。検討します。

とりあえす定数部分はEmacs-Lisp+手作業で変換してみました。。
495デフォルトの名無しさん:2005/11/22(火) 13:24:05
>>494
>493で指摘されていないけど、%gなどのprintf()系やscanf()系の変換指定子にも要注意。
496デフォルトの名無しさん:2005/11/22(火) 14:11:39

>>495

なるほど。ありがとございます。
コンパイルエラーにならないものがあると辛いですね。

でも、ヤッパ直しミスが怖い。。
a = (b + c) * d / e + f * g;
もしこんなのあったら頭痛いです。。Wooo
497デフォルトの名無しさん:2005/11/22(火) 16:13:30
特に変なことやってなければそのままC++通るでしょ。
498デフォルトの名無しさん:2005/11/22(火) 16:14:42
malloc でキャストしてないとか、
そういう微妙な仕様の違いでエラーになることはままある。
499デフォルトの名無しさん:2005/11/22(火) 20:10:09
普通に実行するとプログラムが落ちちゃうのに、
デバッガから実行すると成功する。これってどんな原因が考えられますか?
エラーメッセージは、
fatal error has occurred!!
というダイアログが一枚出て終わりです
500デフォルトの名無しさん:2005/11/22(火) 20:27:33
>>499
スレ違い。環境依存スレかお使いのコンパイラ特化スレ、或いはデバッガの環境スレにでもどうぞ。
501デフォルトの名無しさん:2005/11/22(火) 20:38:53
>>499
変数の初期化忘れ。
502デフォルトの名無しさん:2005/11/22(火) 20:42:20
getcharみたいなんだけどリターンを押したとき
\nは読み込むけど改行はしない、これを実現するにはどうすればいいでしょうか
503デフォルトの名無しさん:2005/11/22(火) 20:59:18
端末制御の問題。エコーバックを殺して火の中に投げ込め。
詳細は各環境独自のスレにて熟知すべし。
504デフォルトの名無しさん:2005/11/22(火) 21:42:16
C言語ってどのへんくらいから中級者になるのでしょうか
505デフォルトの名無しさん:2005/11/22(火) 21:58:17
標準ライブラリを使いこなせるようなったら。
506デフォルトの名無しさん:2005/11/22(火) 22:35:07
>>504
C++は邪道とかJavaは遅いとか嬉しそうに言い始めたら中級者
507デフォルトの名無しさん:2005/11/22(火) 22:36:29
>>504
紙にプログラム書いて、500行ぐらいのまともなそれが
エラーなし一発で動いたら
508デフォルトの名無しさん:2005/11/22(火) 23:01:36
上級者はBSDのディベロッパになれたらだな
509デフォルトの名無しさん:2005/11/22(火) 23:08:07
WindowsはダメなOS、UNIX最高とか言い始めたらC言語上級者
510デフォルトの名無しさん:2005/11/22(火) 23:23:07
>>507
試しにやってみたけど、OCRで読み取った段階で文字化けしちゃった。
どうやら漏れは中級者じゃないらしい。
#cat > foo.c で100行ならやっとことあるんだけど。
511デフォルトの名無しさん:2005/11/22(火) 23:51:31
単純に自分の作りたいものを作れるのが上級者だ。
これこそがどの言語でも共通の「上級者」の定義だと思う。
512デフォルトの名無しさん:2005/11/22(火) 23:59:26
「作りたいもの」が初心者の域から脱してない人も多いよね。
自分が作れるものしか「作りたい」と思わないような。
513デフォルトの名無しさん:2005/11/23(水) 00:24:40
>>504
文法をほぼ習得し終わった時点
関数ポインタを返す関数とか普通に使えて標準ヘッダ内に出てくるマクロが読めるあたり
再帰の無謀な使いまくりに飽きてきた頃
1ソースあたりの行数で4桁が全然珍しくなくなってきたらへん
組み込みかOSベースかはあんまり関係ないけど他分野の人の発言に耳従うのが次の目標かも
514デフォルトの名無しさん:2005/11/23(水) 00:26:34
↑と初心者の >>513 が申しております。
515デフォルトの名無しさん:2005/11/23(水) 00:34:05
>>513
>1ソースあたりの行数で4桁が全然珍しくなくなってきたらへん
世の中には1ソースファイル1関数なんてコーディング規約もあるわけだが。
#この際是非は別として。
516デフォルトの名無しさん:2005/11/23(水) 00:43:02
私は近頃、1関数あたりの行数が4桁なんてのが
全然珍しくなくなってきたのですが、どうでしょう?
517デフォルトの名無しさん:2005/11/23(水) 00:46:35
おいら挑発はうざいだけなので
いくら煽ってもリターンは与えません
518デフォルトの名無しさん:2005/11/23(水) 01:04:39
昔から自分の使ってる言語の処理系を自分で書いて1人前ってのはあるな
519デフォルトの名無しさん:2005/11/23(水) 01:11:33
糞コードを吐くCコンパイラなら書いたことあるな。
520デフォルトの名無しさん:2005/11/23(水) 01:54:06
Cやってるやつはプログラム意味論とか勉強してる?
521デフォルトの名無しさん:2005/11/23(水) 02:18:43
>>520
それはやってないと思って聞いているのか?
522デフォルトの名無しさん:2005/11/23(水) 02:44:31
>>521
そういう人にあまりお目にかかったことがないから・・・
523デフォルトの名無しさん:2005/11/23(水) 02:47:35
>>522
俺はコンパイラの理論とかなら勉強してるけど、意味論としてはちゃんと勉強してないな。
一応、オブジェクト指向ぐらいは勉強したけどね。
524デフォルトの名無しさん:2005/11/23(水) 03:07:34
オブジェクト指向がCでなんの役に立つのか、少し疑問。
525デフォルトの名無しさん:2005/11/23(水) 03:10:02
>>524
いろんな言語を勉強してるってだけですよ
526デフォルトの名無しさん:2005/11/23(水) 05:57:24
#include <stdio.h>

typedef struct {
cahr cahr_p;
int cahr_w;
} CHARPROF;

void print_string(CHARPROF *char_list){
int print_w, idx;

print_w += char_list[idx].char_w;

return print_W;
}

質問なのですが、CHARPROF *char_list 及び char_list[idx].char_w; の部分がわかりません。
構造体のtypedefは次に呼び出されるときには、型名にできるのでしょうか
527デフォルトの名無しさん:2005/11/23(水) 06:03:45
CHARPROF型の ポインタ変数char_listの宣言、、
528デフォルトの名無しさん:2005/11/23(水) 06:17:26
>>526
型名として使いたいからtypedefするんですっ
529デフォルトの名無しさん:2005/11/23(水) 06:23:42
>>528
トンクスです
530デフォルトの名無しさん:2005/11/23(水) 15:29:54
指定したバイトだけ標準出力に書き込む(read(2)みたいなやつ)
標準ライブラリってなんですか?教えて下さい。
531デフォルトの名無しさん:2005/11/23(水) 15:36:40
fwrite
532デフォルトの名無しさん:2005/11/23(水) 17:19:11
fnprintf()
533デフォルトの名無しさん:2005/11/23(水) 17:57:13
君たちさっきから何の話をしているんだ?
534デフォルトの名無しさん:2005/11/23(水) 18:13:45
>>530
write
535デフォルトの名無しさん:2005/11/23(水) 18:31:04
>>530
System.out.println()
536デフォルトの名無しさん:2005/11/23(水) 18:32:35
>>533
530をネタに超能力合戦しているとおもわれ。
537デフォルトの名無しさん:2005/11/23(水) 18:59:38
>530 は「ライブラリ」はなんですかと訊いているんじゃないのか?
538デフォルトの名無しさん:2005/11/23(水) 19:03:03
それだと意味が通らない。そこでエスパー様の登場ですよ。
539デフォルトの名無しさん:2005/11/23(水) 23:09:30
read(2) みたいなやつ、ってんだから write(2) だろう。
だがスレ違い。
540デフォルトの名無しさん:2005/11/23(水) 23:58:43
基本情報のC言語の問題がトレースしないで解いたら半分しか解けないのだけど、
そこら辺どうですか?
541デフォルトの名無しさん:2005/11/23(水) 23:59:17
読んでる途中で、力尽きるのだけど。。
542デフォルトの名無しさん:2005/11/24(木) 00:02:12
>>540
トレースしないで解くというのがいまいちピンと来ないが
上から下まで全ての行に目を通せば正解できるだろ
543デフォルトの名無しさん:2005/11/24(木) 00:05:02
>>535は文盲
あの発言は幾何学模様であり意味わかって書いてない
544デフォルトの名無しさん:2005/11/24(木) 00:10:39
>>542
変数の値の変化を紙に書き出すと、A4の紙が3〜4枚必要なのですが
試験問題の用紙の空いてるスペースに書くのにも限界があるんでつ
545デフォルトの名無しさん:2005/11/24(木) 00:15:44
漏れの脳さんはD-RAMなので時間が経つと前の記憶が消えはるんでつよ
546デフォルトの名無しさん:2005/11/24(木) 00:18:16
ヽ(`Д´)ノ ugagagaaa
547デフォルトの名無しさん:2005/11/24(木) 00:27:10
>>545
ビットフェードエラーは一概に DRAM 自体の問題じゃない
おおかたコンビニの姉ちゃんの手の感触ばかりアドレッシングを繰り返すリフレッシュ回路の欠陥と見た
さすがのカスも RAS には注意が届かなかったと見える
548デフォルトの名無しさん:2005/11/24(木) 00:49:38
>>544
その必要あるか?
俺は今年秋のFEでC取ったが、少なくともCの所でメモる必要なんて皆無だったぞ
ただ単に、この関数は○○してるんだな。って感じで読んでいけば穴埋まったし
549デフォルトの名無しさん:2005/11/24(木) 00:49:51
>>544
書き出すにしても、ループの始めと終わり数個くらいでいいんじゃね?
550デフォルトの名無しさん:2005/11/24(木) 00:56:08
>>544
とりあえず関数の出入り口でどうなってるのかを書き出すのと
書くループに不変の表明を付けておけば十分だろ
551デフォルトの名無しさん:2005/11/24(木) 01:10:26
>>550
そうしておきます。

RASには、十二分に注意を払うよう心掛け致したいと思います
552デフォルトの名無しさん:2005/11/24(木) 02:17:03
構造体変数を使うときmemset(3)なんかでゼロクリアしてる
例をよく見かけますが、これってなんか意味あるんでしょうか?
553デフォルトの名無しさん:2005/11/24(木) 03:07:33
>>552
自分の各コードに自信が無い香具師がよくやるバグの上塗り。
554デフォルトの名無しさん:2005/11/24(木) 03:08:18
x&

ってなんですか?
たとえばx&0xfffeとかの場合なんのためにつけてるんですか?
555デフォルトの名無しさん:2005/11/24(木) 03:50:43
>>553
ケースによってはバグとは限らない
556デフォルトの名無しさん:2005/11/24(木) 03:51:10
>>554
ひとつくらい参考書買え厨房
557デフォルトの名無しさん:2005/11/24(木) 05:14:50
scanf("%d", &m);
int box[m];
for (i = 0; i < m; ++i) box[i]=0;
配列の数を入力できるように作りたいのですが
上のようにやると何故か
error C2143: syntax error : missing ';' before 'type'
error C2065: 'box' : undeclared identifier
と怒られます
理由が全くわからないのでどうか教えてください
558デフォルトの名無しさん:2005/11/24(木) 05:18:38
配列の数は定数で指定しないと駄目。
可変長にしたいならmalloc()を勉強せ。
559デフォルトの名無しさん:2005/11/24(木) 05:20:17
しかもブロックの先頭じゃないと宣言できないし
560デフォルトの名無しさん:2005/11/24(木) 06:15:28
gcc使ってください。コンパイルオプションは、-std:c99で。
561デフォルトの名無しさん:2005/11/24(木) 07:41:33
たったそれだけのために開発環境を変更するのはイヤです。
562デフォルトの名無しさん:2005/11/24(木) 07:50:08
563デフォルトの名無しさん:2005/11/24(木) 07:56:24
>>561
資源を自動管理してもらいたいなら他に色んな言語があるだろ
C は資源管理自体の開発に使用する言語ってとこは理解しているか?
564デフォルトの名無しさん:2005/11/24(木) 13:05:17
>>561
じゃあ、諦めろ。
565557:2005/11/24(木) 13:11:23
え、ちょ、すいません>>561は俺じゃないですよ?
JAVAしかやってなかったので配列の長さは指定できないってのを知りませんでした
なんとか他の手考えてやってみます、ありがとうございました
566デフォルトの名無しさん:2005/11/24(木) 14:57:38
学校で音声解析(認識)を研究しているんですが、子音の解析方法がまったく見当がつきません。
ググっていろいろ調べてみたんですけど、子音はあんまりなくて。
(母音に関してはフォルマント周波数とかがわかったんですが)
なにか良い方法(もしくはURL)があったら教えてください。
567デフォルトの名無しさん:2005/11/24(木) 15:00:42
>>566
C言語なんの関係も無いだろ。
さようなら。
568デフォルトの名無しさん:2005/11/24(木) 15:04:40
しーん
569デフォルトの名無しさん:2005/11/24(木) 18:04:29
ビットフィールドの説明で例えば

typedef struct {
unsigned bool: 1;
}Boolean;

というのがあったとしてboolには1か0しか値としては
代入されないから真偽を制御する有効な使い方だとかあったんですけど
boolに0以外を代入しても値として0になるかもしれないので
あまり有効とは思えないのですがどうなんでしょうか?
570デフォルトの名無しさん:2005/11/24(木) 18:47:31
どれもいっしょだと思いますが、
「まあ、そういう使い方も出来ますよ。」
ということでいったんじゃないでしょうか。
char型に0x100いれてもオーバーフローをおこして0になるように、
その人の使いかた次第かと思います。
571デフォルトの名無しさん:2005/11/24(木) 18:59:41
>>569
ビットフィールドのメンバの型には int か unsigned int しか使えない。
俺は signed か unsigned と書くようにしてる。
まあ、そもそもビットフィールドを使う状況自体が少ないがな・・・。
572デフォルトの名無しさん:2005/11/24(木) 19:00:11
キャリーフグリとか確認しろよ。
573デフォルトの名無しさん:2005/11/24(木) 19:02:28
しつもんなのですが

#include <stdio.h>

main() {
printf("Hollo");

return 0;
}

このソースの ;はなんでいるのでしょうか。気になって夜も眠れません。
574デフォルトの名無しさん:2005/11/24(木) 19:04:16
文の終わりに必ず必要です。
でないと複数の文が書けません。
それ以前にコンパイルエラーを起こします。
寝ないでください。
575デフォルトの名無しさん:2005/11/24(木) 19:05:15
holloにはつっこまんのかい。
576デフォルトの名無しさん:2005/11/24(木) 20:42:36
printf("hollow ataraxia\n");
577デフォルトの名無しさん:2005/11/24(木) 20:59:13
>>573
日本語文章の「。」と同じ。
文の終わりを意味する。
578デフォルトの名無しさん:2005/11/24(木) 21:54:08
>>575
要求仕様も書かれていない以上、
「hollo」が間違いであると断定する術は、我々にはない。
579デフォルトの名無しさん:2005/11/24(木) 23:21:10
>>566
該当スレは
サウンドプログラミング2
http://pc8.2ch.net/test/read.cgi/tech/1091054082/
またはかろうじて
計算アルゴリズム【U】
http://pc8.2ch.net/test/read.cgi/tech/1129376543/
580デフォルトの名無しさん:2005/11/24(木) 23:24:16
>>573
もう少し捻りましょう。
つか、最近 Vipper 大杉。
581デフォルトの名無しさん:2005/11/25(金) 00:47:53
>>580
最近良く見かけるけど vipperって何?
582デフォルトの名無しさん:2005/11/25(金) 01:01:39
>>580
Vipperというか言葉が流行っているだけじゃ?
そういう俺もVipに入り浸ってるが。

>>581
半年ROMr(ry
583デフォルトの名無しさん:2005/11/25(金) 02:02:01
>>582
君は気持ちが悪いから
死ぬか、無理ならせめてvip板から出てこないでもらえるか?
584デフォルトの名無しさん:2005/11/25(金) 02:03:30
2ちゃんには、社会不適格者がイパーイ(゜д゜)
585デフォルトの名無しさん:2005/11/25(金) 02:05:08
>>582
(゜д゜) vipperは巣にカエレww
586デフォルトの名無しさん:2005/11/25(金) 08:48:59
オマエガナーw
587デフォルトの名無しさん:2005/11/25(金) 09:28:15
wwvipとかうぜええwwwwwうえっうえwwwwww
588デフォルトの名無しさん:2005/11/25(金) 09:49:19
コードブロックに関しての質問です。

if(){
.
.
.
}

if()
{
.
.
.
}

上記の2つではどちらのほうが良いのでしょうか?
もちろん一人でやる分には好きなほうで良いのでしょうが、
一般的な方があれば教えてもらいたく思います。
もしあれば、理由も合わせて聞きたいと思います。

よろしくお願いします。
589デフォルトの名無しさん:2005/11/25(金) 09:50:02
誤送信でageてしまいました。すみません。
590デフォルトの名無しさん:2005/11/25(金) 09:51:26
会社でコーディングの規則があるならそれに従う。ないならどちらでも。
591デフォルトの名無しさん:2005/11/25(金) 09:53:02
あ、そうですか。それじゃあ自分は後者が好きなのでそっちにします。
仕事でやっているのではないので。
即レスありがとうございました。
592デフォルトの名無しさん:2005/11/25(金) 10:16:04
つ【C/C++ Coding Style Thread】
http://pc8.2ch.net/test/read.cgi/tech/1096687703/l50
593デフォルトの名無しさん:2005/11/25(金) 10:19:08
すみません。そんなスレがあったんですか。
他にも勉強になりそうなので、見てくることにします。
ありがとうございました。
594デフォルトの名無しさん:2005/11/25(金) 10:32:39
586 黙れガキが
595デフォルトの名無しさん:2005/11/25(金) 10:33:39
黙れクソガキ
596デフォルトの名無しさん:2005/11/25(金) 10:34:23
586
黙れやクソガキ
597デフォルトの名無しさん:2005/11/25(金) 10:35:41
あんまりやるとバカがVIPにコピペ貼って来たりするからやめれ
598デフォルトの名無しさん:2005/11/25(金) 12:48:34
プログラマーになるにはどのくらいまで極めればいいのでしょうか。
それとC言語とゲームプログラミングはまったく関係ないんですか?
599デフォルトの名無しさん:2005/11/25(金) 12:49:31
質問)
√を計算する関数教えてくださいOTZ
600デフォルトの名無しさん:2005/11/25(金) 12:50:30
失礼あげてもたOTZ
601sqrt():2005/11/25(金) 13:01:28
602デフォルトの名無しさん:2005/11/25(金) 13:06:20
>>601
d思い出せたアリガト
603助けて:2005/11/25(金) 13:48:02
神経衰弱を行うゲ−ムの作成のプログラムを作成しなくてはいけません。Visual
C++ 6.0 で作成するんですけど誰か助けてください
604デフォルトの名無しさん:2005/11/25(金) 13:49:01
何をどう助けるの?
605伝説新人タクシ:2005/11/25(金) 13:52:41
それだけでは誰も答え(られ)ません。
606助けて:2005/11/25(金) 13:57:14
返事ありがとうございます。問題は、(神経衰弱を行うゲ−ムを作成すること。ただし
、カ−ドは52枚使用して、絵柄の区別はないものとする。)です。 
配列と乱数とFor文とif文で作らないといけないのですが、何をどうしていいのかさっぱりわかりません。
誰か助けてください
607デフォルトの名無しさん:2005/11/25(金) 13:58:37
>>606
死ねばいいと思うよ。
C/C++の宿題を片付けます 53代目
http://pc8.2ch.net/test/read.cgi/tech/1132102992/
608デフォルトの名無しさん:2005/11/25(金) 13:58:42
何のためにその問題を答えるのきみは?
609デフォルトの名無しさん:2005/11/25(金) 14:03:46
>>603
神経衰弱ゲーム作成プログラムか…。
神経衰弱を作るより難しいな。(w
610助けて:2005/11/25(金) 14:24:08
607さんが教えてくれたところで聞いてきます 
ありがとうございました
611デフォルトの名無しさん:2005/11/25(金) 15:19:32
> 神経衰弱を行うゲ−ムを作成すること。
> ただし、カ−ドは52枚使用して、絵柄の区別はないものとする。

絵柄の区別がなければ、絵を合わせる事は出来ないのでは?(w
612デフォルトの名無しさん:2005/11/25(金) 15:21:03
>>611
ダイヤ、ハート、クローバー、スペードが無いのなら出来なくはないだろ?
数字だけあわす感じ。
そういう意味じゃないのかな?
613デフォルトの名無しさん:2005/11/25(金) 15:23:24
絵柄はグラフィック的には必要だけど、神経衰弱にはいらないと思う
614デフォルトの名無しさん:2005/11/25(金) 15:23:48
あ、覚えるのにいるのか
615伝説新人タクシ:2005/11/25(金) 15:30:20
いや、枚数さえ配列に記憶しておけばできる。
616デフォルトの名無しさん:2005/11/25(金) 15:37:39
linuxなんですけど
recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
のfromで送信元のIPアドレスがわかるんですが、ネットマスクが何bitなのか解る方法ってありますか?

617伝説新人タクシ:2005/11/25(金) 15:44:28
管理者に訊く。あと、サブネットマスク
外部が知ってどうすんの?
618デフォルトの名無しさん:2005/11/25(金) 15:49:59
>>616
スレ違い
619611:2005/11/25(金) 15:52:17
>>612
カードがトランプであるとどこに記述されている?



# って言うか、ネタにマジレス(ry
620616:2005/11/25(金) 15:54:41
>617
>外部がしってどうすんの?
秘密。
621デフォルトの名無しさん:2005/11/25(金) 16:05:18
まずは、ネットマスクって何なのかの勉強から。
622伝説新人タクシ:2005/11/25(金) 16:13:18
いろいろ紛れ込んでるのか?秋だからなー。
>>620
イエルモンナライッテミロ(・ρ・)!
623デフォルトの名無しさん:2005/11/25(金) 16:57:29
>いろいろ紛れ込んでるのか?
コテハンとかな。
624デフォルトの名無しさん:2005/11/25(金) 19:41:44
突然すみません。私はプログラム初心者です。
C言語かC++を学びはじめたいと思っています。
用途としては、数値計算をするプログラムを将来作りたいと思っています。
そこで、質問なのですがCとC++どちらを始めた方がよいですか?
誰か親切な方、教えてくれませんか?
625デフォルトの名無しさん:2005/11/25(金) 19:43:32
>>624
好きなほうからはじめれ。
626デフォルトの名無しさん:2005/11/25(金) 19:43:33
Cでいいよ。
627デフォルトの名無しさん:2005/11/25(金) 19:49:14
C にしる!
628デフォルトの名無しさん:2005/11/25(金) 20:07:53
>>624
数値計算ならCで十分。
C++をbetterCとして使うのもあり。
629デフォルトの名無しさん:2005/11/25(金) 20:17:18
#include <stdio.h>

void main (void)

{
int dai,syou,work1,work2;



printf("数字を2つ入力して下さい:");

scanf("%d" "%d",&work1,&work2);


dai=(work1>work2)?"work1":"work2";

syou=(work1<=work2)?"work2":"work1";

for(;dai>syou;dai--,syou++;)

printf("平均値は%dです。\n",dai);


}
630デフォルトの名無しさん:2005/11/25(金) 20:18:03
cmd.exe /C LCC.EXE heikin.c
*** コンパイル開始 ***
heikin.c 15: Warning: illegal pointer combination (=)
heikin.c 17: Warning: illegal pointer combination (=)
heikin.c 19: syntax error near ';'
heikin.c 19: syntax error near ')'
*** コンパイル終了 ***

どうやって修正したらいいのか分からない。
631デフォルトの名無しさん:2005/11/25(金) 20:22:58
int dai,syou,work1,work2;





dai=(work1>work2)?"work1":"work2";

syou=(work1<=work2)?"work2":"work1";
632デフォルトの名無しさん:2005/11/25(金) 20:26:30
釣り禁止!
633デフォルトの名無しさん:2005/11/25(金) 20:40:20
>>625>>628
レスありがとうございます。
ついでといっては、数値計算程度ならCで十分なら、
C++はどんなプログラミングに使うのですか?
634デフォルトの名無しさん:2005/11/25(金) 21:26:12
64ビット整数どうしの割合(%)を出したいんですけど以下の場合aが18446744073709551を超えるとマズーです。
何か良い方法は無いでしょうか。
ULONGLONG a,b,c;
ry)
c = a * 100 / b;
635デフォルトの名無しさん:2005/11/25(金) 21:34:29
>>634
64bitsより大きいレジスタを使うw
636デフォルトの名無しさん:2005/11/25(金) 21:35:26
>>634
自前で計算する
637デフォルトの名無しさん:2005/11/25(金) 21:40:44
>>634
多倍長整数演算ライブラリでぐぐって見る。
638デフォルトの名無しさん:2005/11/25(金) 22:42:02
>>633
数値計算程度にも。
C++はCよりも便利なのであって、CとC++は使用される分野は完全にかぶっている。
639デフォルトの名無しさん:2005/11/25(金) 22:46:32
>>634
多倍長ライブラリを探すのも実用的だが、
あなたの場合は、それをあえて自分で作ってみることのほうが
長い目で見て生産的であると見受ける
640デフォルトの名無しさん:2005/11/25(金) 22:50:50
多倍長ライブラリってまともなもんあったっけ?
641デフォルトの名無しさん:2005/11/25(金) 22:59:04
いくらでもヨタ、ゼタ、那由他、不可思議・・・
642デフォルトの名無しさん:2005/11/25(金) 23:27:07
無料大スキー
643デフォルトの名無しさん:2005/11/25(金) 23:28:14
>>634
アセンブラでかけばいいじゃん。486ぐらいからなら80bitsのレジスタもあったし。
644デフォルトの名無しさん:2005/11/25(金) 23:32:35
>>643
頭大丈夫か?
645デフォルトの名無しさん:2005/11/25(金) 23:33:21
>>644
全然大丈夫じゃねえ
646デフォルトの名無しさん:2005/11/25(金) 23:42:49
ナビ○コ?
647デフォルトの名無しさん:2005/11/26(土) 01:25:52
チップスターか?
648デフォルトの名無しさん:2005/11/26(土) 01:28:54
うわっ…誤爆
649デフォルトの名無しさん:2005/11/26(土) 02:36:57
>>637
サンクスコ。
でも割合求めるだけなのに楽じゃないなぁ。

>>639
と言う訳でこんなんでました。

_int64 i = 10000;
_int64 j = 30000;
_int64 k = 0;
k += i / j;
i = i % j;
i *= 10;
k *= 10;
k += i / j;
i = i % j;
i *= 10;
k *= 10;
k += i / j;
650デフォルトの名無しさん:2005/11/26(土) 09:36:08
このスレとしては__int64はねぇだろと言っておく。
651デフォルトの名無しさん:2005/11/26(土) 11:44:24
long long だよね。
652デフォルトの名無しさん:2005/11/26(土) 14:44:42
int64_tだろ
653デフォルトの名無しさん:2005/11/26(土) 14:52:44
自作の型 MYINT64 を定義
654・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/26(土) 18:25:06
__m64とか使うツワモノは居ないか流石にww
655・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/26(土) 18:37:54
>>635
XMMレジスタのことを言ってるのなら、128ビット単位の算術演算はサポートしてないぞ。
SSE3まででサポートするのは1bit単位の論理演算と8ビット・16ビット・32ビットの算術演算と64ビットの
足し算引き算程度だぞ。そもそも演算器自体が64ビットSIMDユニット×2で実現されてるし。
AltiVecは128ビットだけどこれも整数は32ビットまでだな。

掛け算なら適当にテーラー展開して掛け算してやればいいんで、
そもそもレジスタ幅あんま関係ない(ことパフォーマンスではなく精度に関しては)
C++だと多倍長整数型を自前で定義して従来の整数型と似た操作法で演算できる。

純粋なCで数値計算やろうと思うくらいならFORTRANでもやったほうがいい。
大概の高度な数値計算用ライブラリはFORTRAN用に用意されたものを
Cで使えるように変換しただけ。

>>634
有効精度上位53bit程度に落ちていいならdouble型にキャストするのが正解。
656デフォルトの名無しさん:2005/11/26(土) 21:32:27
多倍長の割り算って、実装面倒なんだよね。
double で十分っしょ。
657デフォルトの名無しさん:2005/11/26(土) 21:58:22
割り算は逆数計算させるだけでいいんじゃない?
ニュートン法かなんかで
658・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/26(土) 22:21:51
パーセント表示がどうとか言う時点で精度としてそんなに厳密である必要ない希ガス。
どうせ出力の書式は %.2f とかなんだろ。

現実問題として無限循環小数なんていちいち扱っていられないし。
659デフォルトの名無しさん:2005/11/26(土) 22:44:16
そこでベクトルスパコンですよ!!!
660デフォルトの名無しさん:2005/11/26(土) 23:15:56
unsigned で作ってみた。
int64_t でもほとんど同じになるはず。

unsigned percent(unsigned a, unsigned b) {
 if(a > b) {
  return a / b * 100u + percent(a % b, b);
 }
 if(a <= ~0u / 100u) {
  return a * 100u / b;
 }
 return 100 - (a != b);
}
661デフォルトの名無しさん:2005/11/26(土) 23:18:00
間違えた。
100 - (a != b) はとんでもない間違い。
テスト範囲は広く取ろうねという教訓。
662・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/26(土) 23:18:31
unsigned=64bitなコンパイラかよ。。。
663デフォルトの名無しさん:2005/11/26(土) 23:20:05
>>662
何か間違っているか?
664・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/26(土) 23:23:15
いや別に。。。どういう処理系使ってるんだろうなと思って。

でもそこまでやって小数点以下切捨てなら最初から浮動小数使ったほうがいい希ガス。
665デフォルトの名無しさん:2005/11/26(土) 23:24:15
大雑把には a / (b / 100) でイケるね。
まあ、これが a * 100 / b とは等しくならないこともあるけど、キニシナイ。
ただ、a == b の時に確実に 100 になるよう、
a == b の時は 100 を返すようにした方がいい。

return a == b ? 100 : a / (b / 100u);
666デフォルトの名無しさん:2005/11/26(土) 23:28:49
a == 102
b == 103

a / (b / 100) == 102

無理があるな。
667デフォルトの名無しさん:2005/11/26(土) 23:32:19
いや、オーバーフローするような桁数があれば大丈夫。
せいぜい 1 しか違わない。
668デフォルトの名無しさん:2005/11/26(土) 23:38:51
a == b なら何もしないでも確実に 100 になるね。
むしろ、a != b で 100 になる方を何とかした方がいい。

a / (b / 100) - (a != b)

でどうよ。
669デフォルトの名無しさん:2005/11/26(土) 23:43:21
uint64_t percent(uint64_t a, uint64_t b) {
 if(a > b) {
  return a / b * 100u + percent(a % b, b);
 }
 if(a <= ~(uint64_t)0 / 100u) {
  return a * 100u / b;
 }
 return a / (b / 100u) - (a != b);
}

uint64_t にしたら、最終的にこうなるのか?
double でいい気がするが。
670デフォルトの名無しさん:2005/11/27(日) 00:08:54
div 0
671デフォルトの名無しさん:2005/11/27(日) 00:18:03
doubleの有効精度は53bit程度なのかー。
64から53に11ビット落ちるのなら、
分子も分母も7ビットシフトしてから計算したらどうなるのかな。
672・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/27(日) 00:29:13
うまくテーラー展開してやれば精度落とさずに演算できそうなテラキモスwwwww



でも割り算は微妙す。
673デフォルトの名無しさん:2005/11/27(日) 09:56:52
乱数で平面上に点をn個作りたいと考えています。
そのとき,縮退のない(どの3点も一直線上になく,どの4点も同一円周上にない)ような
点集合にしたいのですが,このようなものを保障するにはどのように実装すべきでしょうか?
674デフォルトの名無しさん:2005/11/27(日) 09:57:50
C言語関係ないだろ。
675デフォルトの名無しさん:2005/11/27(日) 10:04:13
そんなの乱数じゃないじゃん
そもそも ISO/IEC9899 が定義する範囲には真の乱数はないし・・・
676デフォルトの名無しさん:2005/11/27(日) 10:11:31
Cのセマフォで質問です。
semget , semmat など・・。

 セマフォ同士での、デッドロックってあり得るんですかね。
           プロセスA プロセスB
 セマフォA      取得    取得

 見たいな感じで、正常ならば
           プロセスA プロセスB
 セマフォA      取得    待ち
 セマフォA      開放    取得
 となる。
 
677デフォルトの名無しさん:2005/11/27(日) 10:12:41
>>676
スレ違い
678デフォルトの名無しさん:2005/11/27(日) 10:14:58
>真の乱数

ワロスw
679デフォルトの名無しさん:2005/11/27(日) 10:18:49
>>674
条件に合わない点は棄却する。
680デフォルトの名無しさん:2005/11/27(日) 10:19:43
スレの条件に合わないレスを棄却しているわけだが
681デフォルトの名無しさん:2005/11/27(日) 10:31:51
>>676
要求リソースが二つ以上あるとデッドロック起こりえるよな。
682676:2005/11/27(日) 10:50:08
>>681
そもそも、セマフォって、排他制御のためにあるのに、
 なんでデッドロックが起こってしまうんですかね。
683デフォルトの名無しさん:2005/11/27(日) 11:07:19
セマフォ自信は排他制御されないから。
684676:2005/11/27(日) 11:28:25
>>683
 となると、実際セマフォをつかって排他制御をやると
 かんがえると、

 ミューテックス+セマフォになるんですか。
 これで、完璧?な排他制御が可能でしょうか。
685676:2005/11/27(日) 11:32:40
>>683
 試してみて、セマフォのデッドロックの頻度なんですが、
 10個のプロセスを断続的に起動させた場合でも、
 起こるときには起こりえると考えたほうがよさそうですね。

 逆に、ロックファイル形式の法が逆に、デッドロックの
 確立が少ないのかも・・・・。
686デフォルトの名無しさん:2005/11/27(日) 11:33:08
>>684
標準Cにセマフォなどない。
他池
687デフォルトの名無しさん:2005/11/27(日) 11:39:42
>>684
semopはアトミックだろ。
688676:2005/11/27(日) 11:41:06
>>687
アトミックならば、完全な排他制御いけるはずですよね。
689デフォルトの名無しさん:2005/11/27(日) 12:00:13
676さんへ
「デッドロックとは」でぐぐればきみの知りたいことは
一番上のリンクの最初の章に過不足なく書かれています
セマフォはスレ違いなので別スレへお引越ししましょう
690・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/27(日) 12:06:12
>>673
乱数であることが保障されてるんなら、

・3つ目の点を打って1直線上になったら乱数更に取り出して打ち直し
・4つ目の点を打って同一円状になったら(以下同


ノイズ使ったハードウェア実装もあるけど、ソフトウェアで実現するならMersenneTwisterが最良。
691デフォルトの名無しさん:2005/11/27(日) 12:31:41
http://blog2.fc2.com/fukuji1134/
このブログの謎がとけるかな?
692デフォルトの名無しさん:2005/11/27(日) 12:35:42
fff003ff0040600507000080a0090b000(このあともたくさん続く
こんな感じのunsigned charの配列があって、
これをunsigned shortの配列に12ビットずつ格納したいんたけどどうしたらいいんでしょうか?
693デフォルトの名無しさん:2005/11/27(日) 12:40:47
unsigned short x 3の配列に48bitsずつ格納。
694693:2005/11/27(日) 12:44:41
あ、違った。
695デフォルトの名無しさん:2005/11/27(日) 13:05:18
>>689
そのページ読んだけど、デッドロックって回避できないのか…orz
スレ違いスマソ
696・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/27(日) 13:05:51
>>692
ひょっとして文字列は0〜fの16種類しか存在しない?

3文字取り出して対応する4bit値に変換
'0'→0, '1'→1 … 'f'→15

で、(n1 << 8) | (n2 << 4) | n3 とかでよくね?
697デフォルトの名無しさん:2005/11/27(日) 13:09:35
>>696
ごめん、文字じゃなくて16進数のデータだった
698デフォルトの名無しさん:2005/11/27(日) 17:04:27
>>695
設計が下手なだけだろう。
699デフォルトの名無しさん:2005/11/27(日) 17:47:20
>>692
char が 8 ビットの環境だとすると、
3 バイトを 2 つに分割するのを続ければいいだけ。
ビット演算を駆使すれば簡単なはず。
注意点は、データが奇数の時にどうするかってことくらいやね。
700デフォルトの名無しさん:2005/11/27(日) 17:53:00
>>699
ちょっと頑張ってみる。

とりあえずこんな設計をしたMSは腹を切って死ぬべきである
701・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/27(日) 18:00:39
>>700
MS????

何を作ってるんか疑問
702デフォルトの名無しさん:2005/11/27(日) 18:01:13
>>701
FAT12だよFAT12・・・
703・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/27(日) 18:01:55
理解した。
704デフォルトの名無しさん:2005/11/27(日) 18:08:45
OK牧場
705デフォルトの名無しさん:2005/11/27(日) 18:54:47
フォートランで
READ(*,*) ((A(I,J),I=1、M),J=1,N)
という処理をするのをCで記述するとどうなるのかわかんない。
for(I=1; I<=M; I++){
for(J=1; J<=N; J++){
なんか処理
の2重ループでいいのかな?
行列を読み込んで使うプログラムをフォートラン→Cになおせと
いわれてるんだけどフォートランと違う値が出たりでうまくいきません。。
706デフォルトの名無しさん:2005/11/27(日) 19:26:11
readはどこへいった?
707デフォルトの名無しさん:2005/11/27(日) 19:59:42
質問です。

int ptr[5][4][3];
ptr[i][j][k];
と互換性のあるポインターって

*(ptr+i+j+k)
なんですか?
それとも
*(ptr+i*j*k)
なんでしょうか?
708デフォルトの名無しさん:2005/11/27(日) 20:05:27
>>707
ためせよ
709デフォルトの名無しさん:2005/11/27(日) 20:09:27
試す前に、きちんと仕様書を読もう。
試してたまたま動いてしまって、それをそのまま知識として吸収してしまうのが一番怖い。
むやみに動いた結果をそのまま鵜呑みにしてはいけない。
710デフォルトの名無しさん:2005/11/27(日) 20:25:19
>>705ですが
READのとこの記述はfscanfを使ってきちんと動作してるぽいのですが
((A(I,J),I=1、M),J=1,N)の記述の部分が
I=1からMまでの繰り返しの中にJ=1からNまでの繰り返しがあるのか
J=1からNまでの繰り返しの中にI=1からMまでの繰り返しがあるのか
調べてみてもよくわからなかったもので。。。
711デフォルトの名無しさん:2005/11/27(日) 20:47:22
>>707
&ptr[i][j][k] という意味じゃなくて?
それとも *(*(*(ptr+i)+j)+k) が欲しいのけ?
712デフォルトの名無しさん:2005/11/27(日) 20:48:10
>>710
移植なら、まずはフォートランの文法から調査汁。
713デフォルトの名無しさん:2005/11/27(日) 20:53:49
>>705
A(I, J), I = 1, M をさらに J でループ回してるから、

for(J = 1; J <= N; ++J) {
 for(I = 1; I <= M; ++I) {
  scanf("%lf", &A[I][J]);
 }
}

みたいな感じやね。
ただ、配列が 1 オリジンじゃなくて 0 オリジンなこととか、
そのあたりの配慮を忘れずに。
714デフォルトの名無しさん:2005/11/27(日) 21:04:56
さらに言うなら、FORTRAN の配列のメモリ上の配置は

A(1,1), A(2,1), ..., A(M,1),
A(1,2), A(2,2), ..., A(M,2),
...
A(1,N), A(2,N), ..., A(M,N)

で、C の場合は

A[0][0], A[0][1], ..., A[0][M-1],
A[1][0], A[1][1], ..., A[1][M-1],
...
A[N-1][0], A[N-1][0], ..., A[N-1][M-1]

なので、キャッシュの関係で
for(J ... ) for(I ... ) ... A[I][J] ... よりも
for(I ... ) for(J ... ) ... A[I][J] ... の方が効率が良い。

まあ、効率が要求されないなら、
バグを出さないようにベタに移植した方がいいと思う。
配列も、サイズを 1 増やして宣言して、
1 オリジンであるかのように扱うとか。
715676:2005/11/27(日) 21:46:43
>>698
 デッドロックと排他の使い分け間違えた。

 デッドロック:セマフォを用いても無理なものは無理。
 排他:セマフォ使えばOK.
 
 こんなところでまとめました。
 ロックファイルでいけるんなら、セマフォいらんのに〜。
 なんで、ロックファイルのこるんだろ?
 I/Oがおかしくなるんかいな。
716デフォルトの名無しさん:2005/11/27(日) 22:41:46
>>705です
712さんの言うとおりフォートランでリード文について説明のある
教科書の部分を調べたのですが基礎中の基礎のようで載っておらず
断念を・。。
>>713さんありがとうございます
明日早速もう一度作り直してみます
714も参考になりました。
717デフォルトの名無しさん:2005/11/27(日) 22:48:44
カタカナやめろ
えづきそう
718デフォルトの名無しさん:2005/11/27(日) 23:18:26
気持ち悪いのはカタカナだけではない
719デフォルトの名無しさん:2005/11/27(日) 23:21:43
やーっほーっふぉーとらんらんらん
720デフォルトの名無しさん:2005/11/27(日) 23:34:47
>>719
不覚にもワロテシモタ…orz
721デフォルトの名無しさん:2005/11/27(日) 23:42:33
全角とか。
大文字なのは FORTRANner だからだろうなぁ。
722デフォルトの名無しさん:2005/11/28(月) 00:07:23
素直にf2cを使えばいいだけの話では?
723デフォルトの名無しさん:2005/11/28(月) 10:45:40
関数fが与えられているとき
f'(x)を離散的に求めるにはどうすればよいでしょうか

具体的にはfが
いろいろなdouble func(double);という形で存在するとき
double delta_func(double (f)(double),double x)と定義して
f'のx点での値を求めたいわけです

小さいhを用意してf(x+h)-f(x)/hを返すことは簡単ですが
いかんせん精度が低いので

具体的なプログラムでなくても数学的なアイディアでもかまいませんので
お願いします
724デフォルトの名無しさん:2005/11/28(月) 10:51:35
微分係数ですね
725デフォルトの名無しさん:2005/11/28(月) 10:55:34
>>723
微分係数の定義自体がそれな訳だからそれぐらいしかないんじゃね?
数学板で聞いたほうがいい意見聞ける予感
726デフォルトの名無しさん:2005/11/28(月) 12:28:03
char *top3name[ ][3] = {
{ "apple", "orange", "grape" },
{ "dog", "cat", "rat" },
{ "tomato", "cabbage", "carrot" }
};

ここでポインタpを宣言して、p = tbl;として
printf(p[0][1]);とかしたい場合、pはどんな型で宣言すればいいのか教えて下さいな
727デフォルトの名無しさん:2005/11/28(月) 12:29:05
p = tblじゃなくてp = top3nameね
728デフォルトの名無しさん:2005/11/28(月) 12:41:43
char ***p
729デフォルトの名無しさん:2005/11/28(月) 12:59:43
>>726
こうかな?
char *(*p)[3]
730デフォルトの名無しさん:2005/11/28(月) 13:12:39
>>729
どうもです。理由は勉強してみます。
あと728の人はうそつきだけど許しちゃう。
731デフォルトの名無しさん:2005/11/28(月) 19:44:41
>>723
数値微分でググれ
732デフォルトの名無しさん:2005/11/29(火) 01:23:48
文字列をUnicodeでwchar_tに入れたいんですが、どうすればいいですか?

ttp://www.honet.ne.jp/~tri/program/unicows01.html
ここみてやったんですけど、全角使ったら
converting to execution character set: Invalid or incomplete multibyte or wide character
ってエラーが出て出来ない・・・
733デフォルトの名無しさん:2005/11/29(火) 01:55:49
wchar_tは欠陥型だから使うな
734デフォルトの名無しさん:2005/11/29(火) 01:58:39
それ以前の問題のような気が。
735732:2005/11/29(火) 02:00:09
>>733-734
なんか勘違いしてたようです。
出直してきます。
736726じゃないですけど:2005/11/29(火) 14:27:21
>>729
どういう仕組みですか?
top3nameはchar*型の2次元配列というのは合ってますか?
なんでそうなるのか分かりません
オシエテ!!
737デフォルトの名無しさん:2005/11/29(火) 14:37:54
>>736
top3name は「char* の配列 (要素数は [3]) を指すポインタ。
慣れるしか。
738736:2005/11/29(火) 14:40:16
char *top3name[2][3][4]
この場合はどうなりますか?
739デフォルトの名無しさん:2005/11/29(火) 15:08:01
内側の ????[] を (*p) に変えるだけだろ。
何も悩むことはない。
740736:2005/11/29(火) 15:16:23
と、いう事は・・・
char *(*p)[3][4]
で合ってますか?
741デフォルトの名無しさん:2005/11/29(火) 15:18:04
そうなる。

ttp://www1.kcn.ne.jp/~robe/cpphtml/html03/cpp03010.html

でも参考にしてみれ。
742736:2005/11/29(火) 15:21:57
ご丁寧にありがとうございました。
良く分からなくなった時は、>>739の方法で
機械的に導き出せそうですね
教えてくれたサイトで修行してきます
743デフォルトの名無しさん:2005/11/29(火) 21:33:50
if( 0 <== i && i<= 8)
wk = 0;
else if(9 <= i && i<= 16)
wk = 1;
else if(17 <= i && i<= 25)
wk = 2;
else if(26 <= i && i<= 34)
wk = 3;
else if(35 <= i && i<= 43)
wk = 4;
else if(44 <= i && i<= 52)
wk = 5;
else if(53 <= i && i<= 61)
wk = 6;
こういうのをもっとスマートにやる方法ないでしょうか。
744デフォルトの名無しさん:2005/11/29(火) 21:36:40
そういうプログラムは要求するほうがセンスナス
745デフォルトの名無しさん:2005/11/29(火) 21:37:36
>>743
先ず確認しておきたいが、16以降61までは9ずつなのに最初だけは8ずつなのは間違いではないね?
746デフォルトの名無しさん:2005/11/29(火) 21:42:05
>>743
規則性があるなら、
wk = i <= 8 ? 0 : (i+1)/9;
みたいに規則を見付ける。規則性がないなら、
const int maxvalues[] = {8, 16, 25, 34, 43, 52, 61};
for (wk = 0; wk < sizeof(maxvalues)/sizeof(mavalues[0]); wk++) {
if (i < maxvalues[wk])
break;
}
みたいにテーブルを作っておく。
747デフォルトの名無しさん:2005/11/29(火) 21:43:12
>745を前提とすると、精精これくらいかな。
#iは0以上61以下のの整数と仮定しているけど。
wk = -1;
static const int wks[] = {8, 16, 25, 34, 43, 52, 61,};
for (unsigned ic = 0; ic < sizeof(wks) / sizeof(* wks); ++ic) {
if (i <= wks[ic]) {
wk = ic;
break;
}
}
#一応wkが-1かどうかで61を超えた場合の異常判定はできると。
748デフォルトの名無しさん:2005/11/29(火) 21:45:20
>>743
if を使ってもまだこのくらいになる

if (0 <= i && i <= 8)
wk = 0;
else if (i <= 16)
wk = 1;
else if (i <= 25)
wk = 2;
else if (i <= 34)
wk = 3;
else if (i <= 43)
wk = 4;
else if (i <= 52)
wk = 5;
else if (i <= 61)
wk = 6;

62以上がwk = 6になっちゃうし、醜いけど・・・
wk = (0 <= i && i <= 8) ? 0 : i <= 16 ? 1 : i <= 25 ? 2 : i <= 34 ? 3 : i <= 43 ? 4 : i <= 52 ? 5 : 6;
749デフォルトの名無しさん:2005/11/29(火) 21:51:35
i が 61 以上の場合どうなるんだ?
750デフォルトの名無しさん:2005/11/29(火) 21:52:33
743には書いてないね
751デフォルトの名無しさん:2005/11/29(火) 21:54:38
sizeof(wks) /sizeof(* wks)ってなに?
752デフォルトの名無しさん:2005/11/29(火) 21:57:38
>>751
>746のsizeof(maxvalues)/sizeof(mavalues[0])と同工異曲。
753デフォルトの名無しさん:2005/11/29(火) 21:59:31
そんなの無理して工夫しなくていいよ。
普通にif並べるかテーブル作るかのどっちか。
754デフォルトの名無しさん:2005/11/29(火) 22:01:42
>>752
なんか冗長な感じがするねサンクス
755デフォルトの名無しさん:2005/11/29(火) 22:29:20
#define numberof(v) (sizeof (v) / sizeof *(v))
756デフォルトの名無しさん:2005/11/29(火) 22:36:14
それにはelementofっていう名前を付けようよ……
757デフォルトの名無しさん:2005/11/29(火) 22:42:20
長い。 ELEMOF だな。
758デフォルトの名無しさん:2005/11/29(火) 22:42:44
elementofは変だろ
要素「数」なんだから
759デフォルトの名無しさん:2005/11/29(火) 22:45:09
nitemsだな
760デフォルトの名無しさん:2005/11/29(火) 22:47:05
the number of elements of の略で elementof じゃないのか?
761デフォルトの名無しさん:2005/11/29(火) 22:50:48
valueof(>>756-)==0
762デフォルトの名無しさん:2005/11/29(火) 22:53:08
寧ろ
#define >>756 0
daro
763デフォルトの名無しさん:2005/11/29(火) 22:58:45
こうやって省略することばっか考えてるからCプログラマは
読みにくいコードばっか書くんだよな

#define TheNumberOfElementsOfArray(v) (sizeof (v) / sizeof *(v))

これでいいだろ
764デフォルトの名無しさん:2005/11/29(火) 23:05:37
sizeof *(v)  確かにCプログラマはこんなことは書きません
765デフォルトの名無しさん:2005/11/29(火) 23:09:51
>>764
不勉強を晒してますよ。
sizeofはその場合括弧を伴う必要がなく、マクロ引き数のvには括弧をつけるべきなので
sizeof *(v)と書くのは至極当然なのです。
#まさか空白の個数を問題にしているわけじゃないよね。
766デフォルトの名無しさん:2005/11/29(火) 23:19:52
俺ならこうだな
#define numof(v) (sizeof(v)/sizeof((v)[0]))
767デフォルトの名無しさん:2005/11/29(火) 23:24:04
昔はnumberofをマクロ定義していた。
今は、>747のように書いてしまう習慣がついてしまった。
やはり、小さいプログラムばかり作っている所為だな。
#そういえばX11にも同じようなマクロがあったなぁ。
768デフォルトの名無しさん:2005/11/29(火) 23:36:36
低レベルな連中だな
769デフォルトの名無しさん:2005/11/29(火) 23:39:37
そういうスレだからな
770デフォルトの名無しさん:2005/11/29(火) 23:51:50
質問です。
signedは全ビットを使って数値を表す、
unsignedは最上位ビットを符号で使い残りのビットで数値を表すということでいいのでしょうか?
771デフォルトの名無しさん:2005/11/29(火) 23:53:02
もちつけ
772デフォルトの名無しさん:2005/11/29(火) 23:53:24
#define the_number_of_elements_of_array(v) (sizeof (v) / sizeof *(v))
773デフォルトの名無しさん:2005/11/29(火) 23:53:31
すみません逆でした
unsignedは全ビットを使って数値を表す、
signedは最上位ビットを符号で使い残りのビットで数値を表すということでいいのでしょうか?

774デフォルトの名無しさん:2005/11/29(火) 23:54:47
初歩的な質問なんですけど整数って実数とどう違うんですか?
775デフォルトの名無しさん:2005/11/30(水) 00:01:26
>>774
まず辞書をひけ
776755:2005/11/30(水) 00:02:56
1. あのマクロを最初に見たのが XtIntrinsics の XtNumber だった
2. 標準 C に offsetof がある
で numberof に決まったのだ。俺の中で。
777デフォルトの名無しさん:2005/11/30(水) 00:03:57
>>775
辞書引いてもよくわからん・・
778デフォルトの名無しさん:2005/11/30(水) 00:05:54
小学校へ入り直せ
779デフォルトの名無しさん:2005/11/30(水) 00:09:12
>>778
それは法律的に無理かと
780デフォルトの名無しさん:2005/11/30(水) 00:10:30
>>773
>signedは最上位ビットを符号で使い残りのビットで数値を表すということでいいのでしょうか?
-1は1000000000000001でなないよ。singnedのマイナス値は2の補数で表現されます。
781デフォルトの名無しさん:2005/11/30(水) 00:12:50
-1は0000000000000001+XXXXXXXXXXXXXXXX=1+0000000000000000となるXXXXXXXXXXXXXXXXです。
つまり-1は1111111111111111です。
782デフォルトの名無しさん:2005/11/30(水) 00:15:03
>>777にも解りそうに書くと、

 整数=少数点がない数
 実数=少数点もある数


と言った感じ。
正確には違うから、そのまま覚えるなよ。
783デフォルトの名無しさん:2005/11/30(水) 00:24:57
>>782
先ず第一に、「少数点」が間違いだな。
784782:2005/11/30(水) 00:27:59
>>783
>>777にはこう言ういい加減な情報で十分だろ?
785デフォルトの名無しさん:2005/11/30(水) 00:28:22
>>777
中学生向け参考書でも買って来い
786デフォルトの名無しさん:2005/11/30(水) 00:29:34
>>782
せめて「小数点」と書いてくれ。
787デフォルトの名無しさん:2005/11/30(水) 00:39:29
>>780-781
分かりました
788デフォルトの名無しさん:2005/11/30(水) 00:40:29
少佐とか少尉って言うなら
大佐じゃなくて多佐だろ?
多佐・中佐・少佐・多尉・中尉・少尉
だろ?
789デフォルトの名無しさん:2005/11/30(水) 00:43:17
>>777
実数 虚数・複素数でない全ての数
整数 実数のうち、分数にすると分母が1になる数

>>788
で?
790デフォルトの名無しさん:2005/11/30(水) 00:52:13
>>788はこっちに行った方が幸せになれると思うお。
ttp://pc8.2ch.net/test/read.cgi/tech/1130937679/
791デフォルトの名無しさん:2005/11/30(水) 00:54:21
C言語を勉強しようと思っています。
プログラミングは初めてです。
候補として
Microsoft Visual C++ .NET Standard Version 2003

Borland C++Builder 6 Personal
を考えているのですがどっちがいいでしょうか?
2つ以外にもおすすめがあれば教えてください。
C言語?はつぶしがきくからしいので
IT業界への転職を考えて勉強しようと思っています。
792・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/30(水) 00:57:27
>>791
Visual C++ 2005の日本語版もうすぐ出るからそれまで辛抱。
Expressなら無料だし。まあWinアプリ作るのは辛かろうけど。
793デフォルトの名無しさん:2005/11/30(水) 00:58:45
>>791
OSをWindowsからLinuxに変えればいい。
Cコンパイラが標準で入っている。
Linuxはフリーのが転がってるからいいね。
794デフォルトの名無しさん:2005/11/30(水) 01:01:20
はじめまして。私は学生です。
今回C言語について質問をしたいと思い、こちらにお邪魔しました。

質問はC言語で座標の計算をするにはどうしたらよいのか、
ということです。
どうなんでしょうか。
なにぶん初心者のようなものなので。。。。
よろしかったらご返答、よろしくお願いいたします。
795デフォルトの名無しさん:2005/11/30(水) 01:02:52
始皇帝氏はお帰りください。
796デフォルトの名無しさん:2005/11/30(水) 01:06:12
>>794
>質問はC言語で座標の計算をするにはどうしたらよいのか、
>ということです。
座標の計算とは具体的にどういう計算のことですか?
797デフォルトの名無しさん:2005/11/30(水) 01:10:22
>>794
普通に計算すればいい
798デフォルトの名無しさん:2005/11/30(水) 01:18:30
CADの授業でベジェ曲線の事を勉強しています。
それのプログラムをつくれ、といわれました。
ですから、グラフ上での座標と実数との計算をしたいのです。
例えば(1,1)*3で答えを(3,3)っていうのはできるんでしょうか??
799デフォルトの名無しさん:2005/11/30(水) 01:20:07
>>798
(1,1)*3をどう計算すれば(3,3)になるのかはわかってるよな?
それをそのままプログラムとして書けばいい。
800デフォルトの名無しさん:2005/11/30(水) 01:22:25
>>798
おそらく、2つの座標系での座標変換のことを言ってるんですね。
ひとつは画面の描画対象のウィンドウの座標で、もうひとつがベジェ曲線が
存在する座標。
801・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/30(水) 01:22:41
>>793
まーLinux解ってると転職には有利かもね。
もっとも、MSのSQLサーバとかIISの知識も十分潰しがきくというか、潰す必要ないくらいの需要はあると思うけど。
802デフォルトの名無しさん:2005/11/30(水) 01:28:29
先ほど試しにこれをうちました。↓
t=(1,1)*3;
printf("%d",t);
解は3でした。
すみません、わかりません。。。
803デフォルトの名無しさん:2005/11/30(水) 01:28:36
一行分の文字列を入力し、次に数字nを入力すると、文字列がn番目から表示される
って問題の解答例を教えてくれませんか?
これがわからない僕はやばいんですかね
804デフォルトの名無しさん:2005/11/30(水) 01:29:13
>>800
Bezierなんだから、点のブレンディング係数じゃないの?
805デフォルトの名無しさん:2005/11/30(水) 01:31:13
ビッグエンディアンともう一つのやつはなんで違う必要があるのでしょうか?
頭から順に並べていったら不都合がある場合とかあるんですか??
806デフォルトの名無しさん:2005/11/30(水) 01:36:08
>>802
ベクトルのような計算をするには、そのように「自前で書く」必要があります。
t=(1,1)*3; printf("%d",t);
ではなく
t_x = 1 * 3; t_y = 1 * 3; printf("(%d, %d)",t_x, t_y);
のように。
807デフォルトの名無しさん:2005/11/30(水) 01:36:58
>>805
その「頭から並べる」の規則が違うんだよ。
不都合とかいうよりも、歴史の問題だと思うんだけど。
808デフォルトの名無しさん:2005/11/30(水) 01:46:29
>>806
ご親切にありがとうございました!
がんばってみますww
809デフォルトの名無しさん:2005/11/30(水) 01:50:49
>>803
1.gets関数で文字列を読み込む。これをchar s[256];に格納する。
2.gets関数でnを入力する。atoi関数でintegerに変換しint n;に格納する。
nが0ならば抜ける。
3.strlen(s) < nならば表示する文字列はないので抜ける。
4.strlen(s) >= nならばprintfでs+n-1を表示する。

これをCで書いてください。
810デフォルトの名無しさん:2005/11/30(水) 01:58:44
#include <stdio.h>
#include <stdlib.h>
#include<string.h>

int main()
{
char s[256], sn[256];
int n;

printf("%s\n", "文字列を入力してください\n");
gets(s);
printf("%s\n", "Nを入力してください\n");
gets(sn);
n = atoi(sn);
if (n <= 0) return 0;
if (strlen(s) < n) return 0;
printf("%s", s+n-1);

return 0;
}
811・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/30(水) 01:59:26
>>805
違う必要があるんじゃなくて、現に違うものが存在して、それらを両方触らないといけない場合、
違いを意識して移植性を高める必要があるってことだけ覚えておけばよい。
基本的にIntelプロセッサなんかはリトルエンディアン。Macに採用されてるPowerPCなんかはビッグエンディアンだね。

数値が大きくなっていったときに後ろのほうのバイトを付け加えてより大きな数を表現するといったときに、
番地の大きいほうが上位ビットになるリトルエンディアンのほうが有利。
データの先頭16bitに1234Hってデータが入ってれば、32ビットの変数として呼び出しても、下16ビットは1234H。
また、32bitのデータを上位16ビットを切り捨てて読む場合は、同じアドレスを2バイトだけ読めばいい。

ビッグエンディアンのほうが優位なケースもあるけどこれは省略

812デフォルトの名無しさん:2005/11/30(水) 01:59:41
>>805
それぞれにそれぞれの利点がある。
813デフォルトの名無しさん :2005/11/30(水) 02:01:16
こんばんわ。
初歩の質問かもしれないですが、インクリメントですすめられたポインタを
元の位置にもどすのはどうすればいいのでしょうか?
814デフォルトの名無しさん:2005/11/30(水) 02:01:55
>>813
デクリメントしてください
815デフォルトの名無しさん:2005/11/30(水) 02:03:43
>>813 は釣りか?
816814:2005/11/30(水) 02:04:42
>>813
ポインタを最初の位置に戻すのだったら、最初の位置を別の変数にセーブしておいて
それを=でかぶせる。
1下げるんなら--p。
817デフォルトの名無しさん :2005/11/30(水) 02:08:37
>>815
つりじゃないです><
デクリメントするしかないのですか?
fopenでファイルを開いて、fgetsをつかって一行ずつ読み出すんですけど
一度NULLまで読み込んでまた最初から読み込みたいんですけど。
またfopenからしないといけないんですかね?
818デフォルトの名無しさん:2005/11/30(水) 02:09:51
819・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/11/30(水) 02:11:21
やりたいことがいまいちようわからん

ファイルストリームのポインタ操作ならfseekだ。
820デフォルトの名無しさん:2005/11/30(水) 02:11:37
>>817
ファイル関係の関数を見直してみ。
821デフォルトの名無しさん:2005/11/30(水) 02:12:49
>>817
それって、ポインタではなくてファイルポインタだよね。
固定長レコードのファイルならば、fseek関数を使ってもどす。
可変長レコードのファイルは無理。
822デフォルトの名無しさん:2005/11/30(水) 02:14:32
頼むから初心者はスレ違いだということに気付いてくれ。

>>817
途中の理解に問題あり捲くりだが、ファイルの読み直しならrewind()で巻き戻せる。
但し、fopen()で開いたものが巻き戻せるものの場合に限るが。
823821:2005/11/30(水) 02:15:09
可変長ファイルでもファイルの先頭にもどすなら、fseek関数かrewind関数。
824デフォルトの名無しさん:2005/11/30(水) 02:15:27
>>821
>また最初から
ゆえに、
>可変長レコードのファイルは無理
は間違い。
825デフォルトの名無しさん:2005/11/30(水) 02:18:11
seekする前にfgetposで現在の位置を取得。
その後、fsetposで元の位置に戻す。
826デフォルトの名無しさん :2005/11/30(水) 02:21:54
たくさんの返信ありがとうございます。
>>822
すれ違いでしたか><すみません。
でも、これで解決しそうです。がんばってきます。
827デフォルトの名無しさん:2005/11/30(水) 02:22:57
828821:2005/11/30(水) 02:23:15
>>825
だから、ファイルの先頭に戻すんだって

そもそも、ファイルのレコードを検索するのにまた頭からなめるって効率悪くねえか!?
ファイルサイズが大きいものでなければ、全部メモリ(=変数)に読み込んで、
変数で処理するのがベター。
829デフォルトの名無しさん:2005/11/30(水) 02:29:12
小さければ、キャッシュに乗ってるだろう。
830デフォルトの名無しさん:2005/11/30(水) 02:31:46
基本的には、メモリにマッピングして操作するのが簡単だし速いな。
831デフォルトの名無しさん:2005/11/30(水) 03:46:11
Cのプログラムを組む上でアセンブラの知識って有るのと無いのとでは全然違いますか?
832デフォルトの名無しさん:2005/11/30(水) 03:50:51
2つの配列を一度に入力するにはどのように書いたらいいんでしょうか?
例えばa[ ]とb[ ]に一度に1 2 3 4 5 6みたいに入れたいのですが。
ポインタはまだわからないです。

cout<<"ベクトルを2つ入力 -->";
for(j=0;j<c;j++)
{
cin>>a[j]>>b[j];
}
自力だとこうなのですがエラーが出て…
833デフォルトの名無しさん:2005/11/30(水) 03:51:15
完全に誤爆しました。すみません。
834791:2005/11/30(水) 08:19:06
>>792
2005はいつ頃発売予定なんでしょうか?待つかどうか分かりませんが>>791であげた2つのうちではどっちがお勧めですか?

835743:2005/11/30(水) 09:00:40
テーブル作ったほうがよさげですね。ちなみに数値の範囲に規則性はなく、iが0未満ならwk=0で61以降ならwk=6にします。
836デフォルトの名無しさん:2005/11/30(水) 09:07:03
>>743 == >>835
ちょっとまて
837803:2005/11/30(水) 11:24:14
>>809-810
多謝
838デフォルトの名無しさん:2005/11/30(水) 11:44:15
>>836
そんなそうびじゃあぶないぞ
839デフォルトの名無しさん:2005/11/30(水) 13:18:43
スキャナーで読み取ったものを採点へと連動させるようなプログラムが作れないorz
840デフォルトの名無しさん:2005/11/30(水) 13:20:32
>>835
おいおい、テーブル作るにせよそうでないにせよ、条件をちゃんと見直せよ。
841デフォルトの名無しさん:2005/11/30(水) 14:14:37
LINUXでgetch()使いたい時はどうしたら良いですか?
842デフォルトの名無しさん:2005/11/30(水) 14:20:13
843デフォルトの名無しさん:2005/11/30(水) 14:25:30
>>842
即答ありがとうございます。^^
理解するのに時間がかかりそうですが...

844デフォルトの名無しさん:2005/11/30(水) 23:14:57
C言語のWindows用のフリーの統合開発環境は例えば何がありますか?
あと、Visual C++は価格はおよそどのくらいですか?
845デフォルトの名無しさん:2005/11/30(水) 23:23:03
値段すら調べられない奴が、言語を使えるとは思えない。
846デフォルトの名無しさん:2005/11/30(水) 23:25:21
>>844
8 名前:( ´∀`)< ぬるぽ 投稿日:03/04/10 19:51
【コンパイラ】
gcc
http://gcc.gnu.org/

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/

【ぬるぽ】
  ∧_∧
 ( ´∀`)< ぬるぽ

【ライセンスや機能などに問題あり】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
847デフォルトの名無しさん:2005/11/30(水) 23:26:14
>>844
タダからウン十万>VC++
848デフォルトの名無しさん:2005/11/30(水) 23:39:14
あの、下のようなプログラムを実行すると、
2 1
と表示されるんですが、なんで1 2の順番で表示されないのでしょうか?

int integer = 1 ;
printf ( "%d %d \n" , integer , integer++ ) ;
849デフォルトの名無しさん:2005/11/30(水) 23:44:01
>>848
エンディアン
850デフォルトの名無しさん:2005/11/30(水) 23:45:25
>>849に自己レス
何ぼけてるんだ俺は。printfに限らず、関数の引数の評価順序は未定義
今回は、まずinteger++が評価された後で2となったintegerが評価されたから
つーか、FAQに書いてあっただろ
851デフォルトの名無しさん:2005/11/30(水) 23:54:29
>>850
すみませんでした。
852デフォルトの名無しさん:2005/12/01(木) 00:10:42
>>848
849-850
は逝ってよし

1 1
が正しい。
853デフォルトの名無しさん:2005/12/01(木) 00:15:19
いやこの場合>>850が正しいだろ…
854デフォルトの名無しさん:2005/12/01(木) 00:18:35
処理系定義ですら無いよね。
同じコンパイラでも、最適化オプションで簡単に変わっちゃったりするし。

これは関数の引数の評価順だけど
式の評価順も同じ。
855デフォルトの名無しさん:2005/12/01(木) 00:21:54
結果がどうなるかどうかわからんコードは書くなということでしょう
>printf ( "%d %d \n" , integer , integer++ ) ;

856デフォルトの名無しさん:2005/12/01(木) 00:22:35
>>852
CFAQ 3.2嫁
そして氏ね
857デフォルトの名無しさん:2005/12/01(木) 00:24:09
>>853

VC6だと1 1

VC8だと2 1
858デフォルトの名無しさん:2005/12/01(木) 00:26:22
>>857
だから?
859デフォルトの名無しさん:2005/12/01(木) 00:26:38
>>857
それを未定義という
860デフォルトの名無しさん:2005/12/01(木) 00:29:38
>>857
で?
それが>>852の主張をどう裏付けてるの?
861デフォルトの名無しさん:2005/12/01(木) 00:31:20
つーかVC6はともかくVC8ってなんだ?
862デフォルトの名無しさん:2005/12/01(木) 00:31:37
VisualC++2005はVC8.0
863デフォルトの名無しさん:2005/12/01(木) 00:35:39
>int integer = 1 ;
>printf ( "%d %d \n" , integer , integer++ ) ;
最適化して、わざわざこう解釈するコンパイラもある。
printf("%d %d \n", 2, 1);
臍曲がりなコンパイラだと思ったが、最適化しない場合と同じ値になるように工夫されていたようだ。
864デフォルトの名無しさん:2005/12/01(木) 00:36:38
>>860

MSDNのprintfの引用なんだけど

> 書式指定は必ずパーセント記号 (%) で始め、左から右に解釈されます。
>printf は最初の書式指定 (もしあれば) を見つけると、
>format 直後の引数の値をその書式指定に従って変換して出力します。
>2 番目の書式指定を見つけると、2 番目の引数を変換して出力します。以後も同様です。
>書式指定より引数の数が多いと、余分な引数は無視されます。
>書式指定より引数が少ないと、結果は予測できません。

これは、間違い?
865デフォルトの名無しさん:2005/12/01(木) 00:38:25
>>864
解釈するってのは引数として渡された値であって、
この場合は引数として渡す値の評価順が不定だから、未定義の動作になる。
文章は間違いではない。
866デフォルトの名無しさん:2005/12/01(木) 00:43:06
>>864
それは、printf関数の中身の処理だね
ここで問題になってるのは、printf関数の引数をスタック上の引数リストに積むときの順番。
これは言語仕様にはないから、不定となる。
867デフォルトの名無しさん:2005/12/01(木) 00:43:31
フォーマット文字列の解釈が、引数リストと一致しているかどうかの話と
引数を評価する順序は全然別。

(stdcallがどうなのかは知らないが)
昔のpascal呼び出し規約とcdecl呼び出し規約では、
引数がスタックに積まれる順番が逆だったが
これも、引数の評価順とは無関係。
868867:2005/12/01(木) 00:45:17
>>866
それ(積まれる順番)とも違うって俺が書いてたのに
869デフォルトの名無しさん:2005/12/01(木) 00:48:49
>>868
ケツから入れるかもしれないし、先頭から入れるかもしれない。

まあ、そんなことはどうでもいいだろ。処理系の内部事情だから。
870867:2005/12/01(木) 00:50:38
ん、無関係って事はないか。
評価順がスタックに積まれる順番によって規定されているわけではないって事だな。
実際のコンパイラでは一致する場合が多いけど。

>>869
どうでもいいなら、「引数の評価順は未定義」という意味をちゃんと理解しろよ。
871867:2005/12/01(木) 00:54:56
まさか>>869=>>866なんてことは無いよな?
俺は(>>868では)「>>866が間違い」と指摘しただけだから、
>>869がちゃんと理解していて>>866と無関係なら、どうこう言われる筋合いはない。
872869:2005/12/01(木) 00:56:25
866=869ですけど
873869:2005/12/01(木) 00:59:00
「積まれる順番」でなくて「積むときの順番」な
874デフォルトの名無しさん:2005/12/01(木) 01:08:34
つまり、適当な事(ウソ)を書いておいて、
それを指摘されて「どうでもいい」と逆ギレしたと。
875デフォルトの名無しさん:2005/12/01(木) 01:09:46
>>873
それこそ「どうでもいい」ことだろ。
876869:2005/12/01(木) 01:36:01
>>874
いったい何が問題なのか?
「どうでもいい」のは、引数の評価順とかスタックに積む順番とかの話だ。
それはコンパイラの内部事情の話なので、「どうでもいい」ことなのだ。
つまり、言語仕様には規定されていないことをここで論じてもしょうがない
ということだ。また、処理系の内部事情で結果が変わるようなコーディング
をしてはいけないということだ。


877デフォルトの名無しさん:2005/12/01(木) 01:56:01
つまりおまえは、自分で書いた>>866に対して、>>869の「そんなことはどうでもいい」と言ったか?

その「どうでもいい」事を書き始めたのがおまえだろ。
その間違いを他人に指摘されたら
他人に対して(自分で書き始めたくせに)「そんなことはどうでもいい」と言い放つ姿勢が
矛盾してるんだよ。
878デフォルトの名無しさん:2005/12/01(木) 02:00:44
  ┏┳┳┓     ハイ.     ┏┳┳┓
┏┫┃┃┃池沼と遊ぶのは ┃┃┃┣┓
┃┃┃┃┣┓  ここまで ┏┫┃┃┃┃
┃      ┃┃┏━━━┓┃┃      ┃
┃ 池沼   ┣┫ . ・∀・ ┣┫. STOP!┃
┗━━━━┛┗┳━┳┛┗━━━━┛
            ┏┻┓┃
        ┏━┛  ┣┻┓
        ┗━━━┫  ┗━┓
.             ┗━━━┛
879デフォルトの名無しさん:2005/12/01(木) 02:01:45
>>868は、>>866の間違いを指摘しているので、「どうでもよくはない」
>>866は、処理系内部の事なので、「どうでもいい」

「どうでもいい」ことを書いたのは>>866=869だと言うことだ。
880デフォルトの名無しさん:2005/12/01(木) 02:03:22
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ <こいつら最高にアホ
 彡、   |∪|  /
/ __  ヽノ /
(___ ̄\ /
    (_ノノノ│
       ∪
881デフォルトの名無しさん:2005/12/01(木) 02:31:21
>>880
阿呆は >>866 だけのように見えますが。
なぜ「こいつら」と纏めてしまうのでしょう?
 1. 何を揉めてるのかなど興味がないが、揉める事自体が阿呆。
 2. 何を揉めているのか判らない。
 3. 実は >>866
882デフォルトの名無しさん:2005/12/01(木) 02:34:44
>>882
こいつ最高にアホ
883デフォルトの名無しさん:2005/12/01(木) 02:35:24
・・・
884866=869:2005/12/01(木) 02:48:56
いったい何が問題なのか?俺にはわからん。説明してくれ!


866 :デフォルトの名無しさん :2005/12/01(木) 00:43:06
>>864
それは、printf関数の中身の処理だね
ここで問題になってるのは、printf関数の引数をスタック上の引数リストに積むときの順番。
これは言語仕様にはないから、不定となる。

869 :デフォルトの名無しさん :2005/12/01(木) 00:48:49
>>868
ケツから入れるかもしれないし、先頭から入れるかもしれない。

まあ、そんなことはどうでもいいだろ。処理系の内部事情だから。

873 :869:2005/12/01(木) 00:59:00
「積まれる順番」でなくて「積むときの順番」な
885デフォルトの名無しさん:2005/12/01(木) 02:54:41
>>866が大嘘だって事だけ理解していれば、
それ以外どうでもいい
886866=869:2005/12/01(木) 03:00:04
処理系1
1. arg1評価しをprintf関数の引数リストに積む。
2. arg2評価しをprintf関数の引数リストに積む。
3. arg3評価しをprintf関数の引数リストに積む。
4. printf関数へジャンプ

処理系2
1. arg3評価しをprintf関数の引数リストに積む。
2. arg2評価しをprintf関数の引数リストに積む。
3. arg1評価しをprintf関数の引数リストに積む。
4. printf関数へジャンプ

int integer = 1 ;
printf ( "%d %d \n" , integer , integer++ ) ;
の結果は

処理系1では 1 1
になるだろうし
処理系2では 2 1
になるだろう。

これのどこが大嘘なんだ>>885

887デフォルトの名無しさん:2005/12/01(木) 03:12:08
888デフォルトの名無しさん:2005/12/01(木) 03:13:06
ケツからいれるってのが不謹慎って事ですね。
889866=869:2005/12/01(木) 03:14:40
>まあ、そんなことはどうでもいいだろ。処理系の内部事情だから。
の「そんなことはどうでもいいだろ」は確かに、不適切な表現ではあったな。
誤るよ。
890デフォルトの名無しさん:2005/12/01(木) 03:16:26
補足。
そんな内部事情は本当にそれこそ「どうでもいい」こと。

C言語において、引数の評価順は「不定」。
そして、それはスタックに積まれる順番などという話とは関係ない。

「スタックに積む」と「式を評価する」の間に関係があるとしても
それは単に処理系内部の都合だけであって、
C言語の仕様の話の中に「スタックに積む順番が」という話を持ち出すのは間違い。
891866=869:2005/12/01(木) 03:18:45
>>890
ご指摘ありがとう。そのとおりだ。
スタックを使わないものもあるからね。
892デフォルトの名無しさん:2005/12/01(木) 03:18:49
おっと、まだ分かってなかったか。

>>890にも書いたが、
「式を評価する順番」と「評価した結果(値)をスタックに積む順序」に関して
仕様は何一つ規定していない。

つまり、この2つをさも関係あることのような書き方をしている>>866は大嘘。
893866=869:2005/12/01(木) 03:24:30
>>892
おっ!まだおきていたか。

>「式を評価する順番」と「評価した結果(値)をスタックに積む順序」に関して
>仕様は何一つ規定していない。

まあ、厳密にいうとそのとおりだな。
さきに引数の評価をすべてしてしまうからかもしれないからな。(ショボーン)
894デフォルトの名無しさん:2005/12/01(木) 03:41:33
>>888
先に断って、かつワセリン使えば不謹慎という程でもない。
895デフォルトの名無しさん:2005/12/01(木) 04:07:24
>863を読んでいれば評価の順序と積む順序に関連がないことくらい想像つくだろうに。
896デフォルトの名無しさん:2005/12/01(木) 04:14:37
???
897デフォルトの名無しさん:2005/12/01(木) 08:03:40
あるメモリ(変数)が動的に確保中のメモリかどうか、というのは調べることができませんか?
898デフォルトの名無しさん:2005/12/01(木) 08:06:02
isdyna
899デフォルトの名無しさん:2005/12/01(木) 10:35:39
>>897
出来ないし、出来る必要も存在しないはずだ。
900デフォルトの名無しさん:2005/12/01(木) 11:00:04
確保中のメモリってなんだろ。
確保済みのメモリなら判らんでもないけど。
#今まさにヒープから確保されようとする最中のメモリ?w
901デフォルトの名無しさん:2005/12/01(木) 11:02:51
scanf()で%cで受けるのは一般的じゃないんでしょうか?
scanf()を使わないから知らなかっただけなんだろうか?
仕事でCを使ってる人が知らなかったんだが...
902デフォルトの名無しさん:2005/12/01(木) 11:05:20
使ってないから知らないんだろ
903デフォルトの名無しさん:2005/12/01(木) 11:07:29
>>902はscanf()を使ってないってことね
904デフォルトの名無しさん:2005/12/01(木) 11:09:11
>>901
あまり使いたくなる場面に出会ったことはない。
freadするか、fgetc系使うかの方が多いな。
905デフォルトの名無しさん:2005/12/01(木) 11:09:11
>>901
気にするな、そんな香具師は掃いて捨てるほどいる。
特にprintf()系やscanf()系は不勉強な香具師が多い。
漏れの体験だが、sprintf(buf, "%*.*s", len, len, str);と
書いただけで「難しいプログラムを書きますね」と言われたぞ。
906デフォルトの名無しさん:2005/12/01(木) 11:14:43
>>897
自分でメモリ管理すればたぶん可能。
907デフォルトの名無しさん:2005/12/01(木) 11:24:19
>>906
そうだねw。最初にでかい領域を確保して、細切れにして使うわけね
・・・残念ながらそれは回答の名に値しないな
908901:2005/12/01(木) 11:29:34
printf()、scanf()はかなり難しい関数と聞きました。
scanf()は使い勝手が悪いとも感じるんですが...
やっぱしちゃんと勉強しといた方が良いんですよね...
909デフォルトの名無しさん:2005/12/01(木) 11:37:19
>>907
メモリ管理するのに、その方法しかないわけじゃないし。
910デフォルトの名無しさん:2005/12/01(木) 11:44:06
>>908
Cで文字列を加工するには、sprintf()/sscanf()はそれなりに使える。
一通り覚えておくといいと思う。
#例えば、典型的な空白を含む文字列をsscanf()で切り出すには"%[^ ]"を使うとか。
911デフォルトの名無しさん:2005/12/01(木) 19:35:48
>>897
アドレスの値で大体分かるんじゃないか?
静的、スタック、ヒープでアドレス表示してみれば、
それぞれのアドレス範囲は明らかに違うはず。
912デフォルトの名無しさん:2005/12/01(木) 20:15:37
質問です。UTF-8をShift-JISに、Shift-JISをUTF-8に変換したいのですが、
既にライブラリなどであるならばそれを使いたいと思うのですが、
探しても処理系の機能を利用するものばかりで、純粋に変換するライブラリは見つかりませんでした。

どなたかそういったライブラリをご存知でしたら教えてもらえませんか?
913デフォルトの名無しさん:2005/12/01(木) 20:18:45
iconv
914デフォルトの名無しさん:2005/12/01(木) 20:24:20
iconv(に限らないけど)、Shift_JISとCP932の違いを把握しておかないとヤヴァイ
915デフォルトの名無しさん:2005/12/01(木) 20:42:38
>>913-914
Thx。iconvって名前しかしらなかった。

GNUのライブラリを使った経験が無いけどトライしてみる。
916デフォルトの名無しさん:2005/12/01(木) 21:03:55
917デフォルトの名無しさん:2005/12/01(木) 21:17:43
Cygwin上のgccで-mno-cygwinでコンパイルしたらiconv.hが見つからなくなった
918デフォルトの名無しさん:2005/12/01(木) 22:31:29
curses.hは時代遅れですか?
919・∀・)っ-●○◎- ◆Pu/ODYSSEY :2005/12/01(木) 22:35:38
>>917
mingw環境のほうにiconvがインスコされてないんじゃね?
920デフォルトの名無しさん:2005/12/01(木) 22:48:36
>>919
その通りでした。結果的にCygwinスレとのマルチポストになってしまい申し訳ない
921デフォルトの名無しさん:2005/12/02(金) 15:05:15
int型のシンボルに数値を埋め込む場合どうしたらいいですか?
922デフォルトの名無しさん:2005/12/02(金) 15:07:55
short intの誤りでした
923デフォルトの名無しさん:2005/12/02(金) 15:09:43
意味が分からん
924デフォルトの名無しさん:2005/12/02(金) 15:21:50
short int hoge = 123;
とかでいいんじゃない?
925デフォルトの名無しさん:2005/12/03(土) 20:57:52
よろしくおねがいします
#include<stdio.h>
#include<math.h>

int main(void)
{
printf('%f', sin(45))
return 0;
}

とすると0.85904
となります。

でも実際は0.707です。
どうしたらなおせるのでしょうか?
926デフォルトの名無しさん:2005/12/03(土) 21:00:55
>>925
さようなら。
927デフォルトの名無しさん:2005/12/03(土) 21:03:40
ウサマ・ビン・ラジアン
928デフォルトの名無しさん:2005/12/03(土) 21:04:57
せめてコンパイルが通るプログラムを持ってきてください><
929925:2005/12/03(土) 21:05:00
すいません。元のソースはこれです。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>


int main(void)
{
FILE *fp;
double Q=1000.0, gamma=0.000008; //設計定数
double A, seita; //変数
double W, g1, g2; //目的関数
double sin(double seita);
double cos(double seita);

fp = fopen("beam.in", "r");
if(fp == NULL)
{
puts("beam.inが開けません");
return 1;
}

/* beam.inから設計変数読み込む */
fscanf(fp, "%lf %lf", &A, &seita);
fclose(fp);

fp = fopen("beam.out", "w");
if(fp == NULL)
{
puts("beam.outが開けません");
return 1;
}
930925:2005/12/03(土) 21:05:41

W = (16 * 0.001 * A) / (sin(seita));
g1 = A * sqrt(1 - pow(sin(seita), 2.0));
g2 = (Q) / (2 * A * cos(seita));

printf("%f", sin(seita));

fprintf(fp, "%f %f %f", W, g1, g2);

fclose(fp);
return 0;
}
931925:2005/12/03(土) 21:08:10
それで、beam.inに14.14 45.0と入力して表示すると
printf("%f", sin(seita));
からなぜか
0.85904
が表示されます。。
932デフォルトの名無しさん:2005/12/03(土) 21:10:09
>>927で答えが出てるわけで
933デフォルトの名無しさん:2005/12/03(土) 21:10:19
いまは、関数すら調べずに質問するのが流行なのか?
934デフォルトの名無しさん:2005/12/03(土) 21:11:49
どの言語でも標準API だと三角関数の引数はほぼラジアンだよな。
935デフォルトの名無しさん:2005/12/03(土) 21:12:08
>>933
Radianが分からないってオチじゃね?
もう氏んでくれって感じだが
936925:2005/12/03(土) 21:15:45
>>927,>>932-935
分かりました。
意味のないレスだと思って流してました。。スイマセン。。

ありがとうございました。
937デフォルトの名無しさん:2005/12/03(土) 21:31:10
いや、素直に radian と書けば良いのにわざわざ
くだらんだじゃれにかけてる奴が悪い
938デフォルトの名無しさん:2005/12/03(土) 21:32:29
いや、素直にリファレンス見れば良いのにわざわざ
くだらん質問してる奴が悪い
939デフォルトの名無しさん:2005/12/03(土) 21:37:23
printf('%f', sin(45 * 3.1415927 / 180))
940デフォルトの名無しさん:2005/12/03(土) 21:43:15
>>937
おいおい、ここをどこだと思ってんだよ
941デフォルトの名無しさん:2005/12/03(土) 21:57:40
2 ち ゃ ん ね る  ( ´,_ゝ`)プッ
942デフォルトの名無しさん:2005/12/03(土) 22:00:14
>質問する前には最低限検索を。
943デフォルトの名無しさん:2005/12/04(日) 00:06:03
システムコールの授業で「標準入力からテキストを入力し、空行を取り除いて標準出力に出力するプログラムを書け。ただし、入出力を行うシステムコールを直接使用すること。」っていう課題が出ました。
下のプログラムをもうちょっと改良したらできるらしいのですが……お願いします。
#include <stdlib.h>
#include <unistd.h>
main(){
charbuf[1024], buf1[1024], *p;
ssize_tlen, len1, len2;
charc, s = '\n',n;
size_ti,j;
while ((len = read(STDIN_FILENO, buf, sizeof(buf))) > 0) {
len1 = 0;
for (i = 0; i < len; i ++) {
c = buf[i];
if (!(s == '\n' && c == '\n')) {
buf1[len1] = c;
len1 ++;}
s = c;
printf("%c",s);}
p = buf1;
while ((len2 = write(STDOUT_FILENO, p, len1)) >= 0 && len1 > len2) {
len1 -= len2;
p += len2;}
if (len2 == -1) {
exit(1);}}
if (len == -1) {
exit(1);}
return 0;}
よろしくお願いします。
944デフォルトの名無しさん:2005/12/04(日) 00:12:07
Macかyo
945デフォルトの名無しさん:2005/12/04(日) 00:16:50
そうです。ってか宿題はここじゃなかったんですねヾ(;´▽``
ごめんなさい!!!
946デフォルトの名無しさん:2005/12/04(日) 00:30:13
汚いソースだな

こんなもん教材に使ってるから
いつまでもセキュリティホールが埋まらないんだよ
947デフォルトの名無しさん:2005/12/04(日) 00:32:58
いやソース自体は>>943が書いたんじゃないのか?
読む気が失せるのは同じだけど。
948デフォルトの名無しさん:2005/12/04(日) 00:36:21
授業って何?
プログラムって学校で習うもんなの?
そんな授業おれの学校にあったら・・・
うはーww夢がひろがりんぐww

てか、高校?進学校とかではやらないよね
専門学校とかかな。。
949デフォルトの名無しさん:2005/12/04(日) 00:56:05
大学でプログラミングの授業やってるんです。
950sage:2005/12/04(日) 01:00:35
問]
関数str_ncmp():src1が示す文字列とsrc2が示す文字列をn文字まで比較し、同じなら0を返し
異なるならば0以外の数値を返す。
[書式]int str_ncmp(char *src1, char *src2, int n)
(注)stdio.h以外のヘッダファイルは使ってはいけない。
951デフォルトの名無しさん:2005/12/04(日) 01:19:42
>>950
次からは宿題スレに逝け

int str_ncmp(char *src1, char *src2, int n)
{
int i;
for(i = 0; i < n; i++){
if(*src1 != *src2){
return 1;
}
src1++;
src2++;
}
return 0;
}
952デフォルトの名無しさん:2005/12/04(日) 01:30:50
>>949 d
やっぱ大学じゃないとやらないのか
高校入る前から鬱だ。。
953デフォルトの名無しさん:2005/12/04(日) 01:32:43
#include<stdio.h>

int main(void){

    char array[10][10];
    char **p;

    p=array;

}

これをコンパイルすると

warning C4047: '=' : 間接参照のレベルが 'char ** ' と 'char (*)[10]' で異なっています。

って言われたんですけど何かおかしいですかね?
954デフォルトの名無しさん:2005/12/04(日) 01:38:00
#include<stdio.h>

int main(void){

    char array[10][10];
    char (*p)[10];

    p=array;

}
955デフォルトの名無しさん:2005/12/04(日) 01:38:47
arrayはarray[10][10]の先頭のアドレスを持つ。
956デフォルトの名無しさん:2005/12/04(日) 01:47:17
>>953
>>1
957デフォルトの名無しさん:2005/12/04(日) 01:48:00
結局arrayは&array[0][0]と同じでchar *型ということですか。
納得しました。
958デフォルトの名無しさん:2005/12/04(日) 02:03:17
>>957
全然ちがう
959デフォルトの名無しさん:2005/12/04(日) 02:16:37
>>957
アドレスは同じだが、意味は全然違うぞ。
960デフォルトの名無しさん:2005/12/04(日) 04:03:13
961デフォルトの名無しさん:2005/12/04(日) 19:57:36
あるデパートでは、買い物3000円以上なら1割引、5000円以上なら2割引で販売している。
キーボードから買い上げ金額を入力して、支払い金額を計算するプログラムをつくりなさい。
ただし、消費税は考えないものとする。

自分なりにやってみたがダメだった↓
#include<stdio.h>
int main(void)
{
int a;
printf("買い上げ金額=");
scanf("%d",&a);
if(a>=5000){
a=a*20/100;
printf("支払い金額=\n",a);
}
else if(a>=3000){
a=a*10/100;
printf("支払い金額=\n",a);
}
else{
printf("支払い金額=\n",a);
}
return 0;
}
962デフォルトの名無しさん:2005/12/04(日) 19:59:31
>>961
プログラム以前の問題だな。
963デフォルトの名無しさん:2005/12/04(日) 20:03:45
#include <stdio.h>
int main()
{
  int a;
  printf("買い上げ金額=");
  scanf("%d",&a);
  if(a >= 5000) a *= 0.8; else if(a >= 3000) a *= 0.9;
  printf("支払金額=%d\n", a);
  return 0;
}
964デフォルトの名無しさん:2005/12/04(日) 20:09:08
>>948
うちの高校にプログラムの授業あるよ。工業高校だけどね。

↓こんなテキスト使ってる
#include <stdio.h>

void main(void) {
int data[5] = {10, 20, 30, 40, 50};
int *p;
int i, n;
n = 0;
p = data;
for(i = 0; i < 5; i++) {
n = n + *p;
p++;
}
printf("合計%d\n", n);
}

もう俺は慣れたよ。。
965デフォルトの名無しさん:2005/12/04(日) 20:10:01
2980円より3000円の方が安いんだな。
966デフォルトの名無しさん:2005/12/04(日) 20:13:32
a=a*20/100;
967デフォルトの名無しさん:2005/12/04(日) 20:15:01
支払い金額が表示されない。

#include<stdio.h>
int main(void)
{
int a;
printf("買い上げ金額=");
scanf("%d",&a);
if(a>=5000){
a=a*0.8;
printf("支払い金額=\n",a);
}
else if(a>=3000){
a=a*0.9;
printf("支払い金額=\n",a);
}
else{
printf("支払い金額=\n",a);
}
return 0;
}
968デフォルトの名無しさん:2005/12/04(日) 20:16:18
>>967
\n=改行
969961:2005/12/04(日) 20:22:24
こうか!

#include<stdio.h>
int main(void)
{
int a;
printf("買い上げ金額=");
scanf("%d",&a);
if(a>=5000){
a=a*0.8;
printf("支払い金額=%d",a);
}
else if(a>=3000){
a=a*0.9;
printf("支払い金額=%d",a);
}
else{
printf("支払い金額=%d",a);
}
return 0;
}
970デフォルトの名無しさん:2005/12/04(日) 20:25:14
>>969
支払い金額の表示
最後に一個書けばいいと思わない?
971デフォルトの名無しさん:2005/12/04(日) 20:25:53
#include<stdio.h>
int main(void)
{
int a;
printf("買い上げ金額=");
scanf("%d", &a);
if(5000 <= a) a *= 0.8;
else if(3000 <= a) a *= 0.9;
printf("支払い金額=%d", a);
return 0;
}
972デフォルトの名無しさん:2005/12/04(日) 20:38:24
>>970さん
そろそろ次スレ立てて下さい
973デフォルトの名無しさん:2005/12/04(日) 20:42:23
キーボードから「c」を入力した時に「OK!」、それ以外の時には「NG!」と出力するプログラムをつくりなさい。
974デフォルトの名無しさん:2005/12/04(日) 20:43:11
宿題スレに行きなさい
975デフォルトの名無しさん:2005/12/04(日) 20:43:31
cでパターンまっちを実装した拡張ないですか?
976デフォルトの名無しさん:2005/12/04(日) 20:47:07
あるよ
977970:2005/12/04(日) 20:47:33
>>972
立てたよー

C言語なら俺に聞け! Part 118
http://pc8.2ch.net/test/read.cgi/tech/1133696815/l50
978デフォルトの名無しさん:2005/12/04(日) 20:50:20
>>976 おしえよ
979デフォルトの名無しさん:2005/12/04(日) 20:51:12
>>976 おしえてよ
980デフォルトの名無しさん:2005/12/04(日) 20:51:53
>>976
(・∀・)カエレ!!
981デフォルトの名無しさん:2005/12/04(日) 20:52:22
何でここはID無いの?
982aaa:2005/12/04(日) 20:53:13
>>981
HN付けると出る
983デフォルトの名無しさん:2005/12/04(日) 20:53:17
>>981
C言語と何の関係が?
984デフォルトの名無しさん:2005/12/04(日) 20:53:43
出なかったw

ハズカシス
985デフォルトの名無しさん:2005/12/04(日) 20:54:10
2 名前: デフォルトの名無しさん [sage] 投稿日: 2005/12/04(日) 20:49:15
IDチェック
986デフォルトの名無しさん:2005/12/04(日) 21:00:53
>>983
自演し放題じゃん
987デフォルトの名無しさん:2005/12/04(日) 21:01:21
そんな瑣末ごとはどうでもいい
988デフォルトの名無しさん:2005/12/04(日) 21:02:17
みんなスーパーハカーだから、IDなんていらないんだよ。
989デフォルトの名無しさん:2005/12/04(日) 21:05:02
へー
990デフォルトの名無しさん:2005/12/04(日) 21:25:05
regex
991デフォルトの名無しさん:2005/12/05(月) 00:51:28
ってどう発音するんですか?
992デフォルトの名無しさん:2005/12/05(月) 00:54:25
>>991
“regular expression”と読むんじゃないか?
993デフォルトの名無しさん:2005/12/05(月) 01:00:54
れげっくす
994デフォルトの名無しさん:2005/12/05(月) 01:09:38
れぐいーえっくす
995デフォルトの名無しさん:2005/12/05(月) 01:10:43
れじっくす
996デフォルトの名無しさん:2005/12/05(月) 01:11:57
りじぇっくす
997デフォルトの名無しさん:2005/12/05(月) 01:14:19
セックス
998デフォルトの名無しさん:2005/12/05(月) 01:16:20
れじぇっくす
999992:2005/12/05(月) 01:17:43
普通は略さないで読むんですか?
ネイティブの人とかはどう発音してるんだろう
1000991:2005/12/05(月) 01:18:36
>>992
すいません>>999は間違えましたorz
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。