C言語なら俺に聞け( ..
532:デフォルトの名無しさん
06/06/25 23:59:37
実家引きこもりで小遣い貰ってるって香具師か。
いきなり本買う前に近所の図書館で借りて読んでみたほうがいいよ。
533:デフォルトの名無しさん
06/06/26 00:51:17
>>528
ちうかそれ、出版された日付が古いぞな・・・
ANSI基準もそれから変わった部分もあるんでは?
534:デフォルトの名無しさん
06/06/26 01:08:41
バブルソートの件を書きこんだものです。
みなさん返信くださってありがとうございます
なんかへこみましたが‥これからも頑張ります
535:デフォルトの名無しさん
06/06/26 01:15:55
>>534
そりゃ経験があなたとは何万時間も違うような人から見たら、
バブルソートなんてアホみたいなものに見えちゃうさ。
別にへこむこと無いよ。そのまま突っ走れ。
536:デフォルトの名無しさん
06/06/26 01:41:43
図書館は敷居が高くて・・・
バブルソートです
537:デフォルトの名無しさん
06/06/26 01:46:27
基本情報やソフトウェア開発の本にもソートについては出てくるが
最初はバブルソートだな。けど、この仕組みを理解するのに苦労するのは
先行き不安だね・・・。単純に、各々の要素を配列の先頭から比較して並び替える程度だし。
まぁ、頭の中だけでなく、実際に数字を並べて自分で並び替えて仕組みを理解してみ。
んな難しくないことだし。
538:デフォルトの名無しさん
06/06/26 02:15:23
>>536
どこかの大学の講義資料とか漁ってみ。
学外から見れるところもまだ結構残ってる。
539:デフォルトの名無しさん
06/06/26 02:32:58
URLリンク(www.elc.ees.saitama-u.ac.jp)
ここにあるけど、ここのは配列の後ろの要素から比べているね・・・
自分が見たものの多くは前からだったが、まぁ概要は同じなんで
540:デフォルトの名無しさん
06/06/26 04:00:40
前からも後ろからも計算量は同じだし。
降順に並べるか昇順に並べるかの差。
Cには関係ない。アルゴリズムの本読めばソートの解説載ってる。
数学屋の理論的な蘊蓄付きで。
541:デフォルトの名無しさん
06/06/26 04:17:20
>>539はモロにC言語なんだがw
542:デフォルトの名無しさん
06/06/26 12:45:00
>>541
君は日本語の勉強を先にした方がいいよ。
543:デフォルトの名無しさん
06/06/26 14:24:46
>>533
いや、この本を理解できればどんなCのマニュアルも理解できる
っつうことでさ。
おれが生まれて初めて読んだ時は10回読んでも理解できんかったw
544:デフォルトの名無しさん
06/06/26 14:58:38
>Cに=関係ない
>>540=>>542は>>539のPDFが見られず
人間の言葉以前に状況も理解できないサル以下の知能しかないようだ
>>539はバブルソートをC言語で表したものだが?
頭が悪い以前に自分勝手な主観や意見だけでゴリ押しする
周りを無視するタイプだな
所詮、低学歴、低俗、低レベルな奴
545:デフォルトの名無しさん
06/06/26 15:03:51
>>540と>>542はこのスレの流れも理解していないようだ。
>>538には
>大学の講義資料とか
あるため、大学でそれに関する文献を公表している場所を示して
話が続いただけなんだが、無理やりバブルソートを話を終わらせようと必死こいた結果
ここはお前が中心になって話を進めるスレじゃないんで、他へ行った方が良いよ?
そういう考えはまともなソースをかけないクズの考え。
一つ一つおろそかにせず、順を追うことは重要。
なぜなら、効率が悪いアルゴリズムを改善していくという部分の勉強も含まれているから。
現代人は最初っから便利なものを使っている。が、その便利なもの
手法が作られる経緯をろくに知らず、さらに、現代の問題を無視して
現在使っているものが引き起こす問題をそのままにしておく傾向もある。
そういう改善をする考えをもてなければ、プログラマとしてでなく
知能を持った人間として成長しない人間になるよ。
546:デフォルトの名無しさん
06/06/26 15:05:48
>>540
>前からも後ろからも計算量は同じだし。
誰もそんなことは聞いてないw
>降順に並べるか昇順に並べるかの差。
え?後ろから比較するか前から比較するかの差は分かるけど?
>Cには関係ない。
モロにC言語で記述されたソースが提示されてんですけどぉ?
C言語でないって言うならスレタイを見て「お前」には聞いてねーって思えよ?w
>数学屋の理論的な蘊蓄付きで。
数学の話なんてしてねーよ
547:デフォルトの名無しさん
06/06/26 15:07:53
>>542が必死こいて自分の勘違いを認めないレスをする↓
548:デフォルトの名無しさん
06/06/26 15:18:49
ま た お 前 か
549:デフォルトの名無しさん
06/06/26 15:27:08
前からか後ろからかで実際の速度が変わる環境は多いと思うがね。
550:デフォルトの名無しさん
06/06/26 15:34:02
>>549
それは一概に言えないけど、とりあえず上の流れは
明らかに大学のプログラムの講義でC言語を使っているものを例に出しているけどね
そういうと、今度は無理なこじつけとか言い出すだろうけど、C言語において
ソートは出てくるんで、あまり細かいことを言っていたら
それじゃC言語でなんのプログラムを作るの?って話にまで発展しちゃうんで
一例を出しての話はおkだな
551:デフォルトの名無しさん
06/06/26 16:33:18
面減る
552:デフォルトの名無しさん
06/06/26 17:08:59
メンヘル型かまってちゃん症候群
553:デフォルトの名無しさん
06/06/26 17:19:28
お勧めC本(ステップアップ順)
やさしいC
しばたぼうようのC入門のやつ
独習C++
ダイテル親子の本
K&R
554:デフォルトの名無しさん
06/06/26 17:57:35
すいません
質問したものですが私のために揉め事になってしまっているようで
どうもすいませんでした
家の物置を整理したところ
兄の使っていたC言語の本と思しき書物がありましたので
ひとまずそれを繙いてみます
555:デフォルトの名無しさん
06/06/26 19:25:20
>>554
古そうな本はやめておけ。
Cだって生まれたときから今まで全く同じ姿だったわけではない。
せいぜい10年以内できれば5年以内のもので、お前が合っていると感じればよいと思う。
556:名無し
06/06/26 19:26:15
>>517
イケメンなら結婚できる。
void life(const char *job)
{
int age,lifetime;
if(strcmp(job,"プログラマ") == 0)
{
lifetime = 50;
}
else
{
lifetime = 70;
}
age=-1;
557:続き
06/06/26 19:27:46
while(++age<lifetime)
{
#ifdef IKEMEN
if(9<age && age<25)
{
printf("%d 人目の彼女が出来ました。\n",age-9);
}
else
{
if(age==25)
{
puts("結婚しました。");
}
else
{
if (age>29)
{
printf("%d 人目の愛人が出来ました。\n",age-29);
}
}
}
#endif
sleep(31536000);
}
}
558:デフォルトの名無しさん
06/06/26 19:49:22
#ifdef IKEMEN
if(9<age && age<25)
printf("%d 人目の彼女が出来ました。\n",age-9);
else if(age==25)
puts("結婚しました。");
else if (age>29)
printf("%d 人目の愛人が出来ました。\n",age-29);
}
#endif
でいいじゃないか。
何でそんなにネスト掘り下げてんの?
559:デフォルトの名無しさん
06/06/26 21:03:39
>>558
else と if がどこに懸かっているのかが分かりにくいから。
560:デフォルトの名無しさん
06/06/26 21:29:37
初心者へ上司からの指令です。
C言語を使って「愛していますか?」って表示させるプログラムを組んでみよ。
さらに、YESとNOの選択を用意して
YESを選択すれば「もちろん!」
NOを選択すれば「なわけねーだろ!」
って表示させるプログラムを組んでみよ。
561:デフォルトの名無しさん
06/06/26 22:05:23
>>559
いつか、ひと目で解るようになれるといいですね。
562:デフォルトの名無しさん
06/06/26 23:00:16
>>560
文字列の受け取り方が分かりません('A`)
int main(void) {
char yn;
do {
printf("愛していますか?");
printf("(y/n) > ");
scanf("%c", &yn);
while (getchar() != '\n') { }
if (yn == 'y') {
printf("もちろん!\n");
break;
} else if (yn == 'n') {
printf("なわけねーだろ!\n");
break;
} else { printf("yかnを入力してください。\n"); }
} while (!(yn == 'y' || yn == 'n'));
return 0;
}
563:デフォルトの名無しさん
06/06/26 23:09:09
534です。
みなさん色々指示してもらって。助かります。
>>535さんの発言どうり途中であきらめず、この世界で
やっていこうと本気で思いました。本気で突っ走りたくなったんで
更に更に勉強します。
564:デフォルトの名無しさん
06/06/26 23:24:54
思いとどまれよ。
人生負け組みになりたくなければ。
565:デフォルトの名無しさん
06/06/26 23:31:06
>>564
ひとそれぞれだよ。
俺は今年で35歳になるが、この業界に入って後悔したことはただの一度も無い。
負け犬だと思ったこともないし。客観的に見れば社会的ステータスは低いんだろうけどね。
566:デフォルトの名無しさん
06/06/26 23:32:18
質問なんですが
scanfとgetsこの二つは
なにが違うのですか??
初心者ですいません
567:デフォルトの名無しさん
06/06/26 23:36:27
ゲッツは文字列を受け取る
スキャンエフも文字列とか受け取れるがゲッツの方が使い勝手がよいと自分なりに勝手に拝借して候
568:デフォルトの名無しさん
06/06/26 23:52:53
scanfはスペースがあるとそこで区切られるよね。
ところでgetsって
ゲッツ?ゲットエス?
569:デフォルトの名無しさん
06/06/27 00:16:44
getStringの略だからゲットエスだろ。
getsは文字列(string)を受け取るだけ。
scanfは書式指定(Format)できるから、文字列じゃなくて数値とか
いろいろ入力できる。
ま、本当はバッファオーバーランを防ぐためにもfgetsを使う
べきだと思うが。
570:デフォルトの名無しさん
06/06/27 00:33:45
>>568
区切られずに読ませる方法もある。
571:デフォルトの名無しさん
06/06/27 00:45:55
>>566
むしろ同じ所などない。
全てにおいて異なる。
572:デフォルトの名無しさん
06/06/27 00:51:58
>>566です
教えてくれた人ありがとうございます。
勉強になりました
573:デフォルトの名無しさん
06/06/27 16:32:42
opendirはNo errorなのに
readdirでBad addressって言われるのってどういう場合が考えられる?
環境はWindowsのMingwです。
574:デフォルトの名無しさん
06/06/27 18:58:59
単に終端に達したのを勘違いしたとか
575:デフォルトの名無しさん
06/06/28 10:50:19
ん〜?ファイルはあるんだけどなぁ。でもそれくらいしかあり得ないか・・・。解答どうもでした。
576:デフォルトの名無しさん
06/06/28 23:27:59
文字列のなかで特殊文字(%や”など)が入っているかをチェック
するときどのようにすればよろしいでしょうか。
目的はSQLでエラーになるような特殊文字を検索時の値として渡さないようにしたい
577:デフォルトの名無しさん
06/06/28 23:44:41
>>576
一文字づつチェックすればいいだろ。
それより、そういう文字は普通、エスケープして渡すべきだと思うよ。
578:デフォルトの名無しさん
06/06/28 23:50:36
エスケープして渡すべきとは具体的にどうすればいいいのですか。
579:デフォルトの名無しさん
06/06/28 23:52:51
>>576
つ[strcspn]
580:デフォルトの名無しさん
06/06/28 23:54:35
SQL エスケープでぐぐれ
メタ文字の意味を消失させる事
例えばCの文字列定数なら"\\"みたいな
581:デフォルトの名無しさん
06/06/28 23:55:29
>>578
そのSQLの仕様見れ
582:デフォルトの名無しさん
06/06/29 10:03:59
Visual C++ 6.0上で実行すると、「Press any key to continue」が最後に出るのに、
直接実行すると、「Press any key to continue」が出ずに
すぐに終わってしまいます。どうすれば、
直接実行したときに、「Press any key to continue」が出るようにできるのでしょうか?
583:デフォルトの名無しさん
06/06/29 10:42:11 BE:15528724-#
main関数の最後に
puts("Press any key to continue.");getch();
と書いておく。
584:デフォルトの名無しさん
06/06/29 16:56:59
>>582
末尾に
system("PAUSE");
585:デフォルトの名無しさん
06/06/29 16:59:05
>>582
コマンドプロンプトを立ち上げて
実行プログラムがある場所に移動してから実行するとか
586:デフォルトの名無しさん
06/06/29 20:19:49
コマンドプロンプト上でカーソル位置を自由に設定する方法を教えてください。
メニュー画面を作って、メニュー番号を入力させるプログラムを作りたいの
ですが、メニュー画面を表示させることはできるのですが、
画面上の真ん中あたりに、メニュー番号を入力させるところを作りたいのですが、
そこに、カーソルをもってくるにはどうしたらいいですか?
お願いします。
587:デフォルトの名無しさん
06/06/29 20:48:22
コンソールAPI でぐぐる。
588:586
06/06/29 21:01:06
>>587
ありがとう!!
589:586
06/06/29 22:12:54
ごめんなさい、やっぱわかんなかった。
VCじゃなくって、まったくのc言語だけでカーソル移動とかさせたいのだけど、
windows.hとか使わないでやる方法教えてください。
590:デフォルトの名無しさん
06/06/29 22:17:07
>>589
ない。
そもそも、標準Cにコンソールとか言う概念自体がない。
591:586
06/06/29 22:21:42
>>590
そうなのか、、ありがと
592:デフォルトの名無しさん
06/06/30 01:03:38
すげぇなぁ。
>メニュー画面を作って、
>メニュー番号を入力させるプログラムを作りたいのですが、
>メニュー画面を表示させることはできるのですが、
>画面上の真ん中あたりに、
>メニュー番号を入力させるところを作りたいのですが、
>そこに、
>カーソルをもってくるにはどうしたらいいですか?
なげぇ文だぜ。
きっとプログラムもmain()で冗長に書いているのだろう。
593:デフォルトの名無しさん
06/06/30 16:42:41
文字列の部分コピーをやりたいです。
先頭から n 文字目までのコピーなら strncpy(*char, *const char, int); で実現できますが、
n 文字目から最後までのコピーは、char配列の1成分ずつfor文等でコピーしないといけないのでしょうか?
594:デフォルトの名無しさん
06/06/30 17:43:09
>>593
strcpy(dst, src+n);
595:593
06/06/30 18:38:32
>>594
できました。ありがとうございます。
このような使い方が出来るとは・・・覚えておきます。
596:デフォルトの名無しさん
06/06/30 19:05:37
>>595
ポインタとヌル終端文字列の基本テクです
597:デフォルトの名無しさん
06/06/30 22:56:30
do-while文で、整数を入力して、0になったらおわりという文はどうしたらいいのですか?最近プログラムの勉強始めたばかりで申し訳ありません
598:デフォルトの名無しさん
06/06/30 23:19:56
>>597 適当に答えてみる
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int num;
char tmp[256];
do{
num=atoi(gets(tmp));
}while(num!=0);
return 0;
}
599:582
06/07/01 00:25:26
>>583,584,585
ありがとうございます。system("PAUSE");を利用することにしました。
>>597
#include <stdio.h>
int main(){
int n;
do{
scanf("%d",&n)
if(n<1) printf("1以上の整数を代入してください!");
}while(n<1);
do{
n--;
}while(n!=0);
return(0);
}
実行してないからバグあるかもしらん。
600:デフォルトの名無しさん
06/07/01 01:04:31
598、599さん、素早い返答ありがとうございます。実は猫でもわかるシリーズの本にあった例で、do〜while(n)で終わってて理解できなかったんです。初学者ゆえこれからも質問しますが、よろしくお願いいたしますm(__)m。
601:デフォルトの名無しさん
06/07/02 13:57:54
double a=123456.6789
b=-12345.6789
printf("a=%10.4f b=%10.4f\n",a,b);
printf("a=%7.4f b=%7.4f\n"),a,b);
の結果が両方とも
a=123456.6789 b=-12345.6789になるのはどうしてでしょうか?
602:・∀・)っ-○◎● ◆toBASh....
06/07/02 14:07:24
>>601
%10.4fは、浮動小数の「小数点以上」ではなく「全体の幅」を10文字で表すと言う意味。
もちろん小数点以上の桁数が足りない場合は自動的に補われる。
小数点以下の「4」の部分は、小数点以下に使う桁数の指定。
どっちも7文字でも10文字でも表しきれないので11文字に拡張されて同じ表示になる。
603:デフォルトの名無しさん
06/07/02 14:15:07
>>601
スレリンク(tech板:671番)
604:デフォルトの名無しさん
06/07/02 14:15:33
>>602
よくわかりました。ありがとうございます。
605:デフォルトの名無しさん
06/07/02 14:30:09
目がおかしくなったかなぁ。
>601の後者はコンパイルさえ通らないし、二番目の%10.4fの結果は12桁になるようにしか見えない。
606:デフォルトの名無しさん
06/07/02 16:02:02
Boland C++ Compiler 5.5でアプリケーションプログラムをコンパイルする方法を
教えてください。
パラメータ 'hWnd'は一度も使用されない
パラメータ 'hPrevInstance'は一度も使用されない
パラメータ 'lpCmdLine'は一度も使用されない
といった警告はどうしたら消えるのでしょうか?
607:・∀・)っ-○◎● ◆toBASh....
06/07/02 16:09:20
int WINAPI WinMain(
HINSTANCE /* hInstance */
, HINSTANCE /* hPrevInstance */
, LPSTR /* lpCmdLine */
, int /* iCmdShow */
)
{
// ほげほげ
}
608:デフォルトの名無しさん
06/07/02 16:36:34
その気持ちの悪いカンマの位置はどんなメリットがあるんだ?
たまに見かけるんだが。
609:デフォルトの名無しさん
06/07/02 17:50:20
Borland Developer Studio 2006 No.06
スレリンク(tech板)l50
int WINAPI WinMain(
HINSTANCE,
HINSTANCE,
LPSTR,
int,
)
{
// ほげほげ
};
ってやっちまって、コンパイルエラー出て悩むのを防ぐ馬鹿除けでは?
610:デフォルトの名無しさん
06/07/02 18:10:34
俺ならint WINAPI WinMain(HINSTANCE, HINSTANCE, PSTR, int)って1行に書く。
611:デフォルトの名無しさん
06/07/02 18:11:34
一応言っておくと>>607-610のように仮引数名を省略できるのはC++だけで、Cではできない。
612:デフォルトの名無しさん
06/07/02 18:40:04
あれ? C99でできなかったっけ?
613:デフォルトの名無しさん
06/07/02 18:47:37
nに入力した数字の数だけ$を表示するプログラムを作ったんですが
数字を入力するとなんか沢山$が出てきちゃいます。
改善方法はありませんか。よろしくお願いします。
#include <stdio.h>
int main(void){
int a;
char c;
while(1){
printf("C=");
scanf("%c",&c);
if(c==0)
break;
if((c <= 'A' && c <= 'Z') || (c <= 'a' && c <= 'z')){
printf("英数字ですぅ\n");
continue;
}
else{
for(a=1;a<=c;a++)
printf("$");
}
}
}
614:デフォルトの名無しさん
06/07/02 19:58:25
>>613
・scanf()の戻り値をチェックしないとcの値が有効かどうか判らない。
・cには文字が入っている。それは数値ではないので0と比較する意味が殆どない。
・同じ理由で、$の数は文字コードの値に依存してしまう。
やりたいことがよく判らんが、入力と処理を分けて考えた方がいいんじゃないか?
615:デフォルトの名無しさん
06/07/02 20:54:59
cを入力
↓
英字か?no→→→数字か?no→→→→→それ以外
yes↓ yes↓ ↓
上に戻る cの数だけ$を表示 終了
616:デフォルトの名無しさん
06/07/02 21:01:46
上のようなプログラムを作りたかったんですが
10進数型で入力にして
if((c <= 'A' && c <= 'Z') || (c <= 'a' && c <= 'z')){
printf("英数字ですぅ\n");
else if((c <= 0){
for(a=1;a<=c;a++)
printf("$");
}
else
break;
このようにしても英字を入力したらダメですし・・・。
上のようなプログラムを作るのは無理ですか。
617:デフォルトの名無しさん
06/07/02 21:05:30
>>616
つ isalpha(), isdigit()
618:デフォルトの名無しさん
06/07/02 21:05:51
>>616
>>616読め
619:デフォルトの名無しさん
06/07/02 21:13:22
cが0以下ってのはどういう事よ
620:デフォルトの名無しさん
06/07/02 21:44:18
signed char であれば、ASCII範囲外を除外しているといえなくも無い。
621:デフォルトの名無しさん
06/07/02 21:48:38
ASCII範囲内を除外しているように見えるが...
622:デフォルトの名無しさん
06/07/02 22:17:10
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
// ここから入力
char buf[200];
if (fgets(buf, sizeof(buf), stdin) == NULL) {
// 入力終端or異常
}
char * ptr;
long foo = strtol(buf, & ptr, 10);
if (ptr[0] != '\0') {
// 数字以外の入力
}
// ここから文字処理
for (unsigned ic = 0; ic < foo; ++ic) {
putchar('$');
}
return 0;
}
623:デフォルトの名無しさん
06/07/02 22:40:48
見たことのない文字がいっぱい・・・。
c言語って難しいですね。
あと、616は間違いだらけでした・・・。
皆さんありがございました。皆さんが言ってることが理解できるようにもっと勉強します。
624:デフォルトの名無しさん
06/07/02 22:45:12
>見たことのない文字がいっぱい・・・。
確かにそれでは文字コードの処理は難しいだろう
…とかいうツッコミは置いといて、
ガンガレ。
625:デフォルトの名無しさん
06/07/02 22:55:52
>>622
改行を除去するか、'\0' || '\n'で判定しないと、
常に数字以外と判定されるよ。
626:622
06/07/02 23:36:30
あ、いけね、忘れてた。
>>625
THX!
こんなもんかな。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char buf[200];
if (fgets(buf, sizeof(buf), stdin) == NULL) {
printf("No input.\n");
return 0;
}
char * ptr = strchr(buf, '\n');
if (ptr) {
* ptr = '\0';
}
if (strlen(buf) == 0) {
printf("Empty input.\n");
return 0;
}
long foo = strtol(buf, & ptr, 10);
if (ptr[0] != '\0') {
printf("Not a number.\n");
return 0;
}
for (unsigned ic = 0; ic < foo; ++ic) {
putchar('$');
}
return 0;
}
627:デフォルトの名無しさん
06/07/02 23:36:32
初歩的な質問ですみません。
main関数とは別のファイルに作ったユーザー定義関数を
呼び出すのはどうしたらいいですか?
#includeで取り込めばいいのでしょうか?
そのときは、やっぱり関数のプロトタイプ宣言は必要ですか?
628:デフォルトの名無しさん
06/07/02 23:37:57
extern付けて宣言する必要がある
629:デフォルトの名無しさん
06/07/02 23:38:16 BE:314515679-#
>>627
環境は?
630:デフォルトの名無しさん
06/07/02 23:39:01
>>629
WindowsXPです
631:デフォルトの名無しさん
06/07/02 23:42:36 BE:239631168-#
>>630
VCとかなら、プロジェクトに別ファイルを追加すればいいよ。
コマンドラインなら、引数で、mainのファイルと、別のファイルを渡せば勝手にリンクされる。
632:デフォルトの名無しさん
06/07/02 23:44:39
すごく初歩的なんですが
c言語を学校で習ってるんですが
家のPCでソース組むにはどうしたらいいでしょうか?
633:デフォルトの名無しさん
06/07/02 23:46:01
答え:先生に聞く
はい次の方どうぞー
634:デフォルトの名無しさん
06/07/02 23:47:57 BE:359446098-#
>>632
メモ帳
635:デフォルトの名無しさん
06/07/02 23:48:54
コンパイラがどれがいいのかわからなんです・・・・
636:・∀・)っ-○◎● ◆toBASh....
06/07/02 23:49:08
コンパイルまでやるなら
Visual C++ Express
637:デフォルトの名無しさん
06/07/02 23:52:17
学校じゃコマンドプロンプトでlcc ソース名でコンパイルできるんですが
638:・∀・)っ-○◎● ◆toBASh....
06/07/02 23:55:23
Visual C++ Expressならコマンドプロンプトから cl ソース名 でおk
639:デフォルトの名無しさん
06/07/02 23:59:08
>>632
コマンドプロンプトでnotepad[Enter]だ。
640:デフォルトの名無しさん
06/07/02 23:59:45
URLリンク(www.borland.com)
URLリンク(www.vector.co.jp)
VC++ Expはダウソに時間が掛かるから、今すぐちゃちゃっとやるならこっつで
641:・∀・)っ-○◎● ◆toBASh....
06/07/03 00:05:42
lcc-win32も自分で環境変数通せばコマンドラインで使えそうだけどな
642:デフォルトの名無しさん
06/07/03 01:23:42
>>637
lccと言えば、LSI C-86のような気がする。
準備(インストール)はなれないと面倒かもしれないが、学校と同じというのは利点かもしれない。
643:デフォルトの名無しさん
06/07/03 02:02:18
4つ程度なら、int WINAPI WinMain(HINSTANCE, HINSTANCE, PSTR, int)って1行でもいいけど、世の中にはもっといっぱい受け渡す関数もあるよ。
今更、lccって気もするなあ。
実務経験的に、gccかVCのインスコと環境構築方法も学習すべき。
644:デフォルトの名無しさん
06/07/03 07:34:30
lccと言ってもLSI-Cではないと思うけどね。
授業でLSI-C使っているならそれはそれで、よっぽど阿呆で楽しいが。
645:仕様書無しさん
06/07/03 13:16:25
配列でhoge[i*j]と*(hoge+i*j)はどちらがいいのでしょうか?
メリットなどがあれば教えてください
見やすいのはhoge[i*j]なのでこっちで書くほうが多いのですが
646:デフォルトの名無しさん
06/07/03 13:34:54
>>645
a[i] は *(a + i) の略記法なんだからコンパイラにとってはどっちでも同じ。
見やすい方で書けばいい。
647:デフォルトの名無しさん
06/07/03 15:55:19
pow()や、malloc()は重い関数と聞いたのですが、
ではclock()は重い関数なのでしょうか。
というか、重い関数というのはどこでどうやって知るのでしょうか?
648:デフォルトの名無しさん
06/07/03 15:58:51
>>647
OSのソースを読むとか実際に測定してみるとか。
649:デフォルトの名無しさん
06/07/03 16:06:47
>>648
ということは重いかどうかというのは環境依存なんですね。
分かりました。どうもありがとうございます。
650:デフォルトの名無しさん
06/07/03 18:46:45
>>647
>というか、重い関数というのはどこでどうやって知るのでしょうか?
というか、重い関数というのは何を基準に決めるのでしょうか?
651:デフォルトの名無しさん
06/07/03 19:14:34
主観
652:デフォルトの名無しさん
06/07/03 21:21:28
相対的なもんじゃね。
653:デフォルトの名無しさん
06/07/03 22:04:21
他に手段があるならそれと較べて重い(≒遅い)か判断すればいいんじゃない?
pow()はpow(5, 2)と5*5を較べれば一目瞭然だし、malloc()の代わりにC99の可変長配列を使うとか、
malloc(100)を1万回の代わりにmalloc(100 * 10000)すればずっと早くなるわけだし。
654:デフォルトの名無しさん
06/07/03 23:06:35
各辺が全て500以下であるようなピタゴラスの三整数を全て求めよ。
ただし、三重にネストしたforループを使う事。
#include<studio.h>
main()
{
int x,y,z;
for( z = 1, z <= 500 , z++ ){
for( x = 1, x <= 500 , x++ ){
for( y = 1, y <= 500 , y++){
if( pow(z,2) == pow(x,2) + pow(y,2 ))
printf("%dの二乗は%dと%dの二乗の和に等しい\n",z,x,y);}}}
return0;
}
上記で合ってますか?
655:デフォルトの名無しさん
06/07/03 23:15:42
宿題スレで会おう!
656:デフォルトの名無しさん
06/07/03 23:21:42
>>655
スマソ
サンクス
657:デフォルトの名無しさん
06/07/04 01:57:58
ちょっと質問です。
a , b ? c , d : e , f;
は
a , (b ? (c , d) : e) , f;
と同じでしょうか?
あと、
a = b ? c = d : e = f;
は
a = (b ? (c = d) : (e = f));
ですか?
どうも3項演算子の優先順位が今ひとつ…。
括弧つけろってのは別の話ということで、
よろしくお願いします。
658:デフォルトの名無しさん
06/07/04 02:11:37
URLリンク(www.google.co.jp)
で、その式はコンパイル通るのか?
659:デフォルトの名無しさん
06/07/04 09:13:57
>>658
VC6で試したけどコンパイルは通りました。
たとえば条件演算子と、代入演算子やカンマ演算子は、条件演算子の方が優先順位の方が高いじゃないですか。
なら、そのまま解釈すると
a = b ? c = d : e = f;
は
a = (b ? c) = (d : e) = f;
a , b ? c , d : e , f;
は
a , (b ? c) , (d : e) , f;
こうなっちゃいそうだけどそれじゃあ本当にコンパイルが通らないし、それで聞いてみたんです。
a , b ? c , d : e , f;
これは、
(a , b) ? (c , d) : (e , f);
こう括弧でくくってもコンパイル上は問題になりませんが、優先順位としては明らかにカンマの方が高くなっているから
ありえない。実際動作もそうなってはいないようです。
で、演算子を解釈していくときのプロセスで、3項演算子だけは二項演算子とは違った特異な処理をしているんしょうか?
ちょっと入門の質問じゃないかも知れないですが、どうも自分の考え方が理解の域に達していないので、初心者とし
て質問させていただきました。
グーグル先生以外の人間の達人の方、出来ましたら演算子の解釈順序なんかをご教示くださいませんでしょうか。
よろしくお願い致します。
660:デフォルトの名無しさん
06/07/04 09:28:04
>>659
a = b ? c = d : e = f;
は
a = (b ? (c = d) : e) = f;
a , b ? c , d : e , f;
は
a , (b ? (c , d) : e) , f;
だ。
? と : の間は分離なんかできるわけがないから、
ここは常に ? ... : は ? (...) : と同じになる。
661:デフォルトの名無しさん
06/07/04 10:12:54
>>660
どうもありがとうございます。ただ、まだちょっと納得いってません。aを除いて、
b ? c = d : e = f;
これはご教示に従えば
(b ? c = d : e) = f;
こうなりますよね? ここで、bが偽なら 最初の括弧の中は (e) となって、
e = f が実行されますが、 b が真のとき、(c) = f が実行されないのでしょうか?
(b ? c = d : e) = f;
↓
(c = d) = f;
↓
(c) = f;
bが真のとき、実際に挙動を見てみると、
b ? (c = d) : (e = f);
こうなっているように思えるのです。なので、
a = b ? c = d : e = f;
このケースでも、bが真か偽かによって、 a の値が d か f のどちらかになります。
662:デフォルトの名無しさん
06/07/04 10:13:39
改行が多いみたいで、上の続きです。
a = (b ? (c = d) : e) = f;
a = b ? c = d : e = f;
これはトレースすると、挙動が違うんです。もし手軽に試せる状況なら、
追試していただけないでしょうか?
お手数ですが、よろしくお願い致します。
663:デフォルトの名無しさん
06/07/04 10:33:12
(b ? c = d : e) = f; ってコンパイル通るか?
三項演算子は左辺に置けないと思うんだけど。
664:デフォルトの名無しさん
06/07/04 11:11:47
ちと勘違いしてました。VC6でWinMainで試してました。
C++だと変数の参照を返すからコンパイル通るんだ…。
ここはC言語スレでしたかorz
たしかにCだと
b ? c = d : e = f;
これは書けませんね。
ただ、演算子の優先順位というに点だけ着目すると、Cでは
(b ? (c = d) : e) = f;
こうなって左辺値に不適合でエラー
C++だと
b ? (c = d) : (e = f)
このように実動作しているようです。直感的にはC++流の解釈の方が
素直な気がしますが、三項演算子の コロン以降だけを特別処理している
気がしてならない…。
スレ汚し失礼しました。C++スレに行って来ます。
665:デフォルトの名無しさん
06/07/04 11:13:34
言語の優先順位に頼った可読性の悪いソース書くなよ。
括弧使え括弧。
666:デフォルトの名無しさん
06/07/04 11:24:20
>>665
ですので、最初に書いたとおりに、括弧をつけるのは別の話です。
コンパイラの式処理がどうなっているのか勉強しているので。
667:初心者
06/07/06 10:08:35
初心者レスですよね?!心優しい皆さんよろしく!!
数列の長さを設定しました。
キーボードで文字を入力します。
入力した文字が設定した長さを超えるとごみが出て
次の入力を影響します。
設定した長さ以後のごみをメモリからとる方法は??
668:デフォルトの名無しさん
06/07/06 12:47:59
むり
669:デフォルトの名無しさん
06/07/06 13:05:30
FreeBSDやMac OS Xならば、
fpurge(stdin)
で入力バッファに入っている文字を落とせる。
これが無いとちょっと面倒だけど、とりあえず改行文字まで
落としたかったら
while(getchar() != '¥n');
でいいんじゃない?
670:初心者
06/07/06 13:06:42
何が無理?
671:初心者
06/07/06 13:13:37
>>669御免初心者なんで、FreeBSD<<わからない。
例として:
#include <stdio.h>
int main(void)
{
char gg[22],*gu;
char hh[33],*jj;
printf("数列入れて>\n");
fgets(gg,22,gu);
printf("数列いれ>\n");
fgets(hh,33,jj);
getc(stdin);
}
数列を多い目に入れると、次の入力ができない。
672:もはもは
06/07/06 13:14:46
HELPです!!!!!
1次元配列に 34 57 45 21 89 63 39 48 78 68 76 84 92 53 62 のデータをセットして、
これらの平均値を求めよ。
さらに int eval[3]という1次元配列を用意して
eval[0] には0〜60の数の個数
eval[1]には61〜80の数の個数
eval[2]には81〜100の数の個数
を格納するようにし、それらを出力するプログラムを作成せよ。
よろしくお願いします。
673:デフォルトの名無しさん
06/07/06 13:29:23
>>671
どうゆう入力を想定してるの?
674:デフォルトの名無しさん
06/07/06 13:32:11
>>671
fgets(標準ライブラリのものと仮定)の使い方が間違ってる。
標準入力から入力して欲しいのなら、
fgets(gg, 22, stdin);
fgets(hh, 33, stdin);
のように書かなくては。
675:初心者
06/07/06 13:54:51
>>673
プログラムの一部なの。(全体は汚いプログラムなので見せない><)
まぁ、かんたんに言えば、
キーボードから入れた文字を好きな所まで取り
オーバーしたものは消す方法。
神様、私の願いを!!!
676:デフォルトの名無しさん
06/07/06 14:09:56
何が言いたいのかよくわからん。
Cより前に日本語をちゃんと勉強しろよ。
677:デフォルトの名無しさん
06/07/06 14:17:55
留学生か?>初心者
678:初心者
06/07/06 14:22:39
勉強中です><(怒らないで);
(本当に外国人です!!!日本語下手で御免なさい><);
会社からcを無理やり勉強させました。
お願いします。
679:デフォルトの名無しさん
06/07/06 14:27:35
english ok
680:デフォルトの名無しさん
06/07/06 14:29:31
・・・変数宣言って何・・・?
681:初心者
06/07/06 14:29:39
むり!韓国語なら>>
682:初心者
06/07/06 14:36:10
#include <stdio.h>
int main(void)
{
char gg[22],stdin;
char hh[33],stdin;
printf("数列入れて>\n");//ここに20文字以上入れるとおかしくなる
fgets(gg,22,stdin);
printf("数列いれ>\n");
fgets(hh,33,stdin);
getc(stdin);
}
683:デフォルトの名無しさん
06/07/06 14:51:10
>>682
おかしくなるのは仕様です。面倒ですが、次のように大きなバッファを用意して、
そこに一旦とりこむ必要があります。配列の大きさよりひとつ少なくしか使えないのは、
最後にヌル文字を入れる必要があるからです。
#include <stdio.h>
#include <string.h>
int main(void)
{
char buf[1024];
char gg[22];
char hh[33];
printf("数列入れて>\n");
fgets(buf, sizeof buf, stdin);
buf[strlen(buf) - 1] = '\0';
memset(gg, '\0', sizeof gg);
strncpy(gg, buf, sizeof gg - 1);
printf("数列いれ>\n");
fgets(buf, sizeof buf, stdin);
buf[strlen(buf) - 1] = '\0';
memset(hh, '\0', sizeof hh);
strncpy(hh, buf, sizeof hh - 1);
}
684:初心者
06/07/06 15:09:57
>>683
先に入れる所用意する事までは分かりました。
でもこれも限界がある(入力がbufの1024字超えれば)と思います。
(他にも使い所あるので><)
butに無限入力できる方法ないかしら??
(どんな入力も対応できる方法)
よろしくおねがいします。
685:デフォルトの名無しさん
06/07/06 15:13:22
ハードウェアのリソースが有限な以上
どんな入力にも対応するなんてのは無理。
そのために仕様が存在する。
686:初心者
06/07/06 15:20:06
>>685
そうなんですか!!!!
本当にありがとうございました。
はんぱな日本語で迷惑かけました>>礼>>
687:デフォルトの名無しさん
06/07/06 20:02:38
CとJavaで、初心者が学びやすいのはどちらでしょうか?
最初に学ぶのはどちらがいいのでしょう…?
またCとJavaは数学的な要素(計算など)がどちらも必要になってくるのでしょうか。
返信お願い致します。
688:デフォルトの名無しさん
06/07/06 20:11:10
>>687
将来プログラミングで生計を立てたいのなら、まずCから。もちろんその後Javaもやる。
趣味でやるならどちらでも。Javaオンリーでもかまわない。
689:デフォルトの名無しさん
06/07/06 20:26:42
>>688
そうですか。
計算などが出てきてしまうと辛いのですが、両者とも計算式を
使ったりするのですか?
690:デフォルトの名無しさん
06/07/06 20:35:08
>>689
プログラミングでどのようなものをやるのかによる。
が、言語そのものの学習中にはほとんど出てこない。
数学的センスがあったほうが有利な場面があるかもしれないが。
691:デフォルトの名無しさん
06/07/06 20:52:14
>>690
わかりました。ありがとうございます。
692:デフォルトの名無しさん
06/07/06 21:03:06
でも1 + 1やx + yもいわゆる計算式ではないだろうか。
693:デフォルトの名無しさん
06/07/06 21:05:18
>>692
ええ、計算式です。間違いなく計算をする数式です。
694:デフォルトの名無しさん
06/07/06 21:09:13
>>692、>>693
それはCとJavaの両方とも使うのですか?
Cは関数を計算し求めると聞いたのですが、Javaもなのでしょうか。
695:デフォルトの名無しさん
06/07/06 21:12:42
>>694
その書き込み、本気なのか?
だったら、プログラミングなど勉強するだけ無駄だからやめとけ。
696:デフォルトの名無しさん
06/07/06 21:18:31
数学がさっぱりでもいいが、算数は必須。
697:デフォルトの名無しさん
06/07/06 21:27:52
>>695
私情でやらざるを得ない状況になりましたので、今回[入門]とあったこちらで
質問致しました。
レス参考にさせて頂きます。ありがとうございました。
698:デフォルトの名無しさん
06/07/06 21:31:17
まずやってみたら?プログラミングがどんなことするか分かってない気がする
699:デフォルトの名無しさん
06/07/06 21:49:20
ここにもチョンが湧いてるのか。
ミサイル発射の謝罪と補償を要求する!
700:デフォルトの名無しさん
06/07/06 22:06:02
ここの回答者の人たちは参考書は何を読んで覚えたんですか?
0から始めた参考書と、それなりにわかってから読んだ参考書を教えてください
701:デフォルトの名無しさん
06/07/06 22:17:54
言語としてのCに限るなら林のビギナー編だけしか読まなかったな。
もう後輩に売っちまった。
702:デフォルトの名無しさん
06/07/07 00:42:13
>>699
お前ひとりに直撃すりゃあ良かったのにな。
703:デフォルトの名無しさん
06/07/07 11:30:11
在日は速く半島に帰れ!
また有事の際に日本で儲けていたと半島のチョンに蔑まれ続けるぞ。
704:デフォルトの名無しさん
06/07/07 11:33:22
>>700
0からK&Rの第一版。
20年ぐらい前に覚えたのだが、それ以上にまともに書いてある本はなかった。
その後第二版も読んだ。
705:デフォルトの名無しさん
06/07/07 11:41:42
>>703
憂さ晴らしは妥当な板でどーぞ
706:初心者
06/07/07 12:01:46
>>699話す事あるなら他のレスでどうぞ、
(ちゃんと見るから!!)
このレスを汚くするな!!
707:デフォルトの名無しさん
06/07/07 16:37:53
PGの雇用が奪われてるのは、不法滞在し異常に安い賃金で働くチョンのせい。
708:デフォルトの名無しさん
06/07/07 18:55:02
>>706
いちいち反応するな。流せ
オレモナー
709:デフォルトの名無しさん
06/07/07 23:24:53
>>706の「レス」に反応
710:デフォルトの名無しさん
06/07/07 23:39:50
ごめんね、スレとレスの違いも分からなくて
ごめんね
711:デフォルトの名無しさん
06/07/07 23:44:17
ごめんね、ごめんね、ごめんねごめんね、
ごめんねごめんね、ごめんね、ごめんね、
ごめんね、ごめんね、ごめんねごめんね、
ごめんねごめんしねごめんね、ごめんね、
ごめんね、ごめんね、ごめんね、ごめんね
ごめんねごめんね、ごめんね、ごめんね、
712:デフォルトの名無しさん
06/07/08 10:29:13
チョン氏ね!
713:デフォルトの名無しさん
06/07/09 00:22:08
エンターキーが押されたかどうかの判定の仕方と、
スペースキーが押されたときの判定の仕方を教えてください
714:デフォルトの名無しさん
06/07/09 00:29:35
環境に依存するからもうちょっと情報だして
715:713
06/07/09 00:37:55
標準c言語で、コマンドプロプト上で動かすコンソールアプリです。
OSはWindowsXPです。よろしくお願いします
716:デフォルトの名無しさん
06/07/09 03:15:58
VC++4.0でXP用のソフトを組んでます。
操作ミスなどで警告音を鳴らしたいのですが、
MessageBeep()関数だと単純な音しか鳴らせず、おもしろくありません。
かといって、警告音のためにWAV作ったりするのも大変なので、
少しだけシャレた警告音を簡単に慣らす方法がありませんか?
717:デフォルトの名無しさん
06/07/09 03:24:07
Beep()を沢山つかって音楽でも奏でてはいかが?
10ミリ秒ごとにアルペジオさせれば和音っぽく聞こえて
周りをちょっと驚かすぐらいはできるよ。
718:デフォルトの名無しさん
06/07/09 03:36:44
適当に答えてみる。
>>713
標準c言語だと、getchar()かな?
でも、エンターが押されないと、stdinに入ってこない。
MS-Cだと、getch()が1文字ずつとれる。(エコーなし)
エコーしたいなら、getche()。
<conio.h>に入っている。
719:デフォルトの名無しさん
06/07/09 04:20:51
CでGUIアプリ作る方法教えてください
720:デフォルトの名無しさん
06/07/09 05:49:53
Cでかいたプログラムから命令(メッセージ?)送ると
グラフィックだけ出力してくれるサーバっぽいアプリケーション
ってないですか?
721:デフォルトの名無しさん
06/07/09 05:57:51
X?
722:デフォルトの名無しさん
06/07/09 05:58:37
あ、「Windows」の方が適切かな
723:デフォルトの名無しさん
06/07/09 06:12:09
適当に答えてみる。
>>720
system("start C:\\temp\\test.gif");
なんてやれば、windowsならgif拡張子に関連付けしてるアプリを
よんでくれるはず。(.bmpとか.jpgでもOK)
724:デフォルトの名無しさん
06/07/09 11:38:34
OpenGLとかActiveXの記述だけで描画してくれるアプリが欲しいってこと?
普通は鯖といちいち通信するのが面倒だから自前でライブラリ抱えます。
少しだけシャレた警告音はwavでも鳴らさないと無理な悪寒。
どんなのが少しだけシャレた警告音なのか録音してウpしてみてくれ。
常に入力を監視する。
スペースかリターンが押されたのを判定すればいい。
普通はキー入力があったらイベント飛んで来るから、入力に対応した処理を記述しておけばOSが実行してくれる。
725:713
06/07/09 11:39:33
適当な回答ありがとうございます。参考になりました
726:デフォルトの名無しさん
06/07/09 11:56:05
MS Visual C++ NET
BorLand C++ Builder6
てどちらが使いやすい?
727:デフォルトの名無しさん
06/07/09 22:16:51
両方使ってみてそれぞれにスレがあるから感想でもカキコしてみたら?
ムカつくほうは使わないほうがいいと思う。ストレス感じるだけ。
728:デフォルトの名無しさん
06/07/09 23:29:29
>>726
単なる数値計算やら簡単なプログラム(アルゴリズムの勉強)程度なら
Borland C++ 5.5が手軽で良いYO!
729:716
06/07/10 01:26:04
>>717
10mS毎に?
うーん、他にいい方法がなかったら試してみます(汗
730:デフォルトの名無しさん
06/07/10 01:36:13
質問です。
「'」という文字を配列に格納したいのですが、エラーが出てうまくいきません。
エラーは以下の3つです。
文字列定数は1文字か2文字でなければならない。
,が必要。
文字列または文字定数が閉じていない。
宜しくお願いします。
731:デフォルトの名無しさん
06/07/10 01:41:01
¥’
732:デフォルトの名無しさん
06/07/10 03:17:38
>>731
ありがとうございます!
733:デフォルトの名無しさん
06/07/10 12:36:59
>>730-731
せめて半角で書いて欲しいとオモタ
734:デフォルトの名無しさん
06/07/10 20:38:16
CHAR PTCHAR TCHAR WCHAR型の違いを教えてください
735:デフォルトの名無しさん
06/07/10 21:49:40
typedef char CHAR;
typedef wchar_t WCHAR;
#ifdef UNICODE_
typedef WCHAR TCHAR;
#else
typedef CHAR TCHAR;
#endif
typedef TCHAR *PTCHAR;
736:726
06/07/10 21:50:19
>> 728
サンクス
737:デフォルトの名無しさん
06/07/10 21:58:42
putchar だけで文字コード 112、117等 を出力するプログラムを教えてください。
738:734
06/07/10 22:08:03
>>735
アリガ10
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5142日前に更新/249 KB
担当:undef