検索結果 6367 件

by みけCAT
23時間前
フォーラム: C言語何でも質問掲示板
トピック: 平均頂点間距離
返信数: 1
閲覧数: 51

Re: 平均頂点間距離

・double length[N][N];//頂点間距離 において、未初期化のNの値が使われているため、未定義動作になります。  この行は fscanf(fp, "%d %d", &N, &M); /* ファイルからN, Mを読み込む*/ の次に移動するべきです。 ・fflush(stdin); は未定義動作になります。この後標準入力は使っていないようなので、削除するべきです。 ・fopenの返り値がNULLかどうかをチェックしていないため、ファイルオープンに失敗すると危険です。  fopenの直後にチェックを追加し、NULLだったら処理を終了するようにするといいでしょう。 ・/* 隣接行列の...
by みけCAT
2日前
フォーラム: C言語何でも質問掲示板
トピック: 配列
返信数: 2
閲覧数: 76

Re: 配列

コード:

num + i - 1
by みけCAT
2日前
フォーラム: C言語何でも質問掲示板
トピック: 配列
返信数: 1
閲覧数: 56

Re: 配列

範囲外にアクセスすることになり動作は保証されませんが、
コードゴルフ的(指定の環境で条件を満たせばOK)には

コード:

array[]={10,5}
で指定の出力が得られることがありそうですね。
https://wandbox.org/permlink/CDXodniFgukkejcv
by みけCAT
2日前
フォーラム: C言語何でも質問掲示板
トピック: 数列
返信数: 4
閲覧数: 103

Re: 数列

提示されたコードは } が足りないため、そもそもコンパイルエラーになって値の入力すらできないはずです。
また、もし実行できたとしても、

コード:

sum += (1/sign);
は整数のゼロ除算なので強制終了の原因になりますね。
by みけCAT
1週間前
フォーラム: C言語何でも質問掲示板
トピック: じゃんけん
返信数: 2
閲覧数: 161

Re: じゃんけん

このコードは じゃんけん - プログラマ専用SNS ミクプラ で提示したものと大部分が同じですね。 hand_com の計算のバグが修正してあるのは素晴らしいです。 ただ、お礼を言うのが先ではないでしょうか? フォーラムルール より引用 禁止行為について 以下の行為を禁止行為として定めます。 (中略) "C言語何でも質問掲示板"でのみ適用される事項 (中略) 質問後、お礼を言わずにトピックを閉じる、または去る行為 義務行為 "C言語何でも質問掲示板"でのみ適用される事項 トピックを立て、解決した場合は「解決しました」とだけ書かず、どうやって解決したか他の人に分かるように書いて  からトピックを...
by みけCAT
1週間前
フォーラム: C言語何でも質問掲示板
トピック: じゃんけん
返信数: 2
閲覧数: 175

Re: じゃんけん

ループを使ってあいこだったら最初からやり直すようにする、というのが一つの手でしょう。 #include<stdio.h> #include<stdlib.h> #include<time.h> int main(void) { int hand_com,hand_YOU; srand(time(NULL)); for(;;) { rand(); hand_com = (rand()%(3)); printf("*** じゃんけんします***\nじゃんけんぽん!(1:グー、2:チョキ、3:パー ):"); scanf("%d",&hand_YOU); if(hand_YOU<1 || hand_...
by みけCAT
1週間前
フォーラム: C言語何でも質問掲示板
トピック: 平均と標準偏差を求める
返信数: 6
閲覧数: 211

Re: 平均と標準偏差を求める

ヒントの通り、for文の中で入力を読み込みながら和と二乗和を求めるようにするといいでしょう。 #include <stdio.h> int main(void) { int i; double wa = 0, zizyouwa = 0; for (i = 1; i <= 10; i++) { double x; if (scanf("%lf", &x) != 1) { fputs("read error\n", stderr); return 1; } wa += x; zizyouwa += x * x; } /* 平均と標準偏差を求める */ return 0; }
by みけCAT
1週間前
フォーラム: C言語何でも質問掲示板
トピック: Atcoder 実行時エラー
返信数: 3
閲覧数: 178

Re: Atcoder 実行時エラー

minの扱いが不適切です。

例えば

コード:

2 100
2
1
という入力を与えると、 m[j] < m[k] を満たす j, k の組み合わせが存在しないため、
未初期化の自動変数minの値(不定)が計算に使われ、未定義動作になります。
例えば、minの初期値がたまたま0だった場合、
整数のゼロ除算により強制終了(ランタイムエラー)になるかもしれません。

どんな入力が来ても、sum の計算の前に m_i の最小値が min に入るよう、
プログラムを修正するといいと思います。
by みけCAT
1週間前
フォーラム: C言語何でも質問掲示板
トピック: 平均と標準偏差を求める
返信数: 6
閲覧数: 211

Re: 平均と標準偏差を求める

配列を使わずに値をバラバラの変数に読み込むのであれば、for文の中身は空でいいでしょう。
for文は無視し、

コード:

s = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10;
のようにすれば和を求めることができます。
by みけCAT
1週間前
フォーラム: C言語何でも質問掲示板
トピック: 平均と標準偏差を求める
返信数: 6
閲覧数: 211

Re: 平均と標準偏差を求める

double 型の値を scanf で読み込むには、 %f ではなく %lf を使います。
%f は float 型の値を読み込むための書式です。
by みけCAT
1週間前
フォーラム: C言語何でも質問掲示板
トピック: ユニバーサル文字名から数値の変換
返信数: 2
閲覧数: 172

Re: ユニバーサル文字名から数値の変換

UTF-8の形式に基づいて変換をするのがいいでしょう。 UTF-8 - Wikipedia #include <cstdio> #include <string> #include <cstring> long utf8_to_int(const char* data) { if ((data[0] & 0x80) == 0x00) { return data[0]; } else if ((data[0] & 0xe0) == 0xc0) { return ((data[0] & 0x1f) << 6) | (data[1] & 0x3f); } else if ((data[0] & 0x...
by みけCAT
2週間前
フォーラム: C言語何でも質問掲示板
トピック: 標準偏差がマイナスになってしまいます
返信数: 6
閲覧数: 272

Re: 標準偏差がマイナスになってしまいます

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、 BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただける と、 見やすくてありがたいです。 m=sqrt(sigma*sigma); この部分ですが、2乗して平方根をとっても同じ値になりますよね。 (sigmaは負にはならないはずなので) m=sqrt(sigma); とするべきでしょう。 さらに、書式が%20.19fとなっているので、小数点以下が19桁出力されてしまいます。 32.696804のように表示するには、%.6fとするといいでしょう。 他の回答者さんたちへ この質問者さんのコードで...
by みけCAT
2週間前
フォーラム: C言語何でも質問掲示板
トピック: 評価値,整数値
返信数: 4
閲覧数: 263

Re: 評価値,整数値

ごめんなさい、間違えました。 5~8の説明においては「C言語で」と書かれているのに対し、1~4の説明では「C言語で」的なことは書かれていません。 また、この質問の他の部分にも「C言語」という条件はありません。 したがって、1~4の説明については、C言語以外も考えるのが自然だと考えられます。 実際、例えばJavaScriptでは、条件式 1 == 2 の評価値は false となり、これは0でも整数でもありません。 よって、 3.正しい。 は、「間違っているか微妙」ではなく、間違いだと確定できます。 実際、このコード console.log(1 == 2); // 1 == 2 の評価値 con...
by みけCAT
2週間前
フォーラム: C言語何でも質問掲示板
トピック: switch-case
返信数: 1
閲覧数: 185

Re: switch-case

C言語においては、 比較演算子 (==、!=、<、<=、>、>=) 、論理AND演算子(&&)、論理OR演算子(||)、論理NOT演算子(!)の評価結果は 真のとき1、偽のとき0となるので、例えば #include <stdio.h> int main(void) { int value = 42; switch (0 <= value && value < 60) { case 1: puts("D"); break; case 0: puts("Dではない"); break; } return 0; } のように書くことで #include <stdio.h> int main(void)...
by みけCAT
2週間前
フォーラム: C言語何でも質問掲示板
トピック: 評価値,整数値
返信数: 4
閲覧数: 263

Re: 評価値,整数値

2.正しい。 確かに、少なくともこれは間違いですね。 ここでの「条件式」の定義は ただし,文中の「条件式」とは,関係演算子(==, >, !=など)や論理演算子(&&, ||, !)を用いた式のこととする. となっており、すなわち「指定の演算子が使われている」というだけですね。 したがって、例えば (1 == 1) + 1.5 も(==演算子が使われているので)「条件式」であり、真とみなせますが、 その評価値は整数ではありません。 3.正しい。 これは間違っているか微妙ですね。 例えば、0.0 (1 == 2) + 0.0 や、(void*)0 1 == 2 ? malloc(1024) :...
by みけCAT
2週間前
フォーラム: C言語何でも質問掲示板
トピック: エラーコードの解決方法
返信数: 1
閲覧数: 168

Re: エラーコードの解決方法

わからないことは、まずググってみるといいと思います。
C28251 - Google 検索

例えばこれとかかな?
warning C28251: 'WinMain' に対する整合性のない注釈: このインスタンスには 注釈なし が含まれます。 - 小さい頃はエラ呼吸
(引数の型の前におまじないを書くといいかも)
by みけCAT
3週間前
フォーラム: C言語何でも質問掲示板
トピック: 文字列から数字を抽出する方法
返信数: 2
閲覧数: 279

Re: 文字列から数字を抽出する方法

1. 作るプログラムの仕様を決める

例えば、
・抽出元の文字列はどこから入力させるか?
・数字はどのくらいの範囲(大きさ)まで対応するか? (例えば4桁?9桁?18桁?もっと?負の数は?)
・認める数字の範囲は? (全角アラビア数字は?漢数字は?ローマ数字は?その他の言語での数字や数を表す言葉は?)
・「大きい順」とは?数値として見た時の大きさ?辞書順?データサイズが大きい順?
・出力はどこに、どのような書式でする?
など。

2. 決めた仕様に基づき、プログラムを作る

3. 作ったプログラムをテスト・デバッグする

というように作ればいいと思います。
by みけCAT
3週間前
フォーラム: C言語何でも質問掲示板
トピック: if文を使った組み合わせ(?)の問題です
返信数: 2
閲覧数: 268

Re: if文を使った組み合わせ(?)の問題です

1. なしの個数だけを考えた時、最大何セット作れるかを考える 2. ももの個数だけを考えた時、最大何セット作れるかを考える 3. 1と2のセット数のうち、少ない方(多くない方)が実際に作れるセット数である 4. 全部の果物の数からセットを作るのに使う果物の数を引くと、余った果物の数が求まる #include <stdio.h> int main(void) { int a,b,c,d; printf("なし> "); scanf("%d", &a); printf("もも> "); scanf("%d", &b); /* なしで何セット作れるかを求める */ c = a / 2; /* ももで...
by みけCAT
3週間前
フォーラム: C言語何でも質問掲示板
トピック: ハンドルされていない例外というエラー
返信数: 2
閲覧数: 236

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

このGameクラスでは、コンストラクタでmodeに1を代入しています。 さらに、Update関数およびRender関数では、それぞれmodeが1の時、 同じUpdate関数やRender関数を呼ぶようになっています。 そのため、Gameクラスのインスタンスを作成し、そのままUpdate関数またはRender関数を呼び出すと、 無限再帰になり、スタックオーバーフローで強制終了する可能性があります。 特に、Render関数ではRender関数の呼び出しの後に処理が続いているため、 末尾再帰最適化ができず、スタックオーバーフローになる可能性が高いと考えられます。 従って、コードを全部消さなくても、こ...
by みけCAT
3週間前
フォーラム: C言語何でも質問掲示板
トピック: ハンドルされていない例外というエラー
返信数: 2
閲覧数: 236

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

コードを全部消しましょう。 コードを全部消して、例えば #include <Windows.h> int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int ) { return 0; } みたいな状態にすれば、エラーは出なくなると思います。 (これでもエラーが出るなら、おそらく開発環境に問題があるでしょう) コードを消してエラーが出なくなったら、少しずつ消したコードを復活させていきましょう。 ある場所のコードを復活させた時にエラーが出るようになったら、そこに間違いがあるかもしれません。 (ただし、間違いは別の場所かもしれませんし、複数かもしれませ...
by みけCAT
3週間前
フォーラム: C言語何でも質問掲示板
トピック: while文
返信数: 1
閲覧数: 256

Re: while文

課題の丸投げは禁止です。 フォーラムルール を読み、従ってください。 宿題の質問は OK! でも丸投げは NG! 宿題の文章だけ書いて「誰か答え教えて下さい」は× 課題の丸投げ(問題文だけ書く事)は禁止です。 ただし上のように記載してもらえればこれは当てはまりません。 自分でどこまでやったのか、今どこが解らないのかを明確にして下さい。 さっぱり解らず、手も足も出ない時は、その事を明記の上、 勉強方法からアドバイスを受けましょう。 どうしても提出期限の関係で答えが欲しい時はその事をしっかり明記の上、 回答者さん達の理解を求めるようにしましょう。 また、解決した時は、「解決しました」とだけ言って去...
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 条件
返信数: 1
閲覧数: 320

Re: 条件

例えば以下のようにすると条件を満たします。

(1)

コード:

puts(n>0?"pos":n<0?"neg":"zero"));return 0;if(0
(2)

コード:

;
(3)

コード:

0
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 型string をdoubleに変える方法
返信数: 2
閲覧数: 370

Re: 型string をdoubleに変える方法

これはC#ですか? とりあえず Wandboxにコピペして実行を試み てみました。 結果 prog.cs(10,23): error CS0029: Cannot implicitly convert type `string' to `double' Compilation failed: 1 error(s), 0 warnings わからないことは、ググることでわかることがあります。 今後は、まずはこれを試してみるといいと思います。 C# string double 変換 - Google 検索 例えばこれが見つかりました。 文字列を数値に変換する、数値を文字列に変換する - .NET ...
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 条件
返信数: 8
閲覧数: 503

Re: 条件

確かにこういうのはコンパイラに聞くのが一番ですね。
BqXSrc - Online C Compiler & Debugging Tool - Ideone.com
出力は

コード:

ABCEF
間違いは…例えばscanf()の返り値をチェックしていないこととかでしょうか?
本当は num != 0 じゃなくて num != 1 と書きたかったとか、
num = 0 と書く実験がしたかったなどの可能性もありますし、
何が間違いかはこれだけではわかりませんね。
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: do while文について
返信数: 1
閲覧数: 373

Re: do while文について

scanfに空白文字(改行文字を含む)を無視してもらうため、%cの前に空白を入れるといいでしょう。

コード:

scanf(" %c", &input);
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: std::vector<T> のイテレータを関数の戻り値として使いたい
返信数: 2
閲覧数: 402

Re: std::vector<T> のイテレータを関数の戻り値として使いたい

よくわかっていないですが、std::vector<T>::iteratorの前にtypenameを加えるといいかもしれません.

typenameなし

typenameあり
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 新・明解 C言語 演習11-3を解けなくて困っています。
返信数: 2
閲覧数: 455

Re: 新・明解 C言語 演習11-3を解けなくて困っています。

Bullsさんへ ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、 BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただける と、 見やすくてありがたいです。 警告やノートの方は、 昔のコードに対して、 今の規格だと「何が起こるかわからない」けど、 今、昔の解釈でコンパイルできないと、困りますから、昔風の解釈で通しますが、 将来は保証しませんよ、 ぐらいみみ ? 「ループの中で代入をするというのは不自然だ。本当は比較をしたいんじゃないの?」 という意味ですね。 「いやここは代入で合ってる!」という場合は、 while ((*d++ = *s+...
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ファイル操作についてです。
返信数: 2
閲覧数: 390

Re: ファイル操作についてです。

まず、dirent構造体は使いまわしされることがあるので、 文字列へのポインタをそのまま代入するのではなく、新しい領域を確保して文字列をコピーするべきです。 そして、ファイル名としてfile_nameではなくfile_name[​i]を使用して処理をするべきです。 また、file_name[​i]にはファイル名しか含まれていないので、 ディレクトリ名を追加してあげないと対象のディレクトリではなくカレントディレクトリからファイルを読もうとしてしまいます。 さらに、下のfor文においてfile_name[cnt]は初期化されていないので、アクセスしてはいけません。 最後に、操作を続行する前にope...
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 式と演算子の問題です
返信数: 8
閲覧数: 630

Re: 式と演算子の問題です

「果物の個数の合計は100個未満」という条件があり、果物の個数は負にはならないはずなので、 果物の個数は7ビット(0~127)で表すことができます。 したがって、C言語のint型は少なくとも-32767~32767の整数を格納することができるので、 変数priceの下位1バイト(8ビット)に1個の果物の個数を、 その次の1バイトにもう1個の果物の個数を格納することができます。 3個目の果物の個数は、xに読み込んでそのまま使えばいいでしょう。 #include <stdio.h> int main(void) { int x, price = 0; printf("りんご> "); scanf(...
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 式と演算子の問題です
返信数: 8
閲覧数: 630

Re: 式と演算子の問題です

普通に果物の個数を合計すればいいと思います。 「変数宣言を追加してはならない」という条件があったのですね。考え直します。 #include <stdio.h> int main(void) { int x, number = 0, price = 0; printf("りんご> "); scanf("%d",&x); number=number+x; price=price+x*80; printf("みかん> "); scanf("%d",&x); number=number+x; price=price+x*50; printf("もも> "); scanf("%d",&x); numb...
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 1~11を表示する線形リスト
返信数: 5
閲覧数: 528

Re: 1~11を表示する線形リスト

compound literal を使うといいでしょう。 また、配列の要素は十分な数確保しないといけません。 【C言語】複合リテラル【完全解説、生存期間、注意点、構造体/配列リテラル】 | MaryCore List listdata[11]; for(int i = 0; i < 10; i++) { listdata[i] = (List){&listdata[i + 1], 1 + i}; } listdata[10] = (List){NULL, 11}; また、メンバに対し1個ずつ代入する方法もあります。 List listdata[11]; for(int i = 0; i < 1...
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 1~11を表示する線形リスト
返信数: 5
閲覧数: 528

Re: 1~11を表示する線形リスト

ループ内で p の値を更新していないですね。

p -> next を、 p = p -> next とするといいでしょう。
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 標準入力
返信数: 2
閲覧数: 379

Re: 標準入力

さらに、scanfをsscanfに、そのsscanf(元scanf)の引数中の.を,に、変えたほうが良さそうですね。
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 標準入力
返信数: 2
閲覧数: 379

Re: 標準入力

まず、全角スペースが入っているようなので、半角スペースに置き換えます。
次に、PythonではなくC言語のソースコードのようなので、拡張子を.pyから.cに変えます。
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ガウスの消去法を用いたN元一次方程式を解きたい
返信数: 3
閲覧数: 490

Re: ガウスの消去法を用いたN元一次方程式を解きたい

1. 値を読み込む前に、値を読み込むための領域を確保する 2. 正しい型のポインタをscanfに渡す べきです。 1. は、 printf("N="); scanf("%d",&N); の次に A = malloc(sizeof(*A) * N * N); b = malloc(sizeof(*b) * N); if(A == NULL || b == NULL) return 1; を追加することでできます。 2. は、 scanf("%lf",&ai+j); scanf("%lf",&b+i); をそれぞれ scanf("%lf",ai+j); scanf("%lf",b+i); とするこ...
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C#を使って西暦を和暦にするプログラム
返信数: 1
閲覧数: 386

Re: C#を使って西暦を和暦にするプログラム

テンプレートというのはよくわからないですが、
C#での西暦から和暦への変換はJapaneseCalendarクラスでできるらしいです。

西暦と和暦を変換するには?:.NET TIPS - @IT
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: if文の中身教えてください
返信数: 3
閲覧数: 480

Re: if文の中身教えてください

ポイントとなりそうなのが、

・a = 0 の場合の処理に注意!
・2進の内部表現で10進の実数をちょうど表せない場合があり、誤差に注意!

という点ですね。
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: if文の中身教えてください
返信数: 3
閲覧数: 480

Re: if文の中身教えてください

if文の中身以前の問題ですね。

・「2解を持つプログラム」とは何か?2解を持つ「か判定する」プログラム?
・scanf は関数であり、そこに代入はできない
・例にはコンマが入っているのに、書式はそれに対応していない
 (例のコンマは入力ではなく出力の可能性があるので、間違っていると断定はできない)
・個人的には、とりあえず関数の最初の { に対応する } を書いておきたい

まずは作るプログラムの仕様 (どのような入力を受け入れ、どのような場合にそれぞれどのような出力をするか)
をはっきりさせましょう。
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: データが消えてる
返信数: 4
閲覧数: 511

Re: データが消えてる

あたっしゅ さんが書きました:
1ヶ月前
朝早く目ざめたので、直してみたみみ
このコードは間違っています。
K_iの入力を読む部分が消されており、「下の入力方法に対して」という条件を満たさなくなっています。
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: データが消えてる
返信数: 4
閲覧数: 511

Re: データが消えてる

すると最後に代入したt[n][k],s[n][k]以外の値が0になります。なぜでしょうか... 最後の行で1個しか代入をしておらず(ここで複数個代入していれば、それは全部維持されるはず)、 それぞれの行の入力の前に全部の行のデータを for(j=0;j<n;j++){ t[j] = (int *)calloc(k[i],sizeof(int)); s[j] = (int *)calloc(k[i],sizeof(int)); } という部分で参照を外し、0で初期化された新しいバッファにしているからと考えられます。 ただし、最終的に全行に1要素のバッファへのポインタを代入しているのに、 2番目...
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 配列について
返信数: 9
閲覧数: 596

Re: 配列について

入力を読むようにしてみました。

コード:

#include <stdio.h>

int main(void) {
    scanf("%*s");
    puts("150と6");
    return 0;
}
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 配列について
返信数: 9
閲覧数: 596

Re: 配列について

他に条件は無いですか?

コード:

#include <stdio.h>

int main(void) {
    puts("150と6");
    return 0;
}
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 文字コード変換
返信数: 2
閲覧数: 650

Re: 文字コード変換

よかったら使ってください。 ソースコードはちゃんと字下げしましょうね。 #include <stdio.h> int main(void) { int c; printf("文字入力> "); scanf("%c", &c); printf("%c の文字コードは %d です。\n", c, c); return 0; } char*型のデータを要求するscanf()の書式%cに対し、int*型のデータを渡しているため、未定義動作になります。 また、提示された実行結果と比べ、「の」と「文字」の間のスペースが抜け、余計な「。」が入っています。 N1570 7.21.6.2 The fscanf...
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: VScode + gcc でDXライブラリの環境構築
返信数: 2
閲覧数: 667

Re: VScode + gcc でDXライブラリの環境構築

DXライブラリのファイルはどこに置いていますか?
それは、Intellisenseの設定の

コード:

"C:/8_1_0_i686_w64_posix_dwarf_rt_v6_rev0/"
や、ビルドの設定の

コード:

"-I\\8_1_0_i686_w64_posix_dwarf_rt_v6_rev0",
と合っていますか?
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 手直しをお願いします
返信数: 4
閲覧数: 791

Re: 手直しをお願いします

自分も修正してみました。 入力の最大文字数指定とエラーチェックを加えた以外、仕様は変えていないと思います。 #include<stdio.h> #include<limits.h> #define STACK_MAX 10 #define INPUT_MAX 99 char stack[STACK_MAX]; int sp=0; /*文字を左から右に1つずつプッシュし、 成功ならば1、失敗ならば0を返す関数*/ //引数は文字であり戻り値は0か1である int push(char c) { if(sp == STACK_MAX){ //スタック内がいっぱいになっている時 return 0; /...
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 手直しをお願いします
返信数: 4
閲覧数: 791

Re: 手直しをお願いします

こんな感じでどうみみ。 例えば {a} という入力において、もとのコードではOKになるのに、あたっしゅさんのコードではERRORになります。 どちらが正しい仕様かはわかりませんが。 (もしかしたら両方正しいといえるかも) さらに、ループの条件として str[ i ]!=0 を指定しているので、 そのループ内で s == '\0' となることは無いはずであり、この判定は無駄でしょう。 また、もとのコードや投稿にはそれを使うべき証拠が見当たらないのに、 環境依存のscanf_s()を使用しているというのはどうなんですかね…? また、例えば { {{{{{{{{{{(}}}}}}}}}} という入...
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: サイコロのプログラミングについて
返信数: 4
閲覧数: 776

Re: サイコロのプログラミングについて

参照魚 さんが書きました:
1ヶ月前
合計値を配列の添字にしてカウントすれば良いかと思います。

コード:

a[j] = sum;
↓
a[sum]++;
配列aの初期化も忘れずするようにしましょう。
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 手直しをお願いします
返信数: 4
閲覧数: 791

Re: 手直しをお願いします

あたっしゅ さんが書きました:
1ヶ月前
東上☆海美☆「例によって

コード:

[i]
が抜けてるみみ。
抜けてるのは[​i]ではなくcodeタグです。
誠に遺憾ながらソースコードがcodeタグで囲まれずに投稿され、表示がおかしい場合、
引用画面からコピペするのがいいでしょう。


kwziさんへ

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: サイコロのプログラミングについて
返信数: 4
閲覧数: 776

Re: サイコロのプログラミングについて

(2) (3) については、 ----------- 「合計」と「回数」の組の構造体を定義する この構造体61個の配列を用意する 配列を、合計→その要素の添字、回数→0に初期化する 1万回の記録それぞれについて、配列のうち、記録した値を添字とする要素の回数を1増やす (2) この時点で、配列のうち添字が30である要素の「回数」が、合計値が30であった回数 配列を「回数」の降順でソートする (3) 一番多かった合計値は、配列の最初の要素の「合計」および、それと「回数」が同じ要素の「合計」 それが何回あったかは、配列の最初の要素の「回数」 ----------- という手順でできるはずです。
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 識別子に利用できる記号を複数お教えください
返信数: 3
閲覧数: 731

Re: 識別子に利用できる記号を複数お教えください

それよりも、1やAのような文字が「記号」に入るかどうかの方が難しい問題かもしれないですね…
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 識別子に利用できる記号を複数お教えください
返信数: 3
閲覧数: 731

Re: 識別子に利用できる記号を複数お教えください

コンパイラによっては、全角文字も使えることがあります。 https://wandbox.org/permlink/j9v5xoCXCBvZdRDS N1570 6.4.2 Identifiers より引用 identifier: identifier-nondigit identifier identifier-nondigit identifier digit identifier-nondigit: nondigit universal-character-name other implementation-defined characters nondigit: one of _ a b...
by みけCAT
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 課題を教えてください
返信数: 1
閲覧数: 621

Re: 課題を教えてください

① intではなく、ノードを指すポインタを用意するべきです。 NODE* head; ② intではなく、ノードを指すポインタを用意するべきです。 NODE* tail; ③ 【③】はSTACK*型の変数に代入されているのに、NODE*を代入するというのは不自然ですね。 セミコロンは【③】の後にあるので不要ですが、あっても害は無いです。 (空文が増えるだけ) malloc(sizeof(*tmpstack)) ④ 正しいと思います。 ⑤ これではpop関数内でpop関数を同じ引数で呼び出す(後置インクリメントはインクリメント前の値に評価される) ので、無限再帰になってしまいます。 「ひとつ進め...
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ループと入力 - 複数の数値の合計
返信数: 5
閲覧数: 785

Re: ループと入力 - 複数の数値の合計

連続でごめんなさい。
5回ならわざわざポインタにする必要も無いですね。

コード:

for (char buf[1024], i = 0; i < 5; i++) {
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ループと入力 - 複数の数値の合計
返信数: 5
閲覧数: 785

Re: ループと入力 - 複数の数値の合計

よく考えたら、わざわざ別にcntを用意する必要は無かったです。

コード:

for (char buf[1024], *p = buf; p < buf + 5; p++) {
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ループと入力 - 複数の数値の合計
返信数: 5
閲覧数: 785

Re: ループと入力 - 複数の数値の合計

bufが使用されていますが、宣言がまだ書かれていないようですね。
例えば

コード:

for (char buf[1024], cnt[5], *p = cnt; p < cnt + 5; p++) {
とするといいでしょう。
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ループと入力 - クエリ数と複数クエリの入力
返信数: 2
閲覧数: 607

Re: ループと入力 - クエリ数と複数クエリの入力

大熊 さんが書きました:
2ヶ月前
forの後に何を入れればよいでしょうか。int a=n; a<=0+\;a++だと推測いたしましたが違いました。お教えください。
n回繰り返す場合、

コード:

for (int i = 0; i < n; i++) {
とするのが一般的でしょう。
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 関数の宣言の順番
返信数: 9
閲覧数: 1003

Re: 関数の宣言の順番

box さんが書きました:
2ヶ月前
なお、変数の定義は、その関数の最初の実行文の前にすべて
済ませておくことを強くおすすめします。
そうすれば、どんな処理系でも絶対にエラーにはなりませんので。
そんなことは無いでしょう。
存在しない型(その時点で宣言されていない型)を使ったり、予約語を変数として定義しようとしたりしたら、
エラーになる可能性があります。
また、文法上正しくても、大きい配列をローカルの自動変数で確保しようとすると、
スタックオーバーフローで落ちることもあります。
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 関数の宣言の順番
返信数: 9
閲覧数: 1003

Re: 関数の宣言の順番

03life さんが書きました:
2ヶ月前
https://atcoder.jp/contests/abc188/submissions/21978449
これです
これは別の問題に提出していますね。
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 線形リスト
返信数: 5
閲覧数: 805

Re: 線形リスト

ruohack さんが書きました:
2ヶ月前
自分が考えたときはsort_listの再帰の脱出条件としてhead==NULLの時に脱出すると制約をつけているため、headがNULLの状態の時remove_one関数が実行されないものだと思っていたのですがこれはいつ呼ばれているのかわかりますでしょうか?
remove_one関数内で head=d->next; としているので、ここでheadがNULLになる可能性がありそうですね。
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 関数の宣言の順番
返信数: 9
閲覧数: 1003

Re: 関数の宣言の順番

正解のコード
提出 #21978471 - AtCoder Beginner Contest 188
の提出は確認できましたが、不正解のコードの提出はすぐには確認できなそうです。
もしよろしければ不正解のコードの提出結果のURLを教えていただけますか?

なお、似たコード
提出 #21978422 - AtCoder Beginner Contest 188
はありましたが、これは配列の要素数が少ない値で固定になっており、ここの不正解のコードとは異なります。
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 線形リスト
返信数: 5
閲覧数: 805

Re: 線形リスト

NULLをデリファレンスしてはいけません。
・remove_one関数において、headがNULLであってもfor文の初期化 p=head->next を実行してしまう
・sort_list関数において、pがNULLであっても printf("%d\n",p->student); を実行してしまう
という問題があるので、これらを実行しないようにheadやpがNULLかどうかのチェックを追加するといいかもしれません。
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 関数について質問です。
返信数: 2
閲覧数: 619

Re: 関数について質問です。

C言語なんですが、func(double x)の関数の中にある、 f= x - cosx - N の式の定数Nに、main関数の中から数値を送ることってできますかね? 定数ならできません。 Nをグローバル変数にすると簡単でしょう。 main関数内やfuncの関数内で、 for(int N=0; N >= 10;N++)で繰り返し処理をしようとしたのですが、同じfの値が返ってきます。 Nを繰り返し処理で10回値を変えて、それぞれ異なったfの値を出力したいのですが... for(int N=0; N >= 10;N++) では、0 >= 10 が偽なので0回の繰り返しになります。 ちなみに、 f...
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 大文字変換
返信数: 3
閲覧数: 745

Re: 大文字変換

'q'をtoupperの引数にハードコードするのではなく、用意された変数cを使うといいと思います。
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 部分文字列の検索
返信数: 3
閲覧数: 686

Re: 部分文字列の検索

質問は何ですか? 以下、 フォーラムルール より 質問は具体的にする 詳しくは「回答者が困る質問例」をご覧下さい 「うまくいきません」という質問は大抵回答に困ります。 自分は今何がしたくて どう取り組んで(作ったプログラムはどれで どのようなエラーやトラブルで困っていて 自分は何が解らないのか、知りたいのか 今のCの知識はどの程度なのか この5点をしっかりと明記して下さい。 環境に依存する場合やライブラリを使っているときは 使っているOS名・コンパイラ名・ライブラリ名も明記しましょう。 コンパイルエラーの質問時は必ず最低限のエラーメッセージも書きましょう。 宿題の質問は OK! でも丸投げは ...
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 文字列の中の各文字の数
返信数: 2
閲覧数: 670

Re: 文字列の中の各文字の数

/* j = 0, 1, ... , 25 について以下を行う */ for(int j=0; j<26; j++) { /* x を'a'にjを足した値にする (ASCIIのようなアルファベットの文字コードが連続した文字コードの場合、 j番目のアルファベットになる) */ x= 'a'+j; /* 文字列の終わりまで繰り返す */ for(int i=0; str[i]!='\0'; i++) { /* もし、今見ている文字がこのループの前に決めた文字なら */ if(str[i]==x) { /* countに1を加える */ count++; } } /* もし、countが奇数なら ...
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: gets_s,fscanf,strncmpが思ったように動きません.
返信数: 10
閲覧数: 1267

Re: gets_s,fscanf,strncmpが思ったように動きません.

やはりgets_s関数を二重にしないと動かないのと、 scanf_s("%d", &a); は改行文字をストリームから除去しないので、次のgets_s関数はこの改行文字を読み込んで止まってしまいます。 ここもgets_s関数で読み込んで、sscanf_s関数で数値に変換するようにするといいでしょう。 char lineBuffer[1024]; gets_s(lineBuffer, sizeof(lineBuffer)); sscanf_s(lineBuffer, "%d", &a); 初めのfscanfでファイルに名前が保存されてないときplist[ret].nameに電話番号:が代入され...
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: gets_s,fscanf,strncmpが思ったように動きません.
返信数: 10
閲覧数: 1267

Re: gets_s,fscanf,strncmpが思ったように動きません.

box さんが書きました:
2ヶ月前
gets_s関数ってたぶん処理系独自のものだから
何とも言えないところですが、末尾の'\n'を取り除く処理が
いるのではないでしょうか。
'\n'の除去はgets_s関数側でやってくれるようなので、明示的に書く必要は無いでしょう。

gets_s, _getws_s | Microsoft Docs
gets_s then replaces the newline character with a null character ('\0') before returning the line.
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: +=と==について
返信数: 5
閲覧数: 822

Re: +=と==について

ここ(x += s[​i] == '1';)の意味を教えていただきたいです。 ==演算子は、両辺を比較し、等しければ1、等しくなければ0という結果になります。 この比較結果の値を、+=演算子によってxに加えています。 forのなかのsのあとには []がつきます。 なぜか消えていました [​/i]が無くても、[​i]は斜体タグと認識されてしまいます。 ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、 BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただける と、 見やすくてありがたいです。 ※この記事内の[​i]は、 U+200B を挟むこと...
by みけCAT
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: gets_s,fscanf,strncmpが思ったように動きません.
返信数: 10
閲覧数: 1267

Re: gets_s,fscanf,strncmpが思ったように動きません.

ファイルはソースをそのまんまコピペしましたのでアップミスはないはずです。 codeタグ に必要な[]が抜けているというミスがあります。 74 行を初めとして、エラー出まくりでみみ。 この掲示板は[​/i]が無くても[​i]が斜体タグとして解釈されてしまう不親切設計なので、 codeタグで囲まれていないコードは引用画面からコピーするべきです。 ※ここの[​i]はU+200Bを挟むことで、タグとしての解釈を回避しています ========== ビルド: 0 正常終了、0 失敗、1 更新不要、0 スキップ ========== 失敗1はやはり失敗なんですよね? 失敗1ではなく、「0 失敗、1 更新...
by みけCAT
3ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: [雑談][書籍]ゼロからの OS 自作入門
返信数: 3
閲覧数: 1329

Re: [雑談][書籍]ゼロからの OS 自作入門

あたっしゅ さんが書きました:
3ヶ月前
実は、GDP の 4GB 版を持っているので
国内総生産…?
国内総生産 - Wikipedia

もしかして:GPD
gpdjapan.com

「GDP」ならこれかな…?メモリ4GBだし
12.1W型タッチパネルコンピュータ | ガウディ
by みけCAT
3ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がNULL
返信数: 16
閲覧数: 3383

Re: マルチバイトの変換後出力がNULL

前回出力したバイト数がsに格納されているので、
bufが指す位置をその分進めて、前回書き込んだ内容の次から書き込むようにしていますね。
by みけCAT
3ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がNULL
返信数: 16
閲覧数: 3383

Re: マルチバイトの変換後出力がNULL

どうしてごみが出るのかね? 有効なデータの範囲内に終端のナル文字('\0')が無いため、 続けて無効な(範囲外で何があるかわからない)領域を読み、ナル文字の前まで出力してしまうからです。 printfはもともとの仕様? printfは少なくともC89にはあります。 The C89 Draft あとこのコードって *ae = *tempae; 普通に値を入れているっと思うだけどどうだろうか これはポインタaeが指している場所にポインタtempaeが指しているものを代入するコードですね。 aeは関数名としても使われており紛らわしいですが、ここでは引数(char*型)として解釈され、 この引数には...
by みけCAT
3ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がNULL
返信数: 16
閲覧数: 3383

Re: マルチバイトの変換後出力がNULL

ぷぷぷジューシー さんが書きました:
3ヶ月前
情報がフェイクです
何のことでしょうか?
by みけCAT
3ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がNULL
返信数: 16
閲覧数: 3383

Re: マルチバイトの変換後出力がNULL

sprintf(rhost, "%s", temphost); の部分が配列ではないかったのかっと思うci 申し訳ありません。意味がよくわかりません。 問題の部分を取り出し写したコード printf("%s\n", ae);は、文字列(ナル終端された文字の配列)へのポインタを要求する%sに対してナル終端されていない領域へのポインタを渡しているため、未定義動作になります。 よくある挙動としては、tempaeの最初の要素である「a」に続いて、ゴミが出力されることがあります。 printf("%s\n", a);は、文字列へのポインタ(char*)を要求する%sに対してchar型のデータ(可変長引...
by みけCAT
3ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がNULL
返信数: 16
閲覧数: 3383

Re: マルチバイトの変換後出力がNULL

最初から引数にNULLを与え、それを書き換えなければ、NULLのままになるでしょう。 例えば、第一引数を "http://example.com/hoge" とした場合、rpathへの代入は行われません。 どうして geturlparserfunc の呼び出し元を開示してくれなくなったのでしょうか? 指摘から逃げてもコードが勝手に改善することはないでしょう。 さらに、この部分 rpath = malloc(bmfunc_rlen); sprintf(rpath, "%s", temppath); rhost = malloc(bmfunc_rlen); sprintf(rhost, "%s",...
by みけCAT
3ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がNULL
返信数: 16
閲覧数: 3383

Re: マルチバイトの変換後出力がNULL

ぷぷぷジューシー さんが書きました:
3ヶ月前

コード:

  rhost = '\0', rpath = '\0';
ここでポインタに0を代入しています。
0をポインタに変換するとNULLになります。
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がaが追加される
返信数: 4
閲覧数: 1634

Re: マルチバイトの変換後出力がaが追加される

大量に未定義動作をしていますね。 また、定義があるlimits.hをincludeせずに MB_LEN_MAX を使っているという問題もあります。 #include <stdio.h> #include <uchar.h> #include <stdlib.h> #include <string.h> int main(void) { char32_t in[] = U"ttp://google.com"; // or "z\u00df\u6c34\U0001F34C" mbstate_t mbstate = {0}; char rpath[MB_LEN_MAX+1]; char* as = ...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がaが追加される
返信数: 4
閲覧数: 1634

Re: マルチバイトの変換後出力がaが追加される

c32rtomb | Programming Place Plus C言語編 標準ライブラリのリファレンス 注意 あくまで文字の変換なので、末尾に終端文字(U'\0') は付加されない。 文字列ではないもの(ナル終端されていない文字配列)を文字列を要求するstrcatに渡しているため、 不定である未初期化の自動変数の値の参照が発生し、未定義動作になります。 さらに、asも未初期化のままstrcatに渡されているため、未定義動作になります。 printf(" ここだよ %s\n", rpath); の前に as = calloc(MB_LEN_MAX+5, sizeof(*as)); if (...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: (コードレビュー)(url解析機)[雑談]
返信数: 7
閲覧数: 1994

Re: (コードレビュー)(url解析機)[雑談]

#2とはこれです。 int main(void) { char hostname, pathname; geturlparserfunc("", &hostname, &pathname); printf("ホスト名; %s\n", hostname); printf("パッチ名: %s\n", pathname); } これはひどいですね。 printfの%sは文字列(終端にNUL文字がある文字の配列)を指すchar*型のデータを要求するのに対し、 hostnameとpathnameはchar型です。 これは未定義動作になり、一般的な環境ではアクセス違反になる可能性が高いでしょう。 さらに、...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: (コードレビュー)(url解析機)[雑談]
返信数: 7
閲覧数: 1994

Re: (コードレビュー)(url解析機)[雑談]

まず、マルチバイト文字の変換エラーを起こすような入力ではないので、 geturlparserfunc関数内のエラーの出力は実行されません。 さらに、#2の指摘内容が修正されていないので、 printfの処理内容がバッファを抜けて出力に反映されるより前に落ちてしまい、出力がされないのでしょう。 char型は可変長引数として渡す時はintに変換されるので、printfで出力するには%d(など)を用います。 また、範囲外への書き込みを行う input[inputlen] = '\0'; も残っていますね。未定義動作です。 さらに、足し算を行っている*rhostや*rpathは初期化されていないsta...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: (コードレビュー)(url解析機)[雑談]
返信数: 7
閲覧数: 1994

Re: (コードレビュー)(url解析機)[雑談]

ホスト名とパス名をただ返すだけのプログラム 返しませんね。 まずは空文字列ではなくちゃんとURLを入力として与え、 求める結果が得られるプログラムにすることをおすすめします。 求める結果が得られずに困っているのであれば、そのような質問をすることをおすすめします。 2. 配列にした文字列をfor分でワイド文字に変換する for分ではなく、for文ですね。 2. '/"二個になったらrhostを+=で増えるようにする 3. '/"が三個以上になったらrpathを+=で増えるようにする C言語において、+=は文字列の結合ではなく数値(もしくはポインタ)の加算を行います。 文字列に文字列を結合(追加...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: (コードレビュー)(url解析機)[雑談]
返信数: 7
閲覧数: 1994

Re: (コードレビュー)(url解析機)[雑談]

int main(void) { char hostname, pathname; geturlparserfunc("", &hostname, &pathname); printf("ホスト名; %s\n", hostname); printf("パッチ名: %s\n", pathname); } これはひどいですね。 printfの%sは文字列(終端にNUL文字がある文字の配列)を指すchar*型のデータを要求するのに対し、 hostnameとpathnameはchar型です。 これは未定義動作になり、一般的な環境ではアクセス違反になる可能性が高いでしょう。 さらに、「ホスト名とパス名...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力が一文字だけになってしまう
返信数: 3
閲覧数: 1348

Re: マルチバイトの変換後出力が一文字だけになってしまう

mbrtoc32 | Programming Place Plus C言語編 標準ライブラリのリファレンス c32rtomb | Programming Place Plus C言語編 標準ライブラリのリファレンス これらは「文字」を変換する関数であるため、1文字しか変換しません。 文字列全体を変換するには、最後まで1文字すつ変換するのがいいでしょう。 また、ぷぷぷジューシーさんのコードには、他にも printf()に不適切なデータを渡している(%dはint型のデータを要求するが、渡しているmbfuncerrorはsize_t型) 配列の範囲外に書き込んでいる(outputにはsizeof(...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: for文が途中で止まってしまう
返信数: 5
閲覧数: 1690

Re: for文が途中で止まってしまう

yk230 さんが書きました:
4ヶ月前

コード:

    for(i = 0; i < 28123 + 1; i++){
        printf("%d\n", i);
        ans += i * abd[i];
    }
ここで配列の範囲外にアクセスしているので、未定義動作です。
したがって、任意の挙動が許されます。
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 総当たりプログラムでつまずいてます
返信数: 6
閲覧数: 1768

Re: 総当たりプログラムでつまずいてます

Convert_Str_10関数が間違ってますね。
まず、配列iは1要素しか無いのに、2要素目以降に書き込んでいるため、範囲外へのアクセスとなり危険です。
十分な要素数を確保してください。
次に、n *= 64;を1回ずつ余計に実行しているため、値が64倍になっています。
該当部分のyのループを0ではなく1から始めるなどするといいでしょう。
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 総当たりプログラムでつまずいてます
返信数: 6
閲覧数: 1768

Re: 総当たりプログラムでつまずいてます

スタートが「aaa(10進数だと0)」、終了が「baa(10進数だと262144)」以降だとすると、 Convert_10_64(start_num, &set64,strlen("aaa")); このようにして文字数を渡して、0から262143までは64進数変換後の文字数に応じて先頭に「a」と追加するということでしょうか? そうなると、無駄(というと語弊がありますが)な処理をしていると思うのですが、どのように対処するべきでしょうか? まず、毎回strlenを呼ぶのは無駄(運が良ければ最適化してくれるかもしれませんが、無駄な可能性)ですね。 ループ前に長さを1回取得し、それを使うといいでしょ...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 総当たりプログラムでつまずいてます
返信数: 6
閲覧数: 1768

Re: 総当たりプログラムでつまずいてます

「a」でも「aa」でも「aaa」でも「aaaaaaaaaaaaaaaaa」でも10進数にすると「0」になり、
10進数には桁数の情報は含まれません。
よって、桁数は別に保存し、64進数に変換する関数に渡すといいでしょう。

また、Convert_10_64関数の中に

コード:

	*set64 = set;
という行がありますが、これはこの関数から抜けた時点で消えるローカル変数へのポインタを代入しています。
関数から抜けた後は、このポインタは無効な場所を指しているので、デリファレンスしてはいけません。
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 規則がわからりません
返信数: 4
閲覧数: 1612

Re: 規則がわからりません

そのまんま埋め込むのが簡単でしょう。 #include <stdio.h> int main(void) { static const char* data[] = { "1234", "1243", "1324", "1342", "1432", "1423", "2134", "2143", "2314", "2341", "2431", "2413", "3214", "3241", "3124", "3142", "3412", "3421", "4231", "4213", "4321", "4312", "4132", "4123", NULL }; const char** p;...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 学校の課題について
返信数: 6
閲覧数: 1542

Re: 学校の課題について

ガウス=ザイデル法 - Wikipedia
行列の操作を多く行うようなので、行列を表す構造体を用意し、
その構造体について行列の基本演算(足し算・引き算・掛け算)を行う関数をそれぞれ用意し、
それらの関数を用いてアルゴリズムを実装するといいでしょう。
ベクトルも、n行1列の行列として扱えます。

また、まずは作るプログラムの仕様をはっきりさせるのが重要です。
まずはどのような入力(読み込む値および書式)をどこから(標準入力・コマンドライン引数・ファイル・ネットワークなど)取り、
どのような出力(書き出す値および書式)をどこへ(標準出力・ファイル・ネットワークなど)出すのかを決めましょう。
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 学校の課題について
返信数: 8
閲覧数: 1955

Re: 学校の課題について

コケ さんが書きました:
5ヶ月前
上記のようにnumを100以下に設定してもうまくいきません
まず「3435は開き直り数」という例が出ているのに、100以下というのは、探索範囲が明らかに全然足りなくてダメです。
さらに、探索する過程で、外側のループのカウンタである変数numの値を破壊してしまうのもダメです。
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 学校の課題について
返信数: 8
閲覧数: 1955

Re: 学校の課題について

「すべて見つける」ということなので、何も考えないと無限に探索しないといけません。 そこで、まず探索範囲を見積もります。 おそらく、どこかで桁数を増やせば増やすほどもとの数の方が大きくなり、 操作結果が追いつかなくなるでしょう。 当然9をいっぱい使うほうが操作結果が大きくなるため、 9を並べた数とその操作結果を調べてみます。 数 操作結果 999999999 3486784401 9999999999 3874204890 99999999999 4261625379 9を10個並べた時、もとの数の方が操作結果より大きくなりました。 よって、きちんと証明はしていませんが、10桁以下の数だけ調べれ...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: フローチャートの課題を手伝ってください
返信数: 1
閲覧数: 1341

Re: フローチャートの課題を手伝ってください

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、 BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただける と、 見やすくてありがたいです。 まず、このプログラムで使われている制御構文(プログラムに単純な「上から下」以外の動きをさせる文)は、 For - Next だけで、その他のifなどは使われていないようですね。 フローチャート-繰返し型 の記法が参考になるでしょう。 例えば 05 For i=2001 to 2004 については、変数はi、初期値は2001、終了値は2004、増分は(明示されていないが)1、となりますね。 このプログラム...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 簡易的な戦闘プログラム
返信数: 2
閲覧数: 1560

Re: 簡易的な戦闘プログラム

Kenta さんが書きました:
5ヶ月前
簡易的な戦闘プログラムをc言語を用いて以下のように実装したいです。
実装すればいいでしょう。

なお、この掲示板は質問用です。
日記が書きたいのであれば、掲示板ではなく日記に投稿することをおすすめします。
(日記は、ユーザー登録してログインしていただけると使えます)
Kenta さんが書きました:
5ヶ月前
よろしくお願いします。
何をお願いするのですか?
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: c言語に関する質問です
返信数: 2
閲覧数: 1456

Re: c言語に関する質問です

C言語はチューリング完全なので、理論上チューリングマシンでできることはなんでもできます。
(現実的にはメモリの容量などの制約を受けます)

まずは書きたい「条件を満たすまで変数を加算しつづけるプログラム(最大の試行回数は4まで)」
というのがどのようなものなのか、具体的に定義しましょう。
例えば
・「条件」とは具体的にどういうものか?どうやって決めるのか?どうやって判定するのか?
・「変数を加算」って、具体的に何に何を加算する?
・「最大の試行回数」ってあるけど、「試行」って具体的に何?
・やることは「変数を加算」するだけ?出力などはしないの?
など。
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: リズムゲームの判定について
返信数: 5
閲覧数: 1811

Re: リズムゲームの判定について

判定の後、同じ位置に重ねてa0.pngを描画しているので、
a0.pngの内容によりますが、これで隠してしまっている疑いがあります。
また、GOODの描画もMISSの描画も同じ座標に同じa2.pngを描画、というのも不自然ですね。
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 助けてください。
返信数: 2
閲覧数: 738

Re: 助けてください。

変数を静的配列の初期化に使おうとしている 変数 sum, ave, max, minを宣言せずに使っている 関数callを呼び出すときにa[]というのは間違っている (カッコが余計) *sumを計算する時にgを入れ忘れている *aveを計算する時に割る数が間違っている *maxや*minの計算に入力が反映されていない配列aの要素の値を使っている 修正版: #include<stdio.h> void call(int n, int a[], int *sum,int *ave, int *max, int *min); int b,c,d,e,f,g,n; int a[]; int main...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: リズムゲームの判定について
返信数: 5
閲覧数: 1811

Re: リズムゲームの判定について

1. GOOD / MISS を表示するための変数を用意する (ループ前に追加) enum judge_value { NONE, GOOD, MISS; }; const int JUDGE_DISPLAY_TIME = 30; // 判定を表示する時間 (フレーム数) judge_value judge = NONE; // 表示中の判定 int judge_time = 0; // 判定を表示する残り時間 (フレーム数) 2. ノーツを消す時に、判定を表示させるように状態を更新する //bar座標更新 for (int i = 0; i < LANE_SIZE; i++) { for (...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C言語の課題演習において、scanfのスペース区切りの文字列の読み込みについて困っております。
返信数: 5
閲覧数: 1736

Re: C言語の課題演習において、scanfのスペース区切りの文字列の読み込みについて困っております。

%[^\n]は入力前に空白文字を読み飛ばさないので、%dで読み込んだ後の改行で引っかかってしまいます。 %[^\n]の前に半角スペースを入れることで空白文字を読み飛ばすようにできますが、 これだと行頭に半角スペースがある場合、それも読み飛ばされてしまいます。 %dおよび%[^\n]の後に%*cを入れることで、1文字(すなわち、改行文字)を読み飛ばすことができます。 #include <stdio.h> int main(void){ int n; char str[100]; scanf("%d%*c",&n); for(int i=0;i<n;i++){ scanf("%[^\n]%*c",...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C++ コンストラクター のインスタンスが引数リストと一致しません
返信数: 5
閲覧数: 1803

Re: C++ コンストラクター のインスタンスが引数リストと一致しません

C++では文字列リテラルはconst char*型に変換され、char*型の引数に(キャストなしで)使うことはできません。
文字列を書き換える処理は無いようなので、該当の引数をconst char*型にするといいでしょう。

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