検索結果 1997 件

by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 龍神録プログラミングの館で勉強中にバグが出てきました。
返信数: 9
閲覧数: 3396

Re: 龍神録プログラミングの館で勉強中にバグが出てきました。

ポインタ さんが書きました: どのようにプログラムを変えれば正しいグラフィックになりますか?
まずは、今のプログラムを提示することでしょう。質問者さんがどういうコードを書いたのか、
回答しようとする側には今のところ全くわかっていません。その状態で、「どのように変えれば」と
言われましても、何とも答えようがありません。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: -1,2,-3,4…という数列
返信数: 27
閲覧数: 8866

Re: -1,2,-3,4…という数列

みなさんがんばってコードを書かれていますが、読みやすさや修正しやすさといった点においてどうなんでしょうか。

コード:

#include <stdio.h>

#define N (100)

int main(void)
{
    int i;

    for (i = 1; i <= N; i++) {
        printf("%d\t", i * ((i % 2 == 1) ? -1 : 1));
    }
    putchar('\n');
    return 0;
}
あたりで十分な気がします。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 分からないです!至急アドバイスお願いします!
返信数: 7
閲覧数: 3147

Re: 分からないです!至急アドバイスお願いします!

metaphor さんが書きました:

コード:

			break;                //再帰終了
			x0 = x1;         //前回の計算値に置き換えて再帰処理
再帰っていう表現を使っていいものかどうか、疑問ありです。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: -1,2,-3,4…という数列
返信数: 27
閲覧数: 8866

Re: -1,2,-3,4…という数列

こんにちは さんが書きました:-1,2,-3,4,-5…
何項めまで出力したいのですか?
さておき、ロジックとしては、
1から上限の数値までループする。
ループの中で、
・その数が奇数ならば-1倍した値を出力する
・その数が偶数ならば、そのまま出力する
てな感じでいいと思います。
どなたかの回答みたいにハードコーディングするのではなくて。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: スロットマシーン 作成
返信数: 67
閲覧数: 28934

Re: スロットマシーン 作成

ゆうtyt さんが書きました:

コード:

		a=rand()%9;
		b=rand()%9;
		c=rand()%9;
a, b, cには0~8の数値が入るので、
ゆうtyt さんが書きました:

コード:

[4][1][2]
[5][9][3]
[6][8][4][/quote]

こんな結果(1が出たり9が出たりする)になることは絶対にありません。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: スタック操作について
返信数: 9
閲覧数: 3508

Re: スタック操作について

main関数の話の前に、素朴な疑問があります。
のの さんが書きました:

コード:

void init_stack(){
  sp=-1;
}
スタックポインターの初期値が-1のときに
のの さんが書きました:

コード:

int push(int x){
  if(sp<stack_size-1){
    stack[sp++] = x;
pushを行なうと、おかしなことにならないでしょうか。stack[-1]に値を代入しようとしているように見えて仕方がありません。
てか、この手の問題においてはスタックポインターの初期値はゼロ一択であるように思っています。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: TANAKA
返信数: 3
閲覧数: 1884

Re: TANAKA

ファイルから文章を読み込んで、その文章の空白の数と、改行の数を数えたいのですが、初期値0のままでうまくいきません。 どこが間違っているのでしょうか? インデント(字下げ)がグチャグチャで見づらいです。 int main(){ stdio.hなど、必要なヘッダーをインクルードしていません。 if(file == NULL) printf("開けません"); ファイルが存在しないなどのエラーが発生しても強引に先へ進んでいるのはまずいです。 while(scanf(file,"%c", &c) == 1){ 本当にscanf()の呼び出しでいいですか?
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 16進数の下位2桁を取り出す処理について
返信数: 41
閲覧数: 15094

Re: 16進数の下位2桁を取り出す処理について

sadora3 さんが書きました: 言語:C
C言語において
sadora3 さんが書きました:

コード:

void DispSimo(short* temp);
void DispSimo(long* temp);
このように同じ名前で違う型の引数を持つ関数は複数定義できないはずです。
どこかで何かが間違っているような気がします。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: オペランドと一致する演算子”=”がない
返信数: 3
閲覧数: 6514

Re: オペランドと一致する演算子”=”がない

mattun さんが書きました: 「オペランドと一致する演算子”=”はありません」とエラーが
せめて、どのソースコードの何行目でエラーが出ているかくらいは教えていただきたいところです。
エラーメッセージに書いてあるはずです。
まぁ、自分が回答できるかどうかはともかく。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: C言語わかりません
返信数: 4
閲覧数: 3392

Re: C言語わかりません

すべてのテストケースで以下の条件を満たします。 1 ≦ n ≦ 100 この条件があるにもかかわらず } while (n == 0 || n>100); としているのは、問題の趣旨に反しています。このために不正解になっているかどうかはわかりませんけど。 素直に、こんな風に書くのがよいのではないでしょうか。 #include <stdio.h> int main(void) { int n, i; do { scanf("%d", &n); } while (!(1 <= n && n <= 100)); for (i = 1; i <= 9; i++) { printf("%d%s", n...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 関数の引数にポインタを使うときの初歩的な質問
返信数: 15
閲覧数: 5271

Re: 関数の引数にポインタを使うときの初歩的な質問

ケトン さんが書きました:

コード:

void swap (int *pX,int *pY);
引数には*pX,*pYの二つ(変数の値!)があって,
ここを即値とお考えでしたらちょっと違うと思います。
int *型の値ですから、中身は変数のアドレス値です。一方、
ケトン さんが書きました: 関数を呼び出すときに

コード:

swap (&num1,&num2);
呼び出す側では、変数のアドレスという値を渡しています。
何もおかしくないと思います。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 足し算の項の入れ替え
返信数: 6
閲覧数: 3226

Re: 足し算の項の入れ替え

とりあえず同じ名称のことは意識せずにやってみた。
Rubyだと2行でできた。\(^O^)/

コード:

a = ["a", "b", "c"]
puts a.permutation(a.size).collect { |a| a.join("+") }
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: おそらく初歩の初歩だと思われますが、、、、
返信数: 4
閲覧数: 2844

Re: おそらく初歩の初歩だと思われますが、、、、

こんな感じですかね。合ってるかどうかは知らないけど。 #include <stdio.h> #include <string.h> char *mystr2cpy(char *a, char *b) { // staticがないと、関数内部のautomaticなローカル変数のアドレスを返そうと // することとなる。ところが、cは本関数を抜けた瞬間に雲散霧消してしまう。 // main関数で正しく受け取れない。 static char c[256]; // aとbを連結した結果を格納できる十分な大きさであること strcpy(c, strcat(a, b)); return c; } int ...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: externについて
返信数: 8
閲覧数: 4514

Re: externについて

akasann さんが書きました: おまけとして、AOJの問題にも取り組んでいるのですが、前のDight Numberについては解決しました。次の問題として最小公倍数の問題に取り組んでいます。次のコードに 50000000 と 30000000 を標準入力すると -14 という値が出てきます。何か別のやり方があるのでしょうか?・・・
50000000 と 30000000 をかけ算している時点で、int型で扱える数値の範囲を超えているような気がする。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: おそらく初歩の初歩だと思われますが、、、、
返信数: 4
閲覧数: 2844

Re: おそらく初歩の初歩だと思われますが、、、、

C言語彷徨い人 さんが書きました:

コード:

char mystr2cpy (*char a, *char b)
引数の書き方と戻り値の型が違う。
char *mystr2cpy (char *a, char *b)ではないですか?
C言語彷徨い人 さんが書きました:

コード:

  char c;
変数cはchar型1バイトしかないので、
C言語彷徨い人 さんが書きました:

コード:

  strcpy(c, a); 
こういう書き方はできないはず。
C言語彷徨い人 さんが書きました:

コード:

  return 0;
もともとのコードではchar型を返すことになっているのに0を返すのは不自然。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 課題で*を使って△を表示.....
返信数: 6
閲覧数: 3661

Re: 課題で*を使って△を表示.....

ネバー さんが書きました:課題で△を真ん中に表示する
真ん中ってどこですか。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 解凍・圧縮ソフト【雑談】
返信数: 7
閲覧数: 4770

Re: 解凍・圧縮ソフト【雑談】

ターボ さんが書きました: Windows7まではLhaplusを使っていたのですが、10にしたら使えなくなってしまって、
自分のところでは、Windows7から10にアップグレードした環境で全く問題なく使えています。
使えなくなった、というのは、何かエラーメッセージが出るのですか?
単に「使えなくなった」だけですと、状況が正確に把握できません。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 配列内の数字のシャッフル
返信数: 12
閲覧数: 4557

Re: 配列内の数字のシャッフル

みけCAT さんが書きました:入れ替え対象としてたまたま同じ数を選んでしまうと、「2つの数を選んで入れ替え」たことにならないのでは?
2つの数がたまたま同じであっても、いっこうにかまわないのでは?自分の解釈はそういうことです。
まあ、出題者の意図が正確にはわかりませんので、自分のような部外者があ~だこ~だ言うようなことではないのかもしれません。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 配列内の数字のシャッフル
返信数: 12
閲覧数: 4557

Re: 配列内の数字のシャッフル

manana さんが書きました: ./a.out
5 7 1 0 4 6 2 8 10 13 11 9 3
12が抜けてる。
manana さんが書きました: ./a.out
10 4 6 3 9 13 1 7 0 5 11 2 12
8が抜けてる。
manana さんが書きました: ./a.out
4 8 6 10 12 9 7 11 13 1 3 0 2
5が抜けてる。

というわけで、皆さんからのご指摘のとおり、配列の定義範囲外の領域にアクセスした結果、
おかしなことが起きたのでありましょう。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: nanの原因
返信数: 8
閲覧数: 3105

Re: nanの原因

c言語で積分するプログラムを作りましたが、sum1 [j][k]+=f1 [j][k],sum2 [j][k]+=f2 [j][k]を行った後にprintfでsum1とsum2を表示するとnanと出てきます。 とりあえず、そのグチャグチャな字下げを何とかしましょう。 printf("%f %f %d %f %d %f %f \n",p[i][j],fy[i][j],k,sum1[i][j][k],ef [j],kensa[i][j][k],sum2[i][j][k]); ここで、変数kensaの定義がないというコンパイルエラーが出ます。実行できません。 nanという結果が出てしまう(つまり、...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: %*dについて
返信数: 6
閲覧数: 2658

Re: %*dについて

あんどーなつ さんが書きました: Visual Studioでできるかはしらないです(GCC拡張仕様の可能性あり)
printfにもともと備わっている機能です。
できない処理系があったら知りたいくらいです。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: if文の条件について
返信数: 3
閲覧数: 2447

Re: if文の条件について

みけCAT さんが書きました: 従って、この条件は、a7が0と等しいとみなされる(0やヌルポインタなど)ときは真、そうでない時は偽となります。
逆のような気がするんですけどね。
0に類する場合はfalse
それ以外は全部true
じゃないんでしょうか。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 常微分方程式をルンゲクッタの式で解くプログラムについて
返信数: 1
閲覧数: 1499

Re: 常微分方程式をルンゲクッタの式で解くプログラムについて

そもそも、ルンゲクッタ法のアルゴリズム(プログラミング言語に依存しない、問題を解く手順)は
理解されているのでしょうか?
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 分割した文字列を自己参照構造体に入れて要素数をカウント
返信数: 6
閲覧数: 3547

Re: 分割した文字列を自己参照構造体に入れて要素数をカウント

素人マン さんが書きました: コードは上記のように入力したのですかエラーが出てしまいます。
何だかツッコミどころ満載のコードですね。
さておき、「何をしたときに」「何という」エラーが出るかを具体的に書いてください。話はそこから始まります。
単に「エラーが出る」と書かれても、何も説明したことになりません。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体にfscanf
返信数: 3
閲覧数: 3534

Re: 構造体にfscanf

int score[12]; int abs[12]; int exam[12]; 本当に配列でいいんですか?だとすると、 while (fscanf(fp, "%[^,],%d,%d,%d ", std[i].name, std[i].score, std[i].abs, std[i].exam) == 4) { ここで、score, abs, exam の何番目の要素に入れるかがわかりません。コンパイルエラーが出るのではないでしょうか。 printf(error:fileopen\n"); " が足りないので、コンパイルエラーが出ます。 くだんの実行結果(今は想定外でしょうけど)がちゃん...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: rewind()の使い方について
返信数: 3
閲覧数: 6764

Re: rewind()の使い方について

rewind()の使い方がいまいちわかりません。参考書によるとrewind(stdin)と書かれているのですが、ファイルの先頭に戻るとはどういうことでしょうか?・・・ 推測ですけど、その昔、磁気テープ(古っ!)を使ってデータの読み書きをしていた時代がありました。 汎用コンピューターでは今も現役なのかな。 さておき、rewindというのは「磁気テープを巻き戻して」先頭に戻るところから来ているようです。 カセットデッキ(これも古っ)にセットしたカセットテープを、巻き戻しボタンで先頭に戻すことをイメージしてみるとよいかもしれません。 rewind(stdin)は、標準入力から読んだ内容をいったんチ...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: C言語、構造体について
返信数: 6
閲覧数: 3756

Re: C言語、構造体について

インスタンスという用語をそのソースで使うのがふさわしいのかどうか、
いささか疑問に思います。
単に「変数を定義する」くらいでいいような気がしなくもありません。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 合計が一定になる乱数生成
返信数: 5
閲覧数: 3334

Re: 合計が一定になる乱数生成

STR さんが書きました: 乱数の合計が一定値になるようにしたいのですがどのように生成すればいいでしょうか。
むずかしいような気がします。
例えば、10個の合計が0という一定値になるようにしたい、とします。
このとき、「たまたま」最初の6個が全部+1だったとすると、後どうがんばっても
10個の合計を0にはできないですね。

そもそも、合計を一定値にしたい、という時点で乱数ではなくなっているような気もします。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 配列 文字列 重複 削除
返信数: 6
閲覧数: 4685

Re: 配列 文字列 重複 削除

みけCAT さんが書きました: また、sizeof(char)は1と定義されているので、要素の型とも関係ないのに掛ける意味は無いでしょう。
自分は、大いに意味があると思います。間違いなく1個1バイトの領域を必要な個数だけ動的確保している、ということを示す、という点において。

コード:

    size = 256;
    p = (char *) malloc(sizeof(char) * size);
こういう書き方をごく普通にしてました。以前Cでシステムを開発してたとき。
ま、宗教論争になりそうなのであまり深入りするのはやめときましょう。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: sleep関数をMacで使うにはどうしたら良いのですか?
返信数: 4
閲覧数: 3154

Re: sleep関数をMacで使うにはどうしたら良いのですか?

YOU TEK さんが書きました: "conflicting types for sleep" と表示され
このメッセージが出るのはビルド時ですか?実行時ですか?
処理系にすでに備わっている(と思われる)sleep関数とバッティングしていないでしょうか。
YOU TEK さんが書きました:

コード:

int sleep(unsigned long x)
        usleep(5);
sleep関数(自作)を使いたいのか、
usleep関数を使いたいのかよくわかりません。
どっちですか?
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: nkfツールのコマンドライン
返信数: 4
閲覧数: 3285

Re: nkfツールのコマンドライン

nkfを使ったことがない自分が回答するのが適切かどうかはさておき…。
http://apphy.u-fukui.ac.jp/~tajima/nkf32_install.html
ここによると、コマンドラインから使うのはnkf32だと言っています。
自己責任でトライしてみる価値はあるかな、と思います。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: ゲームの結果をファイルに結果の数だけ書き込む
返信数: 9
閲覧数: 4207

Re: ゲームの結果をファイルに結果の数だけ書き込む

ザッとこんな流れでしょうか。

コード:

書き込み用のファイルをオープンする。
以下を対戦の数だけ繰り返す。
 ・ジャンケンをする
 ・結果を判定する(勝ちor負けorあいこ)
 ・結果をファイルに書き込む
書き込み用のファイルをクローズする。
ご提示のコードではmain関数が複数見受けられます。それはまずいでしょうね。
また、FILE *型の変数に日本語を使われていますが、あまりおすすめできません。
処理系によっては日本語の変数名が使えるかもしれませんが、一般には使えないものと
思っておく方がいいと思います。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 変数について教えてください
返信数: 7
閲覧数: 3539

Re: 変数について教えてください

御魁 さんが書きました: というプログラムで、「for(i=1;i<=10;i++)のとこは何故変数を使用するのか?」という問題が出ました。
自分だったら、「じゃあ、変数を使わずに10回(一般にn回)ループするにはどうすればいいんですか?」って逆質問しますね。
「質問に対して質問で答えるな!」って怒られそうですけど。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルに書かれた式の計算について
返信数: 12
閲覧数: 7318

Re: ファイルに書かれた式の計算について

まあRPNを使うことは他の回答者さんの回答のとおりだと思います。
それにしてもむずかしい課題だな…。質問者さんのC言語のレベルがどの程度かはわかりませんが…。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 文字配列のswap関数とマクロ関数
返信数: 5
閲覧数: 3999

Re: 文字配列のswap関数とマクロ関数

みけCAT さんが書きました: 問題ないのかどうかを知りたいなら、入れ替えた後の結果を出力すればいいでしょう。
まさにそこ!デバッガーなんて七面倒くさい手段を使わずとも、入れ替えた直後にprintfするか何かして、
問題があるのかないのかなんで確認してないんだろう?って思ったしだいです。
ふつうしますよね?
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 文字配列のswap関数とマクロ関数
返信数: 5
閲覧数: 3999

Re: 文字配列のswap関数とマクロ関数

kazuki2655 さんが書きました: これにアドレス演算子を足してみると問題なくスワップされるのですがよくわかりません。
入れ替えた後の結果を出力していないので、本当に問題ないのかどうかよくわかりません。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: fgetsで文字列取得後ずれる
返信数: 10
閲覧数: 3321

Re: fgetsで文字列取得後ずれる

shosinsha さんが書きました: しかし、計算がうまく行われないときと、うまくいくときがあります。
何を入力したときにうまくいって、
何を入力したときにうまくいかないのか、
具体例を1個以上挙げてください。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 初心者です。助けてください。
返信数: 3
閲覧数: 2200

Re: 初心者です。助けてください。

自分だったらこんな風に書くかなぁ、ってことで。 #include <stdio.h> int main(void) { int i, j; for (i = 1; i <= 3; i++) { printf("%d日目\n", i); for (j = 1; j <= 3; j++) { printf("%d回目挨拶\n", j); printf("%s\n", j == 1 ? "おはよう" : j == 2 ? "こんにちは" : "こんばんは"); } } return 0; }
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: strchr関数の課題について
返信数: 2
閲覧数: 1772

Re: strchr関数の課題について

bucchus さんが書きました: "+-/*=)(@"の最初を" +-/*=)(@"などと半角スペースをあけると解決するのですが
これってアリなのでしょうか?
ダメでしょうね。
n番目の文字を「(n+1)番目の文字」として出力するのであれば、プログラムで工夫すればよいと思います。
bucchus さんが書きました: 2、文字列"+-/*=)(@"と指定文字5番目~7番目までの順番がちがう
問題文の文字列"="")""("が指定文字列と対応していません。
これは、「その文字の順番をif文とかfor文などを用い変えなさい」という
趣旨なのでしょうか?
問題文が間違っているような気がします。出題者に確認するのがよいでしょう。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 初心者です。助けてください。
返信数: 3
閲覧数: 2200

Re: 初心者です。助けてください。

パッと見ただけですが…
八つ橋 さんが書きました:

コード:

for(j=1,j<=3,j++)
ここ、カンマでいいでしょうか?
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 学校の課題なんですが、どうしてもわからないんです。誰か教えてください!
返信数: 5
閲覧数: 3016

Re: 学校の課題なんですが、どうしてもわからないんです。誰か教えてください!

いきなり0以下の値を入れたら平均値は計算できない。 そのコードを追加。 #include <stdio.h> void read_data(int *max, int *min, int *sum, int *count) { int data; while (printf("input data:"), scanf("%d", &data) == 1 && data > 0) { if (*count == 0) { *max = *min = data; } else { if (data > *max) { *max = data; } if (data < *min) { *min =...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 学校の課題なんですが、どうしてもわからないんです。誰か教えてください!
返信数: 5
閲覧数: 3016

Re: 学校の課題なんですが、どうしてもわからないんです。誰か教えてください!

ちょっとしたサンプルです。 #include <stdio.h> void read_data(int *max, int *min, int *sum, int *count) { int data; while (printf("input data:"), scanf("%d", &data) == 1 && data > 0) { if (*count == 0) { *max = *min = data; } else { if (data > *max) { *max = data; } if (data < *min) { *min = data; } } *sum += dat...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: この識別子の定義をどうすればいいか教えてください
返信数: 4
閲覧数: 2570

Re: この識別子の定義をどうすればいいか教えてください

AppleB3 さんが書きました: 本の通りコードを打ち込み、デバッグを開始したら

: error C3861: 'Cleanup': 識別子が見つかりませんでした
デバッグですか?ビルドではなくて?
C3861エラー(ググってみてください)が出ているということは、ビルドに成功しておらず、
実行ファイルが作れていないと思います。

デバッグというのは、「実行ファイルはできたけど思ったとおりに動かない」ときに、
動かない原因を突き止めてコードを修正する行為を指します。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: コマンドラインオプションD8016 エラー
返信数: 6
閲覧数: 8190

Re: コマンドラインオプションD8016 エラー

使用アプリ: Visual studio express 2015 このソフトを使ってどのようにコンパイルしているかはわかりませんが、 下記のプログラムで ”コマンドラインオプションD8016 エラー   /ZI’ と /GL' は同時に指定できません” と表示されて旨く動作しません。 このように言われているのであれば、どっちか片方だけのオプションを選択するか、あるいはどちらも選択しないかにすればいいのではないでしょうか。 ところで、提示されたコードは全体を示していますか? void str_copy( char dst[], char src[] ); この関数の実体が見当たりませんが、大...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: sort関数でエラー”識別子がみつかりません” 
返信数: 3
閲覧数: 3072

Re: sort関数でエラー”識別子がみつかりません” 

本題と関係があるかどうかはわかりませんが、何かよけいなセミコロンがあるみたいです。
constructor2016810 さんが書きました:

コード:

		for (i = 0; i < num; i++);
		for (j = i + 1;j < data_num; j++);
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列を表示したいのに整数でしか返ってこない
返信数: 2
閲覧数: 2274

Re: 文字列を表示したいのに整数でしか返ってこない

ついでに…。 for (int i = 1; i<12; i++){ if (maxkion<kion[i + 1]){ maxkion = kion[i + 1]; kion_tuki = i + 1; } せっかく[1]を基準にしたのですから、ふつうに[2]~[12]について回せばいいんじゃないですか? else if (maxkion == kion[i + 1]) { maxkion = kion[1]; kion_tuki = 1; } else if (maxkion>kion[i + 1]){ maxkion = kion[1]; kion_tuki = 1; } if文のブロッ...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列を表示したいのに整数でしか返ってこない
返信数: 2
閲覧数: 2274

Re: 文字列を表示したいのに整数でしか返ってこない

文字列を表示したい のであれば、 unsigned char hanbetu; ここの型を考え直してください。少なくともunsigned charではないはずです。 hanbetu = 'Aw'; hanbetu = 'Am'; hanbetu = 'Af'; hanbetu = 'Cw'; hanbetu = 'Cs'; hanbetu = 'Cfa'; hanbetu = 'Cfb'; hanbetu = 'Dw'; hanbetu = 'Ds'; hanbetu = 'Df'; hanbetu = 'BS'; hanbetu = 'BW'; hanbetu = 'ET'; hanbet...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: ハンドルされない例外が というエラーがでる
返信数: 5
閲覧数: 2546

Re: ハンドルされない例外が というエラーがでる

main関数に何でもかんでも詰め込んでいるのは
ちょっとどうなのかな?という気がします。
適切に関数を分ける方が、コード全体の見通しがよくなり、
修正しやすくなるのではないか、という気もします。

main関数は「あ~してこうしてああしろ」という司令塔の役目に徹して、
実際にあ~したりこうしたりああしたりするのは子どもの関数群、っていうのが
いいような気がします。試しにチャレンジしてみてはどうでしょうか。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 他人のコードが見たい!
返信数: 4
閲覧数: 2634

Re: 他人のコードが見たい!

ここのサイトの常連さん(当方は除く)のコードをごらんになると、かなり参考になるところがあると思います。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 整数リテラル0が8進リテラルであることの説明
返信数: 6
閲覧数: 3750

Re: 整数リテラル0が8進リテラルであることの説明

8進リテラルが0~7で始まる 0で始まることはわかりますが、1~7で始まるというのはよくわかりません。 0で始まって0~7「を使う」ならば、何とかわかります。 まあ、それはさておき、こんなコードを書いてみてコンパイルエラーになることで説明が付きませんか? #include <stdio.h> int main(void) { int n = 08; return 0; } こちらの環境(gcc4.9.3)では、こんなエラーが出ました。 C-Application3.c:5:13: error: invalid digit "8" in octal constant 8進数の数値には8は使えね...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 【愚問】C言語のヘッダファイルについて
返信数: 4
閲覧数: 3240

Re: 【愚問】C言語のヘッダファイルについて

helloworld さんが書きました: [stdio.h]
の内容を
[stdio.h]
に書けば良いということでしょうか?
ちょっと意味がわかりません。後の方のstdio.hというのはどこに置くことを想定されていますか?
helloworld さんが書きました: [stdio.h]の内容を
自作するプログラムの中に全部書き込んで、
[#include]なんて使わずに動かしてやるぜ‼
ということも可能でしょうか?(プログラムの行数が馬鹿みたいに長くなりそうですが…。)
原理的には可能かもしれません。が、
悪いことはいいませんから絶対にやめましょう。
先人の知恵はそのまま拝借する方がよいです。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: Debug Assertion Failed!
返信数: 4
閲覧数: 3979

Re: Debug Assertion Failed!

ちゃんと追いかけたわけではないですが…
蜜柑 さんが書きました:

コード:

	while (Input[i] != EOF) {
		for (i = 0;i < 128;i++) {
変数 i の値を上書きしているのがとても気になります。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 【解決】continueがうまくいきません
返信数: 6
閲覧数: 3580

Re: Re:解決しました!ありがとうございました!!

helloworld さんが書きました: continue
を2回使う
どこにそういう回答があったでしょうか。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: おーばー
返信数: 13
閲覧数: 4908

Re: おーばー

あえて言うならば、字下げが1文字分というのはいかにも見づらいなぁ、と思います。
まあこのあたりは宗教論争になりそうですので深く突っ込まないことにしますが、
C言語ならば4文字分あたりが適当かと個人的には思います。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列のソート
返信数: 1
閲覧数: 1310

Re: 文字列のソート

こんな感じでしょうか。適当に改変してください。 大小が判別できるので、辞書順のソートができるはずです。 #include <stdio.h> #include <string.h> void compare_string(const char *p, const char *q) { int n = strcmp(p, q); printf("%sは%s%s\n", p, q, n < 0 ? "より小さい" : n == 0 ? "と同じ" : "より大きい"); } int main(void) { char *s[] = { "abc", "AB", "abC", "AB", "ab",...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: おーばー
返信数: 13
閲覧数: 4908

Re: おーばー

>質問者さん
とりあえず、最初に行なうことは、行ないたいことを日本語で書いてみることではないかと思います。
これができれば、プログラミング言語に置き換えることができるかもしれません。
「かもしれません」というのは、日本語で書けたからといって、100%プログラミング言語に置き換えることができるとは限らないという意味です。
正しく置き換えられないとき、それをバグといいます。
一方、行ないたいことを日本語で書くことができない場合、プログラミング言語に置き換えることはおそらくできないでしょう。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 初歩の質問で恐縮です。
返信数: 3
閲覧数: 3848

Re: 初歩の質問で恐縮です。

せっかくなので、main関数に何でもかんでも押し込めない版を作ってみました。 なお、当方はVisual Studioを使っていませんので、ヘッダやscanfは標準のものを使っています。 #include <stdio.h> #include <math.h> #define OK (0) #define NG1 (1) #define NG2 (2) void get_coefficient(double *a, double *b, double *c) { printf("2次方程式 ax^2 + bx + c = 0の解を求めます\n"); printf("係数a, b, cを入力:")...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 動的確保について Ⅱ
返信数: 10
閲覧数: 4342

Re: 動的確保について Ⅱ

ついでだから、戻り値を使うバージョンを。 #include <stdio.h> #include <stdlib.h> #include <string.h> char *f(char *s) { s = malloc(sizeof(char) * 10); strcpy(s, "abcde"); printf("@@@ s=\"%s\"\n", s); return s; } int main(void) { char *s = NULL; printf("s=\"%s\"\n", s); s = f(s); printf("s=\"%s\"\n", s); return 0; }
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 動的確保について Ⅱ
返信数: 10
閲覧数: 4342

Re: 動的確保について Ⅱ

簡単に言うと、質問者さんの現状はこうなっているように見えます。 #include <stdio.h> #include <stdlib.h> #include <string.h> char *f(char *s) { s = malloc(sizeof(char) * 10); // 領域を割り当てて strcpy(s, "abcde"); // 値を突っ込むと printf("@@@ s=\"%s\"\n", s); // 関数の中では値をセットできているが… return s; } int main(void) { char *s = NULL; printf("s=\"%s\"\n",...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 動的確保について Ⅱ
返信数: 10
閲覧数: 4342

Re: 動的確保について Ⅱ

おそらく、 char **str=NULL; int i; READ_ALL(str); READ_ALLの中でstrの値を書き換えたいのであれば、strのアドレスを渡す必要があるのではないか、と思います。 ところで、本題と関係があるかどうかはわかりませんが、 char **READ_ALL(char **str) return str; READ_ALL関数は呼び出し元にchar **の値を返そうとしているのに対し、先頭で引用したmain関数において その戻り値を使っている気配がありません。つまり、今のコードではREAD_ALL関数の戻り値を捨ててしまっています。 戻り値を使わないんだったら...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 初歩の質問で恐縮です。
返信数: 3
閲覧数: 3848

Re: 初歩の質問で恐縮です。

scanf_s("%1f %1f %1f, &a, &b, &c, &x1, &x2"); カッコの中全体を""で囲っているのがまずいと思います。仮にそこを scanf_s("%1f %1f %1f", &a, &b, &c, &x1, &x2); こんな風に修正したとして、今度は、""で囲った書式文字列の中身で 1f(数字の1とアルファベットのf)となっているところは、本当は lf(アルファベットのl(エル)とf)ではないでしょうか。さらに、書式文字列では3個の数値を読みたいように書いていますが、 第2引数以降には5個の数値を読みたいように書いています。数が食い違っています。 ていうか、x...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: #defineについて
返信数: 6
閲覧数: 2793

Re: #defineについて

こんな例が適切かどうかはわかりませんが…。 カッコのあるなし(付け方含む)で結果がどういう風に違うか、よかったら確認してみてください。 意図としてはどれも 3 * 3 = 9 という計算をしたいんだけど、さて結果は? #include <stdio.h> #define A 1 + 2 #define B (1 + 2) #define C (1) + (2) #define D ((1) + (2)) int main(void) { printf("%d\n", A * A); printf("%d\n", B * B); printf("%d\n", C * C); printf("%d...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: #defineについて
返信数: 6
閲覧数: 2793

Re: #defineについて

カッコが付いてないときのデメリットは感じたことがあります。
しかし、カッコが付いているときのデメリットは感じたことがありません。自分は。
ただ、識者のかたがたには、カッコが付いていてもデメリットがあるぞ!というかたがいらっしゃるかもしれません。
その場合は、具体例を挙げてこんなデメリットがあるぞ!と説明してくださることでしょう。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 配列の配列の動的確保について
返信数: 7
閲覧数: 3092

Re: 配列の配列の動的確保について

おーばー さんが書きました:boxさんの18行目のfgets関数はwhile((no=getchar)!='EOF'||no!='\n');を短く書いたという認識でいいのでしょうか?
fgets() のリファレンスを見ていただくのがいちばん確実だと思います。
私ごときがヘタな回答をしてしまってどなたかから突っ込みが入るのがこわいですから。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 配列の配列の動的確保について
返信数: 7
閲覧数: 3092

Re: 配列の配列の動的確保について

こんな感じでしょうか。入力時、いきなりエンターキーを押すとそこで入力を終わるようにしています。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE (256) int main(void) { char **s; int i, j; s = malloc(sizeof(char *) * SIZE); if (!s) fprintf(stderr, "memory allocation error\n"), exit(1); for (i = 0; i < SIZE; i++) { char buf[S...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: char 2次元配列
返信数: 8
閲覧数: 4574

Re: char 2次元配列

かずま さんが書きました:
box さんが書きました:まあいずれにしても、前の質問では回答に納得できなかったか
回答が理解できなかったかしたので同じような質問を投げてきたんだと思います。
そんなはずはありません。投稿の時刻を見てください。
「前の質問」というのは「この質問」の 2分後です。
うわ~、細かいとこ見てますね。
けど、2つの投稿の間にはずいぶんと多くの新トピがあったように見えました。なので、てっきり前の質問への回答が理解できなかったから
同じような質問を投げてきたんだと思ってました。
まあ、どうでもいいけど。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: char 2次元配列
返信数: 8
閲覧数: 4574

Re: char 2次元配列

まあいずれにしても、前の質問では回答に納得できなかったか
回答が理解できなかったかしたので同じような質問を投げてきたんだと思います。
前の質問への回答で、どこがわかりづらかったですか?>質問者さん
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: char 2次元配列
返信数: 8
閲覧数: 4574

Re: char 2次元配列

何かどっかで見たことがある質問だなあと思ったら、
全く同じ質問を過去にしていますね。
そのときの回答(私の分を含む)では納得や理解ができなかった、
ということでしょうか?
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 一日悩んでます
返信数: 5
閲覧数: 2818

Re: 一日悩んでます

そもそも、
るーたん さんが書きました:c++です。
C++に特有な文法を使っている形跡がありません。ふつうのC言語ではないのですか?
それから、提示されたコードは思いどおりに動いているのですか?
るーたん さんが書きました:

コード:

       q = p->next; free(p); p=q;}
freeしたpに何かを代入しているのは何かおかしい気がします。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 一日悩んでます
返信数: 5
閲覧数: 2818

Re: 一日悩んでます

とりあえず、インデントをそろえてみませんか?
どこでそういうインデントの仕方を覚えましたか?
今のコードはとにかく見づらいです。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 二次元構造体配列を関数に渡す方法
返信数: 6
閲覧数: 4787

Re: 二次元構造体配列を関数に渡す方法

自分だったら、例えばこんな風に書いたりします。 main関数は全体の司令塔に徹するという方針です。 #include <stdio.h> #define I (10) #define J (15) #define K (5) typedef struct { int a; int b[K]; } DATA; void input(DATA (*arr)[J]) { int i, j, k; for (i = 0; i < I; i++) { for (j = 0; j < J; j++) { for (k = 0; k < K; k++) { arr[i][j].b[k] = k; } } }...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 二次元構造体配列を関数に渡す方法
返信数: 6
閲覧数: 4787

Re: 二次元構造体配列を関数に渡す方法

このプログラムでのteststrは二次元配列なので、sumに渡す引数は(*a)[10][15]となると考えてしまいます。 実際にこうすると動作を停止してしまうのですが、(*a)[15]とするのはなぜなのか教えていただけませんか? (*a)[10][15] と書くと、「要素数15の配列を要素とする要素数10の配列へのポインター」という意味になります。 いわゆる3次元配列を使うのであれば、それでよいかもしれません。今回は違うので、そうは書けません。 どうしても[10][15]を書きたければ、 a[10][15] と書けばよいでしょう。 また、いちばん左の要素数(今回は10)は省略できるので、 a...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 二次元構造体配列を関数に渡す方法
返信数: 6
閲覧数: 4787

Re: 二次元構造体配列を関数に渡す方法

合計を求める関数の引数を、「要素数15の配列へのポインター」にする。 構造体定義をプロトタイプ宣言の前に移動させる。 プロトタイプ宣言での関数名と実際の関数名を一致させる。 #include <stdio.h> struct test { int a; int b[5]; }; int sum(struct test (*a)[15]); int main(void) { struct test teststr[10][15]; int i,j,k; //0~4を代入 for(i=0;i<10;i++) { for(k=0;k<15;k++) { for(j=0;j<5;j++) { test...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: sinグラフ
返信数: 3
閲覧数: 2652

Re: sinグラフ

匿名希望 さんが書きました: 2つの角度を入力し、その間を10 度刻みに変えて、sin関数のグラフをかけ。
2つの角度の差が10度未満だったらどうすんだ?なんて。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列から文字列を探索
返信数: 10
閲覧数: 3964

Re: 文字列から文字列を探索

けろけろ さんが書きました: どうやるのですか??
くだんの例ならば、探したい文字列"CDE"は3文字なので、
探されたい文字列"ABCDE"について、
1)0~2文字目の3文字を取得する。"ABC"を取得できる。"CDE"とは等しくない。
2)1~3文字目の3文字を取得する。"BCD"を取得できる。"CDE"とは等しくない。
3)2~4文字目の3文字を取得する。"CDE"を取得できる。"CDE"と等しい。探索終了。
てな具合に、探されたい文字列のすべて(今回だと0~4文字目)をすべてカバーできるような
繰り返しを実行すれば、見つかるか見つからないかのいずれかがわかるはずです。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: チェイン法を使ったハッシュのプログラム
返信数: 3
閲覧数: 6388

Re: チェイン法を使ったハッシュのプログラム

クォーク さんが書きました:

コード:

	p->key = a;
おそらく、

コード:

        strcpy(p->key, a);
とすれば、少なくともコンパイルは通ると思います。
ただし、思ったとおりに動くかどうかはわかりません。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: うまく認識されない
返信数: 2
閲覧数: 1653

Re: うまく認識されない

YGKR さんが書きました:

コード:

	scanf("%s", &ID_Name);
ここの & は不要です。
YGKR さんが書きました:

コード:

		fgets(ID_Date, 32, DateBase);
fgets()で読んだ内容の末尾には'\n'がくっついています。取り除いておくのが適切だと思います。その上で、
YGKR さんが書きました:

コード:

		if (ID_Name == ID_Date)break;//ループから抜ける
文字列同士の比較をする際は、strcmp()を使うのが適切だと思います。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 線形リストを用いた商品注文プログラム
返信数: 12
閲覧数: 4712

Re: 線形リストを用いた商品注文プログラム

課題を今日中に提出しなければならない ということであれば、採点者が読みやすいよう、せめてインデントくらいはそろえましょう。 以下が自分が作ったプログラムです。 int one_price;//商品の単価 int number_item;//何個注文されたか int number_prices;//合計金額(商品の単価×何個注文されたか) 合計金額は単価と個数から計算できるはずなので、独立したメンバーとして持つ必要があるかどうかは疑問があります。 return(new);//fprintf( stderr, "Check\n" )で確認したところ問題ありそう? fprintf( stderr,...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: charの2次元配列
返信数: 4
閲覧数: 2629

Re: charの2次元配列

ちゅりー さんが書きました: 終端って、最初と最後ってことですか?
終端とは、文字どおり、終わりのことです。
C言語において、例えば
"abc"
という文字列を格納するために必要な領域は
'a', 'b', 'c'
に加えて、
'\0'
の分が必要です。つまり、'a', 'b', 'c', '\0'の4バイトの領域が必要です。

今回の場合、
"名古屋"
"新大阪"
をシフトJISコードで扱うとすると、1文字あたり2バイトが必要ですので、
2 × 3 = 6
と終端の'\0'とを合わせた7バイト以上の領域が必要、ということです。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: charの2次元配列
返信数: 4
閲覧数: 2629

Re: charの2次元配列

#include <stdio.h> int main(void) { /* * 1個目の[]の中は5って書いてもいいけど、省略できる。 * コンピューターに数えさせるのが無難だと思う。 * 2個目の[]の中は省略できない。いちばん長い要素である"名古屋", "新大阪"が * 十分に格納できる(終端の'\0'の分を含めて)7以上の値が必要。 */ char name[][7] = { "東京", "名古屋", "新大阪", "広島", "博多" }; int i, sz = sizeof(name) / sizeof(name[0]); for (i = 0; i < sz; i++) { ...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: #の配置がおかしい
返信数: 4
閲覧数: 1951

Re: Re:Re: #の配置がおかしい

よろしければif文のな中の意味をおしえていただけますか? その質問が出るということは、元のコードでは意味がわからずにif文を書いていたということですか? それはまずいですね。さておき、 if (H == 0 && W == 0) break; 高さHと幅Wが両方とも0だったら、無限ループを抜けます。 if (i == 0 || j == 0 || i == H - 1 || j == W - 1) cout << "#"; 変数iは「何行目か」つまり高さをコントロールする変数で、 変数jは「何列目か」つまり幅をコントロールする変数です。 i == 0 は、いちばん上の行のことです。 j ==...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: #の配置がおかしい
返信数: 4
閲覧数: 1951

Re: #の配置がおかしい

こんな感じ?if文の条件によけいなものが入っているのと、1つ値がずれているところを直しました。 #include <iostream> using namespace std; int main(void) { int H, W, i, j; while (1) { cin >> H >> W; if (H == 0 && W == 0) break; for (i = 0; i < H; i++) { for (j = 0; j < W; j++) { if (i == 0 || j == 0 || i == H - 1 || j == W - 1) cout << "#"; else co...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 文字列から母音を削除する方法
返信数: 5
閲覧数: 3655

Re: 文字列から母音を削除する方法

KA さんが書きました:単語を短縮するために二文字目以降の母音を削除するプログラム
仕様を確認したいので、入力例とそれに対する出力例を3個以上挙げてください。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: C言語 関数について
返信数: 11
閲覧数: 4705

Re: C言語 関数について

みけCAT さんが書きました:
box さんが書きました: いや、ならないでしょう。

コード:

data=1,3,5,7,11
oddsum=2
当方がそうなるといったのは、oddsumの結果が2になることを指しているのであって、dataの出力が
カンマ区切りであることは特に気にしていません(ていうか、カンマ区切りであろうがスペース区切りであろうがどうでもいいと思ってた)でした。

当該のコードではoddsumが2という正しくない答えになる、ということはご理解いただけますか?そっちの方が当該のコードにおける
本質的な問題だと思っています。カンマ区切りかどうかは些末な話。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: ユーザー定義でわからないところがあります
返信数: 6
閲覧数: 2887

Re: ユーザー定義でわからないところがあります

// 誕生日の入力時に年は入力しない(つまり、閏年の判定は不要な)前提 #include <stdio.h> int chk_date(int m, int d) { // 年は入力しないという前提なので、2月は29日まであるとする int days[] = { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // 月が1~12の範囲になければアウト(0を返す。1でなければ何でもいい) // 月が1~12の範囲にあっても、日が1~当該月の末日の範囲になければアウト(0を返す。1でなければ何でもいい) // 月の範囲も日の範囲も正しけれ...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: ユーザー定義でわからないところがあります
返信数: 6
閲覧数: 2887

Re: ユーザー定義でわからないところがあります

あっくん さんが書きました:1を返す、1以外を返すという理解は出来ました。ただどの値を返せばいいのかがわからないです。戻り値があるということはなにか計算が必要なのですか?だとしたらifの中には何が入るのでしょうか
正しければ1を
正しくなければ1以外の任意の値(1じゃなければ何でもよい)を
返すようにすればよいのでは?
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: C言語 小数点以下の表示
返信数: 1
閲覧数: 1351

Re: C言語 小数点以下の表示

このコードだと、少数点以下がすべて0になってしまうのですが、どうしてでしょうか? ave = (ten[i][0] + ten[i][1] + ten[i][2]) / 3; 右辺において、整数 / 整数 という演算を行なっています。 このため、結果は整数になります。小数点以下を切り捨てて、なかったことにしてしまいます。 それをdouble型の変数に代入していますので、そのdouble型の変数の小数点以下は0になります。 問題を解決するには、例えば ave = (ten[i][0] + ten[i][1] + ten[i][2]) / 3.0; としたり、 ave = (double) (t...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: printf( ) 実態はどこにあります?
返信数: 7
閲覧数: 5967

Re: printf( ) 実態はどこにあります?

ああ。GNUは見えるか…。
えいえい さんが書きました: とboxさんはおっしゃられますが、リンクの工程で標準ライブラリをくっつけているところが見れる(記録)ような
方法はあるのでしょうか?
コンパイラーによっては、コンパイル時のオプションで設定できるような気がします。できないかもしれません。
リンク時にライブラリーをくっつけるっていっても、あれですよ、単に
-l何とか
とかいう文字が見えるだけで(たぶん)、物理的にくっつけている場面が見えるわけではないですよ(たぶん)。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: C言語 関数について
返信数: 11
閲覧数: 4705

Re: C言語 関数について

Ruby教への入信のお誘いのため、同じ動きをするであろうコードをRubyで書いてみた。 def oddsum(d, n) return 0 if n < 0 total = 0 n.times { |i| total += d[i] if d[i] % 2 == 1 } total end def print_data(d, n) print "data=" n.times { |i| printf "%d%s", d[i], (i == n - 1) ? "\n" : " " } end def solve(d, n) print_data(d, n) printf "oddsum=%d\n...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: printf( ) 実態はどこにあります?
返信数: 7
閲覧数: 5967

Re: printf( ) 実態はどこにあります?

ソースコードを見せてしまうと、それを元に改変できるわけですね。 そうすると、本来の標準関数の動きとは異なる、なんちゃって標準関数(名前は同じだけど動きが微妙に異なっていたりする)が 世の中にあふれかえってしまうおそれがあるわけです。 標準関数の仕様は規定でガッチリ固まっていますので、なんちゃってが存在しては困るのです。 よって、コンパイラーを作っている企業や個人は、ソースコードを外部にさらすのではなく、 各々の標準関数のソースコード(何という言語で書いているかも我々にはわからない)をコンパイルしてできた オブジェクトコードを束ねた標準関数ライブラリーという形で公開しています。 私たちが作成する...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: printf( ) 実態はどこにあります?
返信数: 7
閲覧数: 5967

Re: printf( ) 実態はどこにあります?

printf()に限らず、標準関数のソースコードは見えません。
それらを使う側から見えるのは、ヘッダーに書いてあるプロトタイプ宣言だけです。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: C言語 関数について
返信数: 11
閲覧数: 4705

Re: C言語 関数について

ちょっとした例です。 #include <stdio.h> int oddsum(int *data, int n) { int total, i; if (n < 0) { return 0; } for (total = i = 0; i < n; i++) { if ((data[i] % 2) == 1) { total += data[i]; } } return total; } void print_data(int *data, int n) { int i; printf("data="); for (i = 0; i < n; i++) { printf("%d%c", d...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: C言語 関数について
返信数: 11
閲覧数: 4705

Re: C言語 関数について

ほんのちょっとした例です。 #include <stdio.h> int oddsum(int *data, int n) { int total, i; if (n < 0) { return 0; } for (total = i = 0; i < n; i++) { if ((data[i] % 2) == 1) { total += data[i]; } } return total; } void print_data(int *data, int n) { int i; for (i = 0; i < n; i++) { printf("%d%c", data[i], (i == ...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: C言語 関数について
返信数: 11
閲覧数: 4705

Re: C言語 関数について

bisuko9898 さんが書きました:

コード:

	int data[N] = { 1,3,5,7,11 };
	printf("data=1,3,5,7,11\n");
配列の内容が変わったら、printfの中身もそれに応じて手で変えるってことですか?
それはあまり美しい方法とはいえないですね。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: C言語 関数について
返信数: 11
閲覧数: 4705

Re: C言語 関数について

みけCAT さんが書きました: そんなわけはないでしょう。(別のファイルではなく)正しい最新のソースコードを実行するようにしてください。
いや、今のコードではそうなるのでは?
totalをdata[0]で初期化。この時点でtotalは1。
ループに入る。
先頭要素をtotalに加算。この時点でtotalは2。
そしてreturn。
みけCAT さんが書きました: data[0]が奇数かどうかにかかわらず和に含まれ、奇数の場合は二重に足されてしまう
計算が終わっていないのに関数からreturnしている
まさに、これが起きているのでは?
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: C言語 関数について
返信数: 11
閲覧数: 4705

Re: C言語 関数について

配列の中に偶数も入れとかないとテストになりません。
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: PGM画像を読み込むプログラム(セグメントエラー発生)※追加質問あり
返信数: 10
閲覧数: 4486

Re: PGM画像を読み込むプログラム(セグメントエラー発生)

画像ファイルというからには、中身はバイナリーだと思います。それを sscanf(buff,"%d %d", &img.width, &img.height); sscanf(buff, "%d", &img.brightness); こんな風にテキストファイルっぽく扱っていいのでしょうか。本当にテキストファイルならばそれでいいのかもしれませんが…。 上に挙げた変数の値はどうなっていますか?sscanfの直後にprintfを入れて確認してみてください。 return img; fclose(fp); return文の後ろに実行文が来るのはよろしくないと思います。コンパイル時に警告が出ませんでしたか?
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: サイコロの目について
返信数: 4
閲覧数: 2212

Re: サイコロの目について

直してみて実行してもまだ5が続きます。何度やっても5が続くだけです… そもそも、最初のコードはコンパイルが通らないでしょう。 コンパイルが通らない(つまり実行できない)コードを提示して、 「実行結果がおかしい」と嘆くのは矛盾しています。 #include <stdio.h> #include <time.h> #include <stdlib.h> int RollDice(void) { return rand() % 6 + 1; } int main(void) { int i; srand((unsigned) time(NULL)); for (i = 0; i < 10; i++...
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: 二次元配列にint型、char型の文字を格納する仕方の件について
返信数: 6
閲覧数: 3030

Re: 二次元配列にint型、char型の文字を格納する仕方の件について

ご自分の投稿を確認してみてください。どこからどこまでが入力で、どこからどこまでが出力なのか、 全くわかりません。 こういう内容を言いたかったのですか? 入力 出力 3 6 7 C A B J Q B A E S B B Q S E . . J C A E S B B Q A E S B B Q A E S B B Q 2 2 3 2 2 2 2 2 1 3 1 6 1 1 1 1 1 4 2 5 1 1 1 1 1 2 3 1 1 1 1 1 1 6 3 5 1 1 1 1 1 3 3 4 1 1 1 1 3 1 3 6 3 3 3 3
by box
7年前
フォーラム: C言語何でも質問掲示板
トピック: {再び}C言語 構造体 関数
返信数: 1
閲覧数: 1213

Re: {再び}C言語 構造体 関数

こんな感じ? #include <stdio.h> typedef struct scores { char name[100]; int math; int physics; int eng; } SCORE; void printscore(SCORE *st, int sz) { int i; for (i = 0; i < sz; i++) { printf("%s さんの点数\n", st[i].name); printf(" 数学: %d 点\n", st[i].math); printf(" 物理: %d 点\n", st[i].physics); printf(" 英語: %d...

詳細検索ページへ移動する