- 1 名前:デフォルトの名無しさん [2008/11/26(水) 22:13:31 BE:236678055-PLT(31170)]
- C言語の入門者向け解説スレです。
教えて欲しいのではなく宿題を丸投げしたいだけなら ↓宿題スレ↓へ行ってください。 C/C++の宿題を片付けます 118代目 pc11.2ch.net/test/read.cgi/tech/1226847424/ ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ・開発環境や動作環境も晒すと答えが早いかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 39 pc11.2ch.net/test/read.cgi/tech/1226693085/ 過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
- 7 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 01:23:26 ]
- ごめん もう一つ
・5の倍数であり、かつ100 の倍数でない。 ・500 の倍数である。
- 8 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 01:26:03 ]
- >>7
その二つをどうつなげて一つにすればいいの?
- 9 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 01:27:26 ]
- >>8 一つの式にしてくらはい
- 10 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 01:31:10 ]
- >>9
だから、どういう条件で引っ付けるのさ?
- 11 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 01:35:22 ]
- if(a[i] % 5 == 0 && a[i] % 100 != 0)
この式に500 の倍数を追加するの
- 12 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 01:37:24 ]
- >・5の倍数であり、かつ100 の倍数でない。
或いは >・500 の倍数である。 なにか % 5 == 0 && なにか % 100 != 0 || なにか % 500 == 0 20世紀と21世紀の閏年判定なら、 year > 1900 && year < 2100 && year % 4 == 0
- 13 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 01:39:36 ]
- >>12ありがと
- 14 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 02:19:44 ]
- >>3
一般的な例を挙げれば、コマンドラインから % exename param1 param2 のように入力して実行ファイルexenameを呼び出したら、 argcは3で、argv[0]、argv[1]、argv[2]はそれぞれ "exename"、"param1"、"param2"という文字列を指す (ただしexenameはもしかしたら存在しないかもしれない) 一応言っておくとこれはプログラムを実行するときにコマンドを与えるだけで 実行してから入力しているわけではない 与えたコマンドをどう解釈して何をやるかはプログラムの用途による まずは何をやりたいのかを決めること
- 15 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 02:37:37 ]
- >12
そういう甘やかしかたはいくない
- 16 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 08:24:06 ]
- こっちで粘着されたら困るからちゃんと宿題スレに誘導しないと
- 17 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 13:32:31 ]
- 質問です
#include <stdio.h> int main() { char s; printf("入力=?"); scanf("%c", &s); /*@*/ } 上記の@の後に、ある条件A〜Cを与えて 結果がCになるまで@に戻る、と言うプログラムを作成したいのですが、 @の後にはどのように続ければよいのでしょうか? 簡単に流れを教えていただければうれしいです。
- 18 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 13:41:48 ]
- do{
@ A B }while(Cが成立しない場合繰り返す);
- 19 名前:デフォルトの名無しさん [2008/11/27(木) 15:56:07 ]
- AとBも条件だと書いてあるがCとの関係(AND/ORなど)が書かれていないので答えようがない
条件Aと条件Bを評価だけ行って結果を無視し、条件Cの結果だけで判定するなら do { @; } while(A, B, !(C));
- 20 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 16:00:41 ]
- >>19
> AとBも条件だと書いて ないよ。与えて、だよ?whileで繰り返すかどうかを決定付けるのは Cが成立するかどうか。
- 21 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 16:03:38 ]
- >>17
条件2と3は処理の流れに影響するのか?
- 22 名前:デフォルトの名無しさん [2008/11/27(木) 16:04:34 ]
- >>20
少なくとも条件Aは文中にあるぞ つーか、おまえ本人なら人のせいにしないで訂正しろよ
- 23 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 16:11:18 ]
- 最初の質問文があいまいなんだよ
- 24 名前:17 mailto:sage [2008/11/27(木) 16:15:22 ]
- >>18
ありがとうございます。早速試してみたいと思います >>19 @に何か文字を打って、AorBを評価をするプログラムにしたいのですが、 「AorBならば@に戻り、Cになったらループを終了する」 と言う感じで作成したいと思っています。 Aならば正解 Bならば不正解 Cに合致した時にループを終了させると言う感じです 初心者なので、何言ってるか分からないかもしれませんが、何かアドバイスがあればお願いします。
- 25 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 16:19:22 ]
- do{
@ if(A||B)continue; while(!C);
- 26 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 16:20:31 ]
- おっとwhileの前の}が抜けた
- 27 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 16:21:44 ]
- do{
@; if(A)printf("正解"); else if(B)printf("不正解"); }while(!C);
- 28 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 16:24:47 ]
- >>24
処理の流れ+どういう時に何をやるかは整理をつけるクセをとけよう 漠然と提示されると答えようがないしね >@に何か文字を打って、AorBを評価をするプログラムにしたいのですが、 >「AorBならば@に戻り、Cになったらループを終了する」 >と言う感じ こう書いてもらえると、こちらも答えやすいし そちらも思考の何処で詰まっているかが限定しやすいし
- 29 名前:デフォルトの名無しさん [2008/11/27(木) 16:28:36 ]
- >>24
> 「AorBならば@に戻り、Cになったらループを終了する」 言い換えると「AorBならば@に戻り、Cでなければ@に戻る」だな?
- 30 名前:17 mailto:sage [2008/11/27(木) 16:42:58 ]
- >>28
ご指摘ありがとうございます。以後気をつけます。 >>29 その通りです。未熟で申し訳ありませんでした…
- 31 名前:デフォルトの名無しさん [2008/11/27(木) 18:21:12 ]
- RedHatLinux9にGCCがインストール出来ない件です。
インストールが出来なかったです。 エラーが出てしまいます。 内容を以下にコピペします。 [root@ RPMS]# rpm -ivh gcc-3.2.2-5.i386.rpm 警告: gcc-3.2.2-5.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e エラー: Failed dependencies: binutils >= 2.12.90.0.7-1 is needed by gcc-3.2.2-5 glibc-devel >= 2.2.90-12 is needed by gcc-3.2.2-5 [root@ RPMS]# これは何を警告しているのでしょうか?
- 32 名前: mailto: [2008/11/27(木) 18:24:37 ]
- binutilsのバージョン2.12.90.0.7-1以上が必要
glibc-develも同じく2.2.90-12以上が必要 "needed by"くらい厨房でも理解できるだろ
- 33 名前:314、31 [2008/11/27(木) 18:55:37 ]
- >>32アドバイス有難うございます。2つのファイルを探してみます。
- 34 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 19:53:40 ]
- >>33
道のりかなり険しそう。 ここで iso 落としたほうが早いんじゃない? ftp://ftp.riken.go.jp/pub/Linux/redhat/archive.redhat.com/redhat/linux/
- 35 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 20:10:16 ]
- ホントにgccないのかな?
updatedb を実行し(少し時間かかる)、 locate gcc | less でそれっぽいのないか探してみたら? もしくは find / -name gcc -print でも可。
- 36 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 20:12:58 ]
- RHLだから事実だろう
- 37 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 20:44:10 ]
- ttp://ftp.kddilabs.jp/Linux/packages/fedora.legacy/redhat/9/os/i386/binutils-2.13.90.0.18-9.i386.rpm
ttp://ftp.kddilabs.jp/Linux/packages/fedora.legacy/redhat/9/os/i386/glibc-devel-2.3.2-11.9.i386.rpm
- 38 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 21:53:12 ]
- 下の宣言に対してコンパイルで警告が出るんですが
「`a[0]' の初期化は不完全です」 「初期化子のまわりのブレースを欠いています」 この警告文どうすれば消えるのでしょうか? int a[5][5]={ 8,4,3,6,6, 1,6,5,8,4, 5,4,9,1,2, 6,9,6,1,8, 7,4,1,3,5, };
- 39 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 22:14:17 ]
- int a[5][5]={
8,4,3,6,6, 1,6,5,8,4, 5,4,9,1,2, 6,9,6,1,8, 7,4,1,3,5, };
- 40 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 22:14:55 ]
- int a[5][5]={
{8,4,3,6,6}, {1,6,5,8,4}, {5,4,9,1,2}, {6,9,6,1,8}, {7,4,1,3,5}};
- 41 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 22:36:20 ]
- >>40
上手くいきました 回答、ありがとうございました。
- 42 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 22:46:55 ]
- 3行3列の行列を1オリジンにしてそいつを表示させたいんだけど、まったくうまくいかない
誰か教えてください
- 43 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 22:49:32 ]
- 1オリジンてなんですか?
- 44 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 22:52:51 ]
- >43
ぐぐれ まあ>42の言ってることは意味わからんが
- 45 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 22:53:30 ]
- >>42
うまくいかないソースくらい貼れ
- 46 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 22:53:49 ]
- a[3]って配列を宣言した時普通ならa[0], a[1], a[2]ってなるのが0オリジン
数学とかで使う普通の配列が1オリジンでa[1], a[2], a[3]ってなるやつです
- 47 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 22:53:57 ]
- 1 2 3
1 9 3 1 2 6 4 8 3 1 5 5 こんな感じだとエスパーしてみた。
- 48 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 22:55:18 ]
- >>45
#include <stdio.h> int main(void) { float a[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0},{7.0,8.0,9.0}}; int i, j; float *mp; mp = &a[0]-1; for(i=1; i<=3; i++){ for(j=1; j<=3; j++){ printf("mp[%d][%d]=%d ", i, j, mp[i][j]); } printf("\n"); } return 0; } あと行を1オリジンにするだけだと思うのだけど……まったくわからない
- 49 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 22:57:52 ]
- >>48
#define ORIGIN1(matrix, row, col) matrix[row-1][col-1]
- 50 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 22:58:30 ]
- floatを%dで吐くな
- 51 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 22:59:46 ]
- mpの型が違う。それと、得る物が少ないからお勧めしない。
Cだとサイズを変えられないし、C++ならなんでもありだからね。
- 52 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 23:00:03 ]
- >>46
根本的に勘違いしているようだが、Cは0オリジンであって、1オリジンの添字を使うことはできない。 単に表示を1オリジンにしたいだけなら添字に1加えること。
- 53 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 23:02:17 ]
- >>48
言語には言語の流儀ってものがあるからバカなこと考えずに0オリジンでやれ
- 54 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 23:05:33 ]
- 1オリジンと言うと Numerical Recipes in C を思い出すな。
FORTRAN 用の本を C 用にしたものだから 1オリジンで強引にやってた気がする。 しかもいくつかバグが・・・。 まあ内部的に0オリジンで扱って、 表示する時は必要に応じて1オリジンで表示する、 ってのがC的だな。
- 55 名前:デフォルトの名無しさん [2008/11/27(木) 23:08:05 ]
- 恣意的
- 56 名前:初心者 [2008/11/27(木) 23:14:42 ]
- C++初心者です。
現在、独習C++で勉強しています。 中級者向けの本、お勧めの本などありましたら 教えていただければ幸いです。
- 57 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 23:16:53 ]
- >>56
スレ違いです。つーか、マルチすんな。
- 58 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 23:17:46 ]
- >>49
加減算より優先順位の低い演算子等が入ってくるとおかしくなるぞ。 ((matrix)[(row)-1][(col)-1]) にしとけ。
- 59 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 00:38:01 ]
- C言語を利用してモデリングの勉強したいのでつが
何かいい本ないですかね?8月に出たロボコンの本とかどうなのかな?
|

|