[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 01/19 06:51 / Filesize : 249 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇)



1 名前:デフォルトの名無しさん [2006/05/04(木) 08:53:09 ]
入門者向けの俺に聞けスレです。
なんでもきいてよね

559 名前:デフォルトの名無しさん [2006/06/26(月) 21:03:39 ]
>>558
else と if がどこに懸かっているのかが分かりにくいから。

560 名前:デフォルトの名無しさん [2006/06/26(月) 21:29:37 ]
初心者へ上司からの指令です。

C言語を使って「愛していますか?」って表示させるプログラムを組んでみよ。
さらに、YESとNOの選択を用意して
YESを選択すれば「もちろん!」
NOを選択すれば「なわけねーだろ!」
って表示させるプログラムを組んでみよ。

561 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 22:05:23 ]
>>559
いつか、ひと目で解るようになれるといいですね。

562 名前:デフォルトの名無しさん [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 23:09:09 ]
534です。
みなさん色々指示してもらって。助かります。
>>535さんの発言どうり途中であきらめず、この世界で
やっていこうと本気で思いました。本気で突っ走りたくなったんで
更に更に勉強します。

564 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 23:24:54 ]
思いとどまれよ。
人生負け組みになりたくなければ。

565 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 23:31:06 ]
>>564
ひとそれぞれだよ。
俺は今年で35歳になるが、この業界に入って後悔したことはただの一度も無い。
負け犬だと思ったこともないし。客観的に見れば社会的ステータスは低いんだろうけどね。

566 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 23:32:18 ]
質問なんですが
scanfとgetsこの二つは
なにが違うのですか??
初心者ですいません

567 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 23:36:27 ]
ゲッツは文字列を受け取る
スキャンエフも文字列とか受け取れるがゲッツの方が使い勝手がよいと自分なりに勝手に拝借して候



568 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 23:52:53 ]
scanfはスペースがあるとそこで区切られるよね。
ところでgetsって
ゲッツ?ゲットエス?

569 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 00:16:44 ]
getStringの略だからゲットエスだろ。
getsは文字列(string)を受け取るだけ。
scanfは書式指定(Format)できるから、文字列じゃなくて数値とか
いろいろ入力できる。

ま、本当はバッファオーバーランを防ぐためにもfgetsを使う
べきだと思うが。

570 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 00:33:45 ]
>>568
区切られずに読ませる方法もある。

571 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 00:45:55 ]
>>566
むしろ同じ所などない。
全てにおいて異なる。

572 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 00:51:58 ]
>>566です
教えてくれた人ありがとうございます。
勉強になりました


573 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 16:32:42 ]
opendirはNo errorなのに
readdirでBad addressって言われるのってどういう場合が考えられる?
環境はWindowsのMingwです。

574 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 18:58:59 ]
単に終端に達したのを勘違いしたとか

575 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 10:50:19 ]
ん〜?ファイルはあるんだけどなぁ。でもそれくらいしかあり得ないか・・・。解答どうもでした。


576 名前:デフォルトの名無しさん [2006/06/28(水) 23:27:59 ]
文字列のなかで特殊文字(%や”など)が入っているかをチェック
するときどのようにすればよろしいでしょうか。
目的はSQLでエラーになるような特殊文字を検索時の値として渡さないようにしたい

577 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 23:44:41 ]
>>576
一文字づつチェックすればいいだろ。



それより、そういう文字は普通、エスケープして渡すべきだと思うよ。



578 名前:デフォルトの名無しさん [2006/06/28(水) 23:50:36 ]
エスケープして渡すべきとは具体的にどうすればいいいのですか。

579 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 23:52:51 ]
>>576
つ[strcspn]

580 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 23:54:35 ]
SQL エスケープでぐぐれ

メタ文字の意味を消失させる事
例えばCの文字列定数なら"\\"みたいな

581 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 23:55:29 ]
>>578
そのSQLの仕様見れ

582 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 10:42:11 BE:15528724-#]
main関数の最後に
puts("Press any key to continue.");getch();
と書いておく。

584 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 16:56:59 ]
>>582
末尾に
system("PAUSE");

585 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 16:59:05 ]
>>582
コマンドプロンプトを立ち上げて
実行プログラムがある場所に移動してから実行するとか

586 名前:デフォルトの名無しさん [2006/06/29(木) 20:19:49 ]
コマンドプロンプト上でカーソル位置を自由に設定する方法を教えてください。
メニュー画面を作って、メニュー番号を入力させるプログラムを作りたいの
ですが、メニュー画面を表示させることはできるのですが、
画面上の真ん中あたりに、メニュー番号を入力させるところを作りたいのですが、
そこに、カーソルをもってくるにはどうしたらいいですか?
お願いします。

587 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 20:48:22 ]
コンソールAPI でぐぐる。



588 名前:586 mailto:sage [2006/06/29(木) 21:01:06 ]
>>587
ありがとう!!

589 名前:586 [2006/06/29(木) 22:12:54 ]
ごめんなさい、やっぱわかんなかった。
VCじゃなくって、まったくのc言語だけでカーソル移動とかさせたいのだけど、
windows.hとか使わないでやる方法教えてください。

590 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 22:17:07 ]
>>589
ない。
そもそも、標準Cにコンソールとか言う概念自体がない。

591 名前:586 mailto:sage [2006/06/29(木) 22:21:42 ]
>>590
そうなのか、、ありがと

592 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 01:03:38 ]
すげぇなぁ。
>メニュー画面を作って、
>メニュー番号を入力させるプログラムを作りたいのですが、
>メニュー画面を表示させることはできるのですが、
>画面上の真ん中あたりに、
>メニュー番号を入力させるところを作りたいのですが、
>そこに、
>カーソルをもってくるにはどうしたらいいですか?
なげぇ文だぜ。
きっとプログラムもmain()で冗長に書いているのだろう。

593 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 16:42:41 ]
文字列の部分コピーをやりたいです。
先頭から n 文字目までのコピーなら strncpy(*char, *const char, int); で実現できますが、
n 文字目から最後までのコピーは、char配列の1成分ずつfor文等でコピーしないといけないのでしょうか?

594 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 17:43:09 ]
>>593
strcpy(dst, src+n);

595 名前:593 mailto:sage [2006/06/30(金) 18:38:32 ]
>>594
できました。ありがとうございます。
このような使い方が出来るとは・・・覚えておきます。

596 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 19:05:37 ]
>>595
ポインタとヌル終端文字列の基本テクです

597 名前:デフォルトの名無しさん [2006/06/30(金) 22:56:30 ]
do-while文で、整数を入力して、0になったらおわりという文はどうしたらいいのですか?最近プログラムの勉強始めたばかりで申し訳ありません



598 名前:デフォルトの名無しさん mailto:sage [2006/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 mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/07/01(土) 01:04:31 ]
598、599さん、素早い返答ありがとうございます。実は猫でもわかるシリーズの本にあった例で、do〜while(n)で終わってて理解できなかったんです。初学者ゆえこれからも質問しますが、よろしくお願いいたしますm(__)m。

601 名前:デフォルトの名無しさん [2006/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.... [2006/07/02(日) 14:07:24 ]
>>601
%10.4fは、浮動小数の「小数点以上」ではなく「全体の幅」を10文字で表すと言う意味。
もちろん小数点以上の桁数が足りない場合は自動的に補われる。
小数点以下の「4」の部分は、小数点以下に使う桁数の指定。

どっちも7文字でも10文字でも表しきれないので11文字に拡張されて同じ表示になる。

603 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 14:15:07 ]
>>601
pc8.2ch.net/test/read.cgi/tech/1148993760/671

604 名前:デフォルトの名無しさん [2006/07/02(日) 14:15:33 ]
>>602
よくわかりました。ありがとうございます。

605 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 14:30:09 ]
目がおかしくなったかなぁ。
>601の後者はコンパイルさえ通らないし、二番目の%10.4fの結果は12桁になるようにしか見えない。

606 名前:デフォルトの名無しさん [2006/07/02(日) 16:02:02 ]
Boland C++ Compiler 5.5でアプリケーションプログラムをコンパイルする方法を
教えてください。

パラメータ 'hWnd'は一度も使用されない
パラメータ 'hPrevInstance'は一度も使用されない
パラメータ 'lpCmdLine'は一度も使用されない

といった警告はどうしたら消えるのでしょうか?

607 名前:・∀・)っ-○◎● ◆toBASh.... [2006/07/02(日) 16:09:20 ]

int WINAPI WinMain(
HINSTANCE /* hInstance */
, HINSTANCE /* hPrevInstance */
, LPSTR /* lpCmdLine */
, int /* iCmdShow */
)
{
 // ほげほげ
}



608 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 16:36:34 ]
その気持ちの悪いカンマの位置はどんなメリットがあるんだ?
たまに見かけるんだが。

609 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 17:50:20 ]
Borland Developer Studio 2006 No.06
pc8.2ch.net/test/read.cgi/tech/1151562315/l50


int WINAPI WinMain(
 HINSTANCE,
 HINSTANCE,
 LPSTR,
 int,
)
{
 // ほげほげ
};
ってやっちまって、コンパイルエラー出て悩むのを防ぐ馬鹿除けでは?

610 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 18:10:34 ]
俺ならint WINAPI WinMain(HINSTANCE, HINSTANCE, PSTR, int)って1行に書く。

611 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 18:11:34 ]
一応言っておくと>>607-610のように仮引数名を省略できるのはC++だけで、Cではできない。

612 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 18:40:04 ]
あれ? C99でできなかったっけ?

613 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 19:58:25 ]
>>613
・scanf()の戻り値をチェックしないとcの値が有効かどうか判らない。
・cには文字が入っている。それは数値ではないので0と比較する意味が殆どない。
・同じ理由で、$の数は文字コードの値に依存してしまう。

やりたいことがよく判らんが、入力と処理を分けて考えた方がいいんじゃないか?

615 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 20:54:59 ]
 cを入力
  ↓
英字か?no→→→数字か?no→→→→→それ以外
 yes↓     yes↓         ↓
上に戻る  cの数だけ$を表示    終了

616 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 21:05:30 ]
>>616
つ isalpha(), isdigit()



618 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 21:05:51 ]
>>616
>>616読め

619 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 21:13:22 ]
cが0以下ってのはどういう事よ

620 名前:デフォルトの名無しさん [2006/07/02(日) 21:44:18 ]
signed char であれば、ASCII範囲外を除外しているといえなくも無い。

621 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 21:48:38 ]
ASCII範囲内を除外しているように見えるが...

622 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 22:40:48 ]
見たことのない文字がいっぱい・・・。
c言語って難しいですね。
あと、616は間違いだらけでした・・・。
皆さんありがございました。皆さんが言ってることが理解できるようにもっと勉強します。

624 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 22:45:12 ]
>見たことのない文字がいっぱい・・・。
確かにそれでは文字コードの処理は難しいだろう
…とかいうツッコミは置いといて、
ガンガレ。

625 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 22:55:52 ]
>>622
改行を除去するか、'\0' || '\n'で判定しないと、
常に数字以外と判定されるよ。

626 名前:622 mailto:sage [2006/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 名前:デフォルトの名無しさん [2006/07/02(日) 23:36:32 ]
初歩的な質問ですみません。
main関数とは別のファイルに作ったユーザー定義関数を
呼び出すのはどうしたらいいですか?
#includeで取り込めばいいのでしょうか?
そのときは、やっぱり関数のプロトタイプ宣言は必要ですか?



628 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 23:37:57 ]
extern付けて宣言する必要がある

629 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 23:38:16 BE:314515679-#]
>>627
環境は?

630 名前:デフォルトの名無しさん [2006/07/02(日) 23:39:01 ]
>>629
WindowsXPです

631 名前:デフォルトの名無しさん [2006/07/02(日) 23:42:36 BE:239631168-#]
>>630
VCとかなら、プロジェクトに別ファイルを追加すればいいよ。
コマンドラインなら、引数で、mainのファイルと、別のファイルを渡せば勝手にリンクされる。

632 名前:デフォルトの名無しさん [2006/07/02(日) 23:44:39 ]
すごく初歩的なんですが
c言語を学校で習ってるんですが
家のPCでソース組むにはどうしたらいいでしょうか?

633 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 23:46:01 ]
答え:先生に聞く

はい次の方どうぞー

634 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 23:47:57 BE:359446098-#]
>>632
メモ帳

635 名前:デフォルトの名無しさん [2006/07/02(日) 23:48:54 ]
コンパイラがどれがいいのかわからなんです・・・・

636 名前:・∀・)っ-○◎● ◆toBASh.... [2006/07/02(日) 23:49:08 ]
コンパイルまでやるなら
Visual C++ Express

637 名前:デフォルトの名無しさん [2006/07/02(日) 23:52:17 ]
学校じゃコマンドプロンプトでlcc ソース名でコンパイルできるんですが



638 名前:・∀・)っ-○◎● ◆toBASh.... [2006/07/02(日) 23:55:23 ]
Visual C++ Expressならコマンドプロンプトから cl ソース名 でおk

639 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 23:59:08 ]
>>632
コマンドプロンプトでnotepad[Enter]だ。

640 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 23:59:45 ]
ttp://www.borland.com/jp/products/cbuilder/freecompiler.html
ttp://www.vector.co.jp/soft/win95/prog/se141451.html
VC++ Expはダウソに時間が掛かるから、今すぐちゃちゃっとやるならこっつで

641 名前:・∀・)っ-○◎● ◆toBASh.... [2006/07/03(月) 00:05:42 ]
lcc-win32も自分で環境変数通せばコマンドラインで使えそうだけどな

642 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 01:23:42 ]
>>637
lccと言えば、LSI C-86のような気がする。
準備(インストール)はなれないと面倒かもしれないが、学校と同じというのは利点かもしれない。

643 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 02:02:18 ]
4つ程度なら、int WINAPI WinMain(HINSTANCE, HINSTANCE, PSTR, int)って1行でもいいけど、世の中にはもっといっぱい受け渡す関数もあるよ。

今更、lccって気もするなあ。
実務経験的に、gccかVCのインスコと環境構築方法も学習すべき。

644 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 07:34:30 ]
lccと言ってもLSI-Cではないと思うけどね。
授業でLSI-C使っているならそれはそれで、よっぽど阿呆で楽しいが。

645 名前:仕様書無しさん [2006/07/03(月) 13:16:25 ]
配列でhoge[i*j]と*(hoge+i*j)はどちらがいいのでしょうか?
メリットなどがあれば教えてください

見やすいのはhoge[i*j]なのでこっちで書くほうが多いのですが



646 名前:デフォルトの名無しさん [2006/07/03(月) 13:34:54 ]
>>645
a[i] は *(a + i) の略記法なんだからコンパイラにとってはどっちでも同じ。
見やすい方で書けばいい。

647 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 15:55:19 ]
pow()や、malloc()は重い関数と聞いたのですが、
ではclock()は重い関数なのでしょうか。
というか、重い関数というのはどこでどうやって知るのでしょうか?




648 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 15:58:51 ]
>>647
OSのソースを読むとか実際に測定してみるとか。


649 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 16:06:47 ]
>>648
ということは重いかどうかというのは環境依存なんですね。
分かりました。どうもありがとうございます。

650 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 18:46:45 ]
>>647
>というか、重い関数というのはどこでどうやって知るのでしょうか?
というか、重い関数というのは何を基準に決めるのでしょうか?

651 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 19:14:34 ]
主観

652 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 21:21:28 ]
相対的なもんじゃね。

653 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 22:04:21 ]
他に手段があるならそれと較べて重い(≒遅い)か判断すればいいんじゃない?

pow()はpow(5, 2)と5*5を較べれば一目瞭然だし、malloc()の代わりにC99の可変長配列を使うとか、
malloc(100)を1万回の代わりにmalloc(100 * 10000)すればずっと早くなるわけだし。

654 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 23:15:42 ]
宿題スレで会おう!

656 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 23:21:42 ]
>>655
スマソ
サンクス

657 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 02:11:37 ]
www.google.co.jp/search?q=%E6%BC%94%E7%AE%97%E5%AD%90+%E5%84%AA%E5%85%88%E9%A0%86%E4%BD%8D

で、その式はコンパイル通るのか?

659 名前:デフォルトの名無しさん mailto:sage [2006/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項演算子だけは二項演算子とは違った特異な処理をしているんしょうか?

ちょっと入門の質問じゃないかも知れないですが、どうも自分の考え方が理解の域に達していないので、初心者とし
て質問させていただきました。

グーグル先生以外の人間の達人の方、出来ましたら演算子の解釈順序なんかをご教示くださいませんでしょうか。

よろしくお願い致します。








[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<249KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef