1 :
名無しさん@そうだ選挙に行こう :
2010/07/10(土) 19:58:58 BE:463888477-S★(526363)
cppとhを分ける必要がない場合は分けないべきですか?
場違いのアホは出て行け
>>3 コンパイラとしてはインクルードファイルの名前をcとc++で変えるはない。
分からないなら回答しなくていいですよ
クラスが恋しいね
席替えは楽しかったよなw
どういうときにポインタのポインタって使うの??
>>10 それはもう、いろんな場合で。
データ構造を意識するときには特に。
もっと詳しく教えてくれないと質問した意味ないんだけど・・・
ていうか、main関数の第2引数でポインタのポインタ使ってるじゃん main()すら知らないレベルなんかね
入門スレだからしょうがないだろ
だよな みんな心を穏やかにしなさい
>>14 みたいなのってヤフー知恵遅れとかでよく見るね
ポインタのポインタってポインタの配列でもあるってこと?
微妙には違うが。同じような使い方は出来るだろ。
僕も微妙な違いを通りすがり的に知りたい
ポインタの指す先次第
charってキチガイみたいに低能だな
おすすめの書籍があればおしえてくれろ
ロベール
#includeの#は何故必要だったのでしょうか includeじゃ駄目だったんですか?
プリプロセッサ向けだから
>>24 まず K&R2 を買うこと。これでわからなければ、もっとやさしい本をさがすこと。
いずれにしても K&R2 は無駄にはならない。
>>19 関数は配列を返せない仕様なので、ポインタかポインタのポインタで
返すという局面は良くある
ポインタのマークって掛け算と何か関係あるの?
int (*((*func(void))[]))(void) こんなの理解出来そうにない、、
DLLではなくEXEファイルを外部プログラムとして実行した場合、どのようにデータのやり取りをすればよいのですか?回答よろしくお願いします
OSにもよるし本人のやりやすいようにというか好きにしろというのが答えだ
>>32 慣れだよ慣れ
もっと複雑な宣言を書くこともいくらだってある
ブヒッ
>>35 いや何を参考にすればいいのか分かりません
OSや言語も言わずに答えを言えって?うぜえよおまえクソじゃね?
解答あってたー!すげー(´・ω・`)w
>>34 プロセス間通信
ファイルを介する
ネット経由
元のEXEの出力を利用者が手動で入力
好きなの選べ
>>39 OSも言語も明らかだろ・・・お前の目は節穴かよ。
>>43 でもコンパイラぐらいは書いて頂かんとなぉ
個人的にはpopenイチオシ。
大学の課題でいくつかc言語の課題が出て、本当に簡単なのは何とか解いたのですが2つほど分からないものがあったので よろしければ教えていただきたいです。 @キーボードから1つの実数値xを入力し、絶対値を表示するプログラムを作りなさい Aキーボードからテストの得点m(0以上100以下)を入力し (1) m<60 の場合は「不合格」 (2) 60≦m<80 の場合は「普通」 (3) 80≦m の場合は「優秀」 と表示するプログラムを作りなさい。
宿題スレ行け
>>46 int main() {
double x;
scanf("%lf", &x);
printf("%f\n", fabs(x));
}
int main() {
int m;
scanf("%d", &m);
printf("%s\n", m < 60 ? "不合格" : m < 80 ? "普通" : "優秀");
}
>>47 ありがとうございます。
宿題スレなるものがあったんですね。
今は理解よりも提出を優先したいのでそちらに書き込みました。
>>46 はスルーでお願いします。
>>48 ありがとうございます!
Aはそのプログラムでおkでした。
@はエラー出たので、("%f\n", fabs(x));→、("%d\n", abs(x));にしたところ正しい結果になりました。
>>50 CじゃなくてC++でやってない?
fabs使うなら、#inlucde <math.h>追加で
#include <math.h> ね
おまえアク禁な
てす
今,以下のソースのように,splitを実装しています。 split_stringの中では,splits[0]〜splits[3]を普通に参照できるのですが,split_stringの外に出ると"Segmentation fault"になってしまいます。。。 mallocってヒープ内に領域が取られて,関数の外に出てからも生き続けるんじゃなかったっけ・・・状態です。 誰かお助けを〜〜〜orz ----- #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LENGTH 0x80 int split_string(char** splits, char* str, const char* delim) { int i, len; int size; char* cp; char** words; words = (char**)malloc(sizeof(char*) * MAX_LENGTH); cp = (char*)malloc(sizeof(char) * (strlen(str) + 1)); strcpy(cp, str); for(len=0; len<MAX_LENGTH; len++) { if((words[len] = (char*)strtok(cp, delim)) == NULL) break; cp = NULL; }
splits = (char**)malloc(sizeof(char*) * len); for(i=0; i<len; i++) { size = sizeof(char) * (strlen(words[i]) + 1); splits[i] = (char*)malloc(size); memcpy(splits[i], words[i], size); } free(words); return len; } int main(int argc, char** argv) { int i, length; char* line = "1\t2\t3\t4"; char** splits; length = split_string(splits, line, "\t"); for(i=0;i<length;i++) { printf("%s\n", splits[i]); } }
char** splits; length = split_string(&splits, line, "\t"); こうしないとsplitsに値が入らないんじゃね。
58 :
デフォルトの名無しさん :2010/07/14(水) 23:46:39
bmp関連のプログラム作ってるんだけど typedef struct { unsigned short Type; unsigned long Size; unsigned short Reserved1; unsigned short Reserved2; unsigned long Offset; } BMPFILEHEADER; これを printf("%d",sizeof(BMPFILEHEADER)); でサイズ調べると16と出るのはなんで?
>>57 ありがとうございました。&splitsを引数(char*** splits)にするようにsplit_stringを変更したら
無事動きました。
いまは、どうやってchar** splits隷下のオブジェクトをmainが終わる前にfreeすれば
よいかわからないです><
誰かお助けを〜〜〜orz
>>59 バイト境界がintのサイズに調整されるから
unsigned short Type; //2byte
//パディング2nyte
unsigned long Size; //4byte
unsigned short Reserved1; //2byte
unsigned short Reserved2; //2byte
unsigned long Offset; //4byte
>>59 えーーーっ、それほんとですか? それコンパイラのバグですよ どこのコンパイラですか?
いくつを期待しているの?
さて、BMPFILEHEADERが16で良いんでしょうか、イクナイならコンパイラに期待値なるように汁と
命令する。
ま、構造体の各要素のalignmentを調べればPaddingが...
alignment,paddingってなんだっけ、忘れたorz
でプリンしないようにする命令も忘れたorzorz
>>59 環境依存な話なんだけどね、アライメントというのがある。
CPUによっては丁度いい位置にデータがあるとアクセスが早くなる(または
丁度いい位置に無いとエラーになる)ため、構造体のメンバの位置を調整
する事がある。
http://www7b.biglobe.ne.jp/robe/cpphtml/html03/cpp03014.html unsigned short Type; // 2バイト
// 計2バイトだけど次がunsigned longなので切り上げて4バイト
unsigned long Size; // 4バイト
// 計4バイト
unsigned short Reserved1; // 2バイト
unsigned short Reserved2; // 2バイト
// 計4バイト
unsigned long Offset; // 4バイト
// 計4バイト
合計16バイト。
>>62 (゚∀゚) ?
>>60 深いところから逆順にループさせて解放する
要素数はlengthで返してるみたいだからmain()の最後で以下を実行
for (i = length; i > 0; i--) {
free(splits[i - 1]);
splits[i - 1] = NULL;
}
free(splits);
splits = NULL;
65 :
59 :2010/07/15(木) 02:02:38
>>64 ありがとうございます。
ところで、なぜ逆順に解放しなければいけないんですか?
あと、splits[i - 1] = NULL;は必要なんですか?
いまのところ、
void free_splits( char*** splits, int length )
{
int i;
if( length =< 0 || length > MAX_LENGTH || *splits == NULL ) {
return;
}
for (i = length; i > 0; i--)
{
free( (*splits)[i - 1] );
}
free(*splits);
*splits = NULL;
}
にしてます。
>>66 俺が見たところ、別に逆順に処理する必要はない
一般的には、リストを開放する場合など、逆順にしなければならないことが多い
splits[i -1] = NULL は、万が一にも二重フリーしないように
フリーしたときにNULLを入れておくスタイルだな。稀によく見る
バグの多い人は、そうしておくといいかもしれん。俺はやらないけど
>>67 >別に逆順に処理する必要はない
動作が同じならそれで良いと言うならそう。
それ以上のことを考えると、逆順には意味がある。
>一般的には、リストを開放する場合など、逆順にしなければならないことが多い
これはデタラメ。
C言語未修得者なのですが質問させてください 自分は他言語をやっているのですが、例えばMySQLなどを学習していても基本的にはPHP、Perl、Java位しか連携のテーマが出てきません CやC++でもMySQLや PostgreSQLのようなフリー版のDBに接続できるのでしょうか? くだらない質問ですみません
SQLiteを使うなら、Cが楽でいいってばっちゃが言ってた
コンピューターおばあちゃん
>>69 そりゃできるよ
他の言語と同じく、DB用ライブラリ(Cの場合は大概そのDBについてる)で接続すればいい
自分今までまず参考書を1・2冊学習した後にオライリー本を読破してって感じでプロラミング言語を学習してきたのですが、 オライリー本の前の段階でいいC言語の参考書って何がありますでしょうか? Amazonや書店などで調べているのですが、どうもCはどれから始めるのがいいのか分かりにくくて
74 :
デフォルトの名無しさん :2010/07/18(日) 20:20:28
int main(){ char *name="あいうえお"; while(name!='\0'){ printf("%c",name); name++; } } ぽいんたがどうなってるか調べてて 今プログラムを実行したら windowsのブート音がピーピーなって 応答なしになりました。なぜこのようなことになったのでしょうか?
77 :
デフォルトの名無しさん :2010/07/19(月) 00:16:07
ハッシュ法をもちいて文字列を辞書に登録/削除/表示/検索するプログラムを作成せよ。 ハッシュ法には、オープンアドレス法を使用すること。 お願いします。
>>75 応答なしになった理由→>76
ピーピー鳴った理由→nameはポインタだから、その値を文字と見做すことに無理がある。
80 :
75 :2010/07/19(月) 02:38:06
int main(){ char *name="あいうえお"; while(*name!='\0'){ printf("%c",*name); name++; } } こうしてちゃんと文字列が表示されるようになったのですけど name++を*name++にしても結果は同じです。 この2つは同じものと考えていいのですか?
後置インクリメントの方が優先順位高いから動いてるだけじゃね
>>80 全然違う。
name++ は、ポインタ name の値をインクリメント(1つ増加)してから、インクリメント直前のポインタ値を返す。
*name++ は、ポインタ name の値をインクリメント(1つ増加)してから、インクリメント直前のポインタ値が指すアドレスの内容を返す。
今回たまたま同じ動作になっているのは、その返された値を何にも使用していないため。
83 :
デフォルトの名無しさん :2010/07/19(月) 17:00:14
構造体の質問なんですが int main(void)の中にstructといれる場合と、外に入れる場合ありますが どう違うんですか?細かすぎて死にそうです。
int main(void) {
{
87 :
デフォルトの名無しさん :2010/07/19(月) 17:18:07
>>86 struct ってのは関数なんですか?
全く意味がわかりません。
structを関数のように
struct()とかもう意味不明です。
>>87 関数じゃないよ 構造体を宣言するために必要なだけだよ
struct()はおれから見ても意味不明だが
実際にコード見なきゃわからんな
入門書くらい読んでから質問しろよ失礼だろ
どうでもいいことだけど
>>86 のコードCじゃなくてC++だな
>>90 しばらくCやってなかったからtypedef struct 〜のやりかたを忘れてしまったんだ
すまない
あんた最低だな
いえいえ
そんなに褒めるなよ
>>91 は?ここはC言語のスレだろうが。
C++に移動しろよ。
96 :
デフォルトの名無しさん :2010/07/19(月) 18:44:40
構造体の仕組みがわからん 構造体型と構造体型変数はどう違うの? struct A{}Bってのが基本形だっけ?
>>96 > 構造体型と構造体型変数はどう違うの?
int型とint型変数の区別が付けば分かりそうなもんだけど。
98 :
デフォルトの名無しさん :2010/07/19(月) 21:42:42
2時間30分以上まってのレスがこれでっせ
答えとして過不足ないと思うが
int型とint型変数の区別、どうつけるの?
101 :
デフォルトの名無しさん :2010/07/19(月) 22:00:04
>>101 低脳らしく、すぐ暴力にはしるんだな
さすが低脳基地外の鑑
104 :
デフォルトの名無しさん :2010/07/19(月) 22:24:12
>>103 ちょっとむかついただけだろうが・・・
何これ?急にこのスレ加曾利出した。
意味わかんね。
「お前殴っていい?腹立って仕方ないわ。」 名言が生まれたな
夏厨警報
109 :
デフォルトの名無しさん :2010/07/19(月) 23:11:07
>>100 例えば sizeof(int) のオペランドは型であって変数ではない
とりあえず何よりも真っ先にCPUとメモリの使い方、コンピューターの動作原理を覚えろ この基本が理解できればポインタごときで躓くことはなくなる
そんなんいいからプログラム書いて動かせ。 最初のハードルあげようとするのはアホ。
forで条件付で繰り返し使うときにアルゴリズムは「〜〜」は何回繰り返す、だけで済ませていいんですか? それとも全部「〜が〜のときは実行して」みたいみたいな感じがいいんでしょうか?
いいよ
114 :
112 :2010/07/20(火) 00:30:04
>>113 えっとそれは一行目に対する「いいよ」なのか二行目に対する「いいよ」なのか……
(・∀・)イイヨイイヨ-
話は変わりますが、 char c = 'aaaa'; なんで四文字まで入るんですか?
int c = 'aaaa'; なら入るんじゃね。
char* c = "aaaa";
char c[4] = "aaaa";
>>120 末尾の空文字(\0)の分も含めるから不適切
というか[4]の中の4は不要
>>123 #include <stdio.h>
int main(void) {
char c[] = "aaaa";
printf("%d",sizeof(c));
return 0;
}
とりあえず文法やるってのはいいけど、文法全部やってから云々だと頓挫する 関数の作り方くらいまではある程度軽くよんで、あとは自分でなんか工夫しながら やっていったほうがいい。そうすりゃ、構造体とかポインタとか「あー、こういう場面でつかうんだ」みたいにすんなりわかる。 理屈じゃないんだよね。単純にExcelのボタンを押すとどうなるかってのを文章で書くのとそう変わらない。 で、K&Rだか面白いとなれば、本当に深いところまで理解できてくる。
文法だけやって進んでいくと、「構造体ってなんじゃらほい?」とか誰でもなる。
>>125 でっていう
ピッタリのときは特別なんだよ
129 :
デフォルトの名無しさん :2010/07/20(火) 01:55:24
Linux&Sun CCでfilenoを使うと、コンパイル時にfileno関数の宣言がないという警告がでる。 とりあえずmakeは出来るんだけど、gccだとこの警告は出ない。 SunCCのマニュアルを読む限り、/usr/includeを読み込むはずで、 stdio.hに宣言はきちんと書いてあって、一体何が問題なのかわかる人います??
>>125 c[]をc[4]に変えてみるといいよ。
>>129 #ifdefによって関数宣言がスキップされてるんだろう
cc -E 等で調べてみては
char c[] = "aaaa";
座標A(x,y)、座標B(x,y)、座標C(x,y) → 三角形(A,B,C) 座標P(x,y) → 任意の点(x,y) 任意の点Pが、「三角形ABCの中か?、外か?」を判断する関数 → 関数F(P, A,B,C) core2専用(SSE3前提)として、考えうる限りのもっとも高速に動作する関数Fのコード例をお願いします。 (インラインアセンブラはintel書式でもgcc書式でもどちらでも結構です)
>>131 ありがとう! -Eオプションすごい。とりあえず出力したものを見てみたら、
/usr/include/stdio.h
じゃなくて
/usr/local/sunstudio12.1/prod/include/cc/stdio.h
を見てることが発覚&sunstudioのstdio.hにはfilenoなんて宣言されてなかった。
>>133 このスレじゃ無理じゃね。つーか、くれくれは宿題スレへ。
>>133 アセンブラ知らね
typedef struct
{
double x, y;
}pos_t;
int is_inside(pos_t P, pos_t A, pos_t B, pos_t C)
{
double alpha, beta, div;
pos_t AB, AC, AP;
AB.x=B.x-A.x;
AB.y=B.y-A.y;
AC.x=C.x-A.x;
AC.y=C.y-A.y;
AP.x=P.x-A.x;
AP.y=P.y-A.y;
div=1.0/(AC.y*AB.x-AC.x*AB.y);
alpha=(AC.y*AP.x-AC.x*AP.y)/div;
beta=(-AB.y*AP.x+AB.x*AP.y)/div;
if(0.0<alpha && alpha<1.0 && 0.0<beta && beta<(1.0-alpha)) return 1;
return 0;
}
>>136 訂正
alpha=(AC.y*AP.x-AC.x*AP.y)/div;
beta=(-AB.y*AP.x+AB.x*AP.y)/div;
↓
alpha=(AC.y*AP.x-AC.x*AP.y)*div;
beta=(-AB.y*AP.x+AB.x*AP.y)*div;
>>136 >アセンブラ知らね
すいませんが、答えなくて結構です。
>>138 C言語スレだべ
コンパイラの最適化に任せる程度でよかろ
Intel コンパイラを使うと最適化は結構すごいらしいじゃないか
gcc はダメぽだが
>>136 値渡しにするなら引数を使って計算したほうが早いかもしれない
調べてないけど
分からない&調べないなら回答しなくて結構です
結構な事です
てめぇが調べろよwww
無意味な発言で荒らすのはやめて下さい
そうだそうだ!
そうかそうかw
まったくどうしようもないな┐(´∀`)┌ぷぅ〜
148 :
デフォルトの名無しさん :2010/07/20(火) 19:02:22
Eclipse CDT 環境で Win32API の SuspendTread を使用しても スレッドが停止してくれないんですけど、誰か分かりますか? 作成したExeをそのまま実行すると停止してるように見えるのに・・・
関数名の語源が書いてある(解説してる)サイトってないのか? どうも読み方や意味が分からないから関数名がおぼえれないんだ。。。
覚えるより探す手段を増やすほうがよろしいかと。 機能別索引な関数マニュアル(こういうことやりたいけど、似たようなの無いかね?) と アルファベット順の関数マニュアル(あの関数の引数 どうだったっけか?) それぞれあると嬉しい 標準関数の話なら ある程度命名の法則性があったり、なかったり 長くならないように短縮してたりするからなぁ…
覚えようとしたことは一度もない。その都度調べるわ。
152 :
デフォルトの名無しさん :2010/07/21(水) 00:21:25
積分ってどうやってC言語組めばいいんでしょうか メジャーな書き方あれば・・・
俺はむしろ覚えたいね 歩くリファレンスと呼ばれたいね
このリファレンス重くて使い物にならねーな
語源おぼえてるやつってどこで覚えた? ってかどこに書いてあるの?
大事な誤字はすべてケンちゃんから学んだ
すし屋?ケーキ屋?おもちゃ屋?
洗濯屋?
CreateFile() はそらんじて書けたためしが無い
>>152 定積分でよければシンプソン方が簡単に見つかると思うけど。
いずれにしても、数学的な知識なしで書ける訳ではないよ。
>>152 とにかく簡単なのは区分求積法だな、シンプソン法のがいいけど
でも今のCPUだと大概は区間細かくしまくっても余裕だから
あまり恩恵が無いが
なんか質問者と回答の半分くらいのホストが一緒なんだけど自作自演ってことでよろしいか?
ばーか つまんねえって
ですね
ふと思ったんだが、strcatの語源ってなんなんだ?
単語としてはcatinate 実質的にはコマンドのcat
>>166 これって調べたらラテン語じゃね?
どこで知ったんだよ
これを知ってるやつはほとんどいないだろうな
string catenate
>>167 いや、知ってる奴は多いと思うぞ。
UNIXのコマンドの中で、catは印象に残る変な名前best4に入るから、ちょっとしたトリビアになってる。
UNIXを触らない専門学校卒とか文系卒には馴染みがないのかもしれんが。
manco mmand
strcat_sってマイクロソフト独自の物なの?
172 :
デフォルトの名無しさん :2010/07/22(木) 22:42:35
>>169 おまえが触っているのは Linux ってオチはなしだぜ
173 :
デフォルトの名無しさん :2010/07/23(金) 00:21:50
釣りだと思うが、catはconcatenate、連結だろ。
中学校で習った catは猫
catenate は「連結する」という意味の英語ですよ。 技術書に限らずその英文に普通に使われいます。 unix で cat を man すれば catenate だと書いてあるし、 strcat の gcc や MS のヘルプ(英文)にも catenate と書いてある。 こんなの高校程度の英語だろ。あ、夏休みか。。。。
ちょっと検索してみた限りでは、 manページに書いてあるのは、catenate じゃなくて concatenate が多数派。
>>177 ちゃんと読めてるのか?
そもそもシノニムなんだから、機能の解説としてconcatenate が使われていても意味ないぞ。
由来に catenate だと書いてあるだろ。
>unix で cat を man すれば catenate だと書いてあるし、 >strcat の gcc や MS のヘルプ(英文)にも catenate と書いてある。 どのunixの話? gcc や MSのヘルプってどのバージョン? catenate が使われている man page ってどこにあるのよ?
脳内に決まってんだろ
ダマされない方がいいよ catenate なんて辞書に乗ってない cat も strcat も concatenate を略した物だとMSのヘルプに明記されている この話題はもう終了でいいよ
>>182 そろそろ中学生用の辞書は卒業したらどう?
カテナチオ作戦は失敗に終わったようだな
187 :
TreeBoa :2010/07/23(金) 19:40:45
お前バカは こんなくそ言語まだやってんの? メモリ管理のめんどくせえくそ言語wwwwwwwwwwwwwwwwwwwwwwww ばかすぎてかわいそうだよwwwwwww きみたちどうせあれだろwwww C言語やったらC#とかやんだろばかだからwwwwwww Objective-Cやれよな?wwwwwばかだから御前等本当かわいそうwwwww 必死に「メモリ解放!! エッサエッセ!!メモリ解放!!エッサ free!! free!ビュンビュン!」 とかわめいてればいいんだよwwwwwwwくそどもが 御前等 Perlじゃなくて PHPとかやってるあたまの悪そうな奴だからな ホ ン ト ゴ ミ wwwwwww
ついにモンキーセンターにまで感染が拡大したか… 京都大霊長類研究所はどうなるんだろう
え?何?アイちゃんなの?
お前らpythonとrubyだったらどっち好き?
192 :
デフォルトの名無しさん :2010/07/23(金) 22:21:11
>>190 PerlPerlPerlPerlPerlPerlPerlPerl
PerlPerlPerlPerlPerlPerlPerlPerlPerl
PerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerl
PerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerl
PerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerl
PerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerl
PerlPerlPerlPerlPerlPerlPerlPerlPerlPerlPerl
193 :
デフォルトの名無しさん :2010/07/23(金) 22:30:28
C言語とか2chにスレ立てる必要すらねーよごみww こんなの独学だろ頭湧いてんのか?wwwマジ受ける御前等のゴミさ加減には 塩加減もほどほどにしろよな目糞鼻くそ てめえらが borland C++コンパイラとかcygwinでコンパイルしてる姿みると本当笑っちまうぜww catとかくだらねえ話題ほざいてるし御前等レベル惹く杉んだよカスがよww てめえら一生クソコード書いてんだろww勉強に必死そうだしww クハハハハハハハwwwwまじ雑魚過ぎだわ こいつらバカだからステップ数競ってんだろwww perlじゃ一瞬で糞みてえなコードかけんだよ雑魚ww Cで深い部分やるとかいってるけどさ てめえらの脳味噌できるの?バイナリとかほざいてるけど君たちwww 別にそこまで凄いことやらないのに何CPUとかわめいてんの?wwwばかだろほんと いたいたいたいちあちあちあいたいちあちあたいたすぎるよ君たちwwwwwwwwwwwwwwwwwwwwwwwww バカはポインタでつんでんだろwwあほが とりあえずこんなゴミスレ立てるんじゃねえよwww すげーストレスたまってんだよばかがしね Perl=大魔導師 C=コジキ ですねwwwwwwwwwwwwwwwwwwwwwwwww
もちつけアイちゃん
>>193 宿題スレにもこういうのが沸いていているんですが、煽ると結構楽しいので、‥‥‥まあゆっくりしていってください。
196 :
名無し :2010/07/24(土) 16:08:03
C言語ではなにがつくれますか? ボクはC言語でpspのゲームがつくりたいです どうやったらつくれますかおしえてください コンパイラって言うのを入れないと駄目なんですがどうやっているれるんですか? C言語ではなにができますか!?詳しく教えてください! 太鼓の達人みたいなゲーム創りたいです!
197 :
名無し :2010/07/24(土) 16:15:05
あと2chのゴミどもみたいな脳味噌になってみたいです! どうやったらなれますか!?C言語やる意味があるとおもてるバカな天才にもおききしたいです! 何でC言語をやっているんですか?!詳しく教えてください!!!!!!!!!!!!!!!!!!!!!!!! 御願いします! バカになる努力とかしてますか? アイちゃんってなんですか?脳味噌たりてますか?! Perlはクソだとオモッテルんですか?! 頭兵器ですか? Cやれば仕事があると勘違いしてるんですか?! 頭の弱いゴミドモ教えてくださいwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
198 :
名無し :2010/07/24(土) 16:18:34
孫さん 孫サンいってるバカはなんあんですうか?! 宗教なんですか? C言語もそうだとおもいませんか?perlもそうですよ バカみたいに 孫サン!孫サン!ソフトバンクとかわめいてるゴミはしんだほうがいいとおもいますね☆ ホリポリマンセー 孫サンマンセー と拝んでるばかどもはしねばいいともいますよ♪ ホリポリってperlやってたみたいですが逮捕されちゃいましたね^^;wwwwwwwwwwwwwww wwwwwwwwwwwww まじうけますねwwwwwwwwwww クソドモが影響うけて起業しちゃって最高ですよwwwwww wwwwwwwwwwww wwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwww かばんもちとかやってるやつどうなったんでしょうねwwwwwwwwww ばかすぎてオナラが10000発でですたすけてくださいwwwwwwwww
ばーか つまんねえって
200 :
名無し :2010/07/24(土) 16:20:30
>>199 どういうのだったらおもしろいいですか?具体的にこたえてくださいごみwww
クソスクリプト書いてるてめえにいわたくねえよごみwwww
なあ?www答えてみろよごみがおいおいいおいwwwww
クソガリクソチビがわめいてんじゃねえよこらwwwww
なあ?www 180センチ以下はホリポリってんだよかすwwwwwwチビはしんどけってなあ?wwwwwwww
だからつまんねえって
202 :
名無し :2010/07/24(土) 16:29:05
おもしろさ評価してるゴミがつれたつれたwwwwおもしろさ評価してるゴミがつれたつれたwwww おもしろさ評価してるゴミがつれたつれたwwwwおもしろさ評価してるゴミがつれたつれたwwww おもしろさ評価してるゴミがつれたつれたwwwwおもしろさ評価してるゴミがつれたつれたwwww おもしろさ評価してるゴミがつれたつれたwwwwおもしろさ評価してるゴミがつれたつれたwwww おもしろさ評価してるゴミがつれたつれたwwwwおもしろさ評価してるゴミがつれたつれたwwww おもしろさ評価してるゴミがつれたつれたwwwwおもしろさ評価してるゴミがつれたつれたwwww おもしろさ評価してるゴミがつれたつれたwwwwおもしろさ評価してるゴミがつれたつれたwwww おもしろさ評価してるゴミがつれたつれたwwwwおもしろさ評価してるゴミがつれたつれたwwww おもしろさ評価してるゴミがつれたつれたwwwwおもしろさ評価してるゴミがつれたつれたwwww おもしろさ評価してるゴミがつれたつれたwwwwおもしろさ評価してるゴミがつれたつれたwwww おもしろさ評価してるゴミがつれたつれたwwwwおもしろさ評価してるゴミがつれたつれたwwww
203 :
名無し :2010/07/24(土) 16:30:19
2ch巡回してゴミつってるのでね おもしろさもとめてないですよ^^;クソガリチビちゃん 俺よりゴミなくせしてでしゃばってんじゃえねえよカス^^;
いいから失せろよゴミ
>>204 ゴミがゴミに必死にレスつけてどうする
落ち着け
だから失せろって
チンパンジーのアイちゃんがわいてますね
センスねーな
209 :
デフォルトの名無しさん :2010/07/24(土) 16:48:11
どこぞで苛められているので、憂さ晴らししているんですね。よくわかります。
>>193 おもえ力抜きすぎwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
もっと本気出せよwwwwwwwwwwww
もしかしてヘボイの???????????wwwwwwwww
だったらVIPで1人ですれたてて練習してこいks
マジks過ぎて2chが廃れるからやるならミィやグレエでやれks
もしかしてマイアカウント荒らしたくないゆとり君か?
それならニコ生でも荒らしてこいks
マ板で管理人やってるからwwwwwwwwwwwwwwwwwwwwwwwwwwwwww ワロスワロスwwwwwwwwwww馬鹿ども必死wwwwwwwwwwwwww
なつだねー(棒)
なんかこのスレだけ標的にされてるな
インテルのippライブラリっていうものを使って、ウェーブレット変換をするプログラムを作れと言われたのですが、 ライブラリというのは、プログラムの最初に、#include<ipps.h>というのを入れとけば、マニュアルで指定された関数名を入力して、値を渡すだけで結果を返してくれるものなのでしょうか? (ippライブラリのマニュアルにippsWTHaarFwd と ippsWTHaarInv は、ipps.h ファイルで宣言される。と書かれていました。) ライブラリの使い方がサッパリ分かりません。
>>216 インテルのライブラリなら、代理店から購入しているでしょうから代理店にお問い合わせください。
>>218 まさかと思うけど、ippのことを何も知らずに書いているほど間が抜けているわけじゃないよね?
>>216 マジに、検索もできないくらいノウハウがないなら代理店でセミナー受けた方がいいんでない?
220 :
デフォルトの名無しさん :2010/07/25(日) 22:45:59
純正セミナーはそれなりに意味あるぞ 自力で脱出不能の誤解に陥ってるのに気づけるし
221 :
216 :2010/07/25(日) 23:21:37
プログラミング苦手なのに、インターンシップ先でいきなりライブラリを使ってプログラムを作れと言われたので手も足も出せない状態です。 期間も短いので、セミナーを受けることは難しいので、ここでお教えいただければと思ったのですが・・・ 218さんが貼って下さったリンクの内容は理解できましたが、219さんの表現からすると、やはり、#include<ipps.h>と関数名打ちこんで値を渡すだけでは動作しないのでしょうか? どのようにすれば動作するのか教えていただけないでしょうか。 不躾な質問ですが、どうかお願いいたします。
まず猫でもわかるプログラミングでも見て言語から勉強するべきだろ。
stdio.hもライブラリである
224 :
216 :2010/07/25(日) 23:43:52
>>223 それは今回勉強してて分かりました。
つまり#include<ipps.h>と関数名打ちこんで値を渡すだけで動作するのでしょうか?
ここは入門編スレであり実際の動作はサポートしません
そのインターンシップ俺にやらせろよ
227 :
デフォルトの名無しさん :2010/07/26(月) 09:30:41
あfdgsfdfs
228 :
ccc ◆Wg.sDXhXMM :2010/07/26(月) 09:54:56
やっと規制とけた・・・ 前スレで質問したものですが、 やっぱここで気の済むまでやり取りしないとスッキリしないです。 行き詰ったらまた質問させてください
誰だお前
オレオレ
231 :
デフォルトの名無しさん :2010/07/26(月) 16:08:24
なにそのクソインターンシップwwwwwwwwwwwwwwww ばかそうだなwwww そもそもプログラミングに自信が無いゴミが参加するとうざいんだよね^^; インターン先のゴミ馬鹿社員とかも相当頭おかしいんだろうねwwwwwwwwwwwwww
>>224 「だけ」では動作しない。
ヘッダには宣言が書いてある。だから(狭義の)コンパイルは通る。
しかし、呼ぶ関数の実体はWinなら.dllとかに入ってる。.libをリンカに渡さないとリンクが通らない。
サンプル提供されてるから、そこから設定をコピればいい。
て、cでのプログラミングの基本なんだけど
この辺をしらない人間に「IPP使ってプログラム作れ」って言う奴がそもそもおかしい。
は○なじゃないよね>インターンシップ
234 :
デフォルトの名無しさん :2010/07/26(月) 22:35:46
(1)過去スレで、C99規格では、左シフト e1<<e2 において e1が符号付かつ負の値の時は未定義になるというのがありました。これはC90規格の時でもそうなんでしょうか? 組み込み系でC90がまだ幅を利かせているため知りたいです。 ちなみに ”組み込み開発者におくるMISRA-C 組込みプログラミングの高信頼性ガイド”(日本規格協会) の巻末のc90の未定義動作のリストの中には載っていませんでした。 (2) 例えば charが8ビット intが16ビットの系で unsigned char a = 0xff; unsigned int b ; b=a<<8; を実行したら ”aはint型に汎整数拡張して0x00ffになる。→左8ビットシフトで 0xff00になりたいところだが、符号付のint型なのでオーバーフローしてしまい、 未定義動作になる。”でいいのでしょうか? この場合、b=((unsigned int)a)<<8; とするのがいいのでしょうか。
>>231 世間知らずの馬鹿がここにいるとは。。。。
この世も終わったものだなwwwwwwwww
ってかこいつ絶対「自分は天才」って感じのナルシだなwwwwwww
つうかプログラム知らないくせに語るなってwwww
お前の知ったかはここまでだ、
知恵袋にいって、いまからの小学校への入り方聞いてこい
236 :
PHP=クソ(笑) :2010/07/26(月) 23:51:04
>>235 オマエガネwwwwwwwwwwwwwwwwww
君にはyahooの珍言ブクロがよくお似合いだよwwwwwww
wwwwwwwww
wwwwwwwwwwwww
wwwwwwwww
珍言の宝庫が お に あ いwwwwwwwwwwwwwwwww(笑)wwwwwwwwwwwwwwwwwwwwww
プログラムしらねえとか本と受けるね君wwwwwwwwwwwwwwwwwwwwww
おめえはクソだろwwww はてなで修行つんできた ナリ上がりのバカ?www
そんな低レベルじゃねえんよ雑魚がww
てめえが語るなよハナクソ
なんかすげえ必死にレスつけてる御前がバカみたいだよwwいっぺんしねよクソガリww
こら?ww頭でも体格でも俺に叶わねえゴミがちょずいてんじゃねえぞ?ww
ペアコンとかわめいてそうなゴミみたいだねきみwww かわいそうだよwww
きみゴミゴミしいねw googleのケツおってるバカは◯なのインターン生かな?ww(大笑)(大笑)
(大笑)(大笑)(大笑)(大笑)(大笑)(大笑)(大笑)(大笑)(大笑)(大笑)
(大笑)(大笑)(大笑)(大笑)(大笑)(大笑)(大笑)(大笑)(大笑)(大笑)
(大笑)(大笑)(大笑)(大笑)(大笑)(大笑)(大笑)(大笑)(大笑)(大笑)
爆笑wwwwwwwwwwwwww強烈君本当ばかすぎwwwwwwwww
237 :
PHP=クソ(笑) :2010/07/26(月) 23:52:41
>>236 ゴミゴミしい君の美味しい餌レスをまってますよ^w^b
238 :
デフォルトの名無しさん :2010/07/26(月) 23:52:49
/*自己参照構造体*/ typedef struct _tagDATA{ char name[32]; int age; struct _tagDATA *nextdata; }DATA; int main(){ DATA a = {"平野",28,},//DATA型は構造体_tagDATAと同じだから、 b = {"昆野",35,},//char部に名前 ageに年齢 c = {"田村",18,}; DATA *lpdata; //DATA型のポインタlpdataを宣言 a.nextdata = &b; b.nextdata = &c; c.nextdata = NULL; for(lpdata = &a; lpdata; lpdata = lpdata->nextdata)// printf("%s(%d才)\n",lpdata->name,lpdata->age); while(!kbhit()){} return 0; }
239 :
デフォルトの名無しさん :2010/07/26(月) 23:55:12
ここのfor 文が理解できないです。 条件式・次処理式はどう変動しているんですか?
240 :
デフォルトの名無しさん :2010/07/26(月) 23:58:23
というか、なんでnextdataで次の構造体に移れるのかがわからないです
for( lpdata = &a; // リストの先頭から開始 lpdata; // NULLだったら終了 lpdata = lpdata->nextdata // 次のDATAへ ) これだけだよ a.nextdata = &b; b.nextdata = &c; c.nextdata = NULL; ここでnextdataに次の構造体を代入してるからだろ
242 :
デフォルトの名無しさん :2010/07/27(火) 00:00:13
ごめん、アドレス入ってた。バカだった。
243 :
デフォルトの名無しさん :2010/07/27(火) 00:02:02
a.nextdata = &b; b.nextdata = &c; c.nextdata = NULL; の部分を見て、 a.nextdataが直でNULLを指してるのかと勘違いしてました
>>234 e1が負の値じゃないから未定義じゃないんじゃないの
245 :
PHP=クソ(笑) :2010/07/27(火) 00:12:03
低レベルすぎるよ・・・・・・・・・・・ こんなバカみたいな事やってどうするの?・・・ くだらねえwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww 自分で問題つくって自分で解決してる 自問自答プログラムつくるばかおおいねwwwwwwww
246 :
デフォルトの名無しさん :2010/07/27(火) 00:34:57
もう少しで猫Cの構造体の項目が終わるよ!
連続投稿の規制で遅れたけど
>>241 さんありがとうございました!
247 :
デフォルトの名無しさん :2010/07/27(火) 01:32:20
234です。 244さん返答ありがとうございます。 確かに(2)ではe1が負ではありませんが、 0xff00になって、int型の最大値(この場合は+32767)を超えてしまうのは やはりやばいのではと思って質問に加えました。 ちなみにintが32ビットであるvc++2008で unsigned char a = 0xff; unsigned int b ; b=a<<24; をやってみたら。 特にエラーも出さず、b=4278190080(=0xff000000) になりました。
248 :
デフォルトの名無しさん :2010/07/27(火) 03:51:53
よくエラーで ○×.exe の 0xたぶん16進 (abcde.dll) で ハンドルされていない例外が発生しました: 0x---------: 場所 0x-------- を読み込み中にアクセス違反が発生しました。 って出て困るんですけど、これの原因ってなんですか?
原因がちゃんと書かれているじゃないか
>>248 >0x---------: 場所 0x-------- を読み込み中にアクセス違反が発生しました。
日本語読めるならわかるだろ
251 :
デフォルトの名無しさん :2010/07/27(火) 04:12:29
そのメモリに不正なアクセスが起こったって事はポインタですか?
>>251 別にポインタじゃなくても起こるよ
用意したメモリの範囲外にアクセスしようとすればね
253 :
デフォルトの名無しさん :2010/07/27(火) 04:21:38
書式指定フィールド間違えてただけでした。
254 :
デフォルトの名無しさん :2010/07/27(火) 04:22:56
255 :
デフォルトの名無しさん :2010/07/27(火) 10:10:41
#include <stdio.h> int main(){ int i=0; char *u[10]={"や","ら","な","い","か","?"}; char *k[10]={""," "," "," "," "," "}; while(u[i]) { printf("%s%s\n",k[i],u[i++]); } return 0; } エラーが出ます教えてください
256 :
デフォルトの名無しさん :2010/07/27(火) 10:13:25
whileの{}があったからえらーがでてました かいとうありがごうざいました
>>255 関数printf()内に副作用完了点が2つあるので1つにしなければ動作は未定義になる
#include <stdio.h>
int main(void)
{
int i = 0;
char *u[10]={"や","ら","な","い","か","?"};
char *k[10]={""," "," "," "," "," "};
while (u[i]) {
printf("%s%s\n",k[i], u[i]);
i++;
}
return 0;
}
悪い 副作用完了点は1つしかないが、関数内の引数の評価の順序は定められて いないので、i と i++ のどちらが先に評価されるかわからない 従って i++ を外に出さなければならない
259 :
デフォルトの名無しさん :2010/07/27(火) 10:17:09
ウインドウとかボタンってどうだすんですかおしえてください よくわからないんですが ボタンとかテキストボックスはどうやってひょうじするのでしょうかおしえてください
261 :
デフォルトの名無しさん :2010/07/27(火) 10:22:11
いまハテナのイーンターンでC言語やれとかいわれてるんですが そしてロックマンZERO作れとか言われてるんですが perlでC言語をやりたいんですがどうやればいいんですか perlをコンパイルってやるんですが #1/us/bin/prel print "hello; ってメモ帳にかいて gcc a.cってやってるんですが ./a.exeってやって エラーがでて実行できませんおしえてください 本みてやってるんですがなかなかできませn
262 :
デフォルトの名無しさん :2010/07/27(火) 10:23:27
perl a.plでできるよ 君才能あるね これじゃハテナである意味ナンバーワンでしょ
263 :
デフォルトの名無しさん :2010/07/27(火) 10:24:09
つまらねえから 消えろ とかいって釣られてくれるバカはまだレスくれませんか??????・・・ お返事まってます!!☆
それは断る口実だよ 少しでもまともな判断力が残っているなら願い下げだ
266 :
デフォルトの名無しさん :2010/07/27(火) 10:33:02
C言語でロックマンを作りたいのですが・・・ どうやってつくればいいんでしょうか? 秋葉原とかで部品をかってロックマンとかデジモン作ってみたいのですが・・・
まず入門書でも買って勉強しろ
ロボット作るってことか?
269 :
デフォルトの名無しさん :2010/07/27(火) 12:21:37
>>266 とりあえず、今のお前はここに池
http://pc12.2ch.net/test/read.cgi/tech/1274998754/l50 ここはまだ優しい住人が多い。
たぶん同じ答えが返ってくるかもしれんがな。
次に入門書だ。極限まで簡単そうなのを買え。
金がなければ入門サイトでも図書館でもいいけどな。
そこでお前は分からない単語と出会う。
ノイマン型とかオブジェクト指向とかイクセス表現とかな。
だがここでヘタに調べるとドツボにハマる。
向こうは意味不明な言葉を意味不明な言葉で説明してくる。
だから最初はできるだけ分かったふりしてスルーしろ。
本当はものすごく大事な事なんだが、お前のCPUが爆発するからな。
大体第一章はこんなんばっかだから軽く読み流す程度でおk
>>259 #include <windows.h>
#include <tchar.h>
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int showCmd)
{
MessageBox( NULL, _T("押してw"), _T("ボタンだよ"), MB_OK );
return 0;
}
271 :
デフォルトの名無しさん :2010/07/27(火) 12:37:26
次に大事なのはコンパイラってやつ。 これも大抵の本は第一章くらいで解説してるんだが、予備知識として今説明しとく。 まず、全てのプログラミング言語はただ文字を打っただけじゃ動かない。 じゃあどうやったら動くのかというと、 コンパイラって言うのに入れて機械語にしてからやっと動く。 最近は便利になったから、このコンパイラをもっと簡単に、 より分かりやすくしたソフトがタダでダウソできる。 これがIDE(統合開発環境)ってやつ。 昔はどうしてたかわからんが、今は IDEにソースを打ち込む→ボタン一発 これでコンパイルできる。コンパイルってのもわかんないかもしれないが 要は書いたソースをプログラムにして実行してるって事。 ここまでたどりついたら、後は地道に本を読んでソースを実行しての繰り返し。
272 :
デフォルトの名無しさん :2010/07/27(火) 12:52:37
> これでコンパイルできる。コンパイルってのもわかんないかもしれないが > 要は書いたソースをプログラムにして実行してるって事。 IDE とはつまり、こういうだらずの製造装置 俺はぜひ IDE ぬきの環境も使うことを薦める
はてなに「2chで質問してるインターンがいる」とチクってやれば沈黙する。
はてなの人力検索で質問すればOK
>>275 「新しいデータを先頭に入れて(*1)」「先頭から表示する(*2)」から入力の逆順表示になる。
+1か*2を逆にすればいい。
*2の逆を速くやるために「双方向リスト」というデータ構造もある。
void show_list(struct list *p) { if (p->next) show_list(p->next); puts(p->name); }
219.126.184.225だったかな 例のインターン
関数呼び出した時のメモリのイメージがぼんやりしててよく分からないのです。 参考になるサイトとかないですかね? 関数再帰させたときの仕組みを知りたかったりしてます。
280 :
デフォルトの名無しさん :2010/07/27(火) 19:48:15
cc -S 279.c vi 279.s
>>279 「関数呼び出し スタック」で検索すれば沢山ヒットする。
282 :
デフォルトの名無しさん :2010/07/27(火) 20:45:56
ttp://codepad.org/853oWKR7 これを同じnameが入力されたらscoreを更新したいのですが
同じnameが2つ出てきてしまいます。
A 100 B 200 のときに
A 70 と入力したら
A 70 B 200 となるようにしたいです
今のものだと
A 100 A 70 B 200 となってしまいます
関数struct slist *addに手を加えて直したいのですが・・・
よろしくお願いします
>>282 search って関数作って既にあれば
score を書き換えるようにする
284 :
デフォルトの名無しさん :2010/07/28(水) 02:38:45
c言語なんですが int i, j, oxn[3][3]; char ox[3][3]; for(i=0; i<3; i++){ for(j=0; j<3; j++){ ox[i][j]='oxn[i][j]'; } } このプログラムで test.c:9:13: warning: character constant too long for its type test.c: In function `main': test.c:9: warning: overflow in implicit constant conversion このようなエラーが出ます。どのようにすれば解消できるか教えていただけないでしょうか? よろしくお願いします
>ox[i][j]='oxn[i][j]'; ox[i][j]=oxn[i][j]; キャストしないと通らないかもしれないけど
286 :
デフォルトの名無しさん :2010/07/28(水) 02:53:49
>>285 うまく通ってくれました
ありがとうございました
>>272 今の時代なら、両方から攻めるのがいいぞ。
IDEでさくっと作った後、IDEを捨てて作り直させる。
一度ゴールを見た状態からの方が脳に地図を作りやすい。
>>287 フリーで C++ にいい IDE 環境はなんでしょうか。
日当たり良し
>>236 必死乙
できないやつほど嘘をついて必死になるって本当だったんだな
ってか、Yahooのブログとかいつの話してんの?
さすが知ったか訓は各が違うな〜
今までお前(カス)がプログラムのことを語ってないし、自分の地位を表してないのにww
夢の話はいいんだよ
>頭でも体格でも俺に(ry
確かにお前の馬鹿さやデブさ、臭さには叶わんわ〜
csvファイルをエクセルで開いた場合に、二行D列〜K列に横並びで入ってる実数型の データを一つの配列に読み込みたいのですが、どのようにすれば読み込めるのでしょうか? fopenでできるとも思ったのですが、どのようにして一行目と二行目のA〜C列を読み込まないようにすればいいのかわかりません。
fgetsで一行ずつ読み取って カンマで分割して atoiで整数に変換すればいいんでないの。 セルが""で囲まれてる場合もあるけど。
>>293 なんで小数点以下を捨ててしまったの?
>>291 分割方法はなんでもいいけど、数値変換にはatoiじゃなくatod、、、でもなく、strtodを使うとよいよ。
295 :
294 :2010/07/29(木) 07:20:45
atodってorz atofの間違い。といっても、それは使わない。
VBA使えば悩まずに済む。
297 :
デフォルトの名無しさん :2010/07/29(木) 18:14:14
Excel からデータもらうんなら COM だろ
>>291 場合分けするの面倒だからとりあえず全部読んで
A〜C を使わないようにする
""括りには対応していない。 -- char buf[2000]; enum {D, E, F, G, H, I, J, K, NofCols}; double val[NofCols]; while (fgets(buf, sizeof(buf), fp) != NULL) { if (sscanf(buf, "%*[^,],%*[^,],%*[^,],%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf", & val[D], & val[E], & val[F], & val[G], & val[H], & val[I], & val[J], & val[K]) == NofCols) { someProcess(val); } } --
300 :
デフォルトの名無しさん :2010/07/31(土) 02:13:21
高度なコードを書いて見てください!
別にオブジェクト指向的に使わなくてもC++の標準関数使ったほうが楽な場面が 多いことが最近分かった。 malloc、freeよりnew、deleteの方が楽だし、文字の扱いも楽だ。。。
303 :
デフォルトの名無しさん :2010/07/31(土) 03:14:12
最近ヒープからメモリ領域を確保することしかしらないプログラマもどきがふえてうざい
>>301 これをフォルテッシモシモは難易度高いな
てす
>>304 ffffffffはフォルティシモシモシモシモシモシモですか? w
フォルテッシッシモな
下ネタが好きな連中やのぅ
はじめてのC
312 :
デフォルトの名無しさん :2010/07/31(土) 20:13:27
はじめてのセックス
今日、街中のでかい本屋へ情報収集にいった。 いつも人が皆無で俺専用のC言語スペースにまだ大学生くらいのやつが いるじゃねえか! 早くどけや!とおもいつつ、他のスペースをうろうろして 時間をつぶすこと1時間あまり。 ようやく、どいた。レジに並んでいるそいつの持っている本をみると 「やさしいC」だった。 こいつもあんなに試行錯誤しながら、やさしいCを買うなんて意外と苦労してるのかもしれないなと おもった。
まぁ無難な選択だな
入門書でそんな悩んでもしょうがない。 適当にパパっと選べばいい。
オマエに言われることじゃないw 少しでもいい本見つけたかったんだろうからなwww でもなんでネットで調べてからいかないんだろうなとは思う。
俺専用のC言語スペースってところがツッコみどころなんだろ。自分も大したことないという
318 :
デフォルトの名無しさん :2010/07/31(土) 22:06:20
ターゲティング広告で退化した奴と根が同じのがいるな 書店を覗くことのメリットを全否定してやがる
>>308 フォルテシシシシシシシモだったごめん。
覗くことのメリットとは? 少なくとも目的がはっきりしてるならネットで探したほうが効率がいい。
>>320 思ったよりもめくりにくくてびっくりする本とかあるよね。
けどその本じゃなきゃだめだったりするから本屋のぞいたからといって改善はされないけど。
>>321 残念な回答(´・ω・`)
単純にネットを批判してるオヤジのような印象を受けちゃうよ(´・ω・`)
本屋で立ち読みしてネットで買う
324 :
デフォルトの名無しさん :2010/07/31(土) 22:21:33
>>313 Cの参考書を探していたのだとしたら、「やさしいC」は限りなくベストに近い書籍だよ。
1時間で判断できたならセンスがある。確信なく買ったのなら運がある。
そうか、では箱買いするべきだな
326 :
デフォルトの名無しさん :2010/07/31(土) 22:36:23
もう少し待ってみようか 本気でわからないのかも知れないなw
明解Cでお勉強始めたよ。 なんせ暇だから。 今のところなんとか楽しい。
俺はCよりC++やった方がいいと思う Cに未来はない
別にとっかかりは何だっていいだろw ひとつの言語でできることを体感すればいい。
CをさらっとやったらそのままC++に行けばいいんでない
Cの存在を否定するやつって何を考えているんだろ
CをやったらJavaに行けばいいよ
CでメモリのイメージつかめるようになったらC++やればいいと思う。 ポインタを理解できれば合格だよね。
334 :
デフォルトの名無しさん :2010/07/31(土) 23:23:30
C++0x見れば分かるように、仕様がグジャグジャでどうにもならなくなってる。 C++に未来なんてないよ。
335 :
デフォルトの名無しさん :2010/07/31(土) 23:26:03
C++0xってもう発売されてるんですか?
336 :
デフォルトの名無しさん :2010/07/31(土) 23:28:07
昨日大学生協に売ってたよ。
アニメイトで予約特典付けてもらった
いまアマゾンで50%offだぞ 急げ!
俺も入門書は明解Cだった、恐らく次に求める本はC言語ポインタ完全制覇だな
HSP/BASIC(N88互換のやつ) ↑ あくまでも遊びと割り切ってやること (この間(90/満年齢)年以上置く:15歳だったら21歳まではプログラミングに 手を出さない。18歳だったら23歳まで。12歳だったら19歳迄 30歳だったら33歳まで) /*-------------------------------------------------*/ PHP(決して深いりしないことを条件) → C(これも最初はさらっと) ←→(相当行ったり来たり) Java(もしくはC#) ←→(時々行ったり来たり) C++ こんな感じかな。
>>340 要するにあなたはNEETと。それはよくわかった
解読出来ない奴はNEET
344 :
解読w :2010/08/01(日) 02:03:45
コマンドの組み合わせと変数を使うことで仕事が出来ることを 体験しておこう(必須じゃないけど) 変数や関数の使い方の初歩を覚えよう(PHP) → やや高度な変数や関数の使い方、構造体の使い方を覚えよう OSについても勉強しよう(C) → 本格的に構文を覚えよう(Java) → 時にはアクロバティックな必殺技も使う 「高度な」プログラミングテクニックを覚えよう(C++)
プログラミング初学者が始めるのに適当な言語はCかPerlだと思うんだがどうだろう。
>>345 さもなくばしね(or die)
こんな文が羅列されてるスクリプト
マクロや条件コンパイルの嵐で関連ファイルが数百を超えるようなソース
電車に飛び込みたくなる理由もわかるような気がするw
C は文字列の扱いにつまづく Perl は 0 の扱いにつまづく 今でも初学者用として BASIC は偉大だと思う
そんなレベルの話じゃないけどなw データとか振る舞いとかプログラムの「い」を覚えるには適当な言語じゃないかなw
「い」を覚えていない人にそう思わせるところが 嫌らCと言われる所以と聞きました
>>346 関連ファイルが数百を超えたからといってどうだというんです?
オーナーにとてもじゃないが読めないから、 明日迄に正常に動作することを保った上で 読み易く理解し易いように書き直してくれ と言われて何人が電車に飛び込んだのだろ うか...
質問なんですが Javaでいうjcpadやエクリプスのように エディタとコンパイラ?が一緒になっているようなフリーソフトはないでしょうか? VisualC++ を使ってみるといいと聞いたんですが C言語を書き込むと必ずデバックで引っかかってしまいます。
jcpad知っててcpad知らないの?
>>353 生まれてきてよかったです
ありがとうございました
それほどでもない 分からないことがあったらまたおいで
EclipseにもC言語用のプラグインが・・・いや、なんでもない。
358 :
327 :2010/08/01(日) 22:47:14
どうも。たらたらやってます。今配列に差し掛かりました。 for文の辺りからちょっと気になってたんですけど この部分無駄じゃないの? とか、こうしたほうが簡単じゃないの? って部分が時々あります。 自分なりに、本の記述でなにかメリットがあるのか考えるんですけど、 どう考えても無駄に思えるところもあって。理解がついていっていないのかと不安になります。 まだはじめたばかりなので読み進めるにしたがって理解が深まるとよいのですが・・・ たとえば、P.95のList5-8の網掛けの部分、 (配列vx[5]に代入された値を逆順にするって部分ですが) for ( i = 0 ; i < 2 ; i++){ int temp = vx[i]; vx[i] = vx[4 - i]; vx[4 - i] = temp; } なんでこんなことするのか、私は↓のように書いたんですけど、 ↓のほうがわかりやすいですよね。↑のほうがいい理由って何かありますか? 私がおかしいのかとか、バカだから理解できないのかなと少し不安です。 for(i=0; i<5; i++) vx[i] = vx[4-i];
359 :
358 :2010/08/01(日) 22:49:52
あ、これだとダメですね(笑) やっぱバカですねwww
バカは死ね
>>358 vx[0]=vx[4]
vx[1]=vx[3]
vx[2]=vx[2]
vx[3]=vx[1] ← (ノ∀`)アチャー 上でvx[1]にvx[3]入れちゃったから入れ替わらない
結局下の方法だとvx[3]とvx[4]は入れ替わらないままになっちゃうんだよね(´・ω・`)
363 :
358 :2010/08/01(日) 22:58:04
そうみたいですね(笑 今下の説明を読んで納得しました お恥ずかしい(笑
コード晒すと恥じかくこともあるけど成長できるからいっぱい書いていくべし たくさん恥かこうぜw
365 :
358 :2010/08/01(日) 23:04:12
うんwww ありがと( ;∀;) でもいまんとこよくわかった
366 :
358 :2010/08/02(月) 07:32:17
起きたお(・∀・)
>>358 考え方として、逆順にすると言う目的に対して>358の前者のコードが
「配列の前半分の要素について、それぞれ対応する後ろ半分の要素と交換する」
という形で解決すべく書かれているということを抑えておくといいと思う。
要は、パズルの結果としてコードがあるのではなく、やりたいことを実現するためにコードがあると言うこと。
それが判っていれば、>358の後者では上に括弧書きした解決手段(アルゴリズム)を実現できていないことは自明だろう。
あぁ、頭の使い方を知らない奴から見たら、底抜けに馬鹿に見えるだろうな。
>>367 そのアルゴリズムを実装することが目的のページだったってこと?
望洋は確かに丁寧に説明しているな、
>>358 の下の考えを見越したかのように
というより、コンパイルして間違ってないか試してないってことだね、後後困りそうだ
>>371 試してるよ。ぱっと見気がつかなかった。
バッファオーバーランで戻りアドレスが上書きされるのって 今どきのコンパイラだとありうる? 8ビットマイコンとかくらいでしかないよね?よく知らんけど
今時のコンパイラでも環境によっては在り得る。 8ビットマイコンでも環境によっては起こり得ない。
>>373 リターン値とローカル変数が同じスタックに取られてるいじょう、
性能に関係なくありえるんじゃないの?
いや、戻り番地ってレジスタにぶっこまれるのが多いよなーと思って。
VCでアセンブラのソースをださせてみたら、関数は昔とかわらず callで呼んでたけど、最近のcallはスタックに戻るアドレスを積まないのだろうか。
>>376 普通のプロセッサでは、スタックに積まれる。
>>377 x86はスタックに積むしかない。
データスタックとコールスタックが別のアドレス空間にあって競合しないプロセッサもあれば、
レジスタセットに戻りアドレスを積んでしまうプロセッサもある。
そういやBALRなんて命令があったなあ。
gccだとカナリア、VCだと何て呼ぶんだっけ とにかく両者、似たような機構がある ただ、あくまで保険であって完璧ではないって話じゃなかったかなあ?
382 :
デフォルトの名無しさん :2010/08/02(月) 21:22:42
gccで正常にコンパイル終了して、outファイル実行しようとしたら へんな数字と文字の羅列が結果のあとにでてきたんですけどなんで? 謎の羅列は↓ 20539: calling fini: /lib/i686/libm.so.6 [0] 20539: 20539: 20539: calling fini: /lib/libgcc_s.so.1 [0] 20539: 20539: 20539: calling fini: /lib/i686/libc.so.6 [0] 20539:
383 :
デフォルトの名無しさん :2010/08/02(月) 21:58:44
384 :
デフォルトの名無しさん :2010/08/02(月) 22:13:24
dlfcn.hインクルードしてませんねー ちょっと自分でたしかめてみます
printf("%d", sizeof(char *)); は4を出力しますが、この4は32bitOSだから4なんでしょうか?
いいえちがいます
387 :
デフォルトの名無しさん :2010/08/03(火) 01:40:39
>>385 んじゃあ、おまえ、64bitOSだと、int型が8にでもなるというのか!
っつか、何型だろうとそれはポインタだから
sizeof(char *)が2になる32ビットOSもある、sizeof(char *)が4になる16ビットOSもある。
390 :
デフォルトの名無しさん :2010/08/03(火) 08:46:59
A , B ,C型のメンバを持つ構造体1があって B,C型のメンバを持つ構造体2があって 2のB,C型のメンバを順番どおりに1のB,C型のメンバに入れたいのですがどうすれば良いでしょうか?
どうするもこうするもないよ そのままそれぞれ代入すればいい
>>389 >sizeof(char *)が2になる32ビットOS
ねーよ
charが16bitでchar*が32bitだったらsizeof(char*)は2になるな。
ha?
ならねーよ お前はバカか
sizeof の戻りはバイト数 char型 が1バイトで 1バイトが16bit で ポインタが32bit空間必要だったら
具体的なOS名を出さずに最後は仮定の話なのか?
仮定の話だったらありえるって認めたわけかな。 上の「ならねーよ お前はバカか」って発言はとてつもなく間抜けだったって 胸にしまって生きて行ってね。
>>385 ほとんど正解
8bit/Byteの32bitアプリケーションだから4が返る
64bitOSが32bitアプリ動かした場合も、4が返るので違うということになる
64bitアプリなら8が返る
>>393 それマジで言ったん?ソースあんならすぐ出せ
てs
例えばgccとかのコンパイラのソースってどこかに公開されている?
ガスライティング
411 :
デフォルトの名無しさん :2010/08/03(火) 20:29:11
実例プリーズw # ワードアクセスの場合にアドレス線を1本ずらすってのはハードでは普通に出てくるが
16bitモード・スモールモデルのプログラム実行しろよ。
413 :
デフォルトの名無しさん :2010/08/03(火) 21:10:37
ほう、そこでは char が 16bit になるのかw
Javaじゃあるまいし、charが16ビットの環境なんてあんのかよ。 机上でなく、実際の環境として。
なければ作ればいいじゃない
往生際が悪い
結局ソースは出てこなかったな・・・ ちょっと期待していたんだが
無いよ
>>394 はまったく間違ってないだろ。
どこが間違ってるか説明してみろ。
ツッコまれるのをビビって説明できないだろうけど。
君の説明はいいからソース出せ。
>>422 >どこが間違ってるか説明してみろ。
レスのタイミング
426 :
デフォルトの名無しさん :2010/08/04(水) 13:15:12
あえていうならCの仕様書だろうかwwww
規格上はありえる その上で、そういう実装があるのかねという問題がある その辺はよく知らん……
>>428 現時点では限定する必要は無い。引っ込んでろ。バカ。
いい加減脳内OSでしたごめんなさいって言えばいいのに…
432 :
デフォルトの名無しさん :2010/08/04(水) 14:17:27
>>431 「必要は無い」に対して「ならねー」ってなんだよ。引っ込んでろ。バカ。
脳内OSでしたごめんなさい
>>432 Win32で
>charが16bitでchar*が32bitだったらsizeof(char*)は2になるな。
こうなるOSの話だろがバーカ
435 :
デフォルトの名無しさん :2010/08/04(水) 14:34:19
>>434 アンカーの打ち方憶えてから出直せ。クズ。
>>435 反論できなくなったら話題そらしかよゴミ
437 :
デフォルトの名無しさん :2010/08/04(水) 14:51:43
439 :
デフォルトの名無しさん :2010/08/04(水) 15:03:51
>>438 の知能では二人相手にしている事が分らないようだから、両方相手してやる。
特別だぞ。バカ。
>>389 (これがオレ、特定の環境が存在すると言っている)
sizeof(char *)が2になる32ビットOSもある: 例 Win32
sizeof(char *)が4になる16ビットOSもある: 例 Win16 ラージモード
>>394 (どこかの誰か。特定の環境が存在するとは言っていない)
> charが16bitでchar*が32bitだったらsizeof(char*)は2になるな。
規格上あり得る。ソースはC99の規格書。
これでわかったか? 干からびて死ね。
441 :
デフォルトの名無しさん :2010/08/04(水) 15:06:30
>>441 反論できないからって無理して悪口だけ書かなくていいから
443 :
デフォルトの名無しさん :2010/08/04(水) 15:09:17
>>443 反論できないからって無理して悪口だけ書かなくていいから
445 :
デフォルトの名無しさん :2010/08/04(水) 15:10:50
>>445 反論できないからって無理して悪口だけ書かなくていいから
>>439 横からですまんが、その環境について詳しく書いてもらえるとありがたい。
小出しにし続ける方針なら何日後ぐらいに見ればいいかを教えてほしい。
(ヽ´ω`) げっそり
ラージモードってメモリモデルのラージモデルのことか sizeofってコンパイラがその時点で計算するんだしOS関係無いんじゃ?
COMとか? 環境ってよりはアプリの作り方のように思えてならないけど。
451 :
デフォルトの名無しさん :2010/08/04(水) 15:21:23
>>447 小出しじゃなくてそのまま書いてるだろ。どれが分らないんだ?
>>449 OSがサポートしているメモリモデルでなければ実行できないのだから、関係なくは無い。
>>451 Win32は全てsizeof(char *)が2になるってことでよろしいか。
OSがサポートしてなきゃ自分でサポートすればいい
流れが止まった・・・
linuxでCの勉強をしています getcwd() でカレントディレクトリを取得出来るのは判ったのですが これは実行したプログラムの置かれている場所を取得する訳ではないようです たとえば [/tmp] $ /hoge/fuga/hage の様に実行した場合 /tmp (カレントディレクトリ)ではなくて /hoge/fuga の方を知りたいという意味です argv[0] に /hoge/fuga/hage が入っていることまでは辿り着きましたが ここから /hoge/fuga だけを抜き出す関数って標準で存在しますか?どんな名前の関数でしょうか?
458 :
デフォルトの名無しさん :2010/08/04(水) 16:19:33
>>453 全てなんて限定詞はつけていないが。Win32でsizeof(char *)が2になる環境を知りたいのか?
NTVDM, WoW16
459 :
デフォルトの名無しさん :2010/08/04(水) 16:21:02
strtok
32bitOS上で16bitコードを動かすためのエミュレート環境は、16bitOSだろ NTVDM, WOW32を32ビットOSと言い張るのはかなり希少な珍獣
つーか屁理屈w
>>458 ありがとう。最初にそれを書いてくれてれば何度も手を煩わせずにすんだんだけど、ごめんね。
WoW16
466 :
デフォルトの名無しさん :2010/08/04(水) 17:59:41
AndroidアプリをC言語で書くことはできますか?
android c でググれ
469 :
デフォルトの名無しさん :2010/08/04(水) 18:53:44
報告書に、c言語って書いたらC言語って書けと怒られた。 この上司、頃してもいいよね
>>470 小文字で書くお前が悪いだろ・・・どう考えても・・・
>>470 世界中どこ見たってC言語のCは大文字だよ。
c language で検索してみろ。
>>470 その部下もコロちゃんがどうしたこうした
なんだこの低レベルなインターネッツは…
476 :
デフォルトの名無しさん :2010/08/04(水) 20:00:37
>>422 実例プリーズと言っているだけで間違っているかどうかは問うていないよ
つまり規格に違反している製品でも構わんということだ
>>469 反論できないからって無理して悪口だけ書かなくていいから
(ヽ´ω`)
479 :
デフォルトの名無しさん :2010/08/04(水) 22:42:16
|| ̄ Λ_Λ ||_(Д`; ) 「なに?このスレ・・・」 \⊂´ ) ( ┳'
本当にC言語の範囲でしかプログラミングしたことない人っているのかな?
いるんじゃない? これ他言語知ってる奴ならわかるはずだ、って質問を散見するよ。
Cの質問する時点ではCしか知らんだろ
未だに最初の言語として選ばれることも多いようだし、 十分あり得るのだろうさ
>>479 反論できないからって無理して悪口だけ書かなくていいから
486 :
デフォルトの名無しさん :2010/08/05(木) 01:09:51
>>485 反論出来ねーのはテメーだ。
干からびて死ね。バカ。
>>486 反論できないからって無理して悪口だけ書かなくていいから
488 :
デフォルトの名無しさん :2010/08/05(木) 01:16:31
>>487 反論出来ねーのはテメーだ。
干からびて死ね。バカ。
>>488 反論できないからって無理して悪口だけ書かなくていいから
ばーかばーか
煽り合いはAAでやってくれ
ばーかばーか
ハ _ ___ ‖ヾ ハ / ヽ ‖::::|l ‖:||. / 聞 え | ||:::::::|| ||:::|| | こ ? | |{:::::‖. . .||:::|| | え | _」ゝ/'--―- 、|{::ノ! | な 何 | / __ `'〈 | い ? ! /´ /´ ● __ ヽ ヽ / / ゝ....ノ /´● i ` ー―< { ゝ- ′ | 厶-― r l> | ∠ヽ ゝ-― `r-ト、_,) | レ^ヾ ヽ>' ̄ LL/ 、 / .l ヾ:ヽ ` 、_ \\ ' l ヾ:ヽ ト`ー-r-;;y‐T^ | ヾ `ニニ「〈〉フ /‖. j
ばーかばーか
____ / \ n / ⌒ ⌒ \ | | / (⌒) (⌒) \ i「|^|^ト、| __´___ | <君みたいな低脳と一緒にしないでくださいね |: :: ! } \. `ー'´ / ヽ ,イ
夏か
君ら年がら年中そんなことばかりやっててよく飽きないね
__、 ,r´⌒ヽ,⌒ヽ,ヽ (⌒)、 .人 λ\、 ._____ \. \ 、 ヽ./ ー ー\ |\ \ ヽ./ ( ●) ( ●) | \ \ / (__人__) \ はいはい、どーもすみませんでした |. \ | ` ⌒´ | . |. |.\_ノ\ / . |. | | \______/ . | ) .| . . ̄ ̄ . | | .| | |.| .| . | | .| .| / / / ヽ, (__ノ ヽ、__つ
>>498 そのアゴをなでなでしたいと常々思っている
500 :
デフォルトの名無しさん :2010/08/05(木) 18:16:39
で、実例プリーズw # グッドな泣き声にSっ気が…
502 :
デフォルトの名無しさん :2010/08/05(木) 21:43:59
土方は干からびて死ね。 ねぇ、今日はどんな土方仕事したの?
>>500 どの実例がほしい?
charが12ビットな環境でいい?
じゃあcharが17ビットな環境で。
素直にcharが16ビットな環境にしとけよ
19ビットで。
6bitで
1bitで
とりあえず13bitで
ビット幅 C で検索したら1バイト=16ビットの例が出てきた。 DSPか・・・ニッチだなぁ。
ニッチの使い方おかしいだろ。
頭の使い方おかしいだろ。
ニチニチうんこです
#include <stdio.h> #include <conio.h> //for getch #define END 0x20 //スペースキー int main (void) { int i = 0; char keyboard = 0x00; for(i=1; i<=200 i++){ printf("今 %d 番目だお (^ω^)\n", i); } while( keyboard != END ){ if( ( keyboard = getch( ) ) != 0xFFFFFFE0) { switch( keyboard ) { case 0x48: /*ここにスクロール処理 */ break: //矢印キー上 case 0x50: /*ここにスクロール処理 */ break: //矢印キー下 case END: printf("終了します。\n"); break; default: printf("無効な操作だお (;^ω^)\n"); } } } return 0; } これを実行すると1〜200までズラッと表示されると思うのですが、 このコマンドプロンプトウィンドウをキーボードの矢印キーを使って上下にスクロールさせたいです。 矢印キーを使ってのウィンドウスクロールってどうやればいいんでしょう…?
1バイト=64ビットであるべきだと思う
そのココロは?
>>514 その処理系に cprintf() という高速出力ルーチンがあって、
コンソールの行数が25行のとしたら、こんな感じ。
#include <stdio.h>
#include <conio.h> //for getch
#define END 0x20 //スペースキー
#define LINE_NUM 25 // 画面の行数
void disp(int pos)
{
int i;
for (i = 0; i < LINE_NUM; i++) {
cprintf("今 %d 番目だお (^ω^)\n", i + pos);
}
}
int main (void)
{
int i = 0;
char keyboard = 0x00;
int pos = 1;
----
つづく
>>517 の続き
for(i=1; i<=200 i++){
cprintf("今 %d 番目だお (^ω^)\n", i);
}
while( keyboard != END ){
if( ( keyboard = getch( ) ) != 0xFFFFFFE0) {
switch( keyboard ) {
case 0x48: //矢印キー上
if (pos > 1)
pos--;
disp(pos);
break:
case 0x50: //矢印キー下
if (pos < 200 - LINE_NUM)
pos++;
disp(pos);
break:
case END: printf("終了します。\n"); break;
default: printf("無効な操作だお (;^ω^)\n");
}
}
}
eturn 0;
}
>>517 >>518 これじゃちらつしてしかたないか。
カーソル位置を制御する関数で、描画のたびにカーソルを画面の
トップにもってこないといけないな。
520 :
デフォルトの名無しさん :2010/08/06(金) 19:16:05
環境依存になるけど窓なら「コンソールAPI」を呼び出せばできると思う
初心者レベルの話ではないと思うw
ANSIならエスケープシーケンスがうんたらたかんまん
コマンドプロンプトではうんたらたかんまん
524 :
デフォルトの名無しさん :2010/08/06(金) 20:33:07
CUIでこみいったことをやろうとするとGUIよりも面倒になる
>>514 Rogueでggる
Cursesが見つかる
project eulerの問10です。 200万以下の素数の合計を求めるプログラムなんですが、 結果が上手く合いません。 どこが間違っていますか? #include<stdio.h> int main(){ int a,n,sum=160; for(n = 37;n <= 2000000;n = n + 2){ for(a = 3;a < n * 0.5;a = a + 2) if((n % a) == 0) break; if(a > n * 0.5) sum += n; } printf("%d\n",sum); return 0; }
>>526 perlのBigIntつかえ
intの最大値は足し算の結果より小さいんだろ
>>527 なるほど!
cで言えば、
long long intを使えば良いってことですね
ありがとうございました
sizeof(char)が1ってのは決められているだろうけど それが8bitであるって規格されてたっけ?
うんにゃ C99のbyteの定義: addressable unit of data storage large enough to hold any member of the basic character set of the execution environment つまりbasic character setが全部表現できるサイズなら何でもおけ
532 :
デフォルトの名無しさん :2010/08/07(土) 00:27:41
正規表現を勉強したのですがどうすればいいですか?
>>532 正規表現で……
・素数判定
・fizzbuzz
・整数の足し算
・〜の取り扱い
・半角カナの置換作業
・バブルソート
↑こんなん覚える必要ないからとりあえずboost::regexを動くようにしろよ
>>534 正規表現を勉強したいので
じゃなくて
正規表現を勉強したので
だぞ?
ハロワで条件の所に「正規表現のできる人」がある仕事を探す
>>531 ってことは7bitでもいいってことかなー
>>537 もちろん問題ない。
今は絶滅してるけど、過去にそういうのはあった。
むしろ4bitがあった。俺はそのときに泣いた。
もう涙は流さない。
>>539 正しい
JISの「5.4.3.2.1 整数型の大きさ <limits.h>」
に規定があるが、CHAR_BITは最低でも8とされている
http://codepad.org/a8dPNc38 コラッツ問題で
100万以下の数字のうち、項数がもっとも多くなる数字はどれか
という問題を解いています
そこで配列を300万個用意したいのですが、
エラーが起きて上手く実行されません。
どうすれば配列が確保できるようになるのでしょうか?
malloc
calloc
fopen
>>541 バグってるわな.
Program received signal SIGSEGV, Segmentation fault.
0x080484d1 in main () at x.c:14
14 if(set[m] != 0){
(gdb) p n
$1 = 4255
(gdb) p m
$2 = 3188644
(gdb)
>>541 それ以前に
・intの最大値を確かめよ
・long long int を調べよ
・300万個の配列を考え直せ
・項数と整数を一組だけ保持して比較せよ
・割り算でのバグに注意せよ
flgは要らんな
549 :
デフォルトの名無しさん :2010/08/07(土) 21:22:08
スレ違いになりますが、perlには文字列を処理する関数が豊富ですが、 これらの関数は元はC言語で実装されたものですか?
>>547 高々100万程度なので、
long long int型は使わなくてよくないですか?
じゃあ配列を使わないで作り直してみます!
>>550 計算途中でこんな数値が出てくるみたい
56991483520
>>551 配列使わずに作り直してたら確かにint型じゃ収まりきれませんね
生意気な事いってすいませんでした。
大量の配列を要するプログラムは大抵の場合設計に問題がある 本当に300万個ものデータを「オンメモリ」にしなきゃならんのか? そこから考え直した方がいい
>>553 nの項数は決まっているので、
それぞれを格納して足せば高速化が図れるのでは?
と考えたんですが、
配列使わなくても1秒ぐらいで出力できたんで
その必要はなかったですね
555 :
デフォルトの名無しさん :2010/08/07(土) 22:20:50
アキュムレータが2個しかない CPU で立派に書けてたコードを移植するときに思うことだな
よくわからないですけど、 馬鹿な事を考えてた って意味ですか?
557 :
アセンション :2010/08/07(土) 22:43:22
あのさ、C言語ってやっぱ6番目の元素のC(炭素)にかけてるよな? 6はラテン語でセクサ(セックス)。Cもセックス。 あとさ、2チャンって「ハッキングから今晩のおかずまで」って標語あるじゃん。 あれってドッキングから今夜のおかずって意味だろ? あとさ、無意識に存在する神レベルの連中からしたら、ソースコードはスパゲッティで十分なんだって知ってた? 構造化とかオブジェクト指向とか意識の俺らが読むのに都合よくしてるだけなんだってさ。
558 :
アセンション :2010/08/07(土) 22:47:04
女子高生の制服って何で性欲を掻き立てるんだろうな。 変態が好まないようなデザインにすれば万事解決なのに。 って言ったら、制服がかわいくないと学生が集まらないって言われた。 一見もっともらしいんだけど気になる。。。。 だって、変態と女子高生の美的センスが一致してるってことになるからな。 女子高生がかわいいと思うけど、変態が好まない制服を開発すれば万事解決するはず。 もっとも女子高生じゃないババアが制服着てもキモイだけだけどね。
エロにもいろいろとあるわけで、 変態は女子高生の制服のみが対象じゃねえんだ。 変えたら鞍替えしてくるだけだ。 女子高生といえば、靴下が超定番なんだけど。 社会人みたいにストッキングや生足が定番に出来ないか。 膝下が丸出しの方が好きだ。
>>552 私もためしてみましたが、ステップの途中でとてつもなく大きな数字があらわれてくる (
>>551 ) みたいです。
int じゃたりない。
配列よりさきに、数字の大きさでつまずきました。
まず配列なしでつくってみようと思っていますが、さあどうしようか。java なら BigInt があるんですけれども。
>>561 max とか maxsu とかの初期化は?
>>562 代入するだけの変数には、
基本、初期化をしないんですけど
この考えはだめですかね?
>>563 だめに決まってるだろ
なんで maxsu が 1000000 超えてるんだよ
>>564 え
自分のPCでは837799を出力しましたが
そちらではだめでしたか?
この答えで正解だったので、
プログラムは間違えてないと思います。
>>565 maxsuは別に初期化しなくてもいいが、maxは初期化しなければならない。
正しい答えが出たのは、偶然maxの数値が低かっただけ。
抽象的な質問で申し訳ないのですが… C言語の熟練の方は、ライブラリ関数とシステムコールはどのように使い分けているのでしょうか? 自分の認識では、システムコールはOSの機能で、ライブラリ関数はあくまでソフトウェアだから 環境が変わればライブラリ関数は統一できてもシステムコールはそうはいかない、 と思うのですが間違ってますか? 私の手元にある参考書では、どっちもごちゃ混ぜに使っているので少し疑問に感じました。 具体的には、ファイルを管理するサンプルプログラムがありまして 基本的にはライブラリ関数を使ってるのですが、 ファイルかディレクトリかの判断をする箇所だけ、statというシステムコールを使っているのです。 これって、Linuxじゃない環境では動かなくなるんじゃないでしょうか? あるいはライブラリ関数レベルでディレクトリ判断は不可能なんでしょうか。
うるせえ くだらねえことで留まるな
>>566 確かにそうですね・・・。
指摘ありがとうございました。
>>565 少なくとも max は代入する前に参照してるだろ?
stack 変数はどんな値が入ってるか分からないので
max の初期値が 1000000 越えてたらまともに動かないだろ?
>>567 熟練ではないが。
他のOSでも動作することを前提に設計でもしない限り、動かなくて当たり前。
動かしたい場合、Java辺りを選択するんじゃないでしょうか。
あと、ライブラリとは標準Cライブラリの事でしょうか?
WindowsにしろLinuxにしろ、標準Cライブラリだけでソフトを仕上げることは不可能です。
printf("%10.5f ", hoge); の %10.5fを定数化することはできますでしょうか? #defineで定義してみたのですが やはり普通の文字列としてしか認識してくれませんでした
*
#include <stdio.h> int main(int ac, char **av) { int i, j; for(j = 12; --j > 8; ) for(i = 5; --i > 1; ) printf("%*.*f\n", j, i, 1.23456); return 0; }
>>573-575 #define FIELD_WIDTH 10
#define PRECISION 5
として
printf("%*.*f ", FIELD_WIDTH, PRECISION, matrix[i][j]);
と書くにはどうすれば?という質問でした。
解決しました。ありがとうございました。
数値計算を行っておりまして、
一括でフィールド幅と精度を管理したいということでした
>>576 本気で数値計算を考えてるなら注意しておく
そんなやり方では精度は確保できないぞ
>>577 丸め誤差、桁落ち、積み残し、打ち切り誤差を考慮した
アルゴリズムが精度の確保につながると思うのですが、
大学のレポートで出力を一括で管理したいだけのレベルなのでこれで大丈夫です。
わざわざありがとうございます
.* の方を PRECISION って言ってるだけだからなぁ
func(FILE *f)という関数にstdoutを渡したら、普通に標準出力ができました stdoutってFILE構造体何ですか?
age
FILE構造体へのポインタ、でしょ
>>583 整数計算がしたいだけならperl入れてBigInt使った方がラクかもしれんね
600桁同士の掛け算も一瞬で終わる
unsigned/signed charは何が違うんですか 符号の有無じゃなくて asciiだと128しか割り当てられていないと思うですが
charというのは、「文字」の型ではなく「整数」の型
587 :
585 :2010/08/08(日) 20:34:34
>>586 C言語のcharはjavaのbyteとかに近いわけだ
javaでもcharには数値を入れられたと思うけど、使い方的に
ちなみに、charとunsigned charは互換性があるのですか?
こんな事をしてみたいんですが
unsigned char c[] = "char";
strlen((char *)c);
こんなことここで言ってもしょうがないんだけど BYTE型として扱いたい型に符号の有無があるのがおかしいんだよ C言語規格のあいまいさの1つ
符号なしの整数だっけ
あいまいじゃなければいいのか? Javaのbyte型は符号付きに固定されているが、そういうのがいいのか?
592 :
デフォルトの名無しさん :2010/08/09(月) 00:12:27
>>587 そのキャストに耐えられないようだと前途多難
臭い汚い仕事が嫌いなら他言語へ逝け
>>591 符号ありなしを固定したいだけなら
signed char もしくは unsigned char と書けばいいだけ
594 :
デフォルトの名無しさん :2010/08/09(月) 02:39:42
C++でGUI作ってるバカおる?
場違いな馬鹿なら↑におる。
Qt4 / C++
signed char と unsignd char は当然違うが、 char が上2者と同じか或いは違うかは環境次第。
598 :
デフォルトの名無しさん :2010/08/09(月) 15:22:37
visual studio ultimateいれたんだが何ができるかな
C#出来るよ
>>598 目的があって買ったんじゃないの?
それともワレザーですか?
dream sparkでVSprofessional落としたけど全然有効活用できない
602 :
デフォルトの名無しさん :2010/08/09(月) 21:20:09
>>598 はおそらく包括契約結んでる大学の学生もしくはドリームスパーク
無料もしくは1400円ぐらいで入手できる
603 :
デフォルトの名無しさん :2010/08/09(月) 21:54:48
DreamSparkってProfessionalだけじゃない?
時期を考慮すると 悪い予想の方が有力だね
realloc() すればいいじゃん
>>607 可変長配列?
配列の要素数に変数を使うってことならC99で対応済みだよ
610 :
デフォルトの名無しさん :2010/08/10(火) 00:04:02
>>607 「ない」って時点でC土方には不適格
それを作るのがてめーらの仕事だろうが ぼけ
>>607 いや、簡単に作れるだろ。何言ってんのよ。
Cひじかた
Exsactory! Exsactory! Exsactory! Exsactory! Exsactory!
int * i; int* i; int *i; の違いは何ですか?
ない 見た目が違うだけ
int * i; キチガイ int* i; 素人 int *i; 老人
俺はキチガイ派か
int * i; きちがいっていうか素人だよな。 こんなところでムダに個性をださなくていい。
int* SomeClass::some_func(void); これは、 int *SomeClass::some_func(void); これの方がいいんすかどうなんすか。
そういうふうに書いてるソースを読む気はしないわな
変数は int *i; にして、関数は int* SomeClass::some_func(void); にするんじゃ一貫性がないんじゃないんですかどうなんすか
622 :
デフォルトの名無しさん :2010/08/10(火) 10:09:57
いいじゃんint* chinko;で
*のマークが他の単語にくっついてたらおかしいから真ん中
>>623 そんな独自の工夫はいいから、普通に書いてほしい。
int *const iとかやるの?
627 :
デフォルトの名無しさん :2010/08/10(火) 11:08:51
コマンドラインのtouchみたいな関数ってある?
真ん中なのは標準のヘッダーファイルの書き方だな
629 :
デフォルトの名無しさん :2010/08/10(火) 11:13:37
>>627 標準にはない
touchでできることをする関数はあるけど
OSによって違う
>>629 了解。仕方ないからopenしてcloseしてutimeするわ。
>>627 system("touch")じゃダメなん?
touchのソースでも同じことしてるしな。 ファイルがあるかの確認して無かったら作成するようにはなってるが
英語のmanも見るといいかも
>>633 マ
ジ ハ ,,ハ
デ (;゚◇゚)z
!?
636 :
デフォルトの名無しさん :2010/08/10(火) 17:51:26
Cの本で小難しくてぶつぶつと独り言をいいながら読む本はないですか? プログラミング言語Cは読みました。
K&R読んだならもうCはいいだろ
638 :
636 :2010/08/10(火) 17:59:45
〃〃∩ _, ,_ ⊂⌒( `Д´) < ヤダヤダ! `ヽ_つ__つ ジタバタ
639 :
636 :2010/08/10(火) 18:06:11
>>637 読むには読みましたが、内容がさっぱり理解できませんでした。
( ´゚д゚`)エー
はじめてのC
642 :
636 :2010/08/10(火) 18:12:14
Cの本ばっかり読むな、馬鹿になるぞ
じゃあレシピとかクックブックとかそのへんで
645 :
デフォルトの名無しさん :2010/08/10(火) 18:18:36
646 :
636 :2010/08/10(火) 18:19:16
わかった。ありがとう。感謝します。
Cを深く学ぶのが目的なら読むより書け 難解な本を読むのが目的なら哲学書でも探せ
648 :
デフォルトの名無しさん :2010/08/10(火) 21:55:29
両方必要 ひとりよがりでカキまくってても限界そのものに気付くことができないし 他人の受け売りだけでは何も創造できない
unixのソースコードでも読んでろ
とりあえず書くことが必要だろ そうじゃないとアルゴリズムの凄さなんて感じることができないと思う
二分探索とかはじめて知ったときはすげーって素直に思えたあの頃
652 :
デフォルトの名無しさん :2010/08/10(火) 23:29:45
すみません。1行入力の場合fgets関数で取得してちゃんと数字かどうかとか 決められた文字で入力されているかとか判断するというのは最近知りましたが、 1文字だけ入力を取得する場合も上記の方法でできますが、正式なやり方というのは 別の方法であったりするのでしょうか?
仕様通りに動けば、全て正式。
654 :
652 :2010/08/11(水) 00:44:38
仕様どおりに動かないから、困っているんです(><;)
655 :
デフォルトの名無しさん :2010/08/11(水) 01:12:56
「正式」って何のことを言いたいんだ? ちなみに、このスレの範疇では「無理」だよ OSやハードに特有の機能がどうしても必要
//////////////////// char c; int handan = TRUE; while((c = getchar()) != EOF) { if(c == '\0') break; else if( c < '0' || c > '9') { handan = FALSE; break; } } //////////////////// int isKimeraretaMoji(char c); char c; int handan = TRUE; while((c = getchar()) != EOF) { if(c == '\0') break; else if( !isKimeraretaMoji(c) ) { handan = FALSE; break; } }
kbhit()
プログラムに正式なんてないよ より効率のいい書き方とか保守性の高い書き方とかはあるけど
正式は無くても不正はある不思議
661 :
デフォルトの名無しさん :2010/08/11(水) 10:20:50
Perlで記述したスクリプトをCにコンバートしてくれるソフトはありませんか?
>>662 ありがとう
本当にできるとは思わなかった
バイナリモードでファイルを開くとEOFが普通のデータとして扱われるらしいんですが ストリームの終端を知るにはサイズを調べるしかないんですか?
>>664 全然違う。キミにそんな出鱈目を教えたテキストは今すぐ廃品回収に出せ。
どこかのサイトで読んだなら、これ以上の犠牲者が出ないうちにここで晒すべし。
EOFって0x1Aのことかw
EOF(=End of File)が意味をなさないというのは さすがに考えられない
668 :
デフォルトの名無しさん :2010/08/11(水) 17:21:48
>>664 おそらく EOF と 0x1a を混同しているのだろう
それから「サイズ」とは何かを厳密に定義してみると自分の口から答えが聞けるはず
「バイナリモードだとEOFがデータとして扱われる」じゃなくて 「テキストモードだと^ZがEOFとして扱われる」だな。
CP/Mの頃ならEOF=0x1Aは結構曲者
質問です int main(void) って、 int main() とどう違いますか? 正しいのはどちらなんでしょうか?
どっちも間違い
>>664 バイナリモードであろうと、テキストモードであろうと、EOF の使いかたは同じです。
>>674 int main(int, char **)
void main()
>671 C++では両者は同じ意味 Cでは両者は異なったモノとなる。 int main(void); は戻り値の型がintで、引数をとらない関数mainの宣言 int main(); は戻り値の型がintで、引数の制限がない関数mainの宣言 Cの int main();と同様の関数をC++で宣言するとint main(...);となる。
>>679 int main() と int main(); は違うだろ。
しかも main() をプロトタイプ宣言なんてほとんどしないだろ。
口だけ番長
682 :
679 :2010/08/12(木) 01:23:27
>680 舌足らずですまぬ。 int main() だけじゃ完結してないから気持ち悪くて、補完しただけ。 int main() {} でもよかったんだけどね。 それにmainだけじゃなく関数一般に通じるから、プロトタイプ宣言にした。
mainのプロトタイプに出会ったら「ヘボ」と即断していいってジーちゃんが言ってた。
684 :
デフォルトの名無しさん :2010/08/12(木) 08:08:09
よい兆候とはいいがたいが 言葉遣いが正しくないくらいで何がわかるんだ
ヘボサインに出会ったら念入りにレビューするのだ。
>>686 それがC99に対応している処理系はほとんど無いのです
gccですら部分対応なのでとても使えません
取り引き先の頑固親父曰く、c99の内次の項は全て「使えて当たり前」だそうだ。 ・//コメント ・printf()の"%lf" ・ブロック先頭以外の変数宣言 この条件なら、対応している処理系が殆どだねw
C99なんて実際に業務で使ってるとことかあんの? そんなの使うくらいなら素直にC++に行くと思うんだが。
692 :
688 :2010/08/12(木) 13:58:28
>>691 >688に書いた頑固親父曰く、HP-UXで使えないものは使わない。
どうやらHP-UXのC++はiso準拠度が低いらしいが、寧ろ私は「自分が理解できないものは使わない」のだと思う。
尤も、その周辺の部署では当たり前のようにc++を使っているので件の親父の所だけカオスと化している。
そういうURLの貼り方はするな
図書館のサイトで検索してみては?
>>696 技術書は落書きしてナンボなんだから、借り物じゃ駄目だ
いや、質問者も内容知らないみたいだから 買う前に見たほうがいいじゃない
中身を見て買うか否かの判断するんだろ?
コンパイラ込みの値段だから高い。オレならこの内容に3万は出さない。 [基礎編] STEP1 プログラムを作ってみよう!! STEP2 プログラムを洗練しよう!! STEP3 入力スピードの分析をしよう!! STEP4 入力データの分析をしよう!! STEP5 応用課題に挑戦しよう!! STEP6 C言語基礎のまとめ Appendix サンプル Appendix 用語辞書 [応用編] STEP1 入力単語の分析をしよう!! STEP2 データファイルを使用しよう!! STEP3 プログラム開発に挑戦しよう!! STEP4 C言語応用のまとめ Appendix サンプル
なんだ、富士通製のコンパイラがついて高いのか
逆に考えるんだ 富士通のCコンパイラがその値段で手に入るのだと
正直、要らねぇw
これはひどい っていうか社内研修用の教材じゃねーのか
下請けに大量に買わせるんだろ。
これをプレミア付けて売ってるやつはなんなんだろ。 買うやつがいるからこの値段なんだろうけど・・・
講師に儲けさせるための講習会で書籍代込みですみたいな
レビュー書いてる香具師は中古書店の自演かw
>>702 いらねえw
VC10を超えられるとは思えない
富士通コンパイラ買うぐらいなら インテルコンパイラを買う
くそ、そういう本持ってたのに捨ててしまった あの棚一列あれば軽くAVセット買えただろうな 売れればの話だが
>>712 VBはスレ違い・・・・ってなんだこりゃ
\9,976,886もするのに送料340円とるのかよ
>>712 >基本コントロールで簡単に作る Visual Basic 6.0 プログラミング入門 [単行本]
>中古品2点¥ 9,976,886より
意味が全く分からない
amazonのDBがこわれてるんだろう
ちょっとまて、何が起こっているんだ? 説明してくれないか。 ¥ 9,976,886 + ¥ 340(配送料) ¥ 10,974,574 + ¥ 340(配送料)
>>717 自動で最安の10%増しをつけてるとみた
>>718 まだ上がっていくぞwwwスカウターの故障かwww
互いに自動で競りあげてるのか。www 一方は現在の最安まで上げる。 一方は現在の最安に10%上乗せする。 ¥ 12,072,031 + ¥ 340(配送料) ¥ 12,072,031 + ¥ 340(配送料)
1日に1回調整が行われるとして、つまり、これは何日経つとこうなるんだ? だれかCで回答してくれ
#include <stdio.h> int main(void) { const int iv = 790; const int tv[] = { 9976886, 10974574, 12072031 }; const double r = 1.1; double ir; int n; for( ir = 0.1; ir < 2.0; ir += 0.01 ) { int bv = (int)( (double)iv * ir ); int v[] = { 0, (int)( (double)bv * r ), 0 }; for( n = 2; n < 300; ++n ) { v[ 2 ] = (int)( (double)v[ 1 ] * r ); if( v[ 0 ] == tv[ 0 ] && v[ 1 ] == tv[ 1 ] && v[ 2 ] == tv[ 2 ] ) printf( "%.0lf%% \\%d %ddays\n", ir * 100, bv, n ); if( v [ 2 ] >= tv[ 2 ] ) break; v[ 0 ] = v[ 1 ]; v[ 1 ] = v[ 2 ]; } } return 0; }
p(1-0.1)^n = 12,072,031 初値と日数の二つ未知数がある
>>723 の実行結果
13% \102 123days
163% \1287 96days
197% \1556 94days
新品がなく中古品のみならば数量が限られているのは自明。 かつプレミア価格がついていれば希少価値があるということで 最安値より少々高めの価格にしても売れるに違いない。 という考えに基づいていると仮定するならば、開始値は1287円……かな?
希少価値じゃなくて、当時は不問にされていたが、現時点では 関係者にとって都合の悪い情報とかが書かれてるとかそういう んじゃねの?
インフレスパイラルが800円でスタートすると101日だね。 4030円辺りでスパイラルがスタートしたとしても84日か。 実際には他の業者がいればスパイラルには落ち込まなかっただろうし、スパイラル前の日数は不明だね。
int array[] = {1, 2, 3, 4, 5}; int *array = {1, 2, 3, 4, 5}; 配列の時はsizeof(array) / sizeof(array[0])で長さを求められますが、 ポインタの時はどうすれば長さを求められるんですか? また、*arrayはarray[0]でアクセスできないのは何故ですか?
730 :
デフォルトの名無しさん :2010/08/13(金) 12:13:18
コミケについての質問です。 静岡駅からコミケ会場に最も効率よくたどり着く陸路を求めるにはどうすればいいですか?
731 :
デフォルトの名無しさん :2010/08/13(金) 12:27:12
>>729 方法は無いから諦めろ
だから最後の要素に終了を意味する奴を入れたりする
array[0]でアクセスはできる
だからお前がなにか別なとこ間違えてる
>>730 Googleトランジットで検索する。
但し徒歩とかタクシーとかは対象外なので別途検討必要
と思ったら、車も徒歩もルート算出できるんだ すげーなこれ
test
char test[1024]; memset(test, 0, sizeof(test)); 0でtestを初期化しているってことで、おk?
>>736 test[0] 〜 test[1023] が 0 で初期化される。
int test[1024]; memset(test, 0, sizeof(test)); 0でtestを初期化しているってことで、おk?
文法的に言えばそれは無保証 testのアドレスからsizeof(test)バイト分が0クリアされるだけ 解釈翻訳系にtest[]を連続したアドレスに割り当てる義務は無い (但しその処理系は非正統とされ仲間はずれにされるだろうけど)
740 :
デフォルトの名無しさん :2010/08/13(金) 14:48:17
嘘を言うな嘘を
int test[1024]; memset(test, 0, sizeof(test)/sizeof(test[0])); 0でtestを初期化しているってことで、おk?
/ \ 、 ヽ\ ヽ . / , / ! ∨丁ヽ い | /二フ” / ! | ィ 「\ | ハ l | ,′ / l ! | / /j/ '. ノ, =、!// /j/ ヽ/ l い/ ,, =x j/ ′ 〈j/ /ヽ ト ._ \_〃 :.:.:.:.} /二フ” l l { 下 ̄ .:.:.:.: -‐1 ∧ / l l T ‐个 ._ ー' イ l| ニニ! l/ /| l l//下二千ヽ_l い ─┘ ' / .′ l,ノ\/// 小、|、\ヽ\ 「〉 ?Ul / / \/ U` \ヽl i r_| ?Ul l i ! ト ヽ |
743 :
736 :2010/08/13(金) 15:23:54
ここまで行ってない状態だったら、それが相場かと思って買ってしまう情弱もいるんだろうな。 ¥ 14,607,157 + ¥ 340(配送料)ブックワールド懿「諠Qザンモン ¥ 16,067,872 + ¥ 340(配送料)ロネジェパン
そりゃプロ野球選手が書いたらそこまでいくだろ...
関数で、配列の値を返すことはできますか? つまり、仮に関数内で、int array[] = {1, 2, 3, 4}; という配列を定義したとして、最後にreturn array; と書いて、この関数の戻り値を配列arrayの値にすることは可能でしょうか?
配列を返す事は可能。でもその例では戻った時にはarrayは既にない。
そうなんです。何度やってもエラーになってしまうんです・・・ 申し訳ありませんが、どうやれば関数で配列を返えせるのか教えていただけませんか?
丸ごと返したらコピーされるだろ
>>748 #include <stdio.h>
int *hoge(void){
static int array[] = { 1, 2, 3, 4, 0 };
return array;
}
int main(void){
int i, *a;
a = hoge();
for (i = 0; a[i]; i++)
printf("a[%d] = %d\n", i, a[i]);
return 0;
}
>752 誤解が無いように補足しておくと、関数の戻り値に配列を指定することは「できない」。 配列を指すポインタ(>750)、構造体を返す(>751)ことはできる。 >750でも注意が必要で、戻り値に指定している配列の宣言にstaticがついていることに注意。 自動変数を指すポインタを戻り値にしてしまうと、関数を抜けたときに無効な領域を指す ことになってしまう。 なお、スタック上でデータをやりとりするために、実引数に配列を指すポインタを渡して、 そこに値を設定するのも定跡。
VBの参考書一冊書いたら、中古プレミアがついて1冊1600万円 これ現実なんです。
規格PDFとネットで十分だろ 本など一切いらん
757 :
デフォルトの名無しさん :2010/08/14(土) 14:30:49
しかし、プログラム関連の書籍ほど糞みたいな分野はすくねえだろ・・
test
¥ 19,442,126 + ¥ 340(配送料)中古品 - 可 出品者: ブックワールド☆ゲザンモン ¥ 21,386,338 + ¥ 340(配送料)中古品 - 良い 出品者: ロネジャパン 1.1^3=1.331倍/1日
761 :
652 :2010/08/15(日) 00:15:17
超、亀レスですが・・
>>657 ご丁寧に長文のソースコードまでかいてくださり、ありがとうございました。
参考にさせていただき色々と思考してみようとおもいます。getchar()関数を使うのが
どうも普通のようですね。K&Rにも似たような例がありました。なんか胸がすっきりしました。
回答くださったほかのみなさんもありがとうございました。
PDFは要らない。 プレーンテキストでいい。
>>759 これどっかのニュースサイトに載ってもおかしくないな最早。
それとも、こういうことってこの件以外にもいっぱいあんのかな。
>>759 どこまでいくんだろうな
¥ 23,524,971
+ ¥ 340(配送料) 中古品 - 良い 出品者: ロネジャパン
¥ 21,386,338
+ ¥ 340(配送料) 中古品 - 可 出品者: ブックワールド☆ゲザンモン
LONG_MAX 2147483647 ULONG_MAX 4294967295 さてどっちか。
DBのnumericでやってるんじゃない?
struct x_variable v; // 変数ハンドル x_variableとメモリを結びつける関数 x_malloc(&v, 100); // v に 100byte のメモリを結びつける メモリの結びつけを解く関数 x_free(&v); x_variable に結びつけられたメモリの x バイト目に1バイト書き込む関数 | 読み込む関数 x_write(&v, &data); x_read(&v, &data); --------------- x_malloc用に任意の大きさのメモリ領域を用意する(初期設定) x_init(1000); // x_malloc用にメモリ領域を1000byte用意する。 x_end(); // すべての終わり --------------- x_initで初期化した最大値(1000byte)を越えた場合、 なんらかの方法で1000byte中の一部のデータをハードディスクに退避する。(領域確保) また逆に、ハードディスクへ退避したデータに元々結びつけられていた x_variable に x_write or x_read した場合は、 退避していたデータを、ハードディスクからメモリに復帰させてアクセスする。 というライブラリを作りたいのですが、難しくて作れません。だれか作ってください。 それ以前に、これは技術的に可能でしょうか?
一時的にメンバ変数を増やしたい場合ってどうするのがよいだろうか クラスstaticなmapにthisポインタとデータをマッピングして代用してるんだけどあんましスマートじゃない気がする
773 :
デフォルトの名無しさん :2010/08/15(日) 23:34:37
語彙不足が深刻だな これはスパム
774 :
デフォルトの名無しさん :2010/08/16(月) 00:42:19
英語、国語、数学の順に点数を入力していき、どれかで、−1を入れるとそこで、入力終了。 各科目の合計と、全科目の総合点、入力件数を表示するプログラムを作っていて、引っかかっています。 下の通りに作ったのですが、どこをどう直せばいいか教えてください。 #include <stdio.h> void main(void) { int str[100][3]; int i,j=0,cnt=0,sum=0,goukei=0; printf("英語、国語、数学の順に点数を入力してください。\n"); for(i=0;i !=-1;i++){ for(j=0;j<3;j++){ scanf("%d",&str[i][j]); if(str[i][j] == -1) break; cnt++; sum += str[i][j]; }if(str[i][j] ==-1) break; } for(j=0;j<3;j++){ for(i=0 ;i < 100;i++) goukei = goukei+str[i][j]; printf("第%d科目の合計点は%d点です。\n",j+1,goukei); } printf("全科目の総合点は%d点です。\n",sum); printf("入力件数は%dです。\n",cnt); }
str[100][3]の初期化がない もし全部の要素が埋まってないで下のgoukeiの処理を行ったらおかしくなるよね 案としては、 @あらかじめstr配列は全て-1で初期化しておく A入力時に-1をいれた後、他の2教科の最後の配列に-1を入れる そのあと下のfor文ではstrが-1まで足し続けるというふうにすればいいんじゃないかな もうちょっとそのコードは美しくなれると思うけど、まぁいいでしょw がんばってね。
がんばりたくないから丸投げしたんだよ
778 :
デフォルトの名無しさん :2010/08/16(月) 03:51:59
二番煎じ乙
780 :
デフォルトの名無しさん :2010/08/16(月) 08:18:19
>>775 ありがとうございます。
Aからわからない(汗)
最初の教科の1番目に−1が入り、
ほかの教科は最後にー1が入るってこと?
for文がー1までたし続けるというと…
別に@をすればAはしなくてもいいけど。 要は-1を入力したら上のfor文は抜けるわけだよね。 その科目の時だけ-1は入力されてるけど、他の科目の最後の配列は 初期化してないから何が入ってるのかさえ分からない。 だから他の二科目の最後が分かるように-1を入れればいいんじゃないかといっている。 下のfor文では必ず100回ループしてるけど、データは100個入ってるわけ無いでしょ? データの個数分ループしないといけないけだ。 だから上のfor文で必ず各科目の最後の配列が-1なら、 str配列に-1がでてくるまで足し続ければデータの個数分の合計が出せるわけだ。 簡単にいえば、初期化でstr配列全部に-1をぶっこんでおく。 下のfor文の2個目のfor文内でif(str[i][j] == -1) break;をする。 その下のprintf文のj+1をjにするでいいんじゃないか。 方法はいくらでもあるけどね。
上のループで件数を数えているんだから、下のループ回数は件数で割り出せばいいよ。 無駄な初期化は却って為に成らない。
あ、printf文は関係ないやwww その記述は忘れてくれwww
>>782 それだったらAの方法のほうが簡単だろwww
>>784 あぁ、それでもいいね。いずれにしても、終端条件を意識していればいいよ。
テストのやり方がわからない。 お勧めのテストツールを教えて。
787 :
デフォルトの名無しさん :2010/08/16(月) 14:46:45
お前のような奴におすすめなのはやはり人力だな
789 :
デフォルトの名無しさん :2010/08/16(月) 15:09:34
-1で初期化したら、3つまでしか値入れれなくなった。 int str[100][3];の下に for(i=0;i<100;i++){ for(j=0;j<3;j++){ str[i][j] = -1; } } を入れたんですが…
790 :
デフォルトの名無しさん :2010/08/16(月) 15:17:51
すいません、問題丸写しな感じなんですがよろしくお願いします 文字列を入力し、長さが5文字以下の文字列10個を抽出した後、 抽出した文字列を出力するプログラムを作りなさい。 入力は、長さが5文字以下の文字列を10個抽出したところで終了し、 出力を行うようにしなさい。 文字列の入力はscanf関数を、文字列の長さはstrlen関数、文字列の複写はstrcpy関数を 使いなさい。 入力データ中に、15文字を越える文字列はないものとします。 という問題です。
791 :
790 :2010/08/16(月) 15:19:08
*入力データ* Boy Constant Girl Man Desk Garden Go Notebook Fire Woman Baby Lady Jpananese Desk Good Heave *出力例* Boy Girl Man Desk Go Fire Woman Baby Lady Desk という感じにしたいのです
792 :
790 :2010/08/16(月) 15:20:34
char work[15 + 1]; char *data[10 + 1]; int i, j, k; /* 入力処理 */ for( j = 0; j < 10; ){ for( i = 0; ; i++ ){ scanf( %d", &work[i] ); if( work[i] == '\n' || work[i] == '\t' || work[i] == ' ' ) break; else ; } if( i == 0 && work[i] == '\n' || work[i] == '\t' || work[i] == ' ' ) continue; else work[i] = '\0'; if( k = strlen(work) <= 5 ){ strcpy( data[j], work ); j++; }else ; } /* 出力処理 */ data[j] = NULL; for( i = 0; data[i] != NULL; i++ ) printf( "%s\n", data[i] );
>>789 初期化はマズイわw
抜けたすぐのif文でbreakするからなw
じゃあ-1抜けた後他の2科目に-1を入れる方法にすればいいw
794 :
790 :2010/08/16(月) 15:22:02
という感じでやってみたのですが、うまくいきませんでした if( i == 0 && work[i] == '\n' || work[i] == '\t' || work[i] == ' ' ) この辺りがおかしいかなと思っているのですが、、、 よろしくお願いします
scanfって改行とかタブとかまず認識しないでしょ。 一文字ずつ入れるなら書式指定子%dってよりも%c使うべきだし、 %s使うべきだし・・・ %s使ったらstrlenより上までの処理はほぼいらない。 dataの一つの配列には5文字以下の文字が入るわけだからあらかじめ その領域を確保して置かなければならない。 malloc使うか、あらかじめdata[10][6]として確保しておくか。 dataは10個って決まってるのだからわざわざ11個用意する必要はない。 strlenのkも不必要だろw 空のelse文も不必要だろw ざっと見た感想は以上、がんばってね。
797 :
790 :2010/08/16(月) 16:01:50
なんか気持ちわるくてすいませんw
>>796 レスありがとうございます
なんで%dをつかってたのか、、、、
指摘して頂いたところを再度確認してもう一度やりなおしてみます
本当にありがとうございました!
799 :
790 :2010/08/16(月) 16:38:43
#include <stdio.h> #include <string.h> int main() { char word[10][16]; int i; for (i = 0; i < 10; i++){ do { if (scanf("%s", word[i]) == EOF) { fprintf(stderr, "%s\n", "十個集まらなかったよ……"); return 1; } } while(5 < strlen(word[i])); } puts("結果"); for (i = 0; i < 10; i++){ printf("%s\n", word[i]); } return 0; } という感じでやってみたのですが、うまくいきませんでした
scanf("%s")でただの改行って読めないだろ ホワイトスペース文字だから改行はスキップされる fgets()とsscanf()を使って自分で解析しろ
>fgets()とsscanf()を使って自分で解析しろ 何度目のFAQかな 1000回はくだらないはず
>>799 なんかめちゃくちゃになってるwww
前のほうが良かったと思うけど・・・
803 :
デフォルトの名無しさん :2010/08/16(月) 17:04:56
>>789 です。
なんか、よく分からないけど
0で初期化したら完成しました。
ありがとうございました。
とりあえずおつかれ
>>803 だから初期化はやめようよ。
それってもしかして、用意した配列の全要素を足しているままじゃないの?
そういう、自分がやるべきことを見失う結果になる恐れがあるから「初期化で済ませる」という考え方はよくないんだ。
>>803 オレの予想だと、-1を入力した科目だけ1点足りないような気がするけどなー
きちんと処理してるんだろうか・・・
807 :
デフォルトの名無しさん :2010/08/16(月) 17:09:13
>>788 マ板くさくなるが…
テストノウハウは色んな意味でみだりに出せないんだよ
>>803 いちおう言っておくけど色々おかしいと思うよ
例えば国語入力時に-1が来たら英語だけ1件多くなってしまう
英語国語数学が常にセットで1件であるなら、終了判定は数学入力直後または英語入力直前でなければならない
逆に言えば途中で終了判定してはならない
さらにいうと点数を取り込む変数と終了文字を取り込む変数を一緒にする必要はない
点数と関係ない終了判定だけの場所で判定すれば今回のような混乱はそもそも起きない
他にもあるけど、とりあえず「疎」と「密」をもう少し考えてからコーディングするといい
>>808 件数は1科目1件ってことならおかしくないじゃんw
背景が見えないなら与えられた条件で答えてやれよwww
別に全科目一緒の件数にしなければならないなんて書いてないしwww
>790 丸投げするなら宿題スレの方がよいと思うが。とりあえず素直にコーディングしてみた。 #include <stdio.h> #include <string.h> #define ELEMENT_NUM_OF(array) (sizeof(array) / sizeof((array)[0])) int main(void) { char aBuf[16]; /* 一時格納用バッファ */ char aPickOut[10][6] = {""}; /* 抽出文字列 */ int cntPickOut = 0; /* 抽出文字列数カウンタ */ int i; /* 文字列抽出 */ while (scanf("%10s", aBuf) != EOF) { if (strlen(aBuf) < ELEMENT_NUM_OF(aPickOut[cntPickOut])) { strcpy(aPickOut[cntPickOut], aBuf); cntPickOut++; if ( cntPickOut >= ELEMENT_NUM_OF(aPickOut)) { break; } } } /* 抽出文字列表示 */ for (i = 0; i < ELEMENT_NUM_OF(aPickOut); i++) { printf("%d: %s\n", i , aPickOut[i]); } return 0; }
点数なんかエクセルで入力しろよ
"%10s"とかで切れた文字列ってそのままバッファにのこらなかったか?
残るね。だからscanf()は使い難いんだ。
814 :
810 :2010/08/16(月) 17:52:14
ミスった。 誤) while (scanf("%10s", aBuf) != EOF) { 正) while (scanf("%15s", aBuf) != EOF) {
>>799 > #include <stdio.h>
> #include <string.h>
>
> int main()
> {
> char word[10][16];
> int i;
> for (i = 0; i < 10; i++){
> do {
> if (scanf("%s", word[i]) == EOF) {
> fprintf(stderr, "%s\n", "十個集まらなかったよ……");
> return 1;
> }
> } while(5 < strlen(word[i]));
> }
> puts("結果");
> for (i = 0; i < 10; i++){
> printf("%s\n", word[i]);
> }
> return 0;
> }
>
> という感じでやってみたのですが、うまくいきませんでした
ちょw
俺これ書いてないですよ
>>815 どっちにしろもう宿題やってもらえたんだから消えろよゴミ
>>810 自分なんかに時間を割いていただいてありがとうございました
なんとかかみ砕いて理解してみます
>>810 何このわけわからない感じは。
#include<stdio.h>
#include<string.h>
int main(void){
char work[15 + 1];
char data[10][6];
int i;
for( i=0; i<10; ){
scanf("%s", work);
if( strlen(work) < 6 ){
strcpy( data[i], work );
i++;
}
}
for( i=0; i<10; i++ )
printf("%s\n", data[i]);
return 0;
}
このレベルでいいでしょwww
さすがにまともに動かないレベルは不味いだろwwwww
へ?まともに動くだろww
>820 >へ?まともに動くだろww >791のデータ食わせたら期待通りになるだろうけど、10個抽出できる前に入力が無くなると まずいよ。
>>821 そんな裏読み必要ないよwww
そんなこと言い始めたらデータチェックとかもっとしなきゃいけないことあるだろwww
レベルにあったコードを提示してるんだけどwww
元々の彼のコードに沿ってね。
823 :
デフォルトの名無しさん :2010/08/16(月) 21:17:29
そもそも %s にそういう突っ込みかよ みんな志村後ろ後ろと言っているところで 1人だけ科学的にどうとかぶつぶつ言ってるようなキモさが漂うな
絶対に一緒に仕事したくないタイプだなw 相手のレベルとコードの安全性は何の関係もないのに
関係大有り。相手のレベルが低ければ、安全なコードしか教えない。
相手のレベル考えないならscanfも使っちゃダメだしエラーチェックももっと入れないとダメだろ
てか学習と仕事をごっちゃにすんなよwww 求められるものも責任も全く違うだろwww とりあえず彼の理解度に沿ったコードを提示したつもりなだけで 他にももっといい方法は色々あるだろうよ。
そもそも>810と>818は本質的にやってることは変わらないよ。 ・810は標準入力がつきるまで、単語を10個抽出。 ・818は単語を10個抽出するまで、標準入力を読む。 818では単語10個抽出する前に、入力がつきてしまった場合の考慮漏れ。 惜しかったね。90点くらい挙げてもイイ。
欠陥コードなんぞ誰も求めないし欲しがらないわな
いや認めないねw それはあらかじめ分かってることだ。 設定にない余計なことは一切してないもんね。
他人の安全なコードをわざわざ書き直しさらに潜在バグを入れる これで「相手のレベル」とか言っちゃうんだからたまらんよなw
欠陥コードこそが自らを成長させる宝物である。
欠陥じゃないもん、絶対に違うもん!
@"C:\"にLを付けたらコンパイルできなくなりました。 L@"C:\" どう書けばいいですか?
ん?C#か?
gdbのフロントエンドって、dddとinsightくらいしかない?
qtの奴とかeclipseとか対応してたりEmacsのlispでできた奴とかあったような
今更初心者がC勉強するとして どの環境が理想? 1. UNIX-Terminal & Emacs( or gedit etc) コマンドライン gcc 2. Windows コマンドプロンプト & 秀丸のようなテキストエディタ& Borland C++5.5 3.Windows CPad for BCC 4. Windows Visual C++ IDE 5. Eclipse(C/C++プラグイン付き) 6. NetBeans IDE 7. CodePad
VCあるならそれでいいじゃないの
初心者ならLinux+Vim+gccでMakefile自分で書いたりgdb使ったりLinuxコマンドで検査の自動化とかしてプログラミング以外の周辺知識も得るべき。
無能だな、チミは
身近に聞けるような人が居ないなら 素直にIDEに頼っておけばいいよ Linuxいろいろでやると多分、ぐぐってもでないぐらい基本的なことでつまづきまくるから
>>838 > 4. Windows Visual C++ IDE
>>843 そんなときのために俺たちがいるんだろ。
イマイチ頼り無さげ
IDEとかつかってるやつはライブラリ頼りの糞アプリプログラマにしかなれんよ。 プロのプログラマになりたければ基礎からみっちりやるべき。 そのためにはLinux+Vim+gcc以外はエセグラマ
848 :
デフォルトの名無しさん :2010/08/17(火) 18:22:20
入門程度ならcodepadで十分
851 :
デフォルトの名無しさん :2010/08/17(火) 18:43:03
vi+ccな奴にもasやハードわからん奴ごまんといるからな 要は狭い領域でタコツボ化したらどこやってても同じなんだよ
マイクロソフトの回し者乙
一番お手軽で動作も軽快なのはWin + MinGW
MinGWのどこがお手軽なのか。嘘をつくな。 WindowsならVC++Express一択
Linux (笑) Vim (笑) gcc (笑)
>>854 VCはありえない
動作がくそ重い上に余計なヘッダーをインクルードする
あれはC標準ではなくWindows標準環境である
Windowsでしか通用しないプログラマになりたいならそれでもいいが
オレとしては絶対にオススメできない
あっそ。死んでろ。
858 :
デフォルトの名無しさん :2010/08/17(火) 19:33:10
C標準(笑)
Windowsしか触れない似非プログラマがファビョってますなw
Windowsで通用しないプログラマーになっちゃったらヤバいだろwww
どんな環境でも純粋にCの部分はおなじだろ。そしてそんなに大きくない。 Windowsだろうと、Linuxだろうと、Cは学べる。 その上で、Windowsであれば、VC++Expressが最適。
>>861 俺ならcygwinとgccをオススメするね。
cygwin入れたら色々便利だし。
文型はVCで糞GUIアプリしか作れない糞グラマと相場が決まっている。 理系はLinux系の知識も習得してプログラミング以外にも多くの周辺知識を得ている。 ここが使えるやつと使えないやつの差として出てくる。 そして使えないやつは最終的に技術から逃げて人売り経営者になって業界を悪くしていくんだ。 すべてはLinux+vim+gccから始めなかったことが現在のIT業界の惨状を招いていると言っても過言ではない
大体プロジェクトとか面倒くさいんだよ。 後からプロジェクト名変えようとすると面倒くさいことになるし。
文系理系って分けてる時点で成長が止まってるんだよ
866 :
デフォルトの名無しさん :2010/08/17(火) 19:55:33
つまり学校で習わなかったことができない奴ってことね
emacsは糞。異論は認めない。
makeとかgdbとかそこらへんに落ちてるチュートリアルみれば一発だろ。 必要になったら覚えりゃいい。
>830 今問題文(>790)読み返してみたら >入力は、長さが5文字以下の文字列を10個抽出したところで終了し、 >出力を行うようにしなさい。 ってあるから、確かに仕様は満たしてるって言えるね。 10個以下の場合は、使用範囲外ということにしてしまえる。 そっちが煽り口調だったもんで、こっちも言い過ぎたかも。 でも>810のコードが読めないヘボかと思ってしまったのだよ。 初学者相手には、よりベターなコードを示す方がよいと思っているけど。
872 :
デフォルトの名無しさん :2010/08/17(火) 20:26:17
ネトウヨってキモイよね
理系はgccで糞CUIアプリしか作れない糞グラマと相場が決まっている。 文系はWindowsの知識も習得してプログラミング以外にも多くの周辺知識を得ている。 ここが使えるやつと使えないやつの差として出てくる。 そして使えないやつは最終的に技術から逃げて人売り経営者になって業界を悪くしていくんだ。 すべてはWindows+VCから始めなかったことが現在のIT業界の惨状を招いていると言っても過言ではない
874 :
デフォルトの名無しさん :2010/08/17(火) 20:43:34
クソワロタ
Windows+gcc から始めたオレこそが救世主ということだな
大抵VCから始めたやつはVCしか使えなくて終わっていく。 Linuxから始めたやつはあらゆる開発環境を使いこなしていく。
無能に限ってWindowsを批判すれば有能だと思われると勘違いしている。
>>876 それはlinuxで勉強したからじゃなくて本人の資質だろ。
趣味でプログラムやってて、マイナーなlinuxを選択するってマニアックだろうし。
SolarisでCのシステムの保守をしてる部署の手伝いしたことがあるけど
そこの若い連中は、自発的にやってるわけじゃないから悲惨な状況だったし。
(Cとunixに関しても、windows中心にやってた俺よりぜんぜんだめ)
最初にVCを使ったからVCしか使えなくなるようなやつは、最初にlinux環境で
やらせてもlinuxしかできないやつになるだけだよ。
>>879 > 最初にVCを使ったからVCしか使えなくなるようなやつは、最初にlinux環境で
> やらせてもlinuxしかできないやつになるだけだよ。
現実問題として、そうゆう奴が多いのはOSの系統に関わらずそうだよ
itron やってるやつが pthread になったとたんに使えなくなるとか
pthread 使ってた奴が Windows にスレッドアプリ書けないとか
Windows でスレッドアプリ書いてた奴が VxWorks じゃ何もできないとか
以下続く………
881 :
デフォルトの名無しさん :2010/08/18(水) 00:56:21
どんな環境でもすぐ対応できるのがプロ たとえlinux+vi+gccだろうがWin+VSだろうがWin+MinGWだろうがetcetc
初心者がどうしたらいいの話題でプロの話とか頭おかしすぎやしないか?
>>838 1. 君の行く道は果てしなく遠い だけど多分それが最も堅実な道、それでいいのさ♪
2. 君の行く道は果てしなく悪路♪
3. 君の行く道はやがて行き詰まる♪
4.君の行く道はやがて泥沼♪
5.君の行く道はやがて蛇婆に出会う♪
6.君の行く道は多分永遠(とわ)の迷路♪
7.君の行く道はすぐに挫折、だけど多分それが正解、君は幸せ♪
884 :
881 :2010/08/18(水) 03:18:48
ぼーっとしてて初心者〜というの失念してたわwすまんこすまんこ
こういうコード読んだり書いたりしない話題なった途端にみんな張り切りすぎ
いまどき、2ちゃんねる見てるのなんて、課長以上のおっさんだけだから。 コードになんて興味なんだよ。興味があるのは部下への説教だけ。
887 :
デフォルトの名無しさん :2010/08/18(水) 12:40:16
> すぐ対応できるのがプロ この「すぐ」が泣くほどシビアに要求されるのがつらいとこ
888 :
デフォルトの名無しさん :2010/08/18(水) 13:25:39
for(i=0; i<...)の変数iは整数型って決められてるの?
890 :
デフォルトの名無しさん :2010/08/18(水) 13:55:09
>>888 何でもいいよ。
for(@, A, C){B}
は、
@→Aが真だったら→B→C→Aが真だったら→B→C→Aが真だったら→B→C→…
をAが偽になるまで繰り返すだけ。
整数型である必要はないし、変数を使う必要もない。
891 :
デフォルトの名無しさん :2010/08/18(水) 17:30:38
必要ないけど、整数型が多いな。
実数使って終了条件が期待した動作しなくて困る人もいる
893 :
デフォルトの名無しさん :2010/08/18(水) 18:44:29
struct hoge{ int a; int b; } で、 struct hoge *hoge; hoge = (struct hoge *)calloc(1000, sizeof(struct hoge)) ってやったら、1000要素の構造体配列内のaとbは全部0で初期化されたりする?
ゼロのバイトパターンの羅列が整数のゼロだって規則あったっけ?
897 :
デフォルトの名無しさん :2010/08/18(水) 21:20:05
> バイトパターン お里がw
VB6本 5000万円突破 これってマジスカ?
13日後には突破する。
901 :
デフォルトの名無しさん :2010/08/19(木) 00:18:23
オーバーフロー狙いか ちなみにクレジットカードだと20京ドルでも正だったそうだぞ
もしかしてすでに何度かオーバーフローして、何週目かだったりして。
amazonの方は平気だろう。ヘッポコ競り上げプログラムは記述言語次第だな。 Cじゃないだろうからオーバーフローしない可能性が高い。
Cでもちょっとオーバーフローが許されない 分野での整数計算はlong longだろ
ヘッポコ競り上げプログラムを作る連中がそんな頭が回るはずが無いだろ。
オレが一番くん
>>905 Cで計算部分を書かせるわきゃない罠。今時どー考えても
update table auction set price=price+round(price/10) where
auctionid=$AuctionID
とかのSQLを投げさせてOracleとかのDBが実際の計算を行ってるってw
ああ、VB6が5000万円超えたら、マジで売る。
>>907 amazonの出品者ってDBへのアクセスが許されてんのか?
>>909 DB板やWebサイト板で聞いてみるとよい
初めから想像としか読めないが
>>909 amazon自体が一種のDBなんだからサイトを開いた時点でアクセスした
も同然だろw。てか、アクセスってtermが曖昧
あとamazonのサイトがDBMSレスで作られているとしたら
中々神なサイトということは言える。
>>913 なんて読解力が無いんだ。そんな事じゃ仕様書の読み間違いは日常茶飯事だろ。
>>914 仕様書のミスを見つけるのが仕事ですが何か?
日本だと口頭で伝えるので読解力は不要です。
報告書がきちんと書けない人はクビです
マシンのビット数ってCコンパイラーにどんな影響を与えるんですか?
919 :
デフォルトの名無しさん :2010/08/19(木) 23:44:40
This program cannot run in DOS mode.
921 :
デフォルトの名無しさん :2010/08/20(金) 01:02:38
もう1億突破したよ。これは早い
-10億ぐらいになったら買おうかな
924 :
忍者Perl ◆M5ZWRnXOj6 :2010/08/21(土) 15:26:03
なにここのスレ やばいっすね!! シュッシュッシュマジパネーッス!! レベル低っ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>922 アクセスが増えた所為なのかどうかは知らんが、一日数回更新されている悪寒。
最早、毎回千万以上増えているw
927 :
デフォルトの名無しさん :2010/08/22(日) 15:20:28
入力した文字列を逆から表示するプログラムなんですが、 どう直せばいいですか? #include<stdio.h> void main(void) { char input[101],output[101]; int i,j=0; printf("文字列を入力してください。(100文字以内)\n"); scanf("%s",input); for(i = 100;i <= 0;i--){ if(input[i] != '\0'){ output[j] = input[i]; j++; } } for(j=0;j < '\0';j++){ printf("%c",output[j]); } }
>>927 strlen()を使う
charポインタを使う
929 :
デフォルトの名無しさん :2010/08/22(日) 15:42:13
ポインタっていうと… *〜のやつだよね? 使い方イマイチよくわかんなくて…
for(i = 100;i <= 0;i--){ そもそもこれが・・・ まずは素直に昇順で書いて中で位置計算して味噌
for(i=strlen(in)-1;i>=0;i--){printf("%c",input[j]);} とかどう?
誤) strlen(in) 正) strlen(input)
あとコピーしてるけど入れ替えにしないと半分消えるぞ swap関数かマクロ自作の例がどっかにあるだろう
>>927 #include <stdio.h>
void rev_puts(const char* s)
{
if (*s == 0)
return;
rev_puts(s + 1);
putchar(*s);
}
main()
{
char input[101];
printf("文字列を入力してください。(100文字以内)\n");
scanf("%s",input);
rev_puts(input);
}
>>934 これどうなってるの?
ポインタが/0まで進んて戻ってくるってこと?
>>935 お前が再帰を全く理解できてないだけだよ
無駄に再帰使いたがるヤツいるよなw
あぁわかった。100番目から入力した文字数までずっと何もしてないだけか
941 :
デフォルトの名無しさん :2010/08/22(日) 16:56:22
>>127 です。
いまさらですが、宿題に条件があって…
1)文字列を配列に入力し、最後の文字から一文字ずつ取り出して表示する。
2)文字列をポインタの示す領域に入力し、最後の文字から一文字ずつ取り出して表示する。
です。
私はポインタ理解してないんで、1でやってたんですが、
うまくいかなくて…
>>941 表示がoutputになってるけど、最初のやつに載せるならint lenを定義して
len = strlen(input);
for(i = 0;i < len;i++){
output[len - i - 1] = input[i];
}
output[len] = '\0';
でどうよ
あっと最後の文字からか、、、forループは for(i = len - 1;i >= 0;i--){ output[j++] = input[i]; } とか?
#include <stdio.h> #include <string.h> char *reverse(char *b) { int i, len; len = strlen(b); for(i = 0; i < len / 2; i++){ b[i] ^= b[len - i - 1]; b[len - i - 1] ^= b[i]; b[i] ^= b[len - i - 1]; } return b; } int main(int ac, char **av) { int len; char buf[4096], str[256]; fprintf(stdout, "?: "); fgets(buf, sizeof(buf), stdin); sscanf(buf, "%s", str); fprintf(stdout, "in: [%s]\n", str); fprintf(stdout, "out: [%s]\n", reverse(str)); return 0; }
945 :
デフォルトの名無しさん :2010/08/22(日) 17:51:24
できたー! ありがとうございましたm(_ _)m
格好つけてクソァなんぞ使いおってw
#include <stdio.h> #include <string.h> void swap(char *p, char *q) { *p ^= *q; *q ^= *p; *p ^= *q; } char *reverse(char *b) { int i, len; len = strlen(b); for(i = 0; i < len / 2; i++) swap(&b[i], &b[len - i - 1]); return b; } int main(int ac, char **av) { char buf[4096], str[256]; fprintf(stdout, "?: "); fgets(buf, sizeof(buf), stdin); sscanf(buf, "%s", str); fprintf(stdout, "in: [%s]\n", str); fprintf(stdout, "out: [%s]\n", reverse(str)); return 0; }
ぉrすげぇ
#include <stdio.h> #include <string.h> #define swap(pa, pb) ( *(pa) ^= *(pb), *(pb) ^= *(pa), *(pa) ^= *(pb) ) char *reverse(char *b) { int i, len; len = strlen(b); for(i = 0; i < len / 2; i++) swap(&b[i], &b[len - i - 1]); return b; } int main(int ac, char **av) { char buf[4096], str[256]; fprintf(stdout, "?: "); fgets(buf, sizeof(buf), stdin); sscanf(buf, "%s", str); fprintf(stdout, "in: [%s]\n", str); fprintf(stdout, "out: [%s]\n", reverse(str)); return 0; }
950 :
デフォルトの名無しさん :2010/08/22(日) 19:44:22
どーせマクロ使うんなら参照渡しでええやん
速度が違うくね?
>>951 >速度が違うくね?
今からそんな変な表現の癖が付いていると社会人になってから馬鹿にされるぞ。
つーか、この程度のコードでどこの速度を気にしているんだよ。気になるなら実測しろ。
>>950 Cで参照渡しってなんだよ。ポインタの値私と言いたいのか?
>>949 xor使うのはいいが、pa == pbのときに破綻するだけだから一次変数を設ける方がずっといい。
破綻しなくね?
955 :
デフォルトの名無しさん :2010/08/22(日) 22:52:42
pa == pb なら入れ替える必要ないだろボケ
入れ替える必要がなくてもそんなこといちいち確認してたら 無駄が発生するから、同じ文字なら入れ替えないなんて 無駄なコードは入れなくて良いよ。
957 :
デフォルトの名無しさん :2010/08/22(日) 23:05:08
(・∀・)ジサクジエーン
a = 3 / 0011 2進数4桁で検証 b = 3 / 0011 a xor b = 0000 < a に代入 a = 0000 b = 0011 a xor b = 0011 < b に代入 a = 0000 b = 0011 a xor b = 0011 < a に代入 a = b で xor で入れ替えても問題ないじゃん?
959 :
デフォルトの名無しさん :2010/08/22(日) 23:07:43
#define swap(pa, pb) if(pa - pb)( *(pa) ^= *(pb), *(pb) ^= *(pa), *(pa) ^= *(pb) ) でFA?
#define swap(pa, pb) if((pa) - (pb))( *(pa) ^= *(pb), *(pb) ^= *(pa), *(pa) ^= *(pb) )
>>958 &a==&b のときにうまくいくことを
codepad で示してくださいな
ポインタの引き算ってありだっけ?
>>956 入れ替える必要が無いのに入れ替える操作をする方が無駄じゃないか
お前らstaticの意味判ってないだろ
>>963 同じだった場合は入れ替えないなんて
if文を入れるのが無駄じゃないと思うならやれ。
大半が同じでなかった場合は完全に無駄だから。
交換にxor使わなくていいだろ。 はやくなんの?
レジスタだけで済むからな
逆順に表示するだけなんだから入れ替えたものを保持する必要は無い よっておまえら全員無駄
>>968 テンポラリの変数を使う交換もレジスタだけで済むだろ。
ジョークで使った再帰には無駄に再帰してるとかつっこんでるけど、 xorの交換のほうが、無駄にそんなテクニック使うなって感じだよ。
ジョークで使った再帰とかwwwwwwwwwwwwwwwwwww
>>967 まともな最適化コンパイラを使う限りは
速くなる可能性は考えにくい
むしろ遅くなるケースがありえる
>>958 #include <stdio.h>
#define swap((pa), (pb)) ( *(pa) ^= *(pb), *(pb) ^= *(pa), *(pa) ^= *(pb) )
int main(int ac, char **av)
{
int a = 3;
swap(&a, &a);
printf("a = %d\n", a);
return 0;
}
>>975 マクロの定義が不適切
int main(int ac, char **av) の引数が不要
意味不明なコード
>>975 何がしたいのかさっぱり。aを何か別の変数と入れ替えする訳でもなく
それ自身のxorを取ってどーすんの???
0 0 : 0 0 1 : 1 1 0 : 1 1 1 : 0 < ここがorとxorの違う点 2つの同じ値のxorは0になる罠。 その前に、そのコード自体の意味があるの? aをswapに渡す意味が?
>>975 は
>>961 のやつじゃないの?
mainの引数はフォーマットからのコピペとかだろうからいいだろw
codepadで見てみたら存在しない13行目で)がどーたらってでたんだけどなんぞ。
>>979 0になってもいいじゃん。またもどるんだから。
1 1 :0
1 0 :1
0 1: 1
>>975 #include <stdio.h>
#define swap(pa, pb) if((pa) - (pb))( *(pa) ^= *(pb), *(pb) ^= *(pa), *(pa) ^= *(pb) )
int main(int ac, char **av)
{
int a = 3;
swap(&a, &a);
printf("a = %d\n", a);
return 0;
}
なんで&a==&bだと破綻するの?
>>975 みたいに何か指摘しようとして肝心な部分をミスっている奴って
何が言いたいか意味不明だよなw
swapとは言え内面的に見れば、それ自身のクソアッー!を求めたら0なのは当然だろw
それ以前に使い道を間違えているとしか言いようがない。
987 :
デフォルトの名無しさん :2010/08/23(月) 12:04:24
必死だなw
988 :
デフォルトの名無しさん :2010/08/23(月) 12:06:15
989 :
デフォルトの名無しさん :2010/08/23(月) 12:07:56
>>980 オマエガナーw
むしろ分かっているからそれ自身のXORをして
何で入れ替え(swap)した気になっているんだと
疑問を呈しているんだが?
>>985 それ自身の糞を求めたら0になるからってのは説明不足だろ
だったら両方同じ値でも破綻するみたいじゃないか
それ自身の糞を求めたら0になって同じ物を参照してるせいで両方0になっちゃうことも言っておかないと
991 :
デフォルトの名無しさん :2010/08/23(月) 12:09:43
>>980 何も分かっていないのはお前。2つの変数の入れ替えなのに
それ自身を入れ替えるって、意味が分からんわ
>>958 には2つの変数を用いていることが前提で説明されているのに
何も分かっちゃいないのはお前の方
992 :
デフォルトの名無しさん :2010/08/23(月) 12:11:11
>>990 > それ自身の糞を求めたら0になるからってのは説明不足だろ
日本語以前に何をしようとしているか分かってないお前は
得意気に揚げ足を取ったつもりなんだろうけど、それ自身のXORを取ることが
入れ替えにどう繋がるんでしょうか?
別に俺はswapのマクロを書いた本人じゃねーよ。
0になっちゃうぅ〜〜なっちゃうぅ〜だから何?入れ替えの意味が通じてないなら
日本語から学びなおせガキ
993 :
デフォルトの名無しさん :2010/08/23(月) 12:13:48
>>990 意味が分からんわ。それ自身を入れ替えるようなコードが
>>949 で発生するんだろうか?
> swap(&b[i], &b[len - i - 1]);
>>953 は完全に揚げ足を取ったつもりなんだろうけど
コードの意味すら理解していないようだな。
まぁxorを用いたswapもどうかと思うが。
俺のswapのマクロはまた別のタイプだが、入れ替えようの
変数は別に用意するよ。
994 :
デフォルトの名無しさん :2010/08/23(月) 12:14:37
それから、2つの変数が 同じ値 だった場合は
>>958 で2つとも元の値に戻ることは実証済み。
gccで #define swap(a,b) do {typeof(a) tmp=a;a=b;b=tmp;} while(0) ってするのがいい
996 :
デフォルトの名無しさん :2010/08/23(月) 12:19:04
日本語でおk もはや日本語を理解できないどころではない、コードの意味が分からないガキだろ、こいつ。 屁理屈が的を射てない。
>意味が分からんわ。それ自身を入れ替えるようなコードが
>
>>949 で発生するんだろうか?
だからね、>949の場合には大丈夫でもそれにswapなんて名前をつけちゃいけないのよ。
汎用だと思い込んだ(未来の自分を含む)誰かがノーチェックで利用するかもしれないんだから。
で、仮にswapをswapForReverseとして使うくらいなら、始めからxorに頼らないswapを用意すればいいだけ。
998 :
デフォルトの名無しさん :2010/08/23(月) 12:21:15
さも相手の揚げ足を取ったつもりでいた自分が 元のコードの概要を理解していなかったとか、話にならん。 値が0になるかならないかについては、それ自身のXORの話だろ。 そんなの説明もあったし分かってんだよ。 言いたいことがそれなら、もう指摘は無用だよ。 大人しく入れ替え用の変数を用意してやった方が無難と言いたいなら そう言えば良いだろ。長々と女々しい。
1000 :
デフォルトの名無しさん :2010/08/23(月) 12:26:55
揚げ足取り必死だなw
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。