C言語なら俺に聞け(入門編)Part 83
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/05/02(月) 11:44:58.35★前スレ
C言語なら俺に聞け(入門編)Part 82
http://hibari.2ch.net/test/read.cgi/tech/1303039075/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 147代目
http://hibari.2ch.net/test/read.cgi/tech/1301553333/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
★ぬるぽ。
長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/
0002デフォルトの名無しさん
2011/05/02(月) 14:34:16.190003デフォルトの名無しさん
2011/05/02(月) 14:38:16.960004デフォルトの名無しさん
2011/05/02(月) 14:39:38.140005デフォルトの名無しさん
2011/05/02(月) 14:54:08.140006デフォルトの名無しさん
2011/05/02(月) 14:58:30.940007デフォルトの名無しさん
2011/05/02(月) 14:58:45.11誰が上手いこと言えとw
金比羅ゴボウとか。
0008デフォルトの名無しさん
2011/05/02(月) 15:17:41.63京野菜ってわけでもないですよね
0009デフォルトの名無しさん
2011/05/02(月) 15:58:59.63乙。
>>2
以下というからには>2で既にその禁止条項が破られている。
>>3
板違い。プログラマの嗜好を聞きたいならマ板へ。
>>4
川魚はどうか。
>>5
PCが壊れない限り時計はいつまででも持つだろ。正しいかどうかは兎も角。
>>6
蕎麦はどう?
>>7
それを言うなら旨いだろ。
>>8
金毘羅さんは香川県にある神社だ。
>>10-
では質問と回答と、それらからの派生の話をどうぞ。
0010デフォルトの名無しさん
2011/05/02(月) 16:01:17.90ためにはどのようにすればいいでしょうか?
教えてください。よろしくお願いします。
void get_dirpath_filename2(const char * src, char * dirpath, char * filename){
char const * const lastSlash = strrchr(src, '\\');
if (lastSlash == NULL) return;
sprintf(dirpath, "%.*s", lastSlash == src ? 1 : lastSlash - src, src);
sprintf(filename, "%s", lastSlash + 1);
}
0011デフォルトの名無しさん
2011/05/02(月) 16:11:16.00こんぴらさんは知ってます。知ってるどころか地元なので蕎麦よりうどんが好きです。
マジレスすると>>7は全スレのこんぴれ→金比羅(→金刀比羅)→きんぴらだとおもうけど、
こんぴらときんぴらは関係ないんだといいたかったんです。
けれどこんぴれとこんぴらも関係ないので、金比羅ごぼうをきんぴらごぼうと解釈しても
問題のない場面だったのかもしれません。
>>10
strrchr(src, '/')も取得して、いずれもNULLではなかった場合、比較してより後ろの方を採用すればどうでしょうか。
0012デフォルトの名無しさん
2011/05/02(月) 16:18:10.58void get_dirpath_filename2(const char * src, char * dirpath, char * filename){
const char *lastSlash = strrchr(src, '\\');
if (lastSlash == NULL) {
lastSlash = strrchr(src, '/');
if (lastSlash == NULL) return;
}
sprintf(dirpath, "%.*s", lastSlash == src ? 1 : lastSlash - src, src);
sprintf(filename, "%s", lastSlash + 1);
}
0013デフォルトの名無しさん
2011/05/02(月) 16:27:57.550014デフォルトの名無しさん
2011/05/02(月) 16:30:59.99それもいいかもね。
srcと同じサイズのバッファを用意して、コピーして置換かけてって
操作が必要だからCだと、シンプルさに欠けるかもしれない。
あとdirpathに書き込むとき、元に戻す操作も必要になるかも。
0015デフォルトの名無しさん
2011/05/02(月) 16:57:46.19それもいいかもね。
0016デフォルトの名無しさん
2011/05/02(月) 17:11:08.22よろしくお願いします。
0017デフォルトの名無しさん
2011/05/02(月) 17:20:04.63C標準ではありません。
例えばディレクトリとファイルが同名で同時に同じディレクトリ内に存在できる変態OSも在り得るので、標準で用意できないのです。
0018デフォルトの名無しさん
2011/05/02(月) 17:32:05.15模範解答:
フォルダのアイコンで表示されているのがフォルダ。
ファイルのアイコンで表示されているのがファイル。
0019デフォルトの名無しさん
2011/05/02(月) 17:35:34.70#include <tchar.h>
#include <shlwapi.h>
#pragma comment(lib, "shlwapi.lib")
BOOL IsFile( LPCTSTR _name)
{
WIN32_FIND_DATA FindData;
HANDLE hFind = FindFirstFile( _name, &FindData);
if(hFind == INVALID_HANDLE_VALUE)
return 1;
FindClose(hFind);
if(!(FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
return 0;
return 1;
}
int main(){
char str[256];
LPCTSTR temp;
scanf("%s",&str);
temp=str;
printf("%d\n",IsFile(temp));
}
これでどうでしょう?
0020デフォルトの名無しさん
2011/05/02(月) 17:45:11.650021デフォルトの名無しさん
2011/05/02(月) 17:47:33.600022デフォルトの名無しさん
2011/05/02(月) 17:50:37.02見事に TCHAR の意味を分かってないな
昔の自分のようだ
0023デフォルトの名無しさん
2011/05/02(月) 19:26:24.84(昔から有効に使われてなったけど)
0024デフォルトの名無しさん
2011/05/02(月) 19:55:41.630025デフォルトの名無しさん
2011/05/02(月) 20:27:28.69いままでの経験からするとアレだな
0026デフォルトの名無しさん
2011/05/02(月) 21:53:26.89砂の挙動計算(堆積,風による移動,衝突など)をしたいと思っています.
アドバイスください.あるいは参考にできそうなページあれば教えてください.
計算方法はルンゲクッタ法を使い,剛体球モデルを用いる予定です.
特に悩んでいるのは砂の初期配置についてや,無数の砂をどのように計算するか,です.
よろしくお願いします.
0027デフォルトの名無しさん
2011/05/02(月) 22:01:48.950028デフォルトの名無しさん
2011/05/02(月) 22:16:06.30◆こんなソフトウェアつくってください〜Part15〜◆
http://hibari.2ch.net/test/read.cgi/software/1278687392/
0029デフォルトの名無しさん
2011/05/02(月) 22:45:47.13char *ptr = "string";
→「ptrは"string"の先頭アドレス('s'が保存されているアドレス)を参照しており、*ptrで's'を取り出すことができる」
char ptr[] = "string";
→「このptr自身も先頭のアドレスを参照しており、*ptrで's'を取り出すことができる。ptr[0]にするとアドレスの内容になる。」
上記の解釈で良かったでしょうか?つまり一緒ですよね?
また、両方ともアドレス上に連続して's', 't', 'r', 'i', 'n', 'g', '\0'が1文字ずつ並ぶと考えて良いですか?
て違うのでしょうか?
0031デフォルトの名無しさん
2011/05/02(月) 22:49:54.27char *ptr = "string";
こっちは、文字列がどっかの領域にあってポインタにはそのアドレスが入る。
char ptr[] = "string";
こっちは、配列が確保されてそこに"string"がコピーされる。
0032デフォルトの名無しさん
2011/05/02(月) 23:04:13.14よくある勘違いだな。
char *pはポインタ型の(だいたい4byte)変数に、アドレスの値が入ってる。
char a[]はcharの固まりという型?の(文字列数n byte+終端文字1 byte)変数に、モロに文字列が並んでいる。
int main() {
char *p = "abcdefg";
char a[] = "hijklmn";
printf("%d %d\n", sizeof p, sizeof a); // 変数のサイズをみてみよう
printf("%p %p\n", p, &p); // 値と、変数pのアドレス
printf("%p %p\n", a, &a); // ポインタに成り下がった変数の先頭アドレスと、変数aのアドレス
}
ただ、配列はちょくちょくポインタに成り下がるので注意。
関数に配列名を渡した時、関数内では単にポインタとして扱う。
詳しくは「エキスパートCプログラミング」って本を参照されたい。
0033デフォルトの名無しさん
2011/05/02(月) 23:08:46.350034デフォルトの名無しさん
2011/05/02(月) 23:14:27.37エキCの読者層も広くなったものだな
0035デフォルトの名無しさん
2011/05/02(月) 23:17:37.49ptr[0] = 'a';
ができないことの説明になってないんだよな
0037デフォルトの名無しさん
2011/05/02(月) 23:24:52.700038デフォルトの名無しさん
2011/05/02(月) 23:35:12.86できることとやっていいことの区別くらいしような
0039デフォルトの名無しさん
2011/05/02(月) 23:35:52.65それだといちいち MessageBoxW とかやらないといけないから面倒だろ。
0040デフォルトの名無しさん
2011/05/02(月) 23:55:03.92それでもいいんじゃない?
TCHARを使っていても、>>19 みたいに片方でしか動かないコードって
気持ちわるいじゃん。
ぱっと見た目でワイド文字対応って分かるとすっきる。
まあ世の中のTCHAR使ってるコードの95%は片方しでしかコンパイルできない
コードだろうけど。
0041デフォルトの名無しさん
2011/05/03(火) 00:30:05.37>世の中のTCHAR使ってるコードの95%は片方しでしかコンパイルできない
それでTCHARを使う意味あるのですか?
0042デフォルトの名無しさん
2011/05/03(火) 00:32:57.67他人が書くコードなんてどうしようもないだろ
0043デフォルトの名無しさん
2011/05/03(火) 00:36:29.86俺は意味がないと思ってるから>>23みたいに人には勧めていない。
さらに言えば、文字の編集があるところでマルチバイト文字、ワイド文字と
両方で動くように意識してコードを書いてる人はさらに少数派だろうし、
両方でコンパイルしてテストまでしてるところとなるとほぼゼロだと思う。
0044913
2011/05/03(火) 04:44:06.79if(x>=12 && x<=14 &&y>=12 && y<=14)break;
みたいに逆にしたらできた。ちなみに二重for文で書いてた
■■■
■□■こんな感じに(図)
■■■
みんな懸命に答えてくれてありがとう。参考になった
説明が悪いとか情報を小出しにすんなとか話が違うとか思ったらすまんこすまんこ
004529
2011/05/03(火) 08:09:01.86ありがとうございます。
どちらも値を*(ptr+i)、アドレスを(ptr+i)で表示させてみたらアドレスも1バイトずつ進み結果が同じになったので、てっきり同じかと思ってしまいました。
まだ>>32の最後のprintfがなぜ同じアドレスになるのかが理解不能なので勉強しなおします。
「ポインタに成り下がる」という言葉も初めて聞いたくらいなので。
0046デフォルトの名無しさん
2011/05/03(火) 08:14:15.80ただのその場の言い回しだろう
0047デフォルトの名無しさん
2011/05/03(火) 08:27:31.55アドレス p 0xどっか
↓ ↓
値 0xどっか "abcdefg"
変数aはchar型配列を格納する変数
アドレス a
↓
値 "hijklmn"
pの場合、格納している値(p)と自分自身のアドレス(&p)は違う
aの場合、配列を格納する変数に添え字をつけないと配列の先頭アドレスを示すので、
配列の先頭アドレス(a)はaのアドレス(&a)と同じになる
0048デフォルトの名無しさん
2011/05/03(火) 08:46:21.39別に0xをつけなくてもどっかはどっかだよ。
アドレスは習慣的に16進で扱うことが多いけどそこに意味はない。
004929
2011/05/03(火) 08:48:01.53ありがとうございます。
>>47の上の図でなんとなくわかったかも。
char str[] = "ABC"
char *ptr = str;
と
char *ptr = "ABC";
は同じってこと?(どちらもptrは"ABC"が格納されている配列の先頭アドレスを指す?)
0050デフォルトの名無しさん
2011/05/03(火) 08:49:42.70sizeof演算子はsize_tになるから、そのまま%dで受けるのは宜しくない。
intでキャストするのが無難。
0051デフォルトの名無しさん
2011/05/03(火) 08:54:25.110052デフォルトの名無しさん
2011/05/03(火) 08:55:46.12>50に言っているとしたら、あんたがね。
0053デフォルトの名無しさん
2011/05/03(火) 09:00:13.30これ気持ち悪いから好きじゃない。
初期化時だけの特殊ルールだし。
せめて
char ptr[] = {"string"};こういう表記にしてほしかった。
0054デフォルトの名無しさん
2011/05/03(火) 09:07:51.32なんかグダグダだよな。
使う時の定義は
MBCS ←→ UNICODE
なのに、APIのサフィクスは
〜A(ANSI) ←→ 〜W(wide character)
だもんな。
そも、Unicode っても UTF-16 だと決め打ちだしな。
0055デフォルトの名無しさん
2011/05/03(火) 09:19:34.48その解釈でOK
ポインタに成り下がるっていうのは関数の仮引数に配列名を渡したときに起きること。
今はあまり気にせずそういうものだと覚えてしまったほうがいい。
Cで一番やっかいな箇所だと思う
>>53
それ言うならポインタ変数の宣言の仕方もなんだかなあと思う。
アドレスの値を取り出すのと同じなんだぜ
そりゃ初学者が混乱する
0056デフォルトの名無しさん
2011/05/03(火) 09:24:58.28というか使う人間がダメな子だとどうしようもない状況に簡単に陥るというか。
VBならStringで宣言しときゃ可変長で1バイト文字だろうがなんだろうがバンバン詰め込めるし簡単。
0057デフォルトの名無しさん
2011/05/03(火) 09:27:32.86>アドレスの値を取り出すのと同じなんだぜ
同じだから良いんじゃん。
type* var; みたいに書くアホにはそれが解ってない。
0058デフォルトの名無しさん
2011/05/03(火) 09:29:27.98.net以前のVBもすでにワイド文字化されてて、文字列の長さを
求めるのにLenとLenBと二つになってたり、グダグダ感がある。
0059デフォルトの名無しさん
2011/05/03(火) 09:33:14.47ポインタに成り下がるについて説明したいと思います。
少し難しいので、>>55さんが言うように、今は結論だけでもいいかもしれません。
実は私もこのことを最近知ったので、識者の方、間違いがあれば訂正願います。
char a[]で、aは、char[]型なんだけど、3つの場合を除いて、aがchar*型になってしまう
ということです(このことをポインタに成り下がると表現する人がいます)。
具体的には、a == (char*)&aのようなことが起こります(aのアドレス(&a)を取得して、
&aはchar(*)[]型なので、char*に変換)。
char a[]は、char*型になってしまう場面のほうが多いため、aをchar*型であると勘違いす
る初心者は多いです(私もそうでした)。
>>32の例文で以下のようにポインタを1つ進めてみると違いが分かるかもしれません。
printf("%p %p\n", a, &a); // ポインタに成り下がった変数の先頭アドレスと、変数aのアドレス
printf("%p %p\n", a + 1, &a + 1); // ポインタを1つ進めてみると
0060デフォルトの名無しさん
2011/05/03(火) 09:38:31.93type& var1, var2; でvar1もvar2もtype&になると。
0061デフォルトの名無しさん
2011/05/03(火) 09:57:28.51違う。
下は配列を指していない。
書き換えできない領域を指している可能性がある。
>55
>ポインタに成り下がるっていうのは関数の仮引数に配列名を渡したときに起きること。
配列からポインタへの生成は、いくつかの例外を除き常に起こる。
K&Rの参照マニュアルA7.1を引用すると
式がTの配列であれば、式の方はTへのポインタに変更される。
この式が、単項&の演算子、あるいは++,--,sizeofの被演算子、
あるいは.演算子の左演算数の物であれば、この変換は行われない。
>59
>a == (char*)&aのようなことが起こります
配列の先頭要素を指すポインタだから、 a => &a[0]の方が適切だと思います。
char a[10]; の時に&aはchar[10]を指すポインタ(型はchar (*)[10])というあたり、
配列とポインタの関係性を把握する関門だと思ってます。
0062デフォルトの名無しさん
2011/05/03(火) 10:00:51.03%u って知ってる?更にC99が使えるなら %zu にすれば完璧
0064デフォルトの名無しさん
2011/05/03(火) 10:49:16.100065デフォルトの名無しさん
2011/05/03(火) 10:53:00.62暗黙でsize_tからintに変換されるけど先に明示的にintでキャストしたほうがいいってこと?
0066デフォルトの名無しさん
2011/05/03(火) 10:57:11.780067デフォルトの名無しさん
2011/05/03(火) 11:27:04.98定期的に議論になるので、あまり良くない言葉だったのかもしれないけどね。
配列へのポインタが、配列の先頭要素へのポインタに変換されることをいう。
0068デフォルトの名無しさん
2011/05/03(火) 11:28:08.520069デフォルトの名無しさん
2011/05/03(火) 11:29:41.20一体C言語がつくられたのがどれだけ昔で
マシンパワーがどれくらいだったかと思っているんだ。
0070デフォルトの名無しさん
2011/05/03(火) 11:31:22.23それぞれの型で宣言するのはポインタ演算を実現させるため?
0071デフォルトの名無しさん
2011/05/03(火) 11:34:03.47それもあるし、サイズが違う場合もある。
0072デフォルトの名無しさん
2011/05/03(火) 11:35:20.50一番新しい規格はC99だよ?いつまで古い規格にしがみついてるの?
0073デフォルトの名無しさん
2011/05/03(火) 11:36:02.19俺の今使ってる環境では厳密にはどころか実際に等しくないぞ
size_t=8バイト
int=4バイト
0074デフォルトの名無しさん
2011/05/03(火) 11:39:52.36charr* と int* のサイズが違う環境って例えば何?
0075デフォルトの名無しさん
2011/05/03(火) 11:45:11.87具体的な環境は知らない。
0076デフォルトの名無しさん
2011/05/03(火) 11:47:51.17えっ? すると「サイズが違う場合もある」は規格か何かに明記されてるってこと?
0077デフォルトの名無しさん
2011/05/03(火) 11:54:37.48アンタが一番Cについて良く知ってるよ、そういう事にしといてやる。
0078デフォルトの名無しさん
2011/05/03(火) 11:55:17.65C FAQに例が載ってる
http://www.kouno.jp/home/c_faq/c5.html#17
0079デフォルトの名無しさん
2011/05/03(火) 11:56:52.82char *p = "…";
int *n;
n = (int*)p;
p = (char*)n;
これやってpの値が元にもどる保障がないってのは、サイズも含めて違う場合も
あるって思ってるけど。
0080デフォルトの名無しさん
2011/05/03(火) 12:00:20.28「サイズが違う場合もある」かどうかそのものが焦点じゃね。
0081デフォルトの名無しさん
2011/05/03(火) 12:01:48.78ANSI-Cに準拠していない化石マシン用コンパイラの話ですか
JIS X3010:2003の6.3.2.3 ポインタ
voidへのポインタは, 任意の不完全型若しくはオブジェクト型へのポインタに,
又はポインタから, 型変換してもよい。任意の不完全型又はオブジェクト型への
ポインタを, voidへのポインタに型変換して再び戻した場合, 結果は元のポインタと
比較して等しくなければならない。
0082デフォルトの名無しさん
2011/05/03(火) 12:07:01.58そういう修飾がなくても、データのポインタと関数のポインタならサイズが違ってた。
0083デフォルトの名無しさん
2011/05/03(火) 12:10:29.30あ、そっか。
intより小さい整数型だけintに変換されるんだね。
0084デフォルトの名無しさん
2011/05/03(火) 12:11:27.23関数型ポインタじゃなくてintとcharのポインタの話しなんですけど…
0085デフォルトの名無しさん
2011/05/03(火) 12:11:58.83それは例えば int* → void* → int* とかができればいいわけだから、
void* がどのポインタ型も納めれるくらい充分に大きなサイズがあれば問題なく満たせるよな
もし int* が void* より小さかったとしても、その規定に反しないよな
0086デフォルトの名無しさん
2011/05/03(火) 12:37:26.66これが保障されないのはサイズの問題じゃなくて、アライメントの問題なんじゃ?
0087デフォルトの名無しさん
2011/05/03(火) 12:41:29.67具体的なことは書いてないけど、これのNo.4にchar*のサイズが違う
環境があったって書いてあるな。
やっぱ型によってポインタのサイズが違うことがあるのかな?
0088デフォルトの名無しさん
2011/05/03(火) 12:50:36.39するとよく見かける glibc の memcpy とかの実装(アライメント調整して後は unsigned int で転送)
とか言うのはポータビリティが無いのか
0089デフォルトの名無しさん
2011/05/03(火) 12:57:04.4550 は何かおかしいこと言ってるか? 「無難」という文言が俺は好かんが
0090デフォルトの名無しさん
2011/05/03(火) 13:25:45.83それは>>52が指摘しているのでは?
0091デフォルトの名無しさん
2011/05/03(火) 15:22:22.66i8086/MS-DOS では、場合(メモリモデル)によっては、int *, と int (*)() が違うことがありました。
コンパクトメモリモデルなら、たしか sizeof(int *) == 4, sizeof(int (*)) == 2 だったかな。
0092デフォルトの名無しさん
2011/05/03(火) 15:32:12.13>>84
0093デフォルトの名無しさん
2011/05/03(火) 21:45:45.09ketaに-6とかを入れて少数6桁目以降を切り捨てようとしても
出来なくなります。
どうすればいいでしょうか。
double cutKeta(double value,int keta) //切り捨てる
{
double tmp;
tmp=pow(10.0,(double)keta);
value/=tmp;
value=((double)((int)value))*tmp;
return value;
}
0094デフォルトの名無しさん
2011/05/03(火) 21:55:29.10・小数点より上位は別にしておいて、小数点以下を10^k倍して、整数に入れる。
それから上位と10^-kを掛けた整数を足す。
ーーこんな感じのアイデア2個
0095デフォルトの名無しさん
2011/05/03(火) 21:58:37.350096デフォルトの名無しさん
2011/05/03(火) 22:11:26.29>value=((double)((int)value))*tmp;
value = floor(value) * tmp;
0097デフォルトの名無しさん
2011/05/03(火) 22:11:54.53例えば、小数部分を切り落とす関数floorがあるので、これを使う
10^n倍すればn桁ぶん値が「ズレる」ので、任意の位を切り落とすことができる
負の値に対してはうまく動かないので注意
#include <math.h>
double cutKeta(double value,int keta) //切り捨てる
{
return floor(value * pow(10., keta - 1)) / pow(10., keta - 1);
}
0098デフォルトの名無しさん
2011/05/03(火) 22:15:41.87朝適当なこと言ってしまったな見た人言った人すまん
>>95
なるほどと思ったんだけど論外なの?
0099デフォルトの名無しさん
2011/05/03(火) 22:27:23.65レスありがとうございました。
もう少し調べたら少数7桁まで切り捨てれるのですが
8桁目以降が残ってしまうようです。
floorを使ったら切り上げの問題が解決できたけど
少数8桁目以降が残る問題は解決できませんでした。
0100デフォルトの名無しさん
2011/05/03(火) 22:29:34.760101デフォルトの名無しさん
2011/05/03(火) 22:39:01.44精度の問題。
double const pow10 = pow(10., (double) keta);
return floor(value / pow10 + 1e-15) * pow10;
とでもしてみたら? 1e-15は適宜調整と言うことで。
>>98
私は論外とまでは思わないけれど。
でもまぁ、文字列バッファのサイズを幾つにしたら安全になると思う?
そういった諸々を考えると↑で重い処理はfloor()とpow()位だから
文字列処理するメリットはないよ。
0102デフォルトの名無しさん
2011/05/03(火) 22:41:14.380103デフォルトの名無しさん
2011/05/03(火) 22:53:39.67そうか必要バッファサイズが引数依存になってしまうのか 理解した
俺も実装する前にこれくらいは気がつく頭にならないとなぁ・・・
0105デフォルトの名無しさん
2011/05/03(火) 22:58:56.990106デフォルトの名無しさん
2011/05/03(火) 23:16:46.85ヒント: cutKeta(1e100, 10)
0107デフォルトの名無しさん
2011/05/03(火) 23:20:39.06fmod を引けばいい
0108デフォルトの名無しさん
2011/05/03(火) 23:21:17.44馬鹿正直に展開しなければ、良いんじゃないの?
0109デフォルトの名無しさん
2011/05/03(火) 23:26:46.70だから、どこで制限するとか考えるくらいなら数値処理でいいでしょってのが>101の主張。
尤も、その数値処理も誤差の問題をクリアできないようだけど。
0110デフォルトの名無しさん
2011/05/03(火) 23:28:54.78floor()で切り捨てる前に、量子化誤差やpow()の誤差を取り除くために足したんだけど足りなかった。
IEEEのdoubleなら0.1足しちゃっていいみたい。実験結果はこれ。
http://ideone.com/7ts6i
0111デフォルトの名無しさん
2011/05/03(火) 23:39:00.93double cutKeta(double value,int keta) //切り捨てる
{
return value-fmod(value, pow(10.0,(double)keta));
}
0112デフォルトの名無しさん
2011/05/03(火) 23:59:21.26%20leo.%20h%20PdHr%20%21ePlo%21Ilkwil
これはとある文章を暗号化したものです
これを解読できますか?
これ結構強いと思うので敗れる方がいなければ暗号化技術をオープンソース化します
Google Codeに掲載する予定です(破られなければ)
0113デフォルトの名無しさん
2011/05/03(火) 23:59:41.40そういうレベルの話じゃないよ
0114デフォルトの名無しさん
2011/05/04(水) 00:52:56.34どういうレベルの話?
0115デフォルトの名無しさん
2011/05/04(水) 03:03:37.50vipでやれ。エサも忘れずにな。
0116デフォルトの名無しさん
2011/05/04(水) 03:36:48.86わかった!
HelloWorld!
0117デフォルトの名無しさん
2011/05/04(水) 03:52:17.00結構強いと思うだとか
破られるのか破られないのかよく分かんないんじゃ使いものにならないよ
0118デフォルトの名無しさん
2011/05/04(水) 08:28:16.410119デフォルトの名無しさん
2011/05/04(水) 10:01:10.80そんなに短くありません
0120デフォルトの名無しさん
2011/05/04(水) 13:32:18.81個人的にはワイドに分類だと思うんだが。
0121デフォルトの名無しさん
2011/05/04(水) 13:34:58.85ありがとう
0122デフォルトの名無しさん
2011/05/04(水) 13:56:37.65ワイドはwchar_tでUTF-8を扱うやつはいないだろ。
0123デフォルトの名無しさん
2011/05/04(水) 13:57:32.96「wchar_tでUTF-8を扱うやつはいないだろ。」
だ。
0124デフォルトの名無しさん
2011/05/04(水) 13:58:22.74とりあえずネットのゴミをこれ以上増やすな
ただでさえ不要なコンテンツが検索引っ掛かってウザいのに
0125デフォルトの名無しさん
2011/05/04(水) 14:00:42.840126デフォルトの名無しさん
2011/05/04(水) 14:09:08.20つ鏡
0127デフォルトの名無しさん
2011/05/04(水) 14:12:37.21UTF-8 は可変長バイトの文字符号化形式。従ってマルチ。
ちなみにUTF-16もサロゲートペア表現があるので厳密には可変長バイトの
文字符号化形式でマルチなんだけど、一般的にはワイドと言われている。
012893
2011/05/04(水) 14:28:30.12>>110
やってみたけどダメでした。
誤差はfloorではなく最後の掛け算で発生するみたいです。
>>107>>111
やってみたけど結果は変わりませんでした。
0129デフォルトの名無しさん
2011/05/04(水) 14:31:03.52ってことは有効桁以上を求めてるのか
long double で誤魔化すのが楽かな
0130デフォルトの名無しさん
2011/05/04(水) 14:43:02.82013194
2011/05/04(水) 14:45:00.840132デフォルトの名無しさん
2011/05/04(水) 14:45:43.670133デフォルトの名無しさん
2011/05/04(水) 14:47:46.520134デフォルトの名無しさん
2011/05/04(水) 14:49:39.27わかってない人は黙ってください
0135デフォルトの名無しさん
2011/05/04(水) 14:50:08.60計算抜きで直に代入しようとしても無理ってことだよ
0136デフォルトの名無しさん
2011/05/04(水) 15:00:43.700137デフォルトの名無しさん
2011/05/04(水) 15:06:08.19お前もレス読んでない人か
その方法は10進数基準での切り捨てには使えないだろw
013893
2011/05/04(水) 15:32:42.35double a=1.2345678912345;
a=cutKeta(a,-6);
結果予想
a=1.2345670000000000
実行結果
a=1.2345670461654663
0139デフォルトの名無しさん
2011/05/04(水) 15:37:13.37これだとどうなる?
#include <stdio.h>
#include <math.h>
double cutKeta(double value,int keta) //切り捨てる
{
return value-fmod(value, pow(10.0,(double)keta));
}
int main(void)
{
double a=1.2345678912345;
a=cutKeta(a, -6);
printf("%.30f\n", a);
return 0;
}
0140デフォルトの名無しさん
2011/05/04(水) 15:39:08.500141デフォルトの名無しさん
2011/05/04(水) 15:42:13.73第二引数の値を内部で利用してるからじゃね?想像だけど。
014293
2011/05/04(水) 15:43:11.57visualC++のデバッガを使ってみてたので
printf("%.30f\n", a);は使ってないですが
a=1.2345670461654663になりました。
0143デフォルトの名無しさん
2011/05/04(水) 15:43:23.32関東の某大学の金曜の単元とってる人、宿題乙wwwww
0144デフォルトの名無しさん
2011/05/04(水) 15:45:58.48こんなの宿題でるの?
正解とかあるのか。
0145デフォルトの名無しさん
2011/05/04(水) 15:46:41.167桁精度ってことは float だろ
0147デフォルトの名無しさん
2011/05/04(水) 15:58:00.95質問した者ですが、偶然にもそんな宿題を出した大学があったんだ
0148デフォルトの名無しさん
2011/05/04(水) 16:12:41.51デバッガは正しいと思うが、>>142が指摘してるようにdoubleになってないように思う
1.234567をfloatに入れると丸め誤差が発生して1.23456704616547...となる
0149デフォルトの名無しさん
2011/05/04(水) 16:13:12.38英語のwikipediaレベルじゃ何も書いてないな
0150デフォルトの名無しさん
2011/05/04(水) 17:50:07.17どうせ
mallocは領域全体のサイズを引数として取るのに対し
callocは個々の領域のサイズと個数を取るため
とかだろ
0151デフォルトの名無しさん
2011/05/04(水) 17:59:32.710152デフォルトの名無しさん
2011/05/04(水) 18:01:20.60学生の宿題であること
出題者が問題歪めてる可能性を考えると
求められている回答はこんな感じじゃないかなってことだよ
0153デフォルトの名無しさん
2011/05/04(水) 18:04:36.960154デフォルトの名無しさん
2011/05/04(水) 18:31:19.46宿題が終わるであろう1週間後ぐらいにまた同じ質問をしに来ます。
0155デフォルトの名無しさん
2011/05/04(水) 18:36:36.83int i;
0156デフォルトの名無しさん
2011/05/04(水) 18:36:56.94ミスった。すまん
0157デフォルトの名無しさん
2011/05/04(水) 18:37:11.95質問しなおしたって回答なんてでないよ。
0158デフォルトの名無しさん
2011/05/04(水) 18:49:34.42int i;
for(i = 0; i < 2; i++) {
printf("%s %p",*(str + i),*(str+i));
0159デフォルトの名無しさん
2011/05/04(水) 19:14:40.990160デフォルトの名無しさん
2011/05/04(水) 19:17:40.01コピー機を買いたいんですがパッケージに対応インターフェイスとか
書かれてました。この場合のインターフェースとは何ですか?
後C言語の場合インターフェースとは何でしょう?
まじで機械音痴つーか、IT的な想像力がないのかもしれませんが・・
0161デフォルトの名無しさん
2011/05/04(水) 19:21:16.910162デフォルトの名無しさん
2011/05/04(水) 19:42:40.260163デフォルトの名無しさん
2011/05/04(水) 19:44:28.490164デフォルトの名無しさん
2011/05/04(水) 19:47:51.73「構造体は memset(&hoge, 0, sizeof hoge) が必須」とキリる助教授がいた頃の名残
サイズをバイト数ではなくオブジェクト数で扱いゼロクリアまでできる気の利いた関数がかっこよかったんだよ
0165デフォルトの名無しさん
2011/05/04(水) 19:53:24.28http://www.bohyoh.com/CandCPP/FAQ/FAQ00096.html
0166デフォルトの名無しさん
2011/05/04(水) 20:14:36.94保証が欲しいのは値が 0 であることだけで、全ビットが 0 かどうかじゃない
もっと言うなら全ゲートが L レベルを出力しているかどうかじゃない
負論理で H であっても値が 0 であることだけが重要なんだ
malloc が境界調整要求を満たさないアドレスを返したら規格違反であり
そのような処理系でやむを得ず回避策をとることはあっても少なくとも一般論ではない
原発問題にしてもそうだがセンセイの権威の前に目が曇ることには気をつけような
0167デフォルトの名無しさん
2011/05/04(水) 20:46:50.47頭大丈夫か
0168デフォルトの名無しさん
2011/05/04(水) 20:49:21.07大丈夫じゃない頭に大丈夫かと聞いたらどんな答えになると思う? おまえ向いてないよ
0169デフォルトの名無しさん
2011/05/04(水) 20:54:11.84一番いい頭を頼む。
0170デフォルトの名無しさん
2011/05/04(水) 21:00:00.30確保だけならmalloc
初期化付き確保ならcalloc
というか、関数の動作も調べん輩がプログラムやろうというのが...
0171デフォルトの名無しさん
2011/05/04(水) 21:03:02.20話題になってるのは、calloc()とmalloc()の引数の違いだろ。
0172デフォルトの名無しさん
2011/05/04(水) 21:06:57.890173デフォルトの名無しさん
2011/05/04(水) 21:13:18.62ドヤ顔で「関数の動作くらい調べろや」って。
0174デフォルトの名無しさん
2011/05/04(水) 21:14:14.79> mallocとcallocは何故引数の数が違うのですか?
どちらもメモリを確保するが、
mallocは引数に必要なサイズを指定して呼び出すのに対し、
callocは引数に要素のサイズとその数を指定している。
0175デフォルトの名無しさん
2011/05/04(水) 21:16:18.900176デフォルトの名無しさん
2011/05/04(水) 21:18:03.690177デフォルトの名無しさん
2011/05/04(水) 21:19:40.660178デフォルトの名無しさん
2011/05/04(水) 21:20:06.00必要なパラメータの数が違うからじゃだめなの?
引数の数が同じってのはmallocもサイズと数を受けるってこと??
0179デフォルトの名無しさん
2011/05/04(水) 21:21:18.510180デフォルトの名無しさん
2011/05/04(水) 21:28:18.210181デフォルトの名無しさん
2011/05/04(水) 22:17:22.560182デフォルトの名無しさん
2011/05/04(水) 22:22:36.630183デフォルトの名無しさん
2011/05/04(水) 22:27:34.20質問者の意図を理解できる>>181が回答してよ
0184デフォルトの名無しさん
2011/05/04(水) 22:29:09.16エスパーがいるとでも
ここまで読んだ
183 名前:デフォルトの名無しさん [sage]: 2011/05/04(水) 22:27:34.20
アホどもは相手しなくて良いから、
質問者の意図を理解できる>>181が回答してよ
0185デフォルトの名無しさん
2011/05/04(水) 22:32:34.06分ける必要性って何でしょうか?
あとどんな言語どんなコードであっても
逆アセンブラで解読されてしまうのでしょうか?
0186デフォルトの名無しさん
2011/05/04(水) 22:58:33.56LIBとしておけるし
つか、広い意味ではアセンブラレベルが読める人ならどの言語も関係ないわな
0187デフォルトの名無しさん
2011/05/04(水) 23:01:58.37最低級言語ってのはC言語であろうがjavaであろうが共通ではないのですか?
0188デフォルトの名無しさん
2011/05/04(水) 23:04:25.63馬鹿
相手すんなよ
スレチはさっさと消えろボケ
0189デフォルトの名無しさん
2011/05/04(水) 23:08:08.64別の言語をターゲットにする言語もあるよ
コンパイルすると C のソースコードを出力する様にすれば、
アセンブラの知識は不要になる
0190デフォルトの名無しさん
2011/05/04(水) 23:29:41.28何故なんだろう。
コピペしてわざわざ消していかないといけない・・・
0191デフォルトの名無しさん
2011/05/04(水) 23:36:46.640192デフォルトの名無しさん
2011/05/04(水) 23:38:03.41消えろゴミ
0193デフォルトの名無しさん
2011/05/04(水) 23:40:28.65全ての行に_があるから消すのに5分もかかったwww
0194デフォルトの名無しさん
2011/05/04(水) 23:41:08.78大きなプログラムを作成するのに、一つのソースファイルだけで記述するのではなく、部分を複数/多数のソースファイルで記述することが多い。
それらのソースファイル群を一つずつ(可能な限り)機械語に変換するのが、コンパイル。コンパイルされた結果はオブジェクトファイル。
オブジェクトファイルを最後に一つに束ねるのがリンカ。
具体的な話については、昔は MS-DOS の事情を詳しく説明した書籍があったが、今はどうだろうか。
0195デフォルトの名無しさん
2011/05/04(水) 23:41:25.010196デフォルトの名無しさん
2011/05/04(水) 23:41:43.25ああ?
0197デフォルトの名無しさん
2011/05/04(水) 23:42:18.12ここはC言語のスレだ
死ね禿
0198デフォルトの名無しさん
2011/05/04(水) 23:44:48.91C言語でやってみろよカスが
0199デフォルトの名無しさん
2011/05/04(水) 23:46:28.27どっちにしろエディタの置換機能ぐらい使えよって話だが
0200デフォルトの名無しさん
2011/05/04(水) 23:47:11.11作ってくださいスレに行けよこの文盲が
0201デフォルトの名無しさん
2011/05/04(水) 23:52:27.06printf(…);
半角スペースでインデントする方法もあることはあって、
2chで広めようとしたけどぜんぜん広まらなかった。
なんかむやみに煽るやつとかいたし。
0202デフォルトの名無しさん
2011/05/04(水) 23:54:55.450203デフォルトの名無しさん
2011/05/04(水) 23:57:15.96コピペしても半角スペースですけど。
0204デフォルトの名無しさん
2011/05/04(水) 23:59:29.48こうならない?
0205デフォルトの名無しさん
2011/05/05(木) 00:01:18.08& #160;& #160;& #160;& #160; printf(…);
0206デフォルトの名無しさん
2011/05/05(木) 00:05:13.80まあほとんどエディタに貼り付けるから問題ないんじゃない?
0207デフォルトの名無しさん
2011/05/05(木) 00:07:41.20貼り付けた結果がどうなるかはエディタ次第みたい
0208デフォルトの名無しさん
2011/05/05(木) 00:08:26.470209デフォルトの名無しさん
2011/05/05(木) 00:12:13.770210デフォルトの名無しさん
2011/05/05(木) 00:15:32.610211デフォルトの名無しさん
2011/05/05(木) 00:16:01.47s/\&/\&/g
s/ /\ /g
s/"/\"/g
s/</\</g
s/>/\>/g
0212デフォルトの名無しさん
2011/05/05(木) 00:17:49.93と/**/じゃないのも相当めんどい。
0213デフォルトの名無しさん
2011/05/05(木) 00:17:51.54ただ全角スペースだけはダメだ
0214デフォルトの名無しさん
2011/05/05(木) 00:33:58.79出てワロタww何でそんだけでかいコード書いて実行してエラー確認してない
のか疑問に思う。
0215デフォルトの名無しさん
2011/05/05(木) 00:38:52.710216デフォルトの名無しさん
2011/05/05(木) 00:53:23.460217デフォルトの名無しさん
2011/05/05(木) 00:56:12.79それってリンカのオプションで何とかならないか?
0218デフォルトの名無しさん
2011/05/05(木) 00:56:22.39簡単な方法はいくらでもあるが、_をスペースに変換するプログラムを作ってみたらどうだい
0219デフォルトの名無しさん
2011/05/05(木) 00:58:01.87Cygwinだとレジストリを操作するらしい
0220デフォルトの名無しさん
2011/05/05(木) 01:04:07.11どいうこと?
レジストリが操作されちゃうから、そのプログラムはダメって事?
0221デフォルトの名無しさん
2011/05/05(木) 01:04:21.22誤爆?
0222デフォルトの名無しさん
2011/05/05(木) 01:06:41.87そんなことできたらノーベル賞取れます。
0223デフォルトの名無しさん
2011/05/05(木) 01:10:18.61例外:
フォルダのアイコンのEXE
0224デフォルトの名無しさん
2011/05/05(木) 01:12:39.250225デフォルトの名無しさん
2011/05/05(木) 01:13:35.930226デフォルトの名無しさん
2011/05/05(木) 01:13:55.27probably corrupted stack を出すのは gcc 系の開発環境
バグじゃなきゃ、コイツが出やすいのは Cygwin 環境で開発されたもので大体がスタックオーバーフロー
で、Cygwin 環境で開発されたもののスタック領域をデフォルトより大きくするにはレジストリを弄る必要があるという話
こんな説明でいい?
>>216
てか、いまどき Cygwin なんて化石開発環境使うなよ
タダの VC++ Express があるだろう。アレならリンカのオプションで設定できたはず
0227デフォルトの名無しさん
2011/05/05(木) 01:15:06.87http://www.kkaneko.com/rinkou/cygwin/corrupted.html
0228デフォルトの名無しさん
2011/05/05(木) 01:15:07.22コピペしなければ問題ない
0229デフォルトの名無しさん
2011/05/05(木) 01:16:10.11malloc使えばprobably corrupted stack出ないですか?
0230デフォルトの名無しさん
2011/05/05(木) 01:16:29.87別にcygwin化石ってこともないだろ。
仮想マシンでLinux入れなよってならわからんでもないけど、VC++すすめるのはなんか変。
0231デフォルトの名無しさん
2011/05/05(木) 01:23:31.90確かに。
どうしてもWindowsでLinuxの真似事したくてcygwinって言うのはアリだよね
タダの開発環境が使いたいと勝手に決めつけて、スマソ
0232デフォルトの名無しさん
2011/05/05(木) 01:25:37.870233デフォルトの名無しさん
2011/05/05(木) 01:48:13.090234デフォルトの名無しさん
2011/05/05(木) 02:17:46.62あり得ません
Intel C++を買いましょう
0235デフォルトの名無しさん
2011/05/05(木) 02:22:29.710236デフォルトの名無しさん
2011/05/05(木) 02:36:44.72もう死にたい・・・
0237デフォルトの名無しさん
2011/05/05(木) 02:39:08.3170時間corrupted stackと格闘。もう精神崩壊している。
0238デフォルトの名無しさん
2011/05/05(木) 02:41:16.300239デフォルトの名無しさん
2011/05/05(木) 02:42:17.650240デフォルトの名無しさん
2011/05/05(木) 02:49:13.140241デフォルトの名無しさん
2011/05/05(木) 02:54:09.54どうしても回答して欲しいなら環境とソース晒せや
でなきゃ勝手に死ね
0242デフォルトの名無しさん
2011/05/05(木) 02:57:47.59何で全角スペースがダメなの?
_ よりは置換で誤爆しにくいと思うんだけど
0243デフォルトの名無しさん
2011/05/05(木) 02:58:26.130244デフォルトの名無しさん
2011/05/05(木) 06:59:16.84それはあくまで表現の仕様であって、
ユニコード使うんだからUTF-8はワイドだろ。
'A' はただの41じゃなくてU+0041なんだし。
0245デフォルトの名無しさん
2011/05/05(木) 08:42:33.15U+0041の段階で既にUTF-8じゃないの。
0246デフォルトの名無しさん
2011/05/05(木) 08:43:27.91それをワイドと言ってしまうとは……
つーか、内部表現と外部表現をごっちゃにした挙句に文字コードとフォーマットの違いが判っていないとしか。
0247デフォルトの名無しさん
2011/05/05(木) 08:52:04.11解ってないのはおまえだろ。
その扱う対象がワイドだっつってんの。
シフトJISは明らかに1バイトと多バイトが混在してるからな。
だからシフトJISを固定数バイトでエンコードしても、それはマルチなんだよ。
0248デフォルトの名無しさん
2011/05/05(木) 08:53:15.670249デフォルトの名無しさん
2011/05/05(木) 09:15:36.23『文字コード総合スレ part6』
http://hibari.2ch.net/test/read.cgi/tech/1278923059/
0250デフォルトの名無しさん
2011/05/05(木) 10:25:31.46……
0251デフォルトの名無しさん
2011/05/05(木) 10:37:45.08ifを使って、各要素と比較判定するための変数maxを用意しました
for i=0...k
if (max <= p[i])
max = p[i];
みたいな感じの操作をするためです。
ここで質問なのですが、
maxを初期化するときに0にしちゃうと要素がすべて負の数だった場合が困ると思ったので
初期化せずにやってみたところ、maxを初期化しろというデバッグエラーがでました。
事後条件がきちんと満たされる為にはどう初期化すればよいでしょうか?
0252デフォルトの名無しさん
2011/05/05(木) 10:41:53.110253デフォルトの名無しさん
2011/05/05(木) 10:41:59.640254デフォルトの名無しさん
2011/05/05(木) 10:45:30.79なるほど!!!!!
ありがとうございましたああああああああああ!!!!!!
0255デフォルトの名無しさん
2011/05/05(木) 10:46:09.290256デフォルトの名無しさん
2011/05/05(木) 10:47:30.66{
double maxVal = array[0];
for (int ic = 1; ic < arrayCount; ++ic) {
if (maxVal < array[ic]) maxVal = array[ic];
}
return maxVal;
}
0257デフォルトの名無しさん
2011/05/05(木) 10:48:58.11i++は操作を行ってからiに1を加える
++iはiに1を加えてから操作を行う
0258デフォルトの名無しさん
2011/05/05(木) 10:49:00.82単独で使うのならどちらでも。右辺値として使うのなら意味を考えて使い分け。
0259デフォルトの名無しさん
2011/05/05(木) 10:50:13.71何の操作ですか? まともに説明できないなら回答していただかなくても結構です。
0260デフォルトの名無しさん
2011/05/05(木) 10:53:10.650261デフォルトの名無しさん
2011/05/05(木) 10:59:30.19さすがにこれには同意だわ。
0262デフォルトの名無しさん
2011/05/05(木) 11:05:08.35厳密な表現が欲しければ言語仕様書読めよアホ
0263デフォルトの名無しさん
2011/05/05(木) 11:05:17.070264デフォルトの名無しさん
2011/05/05(木) 11:06:13.28いいね〜それ!
0265デフォルトの名無しさん
2011/05/05(木) 11:08:59.38どう使い分けるかは、もはや宗教でしかない
0266デフォルトの名無しさん
2011/05/05(木) 11:10:36.87せめてもう少し言葉を選べよ。
0267デフォルトの名無しさん
2011/05/05(木) 11:18:49.41四則演算のプログラムを作ったのですが、途中で
強制終了してしまう理由がわかりません。
すごい雑なプログラムなんですが、誰か理由でもヒントでもいいので
教えてくれたらありがたいです・・・・。
0268デフォルトの名無しさん
2011/05/05(木) 11:31:02.63そんなに怒らないで
0269デフォルトの名無しさん
2011/05/05(木) 11:31:21.12アホはお前
0270デフォルトの名無しさん
2011/05/05(木) 11:31:37.490で割ってるんだろ
0271デフォルトの名無しさん
2011/05/05(木) 11:33:29.480272デフォルトの名無しさん
2011/05/05(木) 11:34:06.82こんなところで質問してる段階で最底辺なんだよアホ
アホにも分かるように噛み砕いてもらってんだから感謝しろよ
0273デフォルトの名無しさん
2011/05/05(木) 11:37:44.32以上
0274デフォルトの名無しさん
2011/05/05(木) 11:38:55.25だよなwwwww
何を操作してんだよwwwwwwwwwwwww
0275デフォルトの名無しさん
2011/05/05(木) 11:39:44.86http://dictionary.goo.ne.jp/leaf/jn2/128531/m0u/%E6%93%8D%E4%BD%9C/
0276デフォルトの名無しさん
2011/05/05(木) 11:40:40.13操作を笑うなら「何を評価してるんだよwww」も同様
0277デフォルトの名無しさん
2011/05/05(木) 11:44:09.03は?
0278デフォルトの名無しさん
2011/05/05(木) 11:45:45.13http://ja.wikipedia.org/wiki/%E8%A9%95%E4%BE%A1
0279デフォルトの名無しさん
2011/05/05(木) 11:46:32.56直りました〜〜。
ありがとうございます。
0280デフォルトの名無しさん
2011/05/05(木) 11:59:02.23アホはだまってろよ?
0281デフォルトの名無しさん
2011/05/05(木) 12:00:19.58まーたアホなこと言ってる
0282デフォルトの名無しさん
2011/05/05(木) 12:01:15.11printf("1回目 %d %d\", ++i, i++);
printf("2回目 %d %d\", ++i, i++);
printf("3回目 %d %d\", ++i, i++);
0283デフォルトの名無しさん
2011/05/05(木) 12:03:44.65初期値を入れた方がw
0284デフォルトの名無しさん
2011/05/05(木) 12:04:35.04ばか?
0285デフォルトの名無しさん
2011/05/05(木) 12:08:39.57インクリメント後に参照だろ
0286デフォルトの名無しさん
2011/05/05(木) 12:09:28.990287デフォルトの名無しさん
2011/05/05(木) 12:10:42.79素直になれよ
0288デフォルトの名無しさん
2011/05/05(木) 12:11:41.10それは同じことでは?
0289デフォルトの名無しさん
2011/05/05(木) 12:12:02.76誰に言ってんだ?
0290デフォルトの名無しさん
2011/05/05(木) 12:13:29.830291デフォルトの名無しさん
2011/05/05(木) 12:15:46.01はやく理由を
0292291はとりあえず上げるな
2011/05/05(木) 12:19:09.15main(){
int i;
i = 0;
printf("1回目 %d %d\n", ++i, i++);
printf("2回目 %d %d\n", ++i, i++);
printf("3回目 %d %d\n", ++i, i++);
i = 0;
printf("1回目 %d ", ++i); printf("%d\n", i++);
printf("2回目 %d ", ++i); printf("%d\n", i++);
printf("3回目 %d ", ++i); printf("%d\n", i++);
}
/*Output:
1回目 2 0
2回目 4 2
3回目 6 4
1回目 1 1
2回目 3 3
3回目 5 5
*/
0293デフォルトの名無しさん
2011/05/05(木) 12:21:26.630294デフォルトの名無しさん
2011/05/05(木) 12:23:55.550295デフォルトの名無しさん
2011/05/05(木) 12:24:11.06こんなメッセージが出ました。
error: " 文字での終端を欠いています
error: " 文字での終端を欠いています
error: " 文字での終端を欠いています
0296デフォルトの名無しさん
2011/05/05(木) 12:24:57.85「何」を評価してるの?
0297デフォルトの名無しさん
2011/05/05(木) 12:25:11.190298デフォルトの名無しさん
2011/05/05(木) 12:26:12.81式
0299デフォルトの名無しさん
2011/05/05(木) 12:26:34.28春
0300デフォルトの名無しさん
2011/05/05(木) 12:26:50.25引数の評価順序って規定されてたっけ?
されてないなら、例としてはひどいな。
0301デフォルトの名無しさん
2011/05/05(木) 12:29:24.670302デフォルトの名無しさん
2011/05/05(木) 12:32:38.02これを体感できる環境や状況なんて初心者は遭遇しないし。
0303デフォルトの名無しさん
2011/05/05(木) 12:36:46.15冬
0304デフォルトの名無しさん
2011/05/05(木) 12:40:21.88もし「式」の評価で ++i/i++ を説明できるなら
i = ++i + 1;
a[i++] = i;
が未定義なのは何故?
0305デフォルトの名無しさん
2011/05/05(木) 12:41:23.35いや、「実験による学習」の限界を示す例としては
実に適切かと。
0306デフォルトの名無しさん
2011/05/05(木) 12:41:32.33これは予想外だった
0307デフォルトの名無しさん
2011/05/05(木) 12:45:27.67↓引数に渡すときの評価順序は〜ウンタラカンタラ
0308デフォルトの名無しさん
2011/05/05(木) 12:47:03.82やっぱ馬鹿だったか
0309デフォルトの名無しさん
2011/05/05(木) 12:48:22.46>>308に言ってる
0310デフォルトの名無しさん
2011/05/05(木) 13:05:02.52int main(){
int i;
int a[3];
i = 0;
i = ++i + 1;
a[i++] = i;
printf("%d",a[2]);
return 0;
}
0311デフォルトの名無しさん
2011/05/05(木) 13:07:11.45int main(){
int i;
int a[3];
i = 0;
i = ++i + 1;
a[i++] = i;
printf("%d",a[2]);
printf("\n%d",i);
return 0;
}
0312デフォルトの名無しさん
2011/05/05(木) 13:08:14.870313これはひどい
2011/05/05(木) 13:14:32.46> i++は操作を行ってからiに1を加える
> ++iはiに1を加えてから操作を行う
{
int i,j;
i = 0, j = i++;
i = 0, j = ++i;
}
i++は式の評価(jに代入)を行ってからiに1を加える。
++iはiに1を加えてから式の評価(jに代入)を行う。
0314デフォルトの名無しさん
2011/05/05(木) 13:16:31.010315デフォルトの名無しさん
2011/05/05(木) 13:19:44.70式が値を返したあとに加算
++i
加算してから値を返す
0316デフォルトの名無しさん
2011/05/05(木) 13:25:21.40「式が値を返す」って、どういう事?
値を返すのならば return 文が必要なのでは?
0317デフォルトの名無しさん
2011/05/05(木) 13:25:39.170318デフォルトの名無しさん
2011/05/05(木) 13:28:10.00つ、スレタイ
0319デフォルトの名無しさん
2011/05/05(木) 13:29:31.43GWに独りで2ちゃんで他人にからんで、寂しいヤツだなぁ
0320デフォルトの名無しさん
2011/05/05(木) 13:29:59.15int main(){
int i;
int a[3] = {10, 10, 10};
i = 0;
printf("%d|%d:%d:%d", i, a[0],a[1],a[2]);
i = ++i + 1;
printf("\n%d|%d:%d:%d", i, a[0],a[1],a[2]);
a[i++] = i;
printf("\n%d|%d:%d:%d", i, a[0],a[1],a[2]);
return 0;
}
0321デフォルトの名無しさん
2011/05/05(木) 13:31:04.32、を入れた訳について詳しく聞こうか
0322デフォルトの名無しさん
2011/05/05(木) 13:31:51.50簡単だと思うなら答えてやれよ。
0323デフォルトの名無しさん
2011/05/05(木) 13:31:59.62親指だよ
0324デフォルトの名無しさん
2011/05/05(木) 13:33:13.53関数ならな
0325デフォルトの名無しさん
2011/05/05(木) 13:33:27.62中指だよ
0326デフォルトの名無しさん
2011/05/05(木) 13:33:57.630327デフォルトの名無しさん
2011/05/05(木) 13:34:39.33http://www.grapecity.com/japan/powernews/column/clang/021/page01.htm
0328デフォルトの名無しさん
2011/05/05(木) 13:37:17.55未定義な式が特定の処理系で実行できたとして、何の意味があるの?
0329デフォルトの名無しさん
2011/05/05(木) 13:41:15.28「関数が値を返す」は分かる。
「式を評価する」も分かる。
でも「式が値を返す」はよく分からない。
>>319 の意味も分かる。
>>324 の意味も分かる。
でも、>>327 の意味が分からない。
0330デフォルトの名無しさん
2011/05/05(木) 13:46:29.98未定義な式ってどれをさしてんだ?
0331デフォルトの名無しさん
2011/05/05(木) 13:48:31.67「未定義な式でも特定の処理系では実行出来る場合がある」
という事が分かるよ。
0332デフォルトの名無しさん
2011/05/05(木) 13:49:15.28return 0;
0333デフォルトの名無しさん
2011/05/05(木) 13:50:56.93i = ++i + 1; と a[i++] = i; は共に未定義
0334デフォルトの名無しさん
2011/05/05(木) 13:51:22.41ない
0335デフォルトの名無しさん
2011/05/05(木) 13:52:24.13void f(int a, int b, int c) {
printf("%d %d %d\n", a, b, c);
}
0336デフォルトの名無しさん
2011/05/05(木) 13:52:24.95嘘付くなよwww
0337デフォルトの名無しさん
2011/05/05(木) 14:02:14.070338デフォルトの名無しさん
2011/05/05(木) 14:02:47.53>>332にもいえよwwwwwwww
0339デフォルトの名無しさん
2011/05/05(木) 14:05:52.56普通に数字を書き直すだけで良いと思うが?
0340デフォルトの名無しさん
2011/05/05(木) 14:07:28.29初期化されないんですか?
0341デフォルトの名無しさん
2011/05/05(木) 14:11:51.500342デフォルトの名無しさん
2011/05/05(木) 14:12:34.57>>341
は偽物です
おねがいします
0343デフォルトの名無しさん
2011/05/05(木) 14:12:34.55こんな感じか?
a=b+c;
a=add(b,c);
0344デフォルトの名無しさん
2011/05/05(木) 14:17:25.72何がしたいのか判らないが、
malloc() したものなら
realloc() でサイズを変えて再確保できる。
0345デフォルトの名無しさん
2011/05/05(木) 14:29:13.18次はC言語で書かれたクイックソートを行う関数である
aを配列,L,Rを配列の添字とすると,関数呼出しquicksort(a,L,R)はa[L],a[L+1],…a[R]をソートする
quicksort(int a[],int left,int right)
{
int p,i,pivot,temp;
if(left<right){
pivot=a[left];
p=left;
for(i=left+1;i<=right;++i){
/*(A)*/if(a[i]<pivot){
++p;
temp=a[p];a[p]=a[i];a[i]=temp;
}
}
a[left]=a[p];
a[p]=pivot;
quicksort(a,left,p-1);
quicksort(a,p+1,right);
}
}
(1)関数呼び出しquicksort(a,L,R)はa[L],a[L+1],…,a[R]をソートし計算が停止する.このことを説明せよ
(2)整数n≧1に対して,quicksort(a,0,n-1)を呼び出してからこの計算が終了するまでのコメント(A)の置かれた行のa[i]<pivotの不等号の比較回数を
再帰呼出しされた呼出しの実行の分まで合わせて,数えることを考える
a[0],a[1],…,a[n-1]がそれぞれ互いに異なる1からnまでの整数値をとり,そのとり方は等確率であるとき
比較回数の平均値をf(n)とすると,f(n)<2(n+1)log(n+1)-2nであることを示せ
0346デフォルトの名無しさん
2011/05/05(木) 14:35:40.95死ねよ
0347デフォルトの名無しさん
2011/05/05(木) 14:46:49.43そこに書いてあるそれが解説じゃねーかw
0348デフォルトの名無しさん
2011/05/05(木) 14:54:13.07答えは出てるのにこれ以上何に答えろと?
0349デフォルトの名無しさん
2011/05/05(木) 14:55:48.55どこぞの試験問題とか持ってくるなよ
0350デフォルトの名無しさん
2011/05/05(木) 15:18:40.57reallocを使うのは止めた方がいいかもね。
10年くらい前Solarisでバグったことがある。
0351デフォルトの名無しさん
2011/05/05(木) 15:21:15.02死ね
0352デフォルトの名無しさん
2011/05/05(木) 15:23:24.43char*name="YAMADA"として、tがnameのアドレスを指したい場合どうなりますか?
0353デフォルトの名無しさん
2011/05/05(木) 15:28:20.62realloc使わない方がいいのは、
まだそのバグが残っているから?
0354デフォルトの名無しさん
2011/05/05(木) 15:34:49.910355デフォルトの名無しさん
2011/05/05(木) 15:37:16.85t=nameとしたらどうなりますか?
0356デフォルトの名無しさん
2011/05/05(木) 15:38:05.80じゃ、C++ではどうしている?
0357デフォルトの名無しさん
2011/05/05(木) 15:42:36.25char *name = "YAMADA";
char **t = name;
てことかな。コンパイラがワーニング出すんじゃない?
0358デフォルトの名無しさん
2011/05/05(木) 15:47:24.00#define SUM(num)(&nor[(num*NUM)])
とはどういうことでしょうか?
0359デフォルトの名無しさん
2011/05/05(木) 15:51:09.78ああそれね、通約すると「ぼくは馬鹿です」
0360デフォルトの名無しさん
2011/05/05(木) 15:54:34.98kwsk
今でもバンバン使っているのですが、どんなバグだったのですか?
0361デフォルトの名無しさん
2011/05/05(木) 16:02:43.66真面目にお願いします・・
0362デフォルトの名無しさん
2011/05/05(木) 16:09:29.4510年前っていうとこれか?
http://lua-users.org/lists/lua-l/2002-01/msg00064.html
なら、realloc を malloc 代わりに使うとかしなきゃ問題なし
もっとも ANSI-C 的には合法だけどもね
0363デフォルトの名無しさん
2011/05/05(木) 16:21:22.08#define NUM 10
#define SUM(num)(&nor[(num*NUM)])
char *a, *nor;
a = SUM(5);
とあったら、
a = (&nor[(num*10)]);
つまりこの場合だと
a = &nor[5*10];
0364デフォルトの名無しさん
2011/05/05(木) 16:28:57.97ダイアログボックスが出てくる・・・何故ですか?cygwinです。
0365デフォルトの名無しさん
2011/05/05(木) 16:35:57.260366デフォルトの名無しさん
2011/05/05(木) 16:37:39.810367デフォルトの名無しさん
2011/05/05(木) 16:42:06.26なんでわざわざそんな面倒な環境作ってんだよ。
いまだに初心者にCygwin薦めてる馬鹿は消えてくれよ。
腐った環境をWin世界に持ち込むな。
0368デフォルトの名無しさん
2011/05/05(木) 16:49:24.88./a.exe と a.exe どっちの方法で起動してる?
0369デフォルトの名無しさん
2011/05/05(木) 16:54:23.38あと大学とかの研究室では古い環境を使い続けるからな
0370デフォルトの名無しさん
2011/05/05(木) 16:58:08.80ログ削除して消えます。サヨウナラ。
0371デフォルトの名無しさん
2011/05/05(木) 17:00:08.480372デフォルトの名無しさん
2011/05/05(木) 17:01:30.43質問スレで何言ってんだ?
乞食か?
0373デフォルトの名無しさん
2011/05/05(木) 17:23:25.560374デフォルトの名無しさん
2011/05/05(木) 17:25:30.15Cを実行したいならコンパクトだしおすすめだと思うけど。
まあ、Unix/Linux入れるのが一番だけどなー。
メモリあるなら仮想でもいいし。
0375デフォルトの名無しさん
2011/05/05(木) 17:28:14.89windowsとかいうOSはメモリ管理がクズなのでどっちでも変わりません
0376デフォルトの名無しさん
2011/05/05(木) 17:34:43.46cygwin&cygtermをコマンドプロンプト代わりに使ってる
0377デフォルトの名無しさん
2011/05/05(木) 17:39:32.120378デフォルトの名無しさん
2011/05/05(木) 17:43:56.560379デフォルトの名無しさん
2011/05/05(木) 17:50:55.020380デフォルトの名無しさん
2011/05/05(木) 18:09:30.45プログラミングに
cygwinとか関係あるんですか?
ゲームとか作る時は、結局ツールの環境に依存するからcygwinダウンロードすれば
gcc入ってくるけど、gccだけ使えばcygwin関係なくないですか?
0381デフォルトの名無しさん
2011/05/05(木) 18:24:49.92具体的に聞けば、恥ずかしさとひきかえに質問者目線で教えてくれる良いスレ
なのに、そういう汚い言葉使っちゃだめ。一部の人だと思うけど。
0382デフォルトの名無しさん
2011/05/05(木) 18:28:44.550383デフォルトの名無しさん
2011/05/05(木) 18:31:09.49プログラミングの事とは全く関係ない奴。
0384デフォルトの名無しさん
2011/05/05(木) 19:12:03.15passはmikuc
これの中にあるtokaido_d.cでわからないところがあります。
78行目の
newcell->nextptr->prevptr=newcell;
なんですが、これってnewcell->nextptrのところは領域が確保されてないから、newcell->nextptr->prevptrにはnewcellのアドレス入れられないんじゃないか
と思うんですが、何でできるんでしょうか?
0385384
2011/05/05(木) 19:13:05.55http://codepad.org/9ZqCGHQz
0386デフォルトの名無しさん
2011/05/05(木) 19:23:09.27ニコ厨死ね
0387デフォルトの名無しさん
2011/05/05(木) 19:59:51.31他にある?
0388デフォルトの名無しさん
2011/05/05(木) 20:04:42.55C++なら別に普通だけどCでもいけちゃうの?
0389デフォルトの名無しさん
2011/05/05(木) 20:35:24.97C++でもだめでしょ。
0390デフォルトの名無しさん
2011/05/05(木) 20:37:43.30http://codepad.org/tNQUFdwu
0391デフォルトの名無しさん
2011/05/05(木) 20:43:02.29あれば便利だからじゃないの?
0392デフォルトの名無しさん
2011/05/05(木) 20:43:40.96コメントの説明がビミョウなので、そこをサラッと流しといて
後は、ソースを読むことに集中する。71 : newcell->nextptr = *ptr;
ところで、newcell->prevptr の値はいついれるんだ?
nextptr と prevptr は変数名を入れ替えたほうが良いようだ。(先生口調)
0393デフォルトの名無しさん
2011/05/05(木) 20:47:52.45このソースをどう書き換えたらいいですか?
int main(){
int array[10][10];
/*配列に対して何かしらの処理*/
/*配列に0が含まれるかチェック*/
int i, j;
for (i=0;i<10;i++)
for (j=0;j<10;j++)
if (array[i][j]==0)
goto err;
else;
/*含まれていない場合の処理*/
printf("0は含ませません");
return 0;
/*含まれていた場合の処理*/
err:
printf("0が含まれています");
return 0;
}
これはあくまで例でif文やfor文がいくつもネストしている場合に
ネストから抜けるようにしたいです
0394デフォルトの名無しさん
2011/05/05(木) 20:50:25.63クラス宣言してメソッドを書くってのは知ってるけど、
>>387のはそうじゃないでしょ。
まあ、いつものごとく、隙あらば揚げ足を取りたいひとが
わかってて釣ってるんだろうけど。
0395デフォルトの名無しさん
2011/05/05(木) 20:53:43.88>★C++言語については避けてください。C++対応明記スレへどうぞ
0396デフォルトの名無しさん
2011/05/05(木) 20:54:17.12http://codepad.org/x63n9HhE
途中でエラーが起こって書き込んだファイルがうまく読み込めないんですが
なぜでしょうか?
0397デフォルトの名無しさん
2011/05/05(木) 20:55:07.02codepadだからだろ
0400デフォルトの名無しさん
2011/05/05(木) 21:02:16.680401400
2011/05/05(木) 21:02:38.780402デフォルトの名無しさん
2011/05/05(木) 21:06:50.71pascal
0403デフォルトの名無しさん
2011/05/05(木) 21:07:49.21まるっと関数にしちゃえば?そんでreturn使えば?
だから、あんなに口をすっぱくして言ったのに…変数の初期化を忘れたとは…トホホのホ。
0405デフォルトの名無しさん
2011/05/05(木) 21:18:00.870406デフォルトの名無しさん
2011/05/05(木) 21:25:27.49書き方が入門者ぽくない
1行だからってちゃんと{}を使いなさい
0407デフォルトの名無しさん
2011/05/05(木) 21:43:31.39>>406
わかりました
0408デフォルトの名無しさん
2011/05/05(木) 21:48:55.71は?わかりましたじゃねーんだよ
goto使うなボケ
0409デフォルトの名無しさん
2011/05/05(木) 21:59:49.48死ね
0410デフォルトの名無しさん
2011/05/05(木) 22:06:28.11溺死しろ
0411デフォルトの名無しさん
2011/05/05(木) 22:07:31.29素直に goto を使え。
0412デフォルトの名無しさん
2011/05/05(木) 22:07:57.24これでどうでしょうか!
http://codepad.org/0E61BTOd
0413デフォルトの名無しさん
2011/05/05(木) 22:09:02.35圧死しろ
0414デフォルトの名無しさん
2011/05/05(木) 22:09:37.250415デフォルトの名無しさん
2011/05/05(木) 22:10:38.850416デフォルトの名無しさん
2011/05/05(木) 22:12:35.27>printf("0は含ませません\n");
これ何回実行されますか?
0417デフォルトの名無しさん
2011/05/05(木) 22:13:59.17goto何でもかんでもダメダメ教信者は時代遅れ
0418デフォルトの名無しさん
2011/05/05(木) 22:16:11.49>>417
焼死しろ
0419デフォルトの名無しさん
2011/05/05(木) 22:19:53.83コード読めないんだったら、実行すればいいのに
0420デフォルトの名無しさん
2011/05/05(木) 22:19:57.91どう見ても1回だけどどうしたの?
0421デフォルトの名無しさん
2011/05/05(木) 22:21:19.37goto err;
else;
/*含まれていない場合の処理*/
printf("0は含ませません");
0422デフォルトの名無しさん
2011/05/05(木) 22:21:56.870423デフォルトの名無しさん
2011/05/05(木) 22:24:41.88>>417
ほとんどの場合がループ抜けたすぐ直下にラベル置くしな
一種の構文みたいなもんだな
0424デフォルトの名無しさん
2011/05/05(木) 22:30:29.460425デフォルトの名無しさん
2011/05/05(木) 22:30:44.810426デフォルトの名無しさん
2011/05/05(木) 22:31:44.29>>424
爆死しろ
0427デフォルトの名無しさん
2011/05/05(木) 22:35:28.340428デフォルトの名無しさん
2011/05/05(木) 22:39:44.71悪かった.勘弁しろよ
0429デフォルトの名無しさん
2011/05/05(木) 22:41:45.730430デフォルトの名無しさん
2011/05/05(木) 22:44:54.660431デフォルトの名無しさん
2011/05/05(木) 22:45:06.38gotoは最初に使うなって習うからそこで思考停止してる
0432デフォルトの名無しさん
2011/05/05(木) 22:54:51.07レベルの高い人の書いたコードをみるとけっこう使ってる。
0433デフォルトの名無しさん
2011/05/05(木) 22:59:05.10そうじゃなかったら、goto 版と関数を分けて return する版を両方書いてみて良い方を採用
0434デフォルトの名無しさん
2011/05/05(木) 23:00:18.00スレチだけど python ってだから嫌い
0435デフォルトの名無しさん
2011/05/05(木) 23:05:02.37再帰でスタックが心配な時にはgoto無しではどうにもならんし
free/close等のfinalize処理が必要な場合には
gotoを使うとスコープを汚すことなくシンプルに書ける
0436デフォルトの名無しさん
2011/05/05(木) 23:08:10.25但し、上の方(後方参照?)に飛んでループを実現するのは勘弁してくれって感じかな
0437デフォルトの名無しさん
2011/05/05(木) 23:36:43.84こうか
int main(){
int a[10][10]= {
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
};
int i, j;
i=0;
j=0;
while (a[i][j]!=0&&i<10) {
j=0;
while (a[i][j]!=0&&j<10) {
j++;
}
i++;
}
printf("%d,%d",i,j);
if (i*j==100) {
printf("含まれません");
} else {
printf("含まれます");
}
}
0438デフォルトの名無しさん
2011/05/05(木) 23:38:57.31gotoのほうが100倍読みやすいな
0439デフォルトの名無しさん
2011/05/05(木) 23:41:50.720440デフォルトの名無しさん
2011/05/05(木) 23:49:36.68実行してみろw
0441デフォルトの名無しさん
2011/05/06(金) 00:04:25.89ということにしたいのですね
0443デフォルトの名無しさん
2011/05/06(金) 00:09:21.70printf("含まれます");が実行されるのは特定の箇所が0のときだけ
0444デフォルトの名無しさん
2011/05/06(金) 00:12:18.19b[1000]
srand(b[i])だと20種類くらいしか数字出てこないです。他は
かぶったりします。
どうしたらいいでしょう?
0445デフォルトの名無しさん
2011/05/06(金) 00:13:42.720446デフォルトの名無しさん
2011/05/06(金) 00:14:49.56死ねタコ
0447デフォルトの名無しさん
2011/05/06(金) 00:14:51.190448デフォルトの名無しさん
2011/05/06(金) 00:15:59.83srand は一回だけ呼べばいい
0449デフォルトの名無しさん
2011/05/06(金) 00:16:25.00srand(b[i])ってなんか変じゃね
それとも「1000個の異なる数の整数をランダム」じゃなくて「1000個の異なる乱数系列」?
0450デフォルトの名無しさん
2011/05/06(金) 00:16:56.85for(i = 0; i < 1000; ) {
b[i] = rand();
for(j = 0; j < i; j++) if(b[i] == b[j]) break;
if(i == j) i++;
}
0451デフォルトの名無しさん
2011/05/06(金) 00:18:20.171000個の異なる乱数形列です。
まぁ小数なんですけど、整数でもいいです。
123128
423231
232354
534534
・
・
ランダムです。
6桁。
0452デフォルトの名無しさん
2011/05/06(金) 00:21:37.74なかなか上手くいかないんだ
頑張って、どのぐらいで習得できる?
0453デフォルトの名無しさん
2011/05/06(金) 00:22:28.75赤っ恥だね
0454デフォルトの名無しさん
2011/05/06(金) 00:22:44.760455デフォルトの名無しさん
2011/05/06(金) 00:23:24.03JAVA?C?
0456デフォルトの名無しさん
2011/05/06(金) 00:24:27.77おまえがな
一瞬よさげに見えたが対象安価のまとめ方が菅政権なみの無能
0457デフォルトの名無しさん
2011/05/06(金) 00:26:11.590458デフォルトの名無しさん
2011/05/06(金) 00:26:59.80whileの使い方をまだちゃんと理解してないのかな?
もっとしっかり勉強してからここに書き込みましょうね
0459デフォルトの名無しさん
2011/05/06(金) 00:28:24.53お願いします・・
while文の中でsrand()の()の中に1000種類の違うアドレスを入れれば
いいんですよね?配列だとかぶってしまいます・・・
0460デフォルトの名無しさん
2011/05/06(金) 00:32:06.36今のところJAVAやってる
Cも将来的にする予定
0461デフォルトの名無しさん
2011/05/06(金) 00:33:31.97ホントに >>444 == >>451 == >>449 ?
冗談で「1000個の異なる乱数形列」って書いたんたんだけど、マジレスされると返す言葉がない…
取り敢えず http://codepad.org/ にソース貼ってみ
0462デフォルトの名無しさん
2011/05/06(金) 00:34:14.56#include <stdio.h>
#include <stdbool.h>
int main(){
int array[10][10] = {
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
};
int i, j;
bool flag = false;
for (i=0;i<10&&!flag;i++)
for (j=0;j<10;j++)
if (array[i][j]==0) {
flag = true;
break;
}
if (flag) {
printf("0が含まれています");
} else {
printf("0は含まれていません");
}
return 0;
}
0463デフォルトの名無しさん
2011/05/06(金) 00:34:30.920464デフォルトの名無しさん
2011/05/06(金) 00:35:49.79典型的な >>434 ですね
0465デフォルトの名無しさん
2011/05/06(金) 00:40:28.52プログラムはまだ作ってません。
とにかく1000個のアドレス・・
どうしたら。
0466デフォルトの名無しさん
2011/05/06(金) 00:41:38.71アドレスってなんだ?
0467デフォルトの名無しさん
2011/05/06(金) 00:42:37.07if(i == 100) printf("0は含まれていません");
else printf("0が含まれています");
とか
for(i = 0; i < 100; i++) if(array[i / 10][i % 10] == 0) break;
if(i == 100) printf("0は含まれていません");
else printf("0が含まれています");
とか
0468デフォルトの名無しさん
2011/05/06(金) 00:48:50.42別にアドレスじゃなくても…
for (i = 1; i <= 1000; i++) {
srand(i);
// ここで rand() で好きなだけ数字を生成
}
じゃだめなの?
0469デフォルトの名無しさん
2011/05/06(金) 00:49:59.20それで1000個全部異なっているか確かめよう
0470デフォルトの名無しさん
2011/05/06(金) 00:50:21.85しごと
0471デフォルトの名無しさん
2011/05/06(金) 01:02:14.46ABACA+BAD=BDADA
となっているときのA〜Dを求めるという問題をC言語で解きたいんですけど
どうしたらいいですか?
0472デフォルトの名無しさん
2011/05/06(金) 01:03:10.09覆面算でググる
0473デフォルトの名無しさん
2011/05/06(金) 01:03:58.72もうこれでいい
#include <stdio.h>
#include <stdbool.h>
int main(){
printf("0は含まれていますん");
return 0;
}
0474デフォルトの名無しさん
2011/05/06(金) 01:05:31.84とにかく1000個のアドレスを取得してwhile1000回ループで
送りたいです。どうしたらいいですか?
プログラムは作ってません。
srand(&i)の形式じゃないとだめです。
約束だからです。
0475デフォルトの名無しさん
2011/05/06(金) 01:07:21.47int a,b,c,d;
a=8;
b=9;
c=2
d=0;
printf("A:B:C:D=%d:%d:%d:%d",a,b,c,d);
0476デフォルトの名無しさん
2011/05/06(金) 01:09:23.08ありがとうございます
たすかりました
0477デフォルトの名無しさん
2011/05/06(金) 01:09:45.24もうなんか支離滅裂だな
>>444に書いてある20種類くらいしか数字出てこなかったコードを貼ってみて。
0478デフォルトの名無しさん
2011/05/06(金) 01:11:40.10めんどくさいっす。もう手痛いんで・・
とにかくmalloc使えば1000個取得できますよね?
教えてください。本当にお手数かけます。
0479デフォルトの名無しさん
2011/05/06(金) 01:13:17.320480デフォルトの名無しさん
2011/05/06(金) 01:17:17.09いやぁもう何もかも面倒くさいですよw
1000個違う数字を出すだけ、それだけなんですよ^^
12323
43556
34664
・
・
・
0481デフォルトの名無しさん
2011/05/06(金) 01:17:48.28<(´・ω・`)> 知ってるが
( (
(((( く ̄く ))))
<(´・ω・`)> お前の態度が
) )
(((( > ̄ > ))))
<(´・ω・`)> 気に入らない。
) )
(((( / ̄ > ))))
ヽ(´・ω・`)ノ フゥゥゥゥーーーーー!!!
ノ ノ
((( < ̄< ))))
0482デフォルトの名無しさん
2011/05/06(金) 01:22:43.01はぁ?乱数系列の話じゃないの?
ワシャ、これ最後で寝るから、もう付き合いきれん
>1000個違う数字を出すだけ、それだけなんですよ^^
なら >>450 のコードでいいやん
0483デフォルトの名無しさん
2011/05/06(金) 01:27:58.02普通にrand千回呼べばいい
0484デフォルトの名無しさん
2011/05/06(金) 01:31:02.09>>480さんは、ひとつの重複も無いことが保証されている1000個の数字が欲しのだそうだよ、どうやら。。。
0485デフォルトの名無しさん
2011/05/06(金) 01:32:07.16スレがおかしいことになるのわからないのかな
0486デフォルトの名無しさん
2011/05/06(金) 01:37:41.75つまり、 x0 -> x1 -> x2 -> ..... -> x(M - 1) -> x0 -> x1 -> ...
となる。そして srand() で変えることができるのは、たかだか x0 のスタート位置であるに過ぎない。
だから、プログラムの中で何回も srand() を呼ぶことは普通はなく、プログラムの最初に一回だけでいいと思う。
0487デフォルトの名無しさん
2011/05/06(金) 01:39:01.29であれば、rand() を呼び出したときに、その答えを記憶しておき、次に rand() を読んだ結果が前と一緒だったら、その結果を
捨てればいい。
0488デフォルトの名無しさん
2011/05/06(金) 01:41:01.020489デフォルトの名無しさん
2011/05/06(金) 01:45:20.06どうしてもって言うんだから、各ネストでフラグの設定・評価しながらbreakで順次抜ければ
0490デフォルトの名無しさん
2011/05/06(金) 01:51:20.270491デフォルトの名無しさん
2011/05/06(金) 01:53:04.350492デフォルトの名無しさん
2011/05/06(金) 01:54:01.840493デフォルトの名無しさん
2011/05/06(金) 01:54:15.52#include <stdbool.h>
...
bool b = false;
for(int i = 0; i < n && !b; i++) {
for(int j = 0; j < n && !b; j++) {
...
flag 使うとぷりぷり怒る人がいるので注意
0494デフォルトの名無しさん
2011/05/06(金) 01:59:48.770495デフォルトの名無しさん
2011/05/06(金) 02:03:01.700496デフォルトの名無しさん
2011/05/06(金) 02:09:34.78聞くけど、ここにいる人らって大学や専門学校で出されるプログラムの課題を
簡単にこなせる人多いんですか?
0497デフォルトの名無しさん
2011/05/06(金) 02:15:36.610498デフォルトの名無しさん
2011/05/06(金) 02:16:55.66おまけして1009個までの乱数列にしてやったありがたく思え
0499デフォルトの名無しさん
2011/05/06(金) 02:25:46.78ありがとうございます!!
でもかぶってる数字ありませんか・・・
0500499
2011/05/06(金) 02:32:43.53例えば任意の8桁の自然数、例えば23435649として、隣り合う数字を
掛け算して一桁の時にはループ回数の下一桁を加えるみたいな。そう
いうアルゴリズムを利用して乱数発生できないですかね?
0501499
2011/05/06(金) 02:35:55.12乱数として発生したように見えて、乱数と同じばらつき具合が予想される。
0502デフォルトの名無しさん
2011/05/06(金) 02:38:22.910503499
2011/05/06(金) 02:40:38.40int型で工夫することによって20桁同士の整数の掛け算を行い
char型で計算結果を出力せよ。
全く分かりません。良くこんな課題出すもんだと思います。
0504デフォルトの名無しさん
2011/05/06(金) 02:44:41.84intで宣言した時の最小値と最大値は知ってる?(10進数で)
0505デフォルトの名無しさん
2011/05/06(金) 02:44:46.88http://hibari.2ch.net/test/read.cgi/tech/1301553333/
0506デフォルトの名無しさん
2011/05/06(金) 02:54:49.54「かき混ぜた数列」とか。
0507デフォルトの名無しさん
2011/05/06(金) 03:16:42.68お前もう向いてないから辞めた方がいいよ。人生を無駄に過ごすことになるよ
0509デフォルトの名無しさん
2011/05/06(金) 03:55:55.69情けは人のためならずっていうしね
0510デフォルトの名無しさん
2011/05/06(金) 03:57:25.440511デフォルトの名無しさん
2011/05/06(金) 03:59:09.59?
重複しない乱数ほしいならああ書くのが常套じゃないの?
0512デフォルトの名無しさん
2011/05/06(金) 04:02:47.000513デフォルトの名無しさん
2011/05/06(金) 04:52:21.56コマンドプロンプトやPowershellはあくまでシェルであって
ウィンドウ出してるのはconagentだろ。
だからcygtermとやらでコマンドプロンプトの置き換えはありえない。
どうせbashとか使ってるんだろ。
あるいは、そのcygtermでコマンドプロンプトは動かないのか?
0514デフォルトの名無しさん
2011/05/06(金) 10:17:49.16bashwww
zshwww何ソレwww
ってなもんよ。
犬厨にはもう逃げ場が無いわけでwww
0515デフォルトの名無しさん
2011/05/06(金) 10:22:14.030516デフォルトの名無しさん
2011/05/06(金) 10:24:00.70csh 以上ならどれでもできるっしょ
0517デフォルトの名無しさん
2011/05/06(金) 10:35:52.650518デフォルトの名無しさん
2011/05/06(金) 10:46:32.400519デフォルトの名無しさん
2011/05/06(金) 10:52:41.11【Shell】どのシェル使ってる?【Script】
http://hibari.2ch.net/test/read.cgi/linux/1067330754/
0520デフォルトの名無しさん
2011/05/06(金) 10:58:10.970521デフォルトの名無しさん
2011/05/06(金) 11:14:11.260522デフォルトの名無しさん
2011/05/06(金) 11:22:35.76誘導
「雑談スレ 4」
http://hibari.2ch.net/test/read.cgi/tech/1302223650/
0523デフォルトの名無しさん
2011/05/06(金) 12:49:53.65int main () {
int num1[5]={1234,2345,3456,4567,5678};
int num2[5]={6789,7890,8901,9012,123};
int num3[10]={0};
int i,j,k;
for (i=0;i<5;i++)
for (j=0;j<5;j++) {
num3[i+j]+=num1[4-j]*num2[4-i];
if(num3[i+j]>9999) {
k=num3[i+j]/10000;
num3[i+j]-=(k*10000);
num3[i+j+1]+=k;
}
}
printf("\t");
for (i=0;i<5;i++)
printf("%04d",num1[i]);
printf("\n×\t");
for (i=0;i<5;i++)
printf("%04d",num2[i]);
printf("\n=");
printf("%d",num3[9]);
for (i=1;i<10;i++)
printf("%04d",num3[9-i]);
return 0;
}
0524デフォルトの名無しさん
2011/05/06(金) 13:11:11.910525デフォルトの名無しさん
2011/05/06(金) 13:13:41.410526デフォルトの名無しさん
2011/05/06(金) 13:14:31.49ボランティアのリーダーか?
0527デフォルトの名無しさん
2011/05/06(金) 16:46:58.930528デフォルトの名無しさん
2011/05/06(金) 17:18:50.79loopf: for
for
for
〜
break loopf;
0529デフォルトの名無しさん
2011/05/06(金) 17:25:05.74死ね
0530デフォルトの名無しさん
2011/05/06(金) 17:31:16.41VCとは違うの?
0531デフォルトの名無しさん
2011/05/06(金) 17:41:40.71ベン図でも書いてみたら?
0532デフォルトの名無しさん
2011/05/06(金) 20:14:08.94そういうのってすぐ思いつくの?
それとも定石として知っているの?
0533デフォルトの名無しさん
2011/05/06(金) 20:14:56.06なんで?
0534デフォルトの名無しさん
2011/05/06(金) 21:34:39.58int main () {
int a,b,c,d;
for (a=1;a<10;a++)
for (b=1;b<10;b++)
for (c=0;c<10;c++)
for (d=0;d<10;d++)
if (!(10000*(a-b)+1000*(b-d)+100*b+10*(a+c-d)+d))
printf("A:B:C:D=%d:%d:%d:%d\n",a,b,c,d);
return 0;
}
0535デフォルトの名無しさん
2011/05/06(金) 22:42:51.090536デフォルトの名無しさん
2011/05/06(金) 22:46:43.960537デフォルトの名無しさん
2011/05/06(金) 23:15:28.040538デフォルトの名無しさん
2011/05/06(金) 23:33:25.85static int i=0;
としたら
i=2;と代入しても0のままなのですか?
0539デフォルトの名無しさん
2011/05/06(金) 23:42:08.34説明する気はないが
0540デフォルトの名無しさん
2011/05/06(金) 23:44:22.69void func()
{
static int i = 0;
printf("%d\n", i);
i = 2;
printf("%d\n", i);
}
int main(void)
{
func();
func();
}
0541デフォルトの名無しさん
2011/05/06(金) 23:44:37.75複文中のstatic宣言なら、自動変数との対比で覚えると良い。
自動変数は、ブロックに入るたびに、メモリ上に確保され、ブロック終了まで参照できる。
静的変数は、プログラム開始時にメモリ上に確保され、プログラム終了まで参照できる。
複文の外のstaticは内部結合を意味して、ファイル外からはアクセスできないようにする。
0542デフォルトの名無しさん
2011/05/06(金) 23:45:46.38i = 1;
i = 2;
std::cout << i << std::endl;
やってみるアルニダ
0543デフォルトの名無しさん
2011/05/06(金) 23:47:06.800544デフォルトの名無しさん
2011/05/06(金) 23:47:51.130545デフォルトの名無しさん
2011/05/06(金) 23:51:49.26意味が良く分かりません。
0546デフォルトの名無しさん
2011/05/07(土) 00:04:39.30嫌がらせだからスルー
0547デフォルトの名無しさん
2011/05/07(土) 00:14:11.39とあればどうなるんですか?
0548デフォルトの名無しさん
2011/05/07(土) 00:16:17.07嫌がらせじゃありません・・・
どういうときに役に立つのでしょう?
0549デフォルトの名無しさん
2011/05/07(土) 00:21:01.20書いたとおりになる
0550デフォルトの名無しさん
2011/05/07(土) 00:21:39.42struct i;
static i;
どれが動的でどれが静的なのでしょうか?
もちろんmain()が始まってからの話ですが・・
0551デフォルトの名無しさん
2011/05/07(土) 00:25:06.87全部動的でしょ
0552デフォルトの名無しさん
2011/05/07(土) 00:29:36.60今後色々なプログラムつくっているうちに
こうしたいなとかこうはできないのかなってなったときに
その存在と使い方がわかるようになる
0553デフォルトの名無しさん
2011/05/07(土) 00:30:28.23質問にこたえろやカス
0554デフォルトの名無しさん
2011/05/07(土) 00:31:32.07静的:植物
動的:動物
異論は許さん
0555デフォルトの名無しさん
2011/05/07(土) 00:40:31.26とあればどうなるんですか?
0556デフォルトの名無しさん
2011/05/07(土) 01:17:33.40struct i;ってコンパイルとおるっけ?
関数の外ならばすべて静的。
ブロックの中ならば、static i;のみ静的。
>555
動的。
const と動的、静的は無関係。
0557デフォルトの名無しさん
2011/05/07(土) 01:21:08.10関数は関数外でしか定義できない。constで修飾された変数は、初期化しかできない。
#include <stdio.h>
int sub(){
static int a = 0;
a = a + 1;
printf("sub %d\n", a);
}
int func(){
int a = 0;
a = a + 1;
printf("func %d\n", a);
}
int main(){
sub();
sub();
func();
func();
}/*
sub 1
sub 2
func 1
func 1*/
0559デフォルトの名無しさん
2011/05/07(土) 09:07:11.37スコープ以外は外に書いたのと変わらんよ。
変な解釈するやつ多いけどな。
#include <stdio.h>
static int a = 0;
Int func(){
static int b = 0;
a = a + 1;
b = b + 1;
printf("a:%d b:%d\n", a, b);
}
int main(){
func();
func();
/*{
a = 0; //可
b = 0; //不可(Error)
}*/
return 0;
}
0560デフォルトの名無しさん
2011/05/07(土) 13:27:49.40へー
struct i;
使ったことねえんだ
たぶん関数の中で extern も使ったことないだろうな
0561556
2011/05/07(土) 14:16:32.83struct i;
タグの宣言なのね。
気がつかなかった。
>550の話でなら、struct i;はオブジェクトができないから
動的も静的も関係ないですね。
>たぶん関数の中で extern も使ったことないだろうな
実際無いけど、有用な場面てありますか?
0562デフォルトの名無しさん
2011/05/07(土) 14:20:17.2905631/2
2011/05/07(土) 14:20:37.57初心者です。まず下と次のレスのコードを見て下さい。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char list[][3][80] = {
{"abc", "Y", "syuei"},
{"def", "J", "koudan"},
{"ghi", "K", "syougaku"},
{"", "", ""}
};
char nyuryoku[100][3][80];
char tyosya[80], syomei[80];
int number, i=0, count=0;
again:
printf("図書カードカタログ:\n");
printf(" 1.入力\n 2.著者名による検索\n 3.書名による検索\n 4.終了\n\n");
printf("選択項目を入力してください:");
scanf("%d", &number);
switch (number){
case 1 :
i=0;
do{
printf("書名を入力してください(終了する場合は空白のままエンターキーを押してください):");
gets(nyuryoku[i][0]);
if(nyuryoku[i][0][0]=='\0') break;
05642/3
2011/05/07(土) 14:22:52.20printf("出版社を入力してください:");gets(nyuryoku[i][2]);
printf("登録しました。\n");
i++;
}while(i<100);
if(i==100) printf("これ以上登録できません。\n");
break;
case 2 :
printf("\n著者名を入力してください:");
gets(tyosya);
printf("検索結果・・・\n");
for(i=0, count=0; list[i][0][0]; i++)
if(!strcmp(tyosya, list[i][1]))
{
printf("%s / %s / %s", list[i][0], list[i][1], list[i][2]);
count++;
}
printf("%d件ヒットしました。", count);
break;
case 3 :
printf("\n書名を入力してください:");gets(syomei);
printf("検索結果・・・\n");
for(i=0, count=0; list[i][0][0];i++)
{
if(!strcmp(syomei, list[i][0]))
printf("%s / %s / %s", list[i][0], list[i][1], list[i][2]);
count++;
}
printf("%d件ヒットしました。", count);
break;
case 4:
05653/3
2011/05/07(土) 14:24:36.14default :
printf("無効な数字です。もう一度入力し直してください。\n");
goto again;
}
rewind(stdin); getchar();
return 0;
}
以上のコードなんですけど、switch内のどのgets関数も機能してくれないんです(泣)
何が間違ってるんでしょうか(大泣)
0566デフォルトの名無しさん
2011/05/07(土) 14:27:08.62scanf("%d", &number);
↓
scanf("%d\n", &number);
0567デフォルトの名無しさん
2011/05/07(土) 14:34:56.94有用性の問題じゃなく (別件としてなら相手してやるかも知れん)
> ブロックの中ならば、static i;のみ静的。
と、あんた言ったろ
0568563
2011/05/07(土) 14:41:36.50できませんでした・・・。
ちなみに使ってるIDEはVC++2010Expressです。
0569デフォルトの名無しさん
2011/05/07(土) 14:44:33.01scanf("%d", &number);
で入力したときの残骸を gets() が拾ってしまっている。
でも stdin をフラッシュする標準的な方法は思いつかない。すまない。
あと、
rewind(stdin);
は意図どおりにならないかもしれない。
0570デフォルトの名無しさん
2011/05/07(土) 14:49:01.59getcharでもgetsでもscanfでも、
どれでも良いけど統一したほうがいい。
0571デフォルトの名無しさん
2011/05/07(土) 14:50:04.15if(1 != scanf("%d", &i)) return 1;
printf("<%d>\n", i);
}
0572デフォルトの名無しさん
2011/05/07(土) 15:39:20.840573563
2011/05/07(土) 15:39:47.67scanfについて調べてきました。
なるほど・・・残骸、すなわち入力後の改行がストリームに残されてたままになってしまい、
gets関数が実行された途端その改行が呼び出した文字配列に入力されてしまうため機能しないわけですね。
原因が分かりました!
>>570
肝に銘じておきます・・・
皆さんどうも有難うございました。
0574デフォルトの名無しさん
2011/05/07(土) 16:02:57.850575デフォルトの名無しさん
2011/05/07(土) 16:12:58.560576デフォルトの名無しさん
2011/05/07(土) 17:41:12.89すみません。
指摘したいポイントが分かりません。
> ブロックの中ならば、static i;のみ静的。
とexternがつながりません。
別件として相手していただけませんか?
0577デフォルトの名無しさん
2011/05/07(土) 18:11:06.40auto/static/extern
ファイルスコープ
ブロックスコープ
これらはまとめて暗記しちゃえばおk
何パターンもないんだし
0578デフォルトの名無しさん
2011/05/07(土) 18:18:31.46extern int a;
static int b=2;
auto int c=3;
b=add( a, b, c);
}
0579デフォルトの名無しさん
2011/05/07(土) 20:25:59.970580デフォルトの名無しさん
2011/05/07(土) 21:07:27.52言語の関知外
OSやコンパイラ方言による
0581デフォルトの名無しさん
2011/05/07(土) 21:07:49.01そんなものはCにはない。
あるいは OS 提供(shared memory(unix), TLS(win32))。
0582デフォルトの名無しさん
2011/05/07(土) 22:20:11.470583デフォルトの名無しさん
2011/05/07(土) 22:31:59.36main()
{
extern a;
static b;
auto c;
printf("%p\n", &a);
printf("%p\n", &b);
printf("%p\n", &c);
printf("%p\n", malloc(1));
}
int a;
どうだ、つながったか?
0584デフォルトの名無しさん
2011/05/07(土) 22:44:04.03無くても何も困らんちゃね・・・
== foo.c ==
char *baz;
void foo() { puts(baz); }
== bar.c ==
void foo();
char *baz = "quux";
int main() { foo(); }
== build ==
% gcc -c foo.c -c bar.c
% gcc foo.o bar.o -o foobar
== run ==
% ./foobar
quux
0585デフォルトの名無しさん
2011/05/07(土) 22:46:30.67それはリンカが余計なお世話をしただけ
ちゃんとエラーだすコンパイラもある
0586デフォルトの名無しさん
2011/05/07(土) 22:50:21.62…使いそうなシーンが想像できなかった…
第一引数あたりにハンドルとして持ち回す設計しちゃうな
0588デフォルトの名無しさん
2011/05/07(土) 23:06:49.690589デフォルトの名無しさん
2011/05/07(土) 23:15:56.510590デフォルトの名無しさん
2011/05/08(日) 00:10:56.62int a = (b ? 1 : -1);
↑
こういう『?』とコロンで区切られているのって
どういう意味で、どういう使い方をしたら良いものなのでしょうか?
0591デフォルトの名無しさん
2011/05/08(日) 00:12:52.20三項演算子
条件演算子
あたりでぐぐればいいよ
0592デフォルトの名無しさん
2011/05/08(日) 00:13:17.86int a = (b ? 1 : -1);
bが0じゃないの場合 int a = 1;
bが0の場合 int a = -1;
0593デフォルトの名無しさん
2011/05/08(日) 00:14:57.32if(b) a = 1;
else a = -1;
0594デフォルトの名無しさん
2011/05/08(日) 00:17:05.12ありがとうございます!
0595デフォルトの名無しさん
2011/05/08(日) 00:36:30.31int a,b;
if(b != 0) a = 1;
if(b == 0) a = -1;
0596デフォルトの名無しさん
2011/05/08(日) 00:39:14.56それ以外はおk
0597デフォルトの名無しさん
2011/05/08(日) 00:40:40.38イイけど、君はなるべく優秀なコンパイラを使ったほうがいいよ
0598デフォルトの名無しさん
2011/05/08(日) 00:46:46.100599595
2011/05/08(日) 00:53:29.92これからC,C++に移行する所なのでコンパイラのことなども地道に覚えていこうと思います。
最近Visual Studo C++ 2010 Expressをインストールしましたが、まだ勉強中の身で実際には何も作っていません。
ありがとうございました。お騒がせしました。
0600595
2011/05/08(日) 00:54:20.350601デフォルトの名無しさん
2011/05/08(日) 00:57:01.61いやまてよBASICもスクリプト言語か。
0602デフォルトの名無しさん
2011/05/08(日) 01:00:11.750603595
2011/05/08(日) 01:05:16.79CGデザイナー(笑)なので作業のサポート程度に、ということで
AutoDeskのMayaというソフトのMELスクリプトというのを習いました。
その後、プラグインとか書きたくなってPythonを少し勉強し、現在C++勉強中です。
C言語と全く関係ない話題でスレ汚しすいません、本当に去ります。
0604デフォルトの名無しさん
2011/05/08(日) 01:06:25.110605デフォルトの名無しさん
2011/05/08(日) 01:17:00.84sizeof演算子ではポインタのサイズが返るだけですよね?
0606デフォルトの名無しさん
2011/05/08(日) 01:19:04.53極度の環境に依存した方法があるかも知れませんが、一般的ではないのでご自分で管理してください。
0607デフォルトの名無しさん
2011/05/08(日) 01:19:35.00標準では存在しません
どこかにサイズを確保しておくか、末尾になんかいれとくかしてください
環境依存で良ければ動的確保した領域のサイズを知る方法も一応有りますが
0608デフォルトの名無しさん
2011/05/08(日) 01:33:43.62>>607
ありがとうございます
標準では自分で実装しないといけないのですね
0609デフォルトの名無しさん
2011/05/08(日) 01:49:18.23ビットシフトはなんの役に立つのでしょうか?
0610デフォルトの名無しさん
2011/05/08(日) 02:15:28.430611デフォルトの名無しさん
2011/05/08(日) 02:24:16.38・普通にビット処理に使う
・ビットを使ったフラグ処理で、フラグをクリアするのに使う
・2 で割るより shift を 1 回した方が速い事を利用した高速化に使う
等々、最初の内は気にしなくてオケ
必要になったら思い出せる程度で理解しておけばオケ
それでオケ
0612デフォルトの名無しさん
2011/05/08(日) 02:28:14.51bit単位の演算が必要になるデータ構造がある
bit n〜m番目は、こういう情報が入るみたいな
別のbitにはまた違う情報が入るみたいな
例えばRGBを16bitで表す場合
ttp://msdn.microsoft.com/ja-jp/library/cc371597.aspx
16bitのデータで、赤、緑、青をそれぞれ5bit(もしくは5,6,5bit)で表している。
この16bitの色情報から、赤要素のみ取り出すとか、
逆に赤要素のみ変更するとか計算するときにビットシフトを使う
構造体のビットフィールド使ったほうがいいんじゃね?と思わないこともないが。
他には1bitに一つのフラグを割り当てるとかやるな
0613デフォルトの名無しさん
2011/05/08(日) 05:44:12.2710年ROMってろカス
0614デフォルトの名無しさん
2011/05/08(日) 05:49:45.13他はマジレスしちゃったんだなぁと思うが。
0615デフォルトの名無しさん
2011/05/08(日) 06:13:12.590616デフォルトの名無しさん
2011/05/08(日) 06:18:56.900617デフォルトの名無しさん
2011/05/08(日) 07:18:37.290618デフォルトの名無しさん
2011/05/08(日) 07:19:43.180619デフォルトの名無しさん
2011/05/08(日) 08:42:21.800620デフォルトの名無しさん
2011/05/08(日) 09:54:57.18みたいな文字列を入力すると計算の出来るライブラリってありませんか?
0621デフォルトの名無しさん
2011/05/08(日) 10:50:22.170622デフォルトの名無しさん
2011/05/08(日) 10:57:03.57lua でもなんでもいいのでスクリプトエンジンをリンクして
文字列のままスクリプトエンジンに渡す
0623デフォルトの名無しさん
2011/05/08(日) 11:01:26.80Maximaとリンクって出来なかったっけ?
shellで式を渡すしかないのか
0624デフォルトの名無しさん
2011/05/08(日) 11:36:04.41レスありがとうございます。
luaを検討してみます。
0625デフォルトの名無しさん
2011/05/08(日) 11:38:32.68え?ここのスレって回答する人も入門者なの?
0626デフォルトの名無しさん
2011/05/08(日) 11:45:08.400627デフォルトの名無しさん
2011/05/08(日) 12:17:26.410628デフォルトの名無しさん
2011/05/08(日) 12:29:05.180629デフォルトの名無しさん
2011/05/08(日) 12:59:57.070630デフォルトの名無しさん
2011/05/08(日) 16:05:18.650631デフォルトの名無しさん
2011/05/08(日) 16:24:49.470632デフォルトの名無しさん
2011/05/08(日) 17:35:17.390633デフォルトの名無しさん
2011/05/08(日) 19:29:57.780634デフォルトの名無しさん
2011/05/08(日) 19:32:46.13ちょっとよくわからないから、誰かためしに「スカラー量に噛み砕いた説明」をスカラー量に噛み砕いて説明してくれないかな
0635デフォルトの名無しさん
2011/05/08(日) 19:56:54.87来月から基本給が10円増える
このぐらいの差だが前者のほうが希望がある
0636デフォルトの名無しさん
2011/05/08(日) 19:58:14.07だよな
0637デフォルトの名無しさん
2011/05/08(日) 20:04:20.910638デフォルトの名無しさん
2011/05/08(日) 20:39:37.630639デフォルトの名無しさん
2011/05/08(日) 21:30:33.750640デフォルトの名無しさん
2011/05/08(日) 21:34:59.330次テンソル=スカラー
1次テンソル=ベクトル
2次テンソル=行列
3次テンソル
4次テンソル
0641デフォルトの名無しさん
2011/05/08(日) 22:17:43.120642デフォルトの名無しさん
2011/05/08(日) 22:18:57.620643デフォルトの名無しさん
2011/05/08(日) 22:19:07.220644デフォルトの名無しさん
2011/05/08(日) 22:22:22.07ねーよ
0645デフォルトの名無しさん
2011/05/08(日) 22:22:27.05例えば
void A(int x, TIME*p)
{
//
//
//
A(t,p);
}
という構造だとバグってしまうんですが・・
コンパイルエラーはありません。
0646デフォルトの名無しさん
2011/05/08(日) 22:22:32.06究極的に言えば無いけど、現実的にはある
例えば、ウェブブラウザ上で動くアプリを作るのは、
(NaCl を使うとか、自分でウェブブラウザを自作するとか、
C=>JavaScript なトランスレータを使わなければ)難しい
0647デフォルトの名無しさん
2011/05/08(日) 22:24:08.82ならねーよ
どっか他のとこでミスってんだろ低能
0648デフォルトの名無しさん
2011/05/08(日) 22:26:17.200649デフォルトの名無しさん
2011/05/08(日) 22:29:03.470650デフォルトの名無しさん
2011/05/08(日) 22:30:07.550651デフォルトの名無しさん
2011/05/08(日) 22:31:41.82ならないから
最気のせいせバグったと思い込んでるコードうpよろ
0652デフォルトの名無しさん
2011/05/08(日) 22:38:51.470653デフォルトの名無しさん
2011/05/08(日) 22:42:18.81ポインタ引数の有無でおかしくなる/おかしくならない の挙動は変わらんよ
再帰の終了条件が間違っててスタック食い潰す等の再帰関数に関係する一般的な失敗や、
ポインタの指してる先に実体が無い等のポインタ操作周辺を追ってみたら?
0654デフォルトの名無しさん
2011/05/08(日) 22:47:09.840655デフォルトの名無しさん
2011/05/08(日) 22:48:04.32>C言語で作れないソフトってありますか?
C言語「だけ」と言う条件ならある。
0656デフォルトの名無しさん
2011/05/08(日) 22:58:42.04calloc使うとどうなりますか?
0657デフォルトの名無しさん
2011/05/08(日) 22:59:09.56基本的に参照してるだけならバグり難いと思うけど、書き換えてたらなんかのロジック勘違いで
バグる可能性はあるような気がす
0658デフォルトの名無しさん
2011/05/08(日) 23:00:49.08やってみれば?
0659デフォルトの名無しさん
2011/05/08(日) 23:02:54.33死ぬ
0660デフォルトの名無しさん
2011/05/08(日) 23:09:31.10結果がどうなる?という意味ではなく
用途はどうなる?という事です。言葉足らずでお手数かけましてマコトに
申し訳ございません。
まずchar*p;として
p=calloc(1,4);の場合どうなるのでしょう?というより一般的な用途を
教えてください。
0661デフォルトの名無しさん
2011/05/08(日) 23:11:14.97死ね
0662デフォルトの名無しさん
2011/05/08(日) 23:13:19.56そもそも calloc でググルぐらいはしたのか?
http://www9.plala.or.jp/sgwr-t/lib/calloc.html
0663デフォルトの名無しさん
2011/05/08(日) 23:14:10.27このスレの>>140あたりから全部読んで、それでも聞きたければ出直してください
0664デフォルトの名無しさん
2011/05/08(日) 23:14:59.77イ`ヘ
/: :| ヽ
/ : :/ ヽ ___ _,,,:. .-: :´彡フ
_ノ\_∠: : : : : : : : :`: :-: :,:_:/彡 /
( : : : : : : : : : : : : : : `ゝ /
マ r::/: /: : | : : : : : : : : ::\ /
//: /: : : |: : | |: : |: _: : : :ヽ
ジ {/ 7|`\/i: /|:|/|´: : : : :|ヽ
〉 ,‐-‐、`|7 || |_::|,_|: : :|:::|: |
で / r:oヽ` /.:oヽヽ: :|: | :|
{ {o:::::::} {:::::0 }/: :|N
っ | ヾ:::ソ ヾ:::ソ /|: : |
!? ヽ::::ー-.. /ヽ ..ー-::: ヽ::| r--ッ
-tヽ/´|`::::::::::;/ `、 ::::::::::: /: i } >
::∧: : :|: |J \ / /::i: | /_ゝ
. \ヾ: |::|` - ,, ___`-´_ ,, - ´|: : :|:::|
ヽ: |::|\  ̄/ /| |: : :|: |
0665デフォルトの名無しさん
2011/05/08(日) 23:21:52.86不快な気分になるので止めてください。
>>662
すいません・・
関数を呼び出すたびに(2万回)
char*pに文字列を代入するんですが、この場合同じメモリ場所が
使われているのでしょうか?それならば問題ないと思うのですが・・・
0666デフォルトの名無しさん
2011/05/08(日) 23:26:39.42freeとかその辺ならってないの?
どのみち教本やりなおしてこい
その質問が出てくる時点でおかしい
0667デフォルトの名無しさん
2011/05/08(日) 23:34:05.05「C言語で (もどんな言語でも) 作れないソフト」なら
いくらでもあるでしょ、例えばバグのないプログラムとか...
と言う冗談はさておき、
CPU の特定レジスタ操作しないといけない場合とか、
RAM 使えない状態で動作しないといけないルーチンとかかな。
インラインアセンブラをC言語の範疇に入れればだいぶ
減るけど、それでも RAM なし (=レジスタのみ) となる
と基本的にCだけで書くのは無理だと思うよ。
0668デフォルトの名無しさん
2011/05/08(日) 23:35:20.700669デフォルトの名無しさん
2011/05/08(日) 23:35:48.63malloc使ったらスタックエラー出ました。
おそらく、その場の評価などのためにしか使わないchar*pを関数が呼び出されるたびに
メモリ取得するからでしょうか?
0670デフォルトの名無しさん
2011/05/08(日) 23:36:38.92しねあほ
0671デフォルトの名無しさん
2011/05/08(日) 23:37:11.14使い方がそもそもおかしいって思える
0672デフォルトの名無しさん
2011/05/08(日) 23:38:41.44ねぇ、人の話を聞かない子?
0673デフォルトの名無しさん
2011/05/08(日) 23:38:48.32自分では正しいと思ってるのにまともに動かないソースを出してもらうしかないと思うよ
本とかの説明見てわかんなかった人だろうからいまさらcallocの説明しても無駄だろうし
0674デフォルトの名無しさん
2011/05/08(日) 23:39:37.25>char*pに文字列を代入するんです
こうゆう表現をしている時点で、勘違いしているとおもわれ。
>おそらく、その場の評価などのためにしか使わないchar*pを関数が呼び出されるたびに
>メモリ取得するからでしょうか?
メモリ解放をしていないのかな?
0675デフォルトの名無しさん
2011/05/08(日) 23:42:15.05ありがとうございます。
関数の中でしか使わないので
free(p);としてますよ。
あ・・間違えました。
2万回じゃなくて2億回です。
その関数が2億回呼び出されるたびにmallocするとやはりエラーが出るのでしょうか。
0676デフォルトの名無しさん
2011/05/08(日) 23:44:40.660677デフォルトの名無しさん
2011/05/08(日) 23:45:10.000678デフォルトの名無しさん
2011/05/08(日) 23:46:38.71>BIOSでも作るつもりか
組み込み機器のブート部分とかだから、まあ BIOS みたいなもんだな。
0679デフォルトの名無しさん
2011/05/08(日) 23:54:15.93>その関数が2億回呼び出されるたびにmallocするとやはりエラーが出るのでしょうか。
そこは処理系次第。freeしてもOSにメモリを返さない処理系もある。
ただ、そんなに頻繁に呼ばれる関数内でいちいちメモリ確保するのは、
設計の筋が良くないと思うが。
0680デフォルトの名無しさん
2011/05/09(月) 00:28:22.60処理系ってOSのバージョンに依存するんですか?
それともCPUとか?
0681デフォルトの名無しさん
2011/05/09(月) 01:03:10.870682デフォルトの名無しさん
2011/05/09(月) 01:05:41.230683デフォルトの名無しさん
2011/05/09(月) 01:16:39.07a[100000]くらいは?
文字列の場合は?
0684デフォルトの名無しさん
2011/05/09(月) 01:22:41.66配列を heap に確保するのであれば、データモデルとメモリ量に依る
stack に確保するのであれば、スタックサイズに依る
文字列か数値列かどうかは関係無い
例えば LP64 環境で、メモリを 64GB 積んでいるマシンなら、
数 GB の配列を heap にアロケートするのは多分問題無い
0685デフォルトの名無しさん
2011/05/09(月) 01:29:17.31なるほどぉ。
難しいですなぁ。
0686デフォルトの名無しさん
2011/05/09(月) 01:42:13.290687デフォルトの名無しさん
2011/05/09(月) 01:47:17.04LP64 は、
L : Long
P : Pointer
64 : 64bit
つまり、long と pointer が 64bit なプログラム実行環境の事。
Windows さんは LLP64 みたいね。
0688デフォルトの名無しさん
2011/05/09(月) 01:48:49.970689デフォルトの名無しさん
2011/05/09(月) 01:52:27.140690デフォルトの名無しさん
2011/05/09(月) 02:06:54.65Large Long Pointer 64
つよいよ
0691デフォルトの名無しさん
2011/05/09(月) 02:13:39.280692デフォルトの名無しさん
2011/05/09(月) 02:34:29.94ローマ字名前を配列に1万個保存したい場合はどうしたらいいですか?
ヒープに確保したいです。配列をNAME[]とします。
0693XXX
2011/05/09(月) 04:23:44.420694デフォルトの名無しさん
2011/05/09(月) 05:21:29.63char *name[10000];
とchar型へのポインタ配列を10000個作り、strdup()で別の配列に読み込んだ
ローマ字文字のポインタを代入して行けばよい
最後にforループを回してfree()すればなおよい
(ここはあまり突っ込まない。またmalloc&free宗教戦争が勃発するから)
文字型(char型)への1000個のポインタの配列
>配列は一個<
http://hibari.2ch.net/test/read.cgi/tech/1301553333/679
0696デフォルトの名無しさん
2011/05/09(月) 12:51:14.72アロケーションスレッドの振る舞いに違いが出る
詳しくはスクェアメモリあたりを調べてみるといいかも
0697デフォルトの名無しさん
2011/05/09(月) 13:21:57.96内部的には全く変わらない実装が殆どです。意味的に判り易い方を使えばいいでしょう。
man等では第一パラメータが個数、第二パラメータが1個のサイズとなっています。
0698デフォルトの名無しさん
2011/05/09(月) 13:23:31.71何ですか? その「スクェアメモリ」って。"スクェアメモリ"でぐぐると一件も出てこないんですが。
0699デフォルトの名無しさん
2011/05/09(月) 13:34:07.45"アロケーションスレッド"もないなぁ。是非>696には解説してもらいたいが、ここじゃスレ違いだしなぁ。
ここまで見当違いのキーワードを並べるとも思えないから誤爆の可能性もあるけどなぁ。
0700デフォルトの名無しさん
2011/05/09(月) 13:58:16.880701デフォルトの名無しさん
2011/05/09(月) 19:24:59.53今無職で過去プログラマーだった時ありまたプログラマーで復帰しようかなと
思ってるけど結構忘れてて復習しようとしてるんだけど
ttp://www.geocities.jp/kenji_y0328/crenshu/
このサイトで復習するの意味ありげ?
簡単すぎるとかあんま意味ないとか意見ききたい
0702デフォルトの名無しさん
2011/05/09(月) 19:27:41.620703デフォルトの名無しさん
2011/05/09(月) 19:32:08.71いま練習6-4にさしかかってるところだけど
難しくて解答みてまあなんとか理解したって感じだけど
この程度わからないようじゃ問題だとかそんなんある?
0704デフォルトの名無しさん
2011/05/09(月) 19:38:03.72がんばれ
0705デフォルトの名無しさん
2011/05/09(月) 19:43:07.69思い出すのにはいいかも
0706デフォルトの名無しさん
2011/05/09(月) 20:36:54.980707701
2011/05/09(月) 20:53:44.33解答なぞるような事しててもやっぱり意味なさげ?
0708701
2011/05/09(月) 20:57:19.87になりそうなんだけど・・
0709デフォルトの名無しさん
2011/05/09(月) 21:02:24.68答え見ないとできないんだけどどうすればいい?っていうのは、
仕事のコードかけないんだけどどうすればいい?ってのとほとんど同じじゃないかなー。
0710デフォルトの名無しさん
2011/05/09(月) 21:07:37.820711701
2011/05/09(月) 21:15:36.01まあ過去は自分でわからなかったらネットで調べたり人に聞いたりだったかな
0712デフォルトの名無しさん
2011/05/09(月) 21:20:36.490713701
2011/05/09(月) 21:27:41.74解答なぞるだけでも
0714デフォルトの名無しさん
2011/05/09(月) 21:31:14.17実際は大したことないから参考になるよ
0715デフォルトの名無しさん
2011/05/09(月) 21:41:54.73練習6-4って、R064ってやつ?
解答見てできたってのが意味不明だけど、あの解答見て疑問に思わなかったのなら
少なくとも私は経験者として採用しないよ。
0716デフォルトの名無しさん
2011/05/09(月) 21:48:55.48>701が再就職のためのリハビリとしてやっているのなら、プロとして出せる品質を満たすために書き換えてみるといいよ。
そうだなぁ、R051辺りを書き直せたら実務経験0のC経験者として採用できる可能性はある。
その位、そのサイトの解答は質が低い。まぁ、趣旨が判らないからサイトそのものの存在意義までは否定しないけどね。
0717701
2011/05/09(月) 22:25:47.140718デフォルトの名無しさん
2011/05/09(月) 22:26:30.33初心者に解法の手順や手法を学んでもらう為のサンプルだと思うよ。
理解を妨げるような余分なチェックは省きシンプルに作っていると思った。
リハビリの練習問題としてふさわしいかはよく分からない。
それをしたいと考える人のスキルに依存するかも知れないし。
単純に考えれば、「なぞる」「なれる」「理解する」で良いと思う。
0719デフォルトの名無しさん
2011/05/10(火) 01:34:57.63リハビリが必要なプログラマなんか迷惑以外の何者でも無い
何か自分が提唱出来るC言語におけるパラダイムでも持って居るなら別だが、言語レベルで戸惑うような輩はこの業界に向いてないよ
0720デフォルトの名無しさん
2011/05/10(火) 02:00:53.540721デフォルトの名無しさん
2011/05/10(火) 02:07:48.260722デフォルトの名無しさん
2011/05/10(火) 07:47:31.890723デフォルトの名無しさん
2011/05/10(火) 08:21:40.220724デフォルトの名無しさん
2011/05/10(火) 14:11:30.61ttp://www.lancers.jp/work/detail/17184
0725デフォルトの名無しさん
2011/05/10(火) 15:54:26.28どう見てもスレ違いです。とっととお帰りください。
0726デフォルトの名無しさん
2011/05/10(火) 18:37:15.16int main(void)
{
char*p;
char*s;
p = (char *)malloc(20);
s = (char *)malloc(20);
p="abc";
s="abcd";
strcpy(p,s);
printf("%s\n",p);
}
エラーが出ます・・・・
何故でしょう?
どこも間違ってるように見えません。
0727デフォルトの名無しさん
2011/05/10(火) 18:43:17.88で、コードセグメント中の書き込み不可の文字配列を指してるから、
strcpy(p,s); としようとしてもうまくいかない。
0728デフォルトの名無しさん
2011/05/10(火) 18:44:06.530729デフォルトの名無しさん
2011/05/10(火) 18:44:31.88pが指している先を"abc"に変えただけであって、
mallocで確保した領域にはコピーされていない
0730デフォルトの名無しさん
2011/05/10(火) 18:47:36.39エラーは出ないと思うけど?
#include <stdio.h>
#include <stdlib.h>
〜〜〜〜
return 0;
0731デフォルトの名無しさん
2011/05/10(火) 18:50:35.32s="abcd";
strcpy(p,s);
0732デフォルトの名無しさん
2011/05/10(火) 18:51:48.03出ます。
#include<string.h>
int main(void)
{
char*p;
char*s;
p="abc";
s="abcd";
strcpy(p,s);
printf("%s\n",p);
}
malloc抜きました。これでもCorrupt stackエラーがでます。
で20バイトの領域を確保してその先頭アドレスをpに格納している
p="abc";
でコンパイル時に領域確保された"abc"の先頭アドレスをpに格納している
この時点で先ほどmallocで確保した領域はメモリリーク
strcpy(p,s);
pの先はは書き換え付加領域なのでエラー
0734デフォルトの名無しさん
2011/05/10(火) 18:53:43.66strcpy( p, "abcd" );
printf( "%s\n", p );
0735デフォルトの名無しさん
2011/05/10(火) 18:55:12.32おまえわざとだろ・・・www
0736デフォルトの名無しさん
2011/05/10(火) 18:58:39.69さん。>>732はどういうことでしょう?
0737デフォルトの名無しさん
2011/05/10(火) 18:59:12.00"abc" とかの文字列定数は上書きしちゃいけないぜ
なにせ定数だからな
strcpy("abc", "abcd"); って書いてみればアホなことやってるのがわかるだろ
0738デフォルトの名無しさん
2011/05/10(火) 19:02:49.33char*p,char*sの設定は決まりとします。
0739デフォルトの名無しさん
2011/05/10(火) 19:03:48.70コピー先に、コピーできるだけの十分な空きを確保してから実行。
0740デフォルトの名無しさん
2011/05/10(火) 19:07:38.05p = (char *)malloc(20);
s = (char *)malloc(20);
strcpy(p, "abc");
strcpy(s, "abcd");
strcpy(p, s);
こうじゃね
0741デフォルトの名無しさん
2011/05/10(火) 19:14:24.880742デフォルトの名無しさん
2011/05/10(火) 19:26:13.84{
char* b = malloc(20);
strcpy(b, a);
return b;
}
こんなのつくって
p = new_str("abc");
s = new_str("abcd");
strcpy(p,s);
こうすれば
0743デフォルトの名無しさん
2011/05/10(火) 19:30:37.88そこはstrncpy()に直しとけよw
0744デフォルトの名無しさん
2011/05/10(火) 19:41:31.040745デフォルトの名無しさん
2011/05/10(火) 19:43:05.46p = new_str("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
0746デフォルトの名無しさん
2011/05/10(火) 19:53:45.77http://codepad.org/M1q8QRMM
0747デフォルトの名無しさん
2011/05/10(火) 19:56:44.37元が考慮してないんだから、それが起こることはないという絶対の自信があるんだろうと思うよ
0749デフォルトの名無しさん
2011/05/10(火) 19:59:50.620750デフォルトの名無しさん
2011/05/10(火) 20:01:11.50char*ss; char*pp;
"abcd","abc"、s,pを用いずss,ppを使うことによってstrcpyを使う場合は
どうなりますか?
その結果printf("%s\n",s)が
abcと出力される。
0751デフォルトの名無しさん
2011/05/10(火) 20:01:46.68なんか嫌なコードだな
mallocにキャスト必要無いしcharは1バイトが保証されてる
0752デフォルトの名無しさん
2011/05/10(火) 20:08:26.86malloc のキャストはともかく,
sizeof(char) については他の型の場合とで見た目を変えたくないので
0753デフォルトの名無しさん
2011/05/10(火) 20:11:34.46ポインタの複写と
ポインタで指した先の内容の複写
文字列って何? が整理ついていないような気配
0754デフォルトの名無しさん
2011/05/10(火) 20:27:02.39そうかもしれません。
char*p;
としたらとりあえずchar型へのポインタでよね。
この場合メモリーが取得されてるからp=malloc・・・とするのは
間違いじゃないんdねすか?
0755デフォルトの名無しさん
2011/05/10(火) 20:30:53.75他に基礎固めとして読んどくべき本があれば教えてほしいです。
これぞ隠れた名著!みたいな本もあればぜひとも教えてほしいです。
0756デフォルトの名無しさん
2011/05/10(火) 20:31:44.19> そうかもしれません。
かもしれない、じゃなくてねw
自分が理解できてないことすら理解できないのなら道は遠いぞw
自分でちゃんと勉強した?w
0757デフォルトの名無しさん
2011/05/10(火) 20:32:48.66> char*p;
> としたらとりあえずchar型へのポインタでよね。
ここまでは正解。
>この場合メモリーが取得されてるから
いいえ。
0758デフォルトの名無しさん
2011/05/10(火) 20:40:48.00char*pの場合はポインタだから、mallocしたら、ポインタp先の領域が確保
されてるってことなんですね。ポインタ自体の領域は別にあるんですね。
int pをmallocする場合はp自体の場所が領域としてあらたに保持される。
この理解でよろしいいでしょうか?
0759デフォルトの名無しさん
2011/05/10(火) 20:42:01.41違います。
0760デフォルトの名無しさん
2011/05/10(火) 20:47:31.38どうやるの?
0761デフォルトの名無しさん
2011/05/10(火) 21:08:46.31すいません、どこが違うのでしょう・・?
けんか腰ではありません!
0762デフォルトの名無しさん
2011/05/10(火) 21:12:39.790763デフォルトの名無しさん
2011/05/10(火) 21:17:28.15----- -------------
| | | | | |
| p |---------→| A | B | C |
----- -------------
100番地 n番地 m番地 z番地
ってことですよね?
間違いですか?
0764デフォルトの名無しさん
2011/05/10(火) 21:19:52.74ポインタはメモリの住所を格納する変数。
malloc()はメモリ一部分を確保して、そこの住所を返す。
ポインタは初期化していないと、無意味な住所が入ってる。
あとはわかるな?
0765デフォルトの名無しさん
2011/05/10(火) 21:22:45.78"ABC"って何をしてるんですか?
char*p="ABC" + "DEF"の場合どうなるんですか?
0766デフォルトの名無しさん
2011/05/10(火) 21:24:14.410767デフォルトの名無しさん
2011/05/10(火) 21:31:13.80分かります。メモリの情報が入った変数ですよねw
あぁ情報って言ったらごかいされそうだなwどこにあるかという
情報。
char*p=(char*)malloc(10)
としたら。10個のcharを格納できるメモリを取得してその先頭アドレスを
pに保存するって意味ですよね。
0768デフォルトの名無しさん
2011/05/10(火) 21:32:38.59コンパイルエラー
>>766
変数に初めて値を代入する
0769デフォルトの名無しさん
2011/05/10(火) 21:34:23.68"ABC" は {'A', 'B', 'C', '\0'} というchar型配列の先頭のアドレスとして扱われる
そして,"ABC" + "DEF" はアドレス同士の足し算になる
従って,char *p には "ABC" とも "DEF" とも関係ないアドレスが代入される
下のサイトでも読んで,それでもわからなかったら質問してくれ
ttp://okuyama.mt.tama.hosei.ac.jp/unix/C/
0770デフォルトの名無しさん
2011/05/10(火) 21:36:09.31すまん
> そして,"ABC" + "DEF" はアドレス同士の足し算になる
は間違い
>>768 のコンパイルエラーが正しい
0771デフォルトの名無しさん
2011/05/10(火) 21:38:46.87OK
あともう一つ。
それはpにメモリが確保された訳じゃない。
確保されたのは、あくまでもpが指してるメモリ。
0772デフォルトの名無しさん
2011/05/10(火) 21:42:50.570773デフォルトの名無しさん
2011/05/10(火) 21:47:29.070774デフォルトの名無しさん
2011/05/10(火) 21:50:32.66char*p=(char*)malloc(10)
は10バイトを割り当て、割り当てられたメモリに対するポインタで、char *として宣言された変数pを初期化している。
0775デフォルトの名無しさん
2011/05/10(火) 21:55:29.02コンパイルエラーになるのはなんでですか?
0776デフォルトの名無しさん
2011/05/10(火) 22:04:24.16char*p="ABC""DEF";
とすればエラーにはならん
0777デフォルトの名無しさん
2011/05/10(火) 22:04:29.55+の被演算子が両方共ポインタという演算は定義されていないから。
ポインタと整数はOK
ポインタとポインタの差をとるのもOK.
0778デフォルトの名無しさん
2011/05/10(火) 22:08:46.31文字列リテラルの型はconst char [N]。
したがって通常の配列と同様に、式中ではその先頭要素を指すポインタとなる。
(例外は&, sizeofの被演算子になった場合と配列の初期化子になった場合)
char*p="ABC";
とした場合、"ABC"の先頭要素であるAを指すポインタでpを初期化する。
0779デフォルトの名無しさん
2011/05/10(火) 22:25:52.590780デフォルトの名無しさん
2011/05/10(火) 22:34:15.16ごちゃごちゃしてよくわからん
0781726
2011/05/10(火) 22:40:50.16初心者の場合なぜコンパイルエラーになるかが大事ですよね
ちょっ考えればポインタ同士の演算で+*/は意味が無いってわかりますよね
位置同士の演算で-なら距離とかを期待できるけど
+*/した結果に何を期待するかとなると意味無いんじゃないに成りますよね
0782デフォルトの名無しさん
2011/05/10(火) 23:25:51.35次に、文字列をどうにかする「演算子」は、Cには存在しない(全て関数である)ことを認識せよ。
0783デフォルトの名無しさん
2011/05/10(火) 23:46:49.210784デフォルトの名無しさん
2011/05/10(火) 23:52:23.360785デフォルトの名無しさん
2011/05/11(水) 00:02:37.13これでソフト作る奴はきちがいになれ
0786デフォルトの名無しさん
2011/05/11(水) 00:34:32.730787デフォルトの名無しさん
2011/05/11(水) 00:39:28.530788デフォルトの名無しさん
2011/05/11(水) 00:56:14.760789デフォルトの名無しさん
2011/05/11(水) 00:59:10.050790デフォルトの名無しさん
2011/05/11(水) 01:31:23.15それなのに金は付いてくる、そこがすげぇよ
0791デフォルトの名無しさん
2011/05/11(水) 01:46:46.970792デフォルトの名無しさん
2011/05/11(水) 09:08:00.64char *p[10] = { 0 };
0793デフォルトの名無しさん
2011/05/11(水) 10:06:22.14いいよ
0794デフォルトの名無しさん
2011/05/11(水) 10:10:35.10�d
0795デフォルトの名無しさん
2011/05/11(水) 11:18:10.600796デフォルトの名無しさん
2011/05/11(水) 11:26:14.430797デフォルトの名無しさん
2011/05/11(水) 11:32:24.240798デフォルトの名無しさん
2011/05/11(水) 11:34:22.25どうしてお前はドザなんだ?
0799デフォルトの名無しさん
2011/05/11(水) 11:44:27.580800デフォルトの名無しさん
2011/05/11(水) 12:29:00.96あんたが C 専門で,C++ に触れるつもりもないって言うんだったら
キャストしなくていいと思うよ
別に仕様で禁止されてるわけじゃないんだし,文句言われる筋合いはない
0801デフォルトの名無しさん
2011/05/11(水) 12:59:43.660802デフォルトの名無しさん
2011/05/11(水) 13:32:38.39OSを買う金すらなくて、C++をベターCとしてしか使えない奴が犯人ってことか。
さすがにいねーだろそんな奴w
0803デフォルトの名無しさん
2011/05/11(水) 13:33:58.35従って、Cスタイルキャストなんてするのが馬鹿。
0804デフォルトの名無しさん
2011/05/11(水) 14:28:53.630805デフォルトの名無しさん
2011/05/11(水) 16:47:20.98ベターCだったら、mallocは基本関数だろう。
C++でCスタイルキャストを使うと、ウォーニングエラーになる?(o/x)
0806デフォルトの名無しさん
2011/05/11(水) 16:49:28.61をy(ml)飲みました。摂取したアルコールの量zを求め表示するプログラムを作りなさい
/* 演習問題2−9 */
#include <stdio.h>
main()
{
float x, y, z;
printf ("ビール(本) => "); scanf("%f",&x);
printf ("焼 酎(ml) => "); scanf("%f",&y);
z = x * 350 * 0.055 + y * 0.2;
printf ("アルコールの摂取量は %6.1f\n",z);
return (0);
}
意味が分からないので教えて下さい
0807デフォルトの名無しさん
2011/05/11(水) 16:51:27.05-Wold-style-cast
0808デフォルトの名無しさん
2011/05/11(水) 16:51:56.29どこが判らないのか具体的に。
難しいことなど何にもないのだから、全部が全部判らないというのなら教本を始めから遣り直しましょう。
0809デフォルトの名無しさん
2011/05/11(水) 16:54:04.08たぶん算数の文章問題が苦手な人なんだよきっと
0810デフォルトの名無しさん
2011/05/11(水) 16:54:24.260.2になるあたりは俺も意味がわからないよ
0811デフォルトの名無しさん
2011/05/11(水) 16:57:47.20大丈夫、それは私にも判らない。駄菓子菓子、>806がそこが判らないのかどうかは分からない。
0812デフォルトの名無しさん
2011/05/11(水) 17:01:52.96z = x * 350 * 0.055 + y * 0.2;
この計算の部分です
0813デフォルトの名無しさん
2011/05/11(水) 17:02:52.53z = x * 350 * 0.055 + y * 0.25;
0814デフォルトの名無しさん
2011/05/11(水) 17:03:08.220815デフォルトの名無しさん
2011/05/11(水) 17:05:40.61単位に注目すると、[ml] = [缶] * [ml/缶] * [%] + [ml] * [%]。
[缶] * [ml/缶]は[ml]になる。つまり、飲んだビールの量を缶単位ではなくml単位に単位換算している。
25[%]を何故0.2にするのかは恐らく書いた本人以外は分からないと思う。
0816デフォルトの名無しさん
2011/05/11(水) 17:09:31.11所々知識の危うい所はありますが、試験は全部持ち込み可なので十分です
0817デフォルトの名無しさん
2011/05/11(水) 17:12:17.64#include<string.h>
#define A 100
int na(char str[]);
int main(void)
{
char a[A];
scanf("%s",a);
na(a);
return 0;
}
int na(char str[])
{
printf("文字の長さは%d desu\n",strlen[str]);
}
何で動かないのこれ?
0818デフォルトの名無しさん
2011/05/11(水) 17:13:22.84体積比率 重量比率 で分かれてるのか? とぐぐってみたが同じだった
0819デフォルトの名無しさん
2011/05/11(水) 17:14:24.570820デフォルトの名無しさん
2011/05/11(水) 17:14:39.53>>819
strlen(str)
0821デフォルトの名無しさん
2011/05/11(水) 17:16:28.1521行目、関数の使い方が間違っている。
23行目、戻り値がない。
だからエラーになっている。今度から、「動かない」ではなく「これこれのエラーが出た」まで書くようにしよう。
0822デフォルトの名無しさん
2011/05/11(水) 17:22:31.760823デフォルトの名無しさん
2011/05/11(水) 17:27:55.22値を返してないのは警告どまり
0824デフォルトの名無しさん
2011/05/11(水) 17:32:54.37かんちがいした
やっぱむずいわ
今度から「動かない」ではなく「これこれのエラーが出た」まで書きます
ありがとうございました
0825デフォルトの名無しさん
2011/05/11(水) 17:34:29.310826デフォルトの名無しさん
2011/05/11(水) 17:40:17.03え?
0827デフォルトの名無しさん
2011/05/11(水) 17:57:55.77すぐ気づきもしようもんだが・・
0828デフォルトの名無しさん
2011/05/11(水) 18:00:57.12動かなくはないだろ。
0829デフォルトの名無しさん
2011/05/11(水) 18:12:40.46え?
0830デフォルトの名無しさん
2011/05/11(水) 18:18:05.87まさか君が惨めで暗くて寂しいC89を使ってるとは思わなかったから…
0831デフォルトの名無しさん
2011/05/11(水) 18:19:03.62コンパイルエラーが出るという話をしているんだが理解できているか?
0832デフォルトの名無しさん
2011/05/11(水) 18:27:27.010833デフォルトの名無しさん
2011/05/11(水) 18:36:53.28は?
0834デフォルトの名無しさん
2011/05/11(水) 20:18:10.99int hika(char str[],char str2[])
{
if(str==str2)
{
return 0;
}
else
{
return 1;
}
}
関数を作りましたstrcmpをつかえば出来るんだけど、あえて使わない方向で。
strとstr2が同じとき0を返したいのに、同じときも違うときも1を返します
0835デフォルトの名無しさん
2011/05/11(水) 20:20:38.93なんだろこれ
意味不
なんで if(str==str2) じゃだめなんだろ
0836デフォルトの名無しさん
2011/05/11(水) 20:21:44.99まあ-Wallつけたらさすがに警告は出る
0837デフォルトの名無しさん
2011/05/11(水) 20:22:06.270838デフォルトの名無しさん
2011/05/11(水) 20:23:27.23ちゃんとループして文字を比較してください
0839デフォルトの名無しさん
2011/05/11(水) 20:24:17.53strとstr2は文字列ではありませんcharのポインタです
ポインタを比較しても中身が同じかどうかなんて分かりません
Cに文字列型は存在しないのでおとなしくstrcmpで比較しましょう
0840デフォルトの名無しさん
2011/05/11(水) 20:24:50.30はいれつーーーーーーーーーーーーー
0841デフォルトの名無しさん
2011/05/11(水) 20:29:45.93へ?
0842デフォルトの名無しさん
2011/05/11(水) 20:31:00.06そらそうよ
0843デフォルトの名無しさん
2011/05/11(水) 21:58:03.80配列は、一部の例外を除いてポインタに型変換される。
一部の例外とは、sizeof演算子,単項の&演算子での演算、
またはchar型配列の初期化時に文字列リテラルを代入する場合。
つまりstrとstr2は、==演算子で演算されるときに、
配列の先頭を示すcharのポインタとして比較される。
入門者相手の解説なら、>>839の方が単純で分かりやすいんだろうが、
厳密に言うと違う
0844デフォルトの名無しさん
2011/05/11(水) 22:19:23.71w
0845デフォルトの名無しさん
2011/05/11(水) 22:23:00.770846デフォルトの名無しさん
2011/05/11(水) 22:29:22.37だな。関数内では既にポインタだな。
0847デフォルトの名無しさん
2011/05/11(水) 22:59:01.06傷口に塩を塗り込むようで申し訳ないが、、。
前半の文章は、私が別件でレスした内容と全く同じ。
なんだか私が間違ったことを書いているみたいで、恥ずいじゃないか。
0848デフォルトの名無しさん
2011/05/11(水) 23:20:27.05char*pにおいて、pが100番地(番地の数字は適当)を指していたとします。
でchar*tと新たにポインタを設定して、t=pとしますよね?
するとtも100番地を指しますよね?
そして、この後pが別の番地200を指した場合、tも200番地を指すのでしょうか?
0849デフォルトの名無しさん
2011/05/11(水) 23:34:47.08いいえ。
0850デフォルトの名無しさん
2011/05/11(水) 23:36:41.56int main(void)
{
char*p;char*s; char*r;
p="yamada";s=p;
printf("%p\n",s);
printf("%p\n",p);
p="tanaka";
printf("%s\n",p);printf("%s\n",s);printf("%p\n",s);printf("%p\n",p);
}
すいません、確かに変わるわけないですよね。
0851デフォルトの名無しさん
2011/05/11(水) 23:41:17.33printf("%p\n",char_reply());はエラーを起こさないのですが
printf("%p\n,&char_reply());がエラーを起こしてしまいます。
もちろん()の中は引数入ってますよ。省略してますが。
char*tの場合
printf("%s\n",t)も
printf("%s\n",&t)もエラー起こしません。
どういうことなのでしょうか?
0852デフォルトの名無しさん
2011/05/11(水) 23:50:06.37奥深いなw
言語仕様上はよく分かんけど、関数の戻り値は一般的にレジスタでアドレスがないから
なんか、自分で言ってて嘘くさい…
0853デフォルトの名無しさん
2011/05/11(水) 23:53:26.410854デフォルトの名無しさん
2011/05/11(水) 23:57:30.94例が構文エラーなのはおいといて、右辺値なので&演算子は使えない。
てか、そういうエラーでてない?
0855デフォルトの名無しさん
2011/05/11(水) 23:57:41.37lvalue じゃないからダメよってエラーが出るでしょ
0856デフォルトの名無しさん
2011/05/11(水) 23:58:03.72&char_reply()
こんな文法はCに存在しないから
0857デフォルトの名無しさん
2011/05/12(木) 00:01:30.85文法的には何の問題もないだろ
0858デフォルトの名無しさん
2011/05/12(木) 00:05:59.15問題なきゃエラー出るわけねーだろクズ
0859デフォルトの名無しさん
2011/05/12(木) 00:13:11.37ptr=char_reply;
printf("%p\n",&ptr);ならちゃんと
ポインタ変数のアドレスが出てくるんですよ。
0860デフォルトの名無しさん
2011/05/12(木) 00:15:46.98それ関数のアドレスだよ
関数はメモリ上に機械語の命令が展開されるからアドレスが振られていて当たり前だし、
関数にアドレスが無かったら関数ポインタを使ったテクニックも使えなくなっちゃうでしょ
0861デフォルトの名無しさん
2011/05/12(木) 00:16:06.78それはptrのアドレスやからや。
char *pのとき&pの型はchar **になる。分かってる?
0862デフォルトの名無しさん
2011/05/12(木) 00:18:07.42ptrは左辺値
0863デフォルトの名無しさん
2011/05/12(木) 00:18:53.330864デフォルトの名無しさん
2011/05/12(木) 00:20:54.99分かります。
char*str
char**qtr=&str
printf("%p\n,qtr)とprintf("%p\n",&str)は同じ値。
0865デフォルトの名無しさん
2011/05/12(木) 00:22:26.18(関数が返したアドレスの)アドレスが無いからエラーになる
0866デフォルトの名無しさん
2011/05/12(木) 00:23:14.65ホントかよw
>>851
> char*tの場合
> printf("%s\n",t)も
> printf("%s\n",&t)もエラー起こしません。
意図不明なこれ見て言ったんだが。
0867デフォルトの名無しさん
2011/05/12(木) 00:23:20.61こころがおれたw
とりあえずstrcmpでいいや
こんなんでだいじょうぶかな
まあstrcmpでできることはstrcmpでやればいいんだけどさ
0868デフォルトの名無しさん
2011/05/12(木) 00:24:29.66一応情報何だから動的にメモリを移動することはありますよね?
0869デフォルトの名無しさん
2011/05/12(木) 00:26:47.81厳密な事は言えないけど、プログラムからアクセスしていいエリアには移動されないと思うわ
0870デフォルトの名無しさん
2011/05/12(木) 00:29:41.79プリントフは何か聞こえがださいですよね。
0871デフォルトの名無しさん
2011/05/12(木) 00:30:54.960872デフォルトの名無しさん
2011/05/12(木) 00:31:14.72p = &(a+b);
こんなことできないだろ。
それと同じだよ。
0873デフォルトの名無しさん
2011/05/12(木) 00:32:38.29一番カッコいいのは
ストラシーパイ
0874デフォルトの名無しさん
2011/05/12(木) 00:36:32.79フツーにエディターが使える今ならこんな省略なんてありえないだろ。
0875デフォルトの名無しさん
2011/05/12(木) 00:38:50.410876デフォルトの名無しさん
2011/05/12(木) 00:38:58.190877デフォルトの名無しさん
2011/05/12(木) 00:39:37.70Unixのコマンドやディレクトリ名なんかも省略しまくりだしな。
usr とか、こんな1文字ばか減らしてどうなんだよ? ってのもあるしな。
0878デフォルトの名無しさん
2011/05/12(木) 00:41:13.86"C"
0879デフォルトの名無しさん
2011/05/12(木) 00:42:19.57"D"
(´・ω・`)
0880デフォルトの名無しさん
2011/05/12(木) 00:43:16.510881デフォルトの名無しさん
2011/05/12(木) 00:44:50.23真っ先に最適化されるから出ない
0882デフォルトの名無しさん
2011/05/12(木) 00:45:50.730883デフォルトの名無しさん
2011/05/12(木) 00:49:18.340884デフォルトの名無しさん
2011/05/12(木) 00:54:59.34% cat foo.c
int main() {
int i = 0;
for(;;) { i++; if(i>1000000000) break;};
}
% cat bar.c
int main() {
int i = 0;
while(1) { i++; if(i>1000000000) break;};
}
% gcc -S foo.c
% gcc -S bar.c
% diff foo.s bar.s
%
% gcc foo.c -o foo
% gcc bar.c -o bar
% sum foo
56129 9 foo
% sum bar
56129 9 bar
0885デフォルトの名無しさん
2011/05/12(木) 00:55:54.64getsを使ってねということ
0886デフォルトの名無しさん
2011/05/12(木) 01:02:58.19そんな話をしたら白い目で見られた、今日この頃・・・
0887デフォルトの名無しさん
2011/05/12(木) 02:46:26.16O_CREATのことは許してやってくれ。。。
0888デフォルトの名無しさん
2011/05/12(木) 11:13:32.04失せろ上級者!
0889デフォルトの名無しさん
2011/05/12(木) 12:12:36.38かんたんC言語 と やさしいC言語 はどうなのでしょうか?
0890デフォルトの名無しさん
2011/05/12(木) 12:14:46.350891デフォルトの名無しさん
2011/05/12(木) 12:14:52.47つーか、だったら
1バイト = 32ビット
ってすれば良いじゃん。
わざわざ4アドレス持たせる意味あんのか?
設計した奴アホなんじゃね?
0892デフォルトの名無しさん
2011/05/12(木) 12:15:57.790893デフォルトの名無しさん
2011/05/12(木) 12:18:58.34それだと char* が使えなくなるじゃないか
それとも文字列 1 文字あたり 32 ビット使うのか?
まぁ Unicode でそうするのもありかもしれんな
0894デフォルトの名無しさん
2011/05/12(木) 12:28:52.56どっちかっていう判断がそもそも間違い。
どっちも読め。
ネットの入門サイトなんかも含めて読みまくるべき。
0895デフォルトの名無しさん
2011/05/12(木) 12:35:04.77Web上のサイトでは猫Cはおすすめできない
Windows APIが絡むとCが極端に退屈でつまらないものになる。
0896デフォルトの名無しさん
2011/05/12(木) 13:20:05.93しなさい。
#include <stdio.h>
void main(void)
{
int i, j, n, n1, k;
double a[10][11], w;
printf ("未知数の数=> ");
scanf ("%d", &n);
n1 = n + 1;
/* 方程式の係数の入力 */
for (i=1; i<=n; i++) {
for (j=1; j<=n1; j++) {
printf ("方程式の係数 a[%d][%d]=> ",i, j);
scanf ("%lf", &a[i][j]);
}
}
/* 方程式の係数の表示 */
printf ("\n方程式の係数 a[%d][%d]\n",n, n1);
for (i=1; i<=n; i++) {
for (j=1; j<=n1; j++) {
printf ("%8.2lf", a[i][j]);
}
printf ("\n");
}
0897デフォルトの名無しさん
2011/05/12(木) 13:21:44.31for (k=1; k<=n; k++) {
w = a[k][k];
for (j=k; j<=n1; j++) {
a[k][j] = a[k][j]/w;
}
for (i=1; i<=n; i++) {
if (k != i) {
w = a[i][k];
for (j=k; j<=n1; j++) {
a[i][j] = a[i][j]-w*a[k][j];
}
}
}
}
/* 計算結果の表示 */
printf ("\n計算結果の表示\n");
for (i=1; i<=n; i++) {
printf("x[%d] = %8.3lf\n",i, a[i][n1]);
}
}
これ、数学2Bしか履修してないしそもそもfor文の入れ子とか難し過ぎるんですけど
説明できる方いますか?
問題文を間違えたのでもう一度
21.ガウスージョルダンの掃き出し法により、次の連立方程式を解くプログラム
を作成しなさい。
0898デフォルトの名無しさん
2011/05/12(木) 13:23:30.00>808
0899デフォルトの名無しさん
2011/05/12(木) 13:24:40.903x[1] + 5x[2] + 2x[3] = 5;・・・2
4x[1] + 3x[2] + 30x[3] = 32; ・・・・3
0900デフォルトの名無しさん
2011/05/12(木) 13:26:45.72お願いします
0901デフォルトの名無しさん
2011/05/12(木) 13:45:14.29数学が解らないなら数学板に行ってこい。
0902デフォルトの名無しさん
2011/05/12(木) 13:58:50.100903デフォルトの名無しさん
2011/05/12(木) 15:08:44.900904デフォルトの名無しさん
2011/05/12(木) 15:43:53.72実際は中1で習う程度のことだったりする
0905デフォルトの名無しさん
2011/05/12(木) 15:49:54.430906デフォルトの名無しさん
2011/05/12(木) 18:15:37.9420年も前のこといつまでも覚えてるわけない
0907デフォルトの名無しさん
2011/05/12(木) 18:16:24.550908デフォルトの名無しさん
2011/05/12(木) 18:20:36.68間違いを見つけて欲しいのかいな?
0909デフォルトの名無しさん
2011/05/12(木) 18:21:22.30なんか面白い言い回しだな。
意地悪で揚げ足取るわけじゃないけど、直近20年のことしか覚えられない人みたいで
0910デフォルトの名無しさん
2011/05/12(木) 18:41:04.050911デフォルトの名無しさん
2011/05/12(木) 18:43:01.680912デフォルトの名無しさん
2011/05/12(木) 18:43:20.190913デフォルトの名無しさん
2011/05/12(木) 18:43:44.030914デフォルトの名無しさん
2011/05/12(木) 19:00:32.600915デフォルトの名無しさん
2011/05/12(木) 19:38:06.41>>904
aho
0916デフォルトの名無しさん
2011/05/12(木) 19:41:06.700917デフォルトの名無しさん
2011/05/12(木) 19:59:55.28計算自体は小学生レベルの算数だっていうのに
0918デフォルトの名無しさん
2011/05/12(木) 20:07:43.64何言ってんだ
0919デフォルトの名無しさん
2011/05/12(木) 20:11:16.36>>625-626
0920デフォルトの名無しさん
2011/05/12(木) 20:13:01.680921デフォルトの名無しさん
2011/05/12(木) 20:18:47.60はやく128ビットOSが出るように願う
0922デフォルトの名無しさん
2011/05/12(木) 20:19:31.31がんばる
0923デフォルトの名無しさん
2011/05/12(木) 20:21:27.34有効数字2桁でちょろまかす
0924デフォルトの名無しさん
2011/05/12(木) 20:24:05.45128ビットだとどうなるんです?
0925デフォルトの名無しさん
2011/05/12(木) 20:25:34.06例えばlong long(C99から対応)などの大きい型を使う
それでも足りないほどの巨大な数を扱うのであれば
多倍長整数演算を実装する必要がある
0926デフォルトの名無しさん
2011/05/12(木) 20:27:32.14あれ見ろ
0927デフォルトの名無しさん
2011/05/12(木) 20:34:45.830928デフォルトの名無しさん
2011/05/12(木) 20:44:46.180929デフォルトの名無しさん
2011/05/12(木) 20:49:03.670930デフォルトの名無しさん
2011/05/12(木) 20:49:40.50単純に上位の桁と下位の桁に分けて計算すればいいだけじゃん。
もっと桁を増やしたいなら四つでも八つでも分けたらいいし。
どうすれば、って訊くほどのものか?
0931デフォルトの名無しさん
2011/05/12(木) 20:51:20.82コードおねがいします
0932デフォルトの名無しさん
2011/05/12(木) 20:52:56.24gmp を使う
0933デフォルトの名無しさん
2011/05/12(木) 20:53:07.91200文字同士の掛け算がアホのように遅かった。
その後にBigIntを知ってそのアホなスクリプトは封印した。
0934デフォルトの名無しさん
2011/05/12(木) 20:53:59.13あるあるwww
0935デフォルトの名無しさん
2011/05/12(木) 21:38:55.620936デフォルトの名無しさん
2011/05/12(木) 21:41:40.19Clutter
Gtk+
Tk
SDL
GLUT
0937デフォルトの名無しさん
2011/05/12(木) 21:45:11.83多倍長整数同士の除算を行う単純な方法を教えてくれ
0938デフォルトの名無しさん
2011/05/12(木) 21:46:47.03倍倍にしながら数値を比較して減算していく
0939デフォルトの名無しさん
2011/05/12(木) 21:49:37.76減算できて除算ができないとか釣りだろ
0940デフォルトの名無しさん
2011/05/12(木) 21:51:37.41strcmpのソースをみりゃいいんだけどね。
やりたかったのはこんな感じでしょ。NULLを渡された場合は考えてないからそのツモリで
int hika(char str[],char str2[])
{
int i;
/* str終端まで比較 */
for (i = 0; str[i] != '\0'; i++) {
if (str[i] != str2[i]) {
/* 不一致ならループ抜ける。 */
break;
}
}
if ((str[i] - str2[i]) == 0) {
return 0; /* 一致 */
} else {
return 1; /* 不一致 */
}
}
0941デフォルトの名無しさん
2011/05/12(木) 21:58:17.660942デフォルトの名無しさん
2011/05/12(木) 21:59:10.54ありがとうございます
0943デフォルトの名無しさん
2011/05/12(木) 21:59:57.46ふーん。
hika("hogehoge", "hoge");
0944デフォルトの名無しさん
2011/05/12(木) 22:00:48.800945デフォルトの名無しさん
2011/05/12(木) 22:05:00.65CでGUIアプリを作るときに使うのは一般的にWIN32APIですか?
ていうかCはGUIアプリ作成に向いていますか?
0946デフォルトの名無しさん
2011/05/12(木) 22:05:22.88ぶちころすお
0947デフォルトの名無しさん
2011/05/12(木) 22:08:56.88while( *str1++ && *str2++ ) {
if( *str1 != *str2 ) {
return 1;
}
}
return 0;
}
0948デフォルトの名無しさん
2011/05/12(木) 22:10:31.83なんでだよ
5個のりんごを2人で分けましょう
2人が1個ずつとると、3個のこりました
さらに1個ずつとると、1個のこりました
さらに1個ずつとろうとすると、足りないことに気がついたので、
けんかにならないように、お皿へもどしました。
2人は2個ずつのりんごをもち、残ったのはひとつです。
0949デフォルトの名無しさん
2011/05/12(木) 22:11:39.81>CはGUIアプリ作成に向いていますか
ぶっちゃけ向いてないと思うよ。
GUI アプリの作成は、オブジェクト指向言語が最高にマッチしている最も代表的な分野で、
オブジェクト指向を備えていない言語で GUI のプログラミングをするのはかなり大変。
勿論 C で GUI アプリを作る事は不可能じゃないけど、プログラムの記述量は多くなるし、
奇麗に見通しよく書こうとすると並大抵の労力では不可能だと思う。
C で作られている GUI アプリって、めぼしい物では Gimp くらいじゃないかな。
0950デフォルトの名無しさん
2011/05/12(木) 22:23:15.84http://codepad.org/e9Cyp5Fl
0951デフォルトの名無しさん
2011/05/12(木) 22:28:27.18http://hibari.2ch.net/test/read.cgi/tech/1301553333/668
0952デフォルトの名無しさん
2011/05/12(木) 22:41:23.30strcmpすげー
0953デフォルトの名無しさん
2011/05/12(木) 22:48:04.130954デフォルトの名無しさん
2011/05/12(木) 22:48:15.23const char const *
?
0955デフォルトの名無しさん
2011/05/12(木) 22:51:46.860956デフォルトの名無しさん
2011/05/12(木) 23:00:35.050957デフォルトの名無しさん
2011/05/12(木) 23:03:15.22一文字ずつ比較するのではなく、ループ内で何文字かまとめて比較してんのかな
0958デフォルトの名無しさん
2011/05/12(木) 23:05:56.17strcmpが凄いんじゃなく、>>940、>>947のレベルが出たってことだろう
0959デフォルトの名無しさん
2011/05/12(木) 23:12:10.48最初の数文字は必要ならアドレスアライメント調整を兼ねて一文字づつ比較、
その後は int とかで何文字かまとめて比較
で、最後にまとめられない残りがあれば一文字づつ比較
というのが GNU glibc での実装。多分、他の標準Cライブラリも似たようなことはしてるはず。
0960デフォルトの名無しさん
2011/05/12(木) 23:13:06.84うん、int比較が一番早い
0961960
2011/05/12(木) 23:15:11.04int hika(const char *str1_p, const char *str2_p)
{
register const unsigned char *str1 = (const unsigned char *)str1_p;
register const unsigned char *str2 = (const unsigned char *)str2_p;
while(*str1 == *str2 && *str1) {
str1++;
str2++;
}
return !(*str1 == *str2);
}
0962デフォルトの名無しさん
2011/05/12(木) 23:16:07.40ありがとうございます
やっぱりGUIやるならJavaとかC++ですよね・・・
うーん、せっかくC勉強したのに使い道がないなぁ。。
0964デフォルトの名無しさん
2011/05/12(木) 23:19:45.34http://sourceware.org/git/?p=glibc.git;f=sysdeps/x86_64/strcmp.S;hb=refs/heads/master
0965デフォルトの名無しさん
2011/05/12(木) 23:21:02.20C++ を理解するためには、C を経由するのが一番楽、というか、C を理解せずして、C++ を理解できるのか?
http://www.amazon.co.jp/dp/4894714221/ ‥‥‥、みなかったことにしよう。
0966デフォルトの名無しさん
2011/05/12(木) 23:21:45.700967デフォルトの名無しさん
2011/05/12(木) 23:23:17.59うんにゃ、全く無駄ということは無い。toolkit に GTK+ を使いなさい。GTK+ 自体は C で書かれているし。
0968デフォルトの名無しさん
2011/05/12(木) 23:24:19.480969デフォルトの名無しさん
2011/05/12(木) 23:26:23.83ゲームつくろうぜ
0970デフォルトの名無しさん
2011/05/12(木) 23:29:29.76GTK+プログラミングの情報が少ないのに
0971デフォルトの名無しさん
2011/05/12(木) 23:29:32.18>やっぱりGUIやるならJavaとかC++ですよね・・・
Java(on Android) は良いとして、今 C++ をやるのはどうかな。。。
お使いのプラットフォームに依って ObjC や C# や Vala を使うのが良いと思う。
0972デフォルトの名無しさん
2011/05/12(木) 23:34:18.00昨年 gcc が C++ 利用を承認したらしい、機能限定みたいだけど
0973デフォルトの名無しさん
2011/05/12(木) 23:36:07.37おおお、そうなんだ。
ついにかぁ
0974デフォルトの名無しさん
2011/05/12(木) 23:38:55.40C++ はコンパイラとランタイムを実装する事に特化した言語に
なりつつあるな。
0975デフォルトの名無しさん
2011/05/12(木) 23:40:36.54gtk+ちょっと調べてみます
>>969
なんかみんなCとDXライブラリでゲーム作ってますよね
>>971
C#はちょっと興味あるからやってみようかな
C++の規格って今どうなってるんだろ。手を出そうとは思わないけど
0976デフォルトの名無しさん
2011/05/12(木) 23:47:59.66ぶっちゃけ失敗だろ。
なんでこんな。
0977デフォルトの名無しさん
2011/05/12(木) 23:49:31.64既存の資産のためだろ
0978デフォルトの名無しさん
2011/05/12(木) 23:51:12.4932bit で済む計算が殆どだからじゃないの。
配列のインデックスとかループの回数とかイチイチ 64bit になってたら勿体ないっしょ。
0979デフォルトの名無しさん
2011/05/13(金) 00:07:30.820980デフォルトの名無しさん
2011/05/13(金) 00:17:25.810981デフォルトの名無しさん
2011/05/13(金) 00:24:28.560982デフォルトの名無しさん
2011/05/13(金) 00:26:19.46筆算を難しいと言う奴はほとんどいないが、
筆算の人間的推測をプログラムで実装するのは意外に難しい
ってかTAOCP vol2のアルゴリズムDみたいな例を参照してもややこしい
0983デフォルトの名無しさん
2011/05/13(金) 00:29:03.780985デフォルトの名無しさん
2011/05/13(金) 00:30:42.83#include <string.h>
#include <stdio.h>
int main()
{
char str[10] = "hoge";
printf( "sizeof .. %d\n", sizeof(str) );
printf( "strlen .. %d\n", strlen(str) );
}
0986屑
2011/05/13(金) 00:31:59.240987デフォルトの名無しさん
2011/05/13(金) 00:32:28.65int array2[5] = {1, 1, 1}
array1のところで要素数を省略できるのは処理系依存ですか?
array2のところでarray2[4]=array2[5]=0となるのは処理系依存ですか?
0988デフォルトの名無しさん
2011/05/13(金) 00:34:16.04OSのことかな
0989デフォルトの名無しさん
2011/05/13(金) 00:35:20.77このスレ的にはコンパイラ
0990デフォルトの名無しさん
2011/05/13(金) 00:38:49.59Cの規格でその書き方が認められている。
1番目:配列の宣言で要素数を省略した場合、初期化子の要素数分のメモリが確保される。
2番目:初期化子で与えた要素数以上は0で初期化される。確保した要素数以上に初期化すると、動作は未定義。
0991デフォルトの名無しさん
2011/05/13(金) 00:39:46.060992デフォルトの名無しさん
2011/05/13(金) 00:46:35.40> 配列のインデックスとかループの回数とかイチイチ 64bit になってたら勿体ないっしょ。
ループカウンタなんて大抵レジスタだし、メモリにとっても高が4バイト増えるだけだろ。
勿体ないって、今時どんだけ節約志向なんだよ。(w
0993デフォルトの名無しさん
2011/05/13(金) 00:50:24.810994デフォルトの名無しさん
2011/05/13(金) 00:51:30.010995デフォルトの名無しさん
2011/05/13(金) 00:52:39.83カッコ付けんなボケ
0996デフォルトの名無しさん
2011/05/13(金) 00:59:49.970997デフォルトの名無しさん
2011/05/13(金) 01:01:21.90http://hibari.2ch.net/test/read.cgi/tech/1305216054/
0998デフォルトの名無しさん
2011/05/13(金) 01:02:17.730999デフォルトの名無しさん
2011/05/13(金) 01:04:46.66糞スレ立てた理由を1000字で表現せよ
1000デフォルトの名無しさん
2011/05/13(金) 01:06:17.33便利なだけ?
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。