検索結果 6325 件

by みけCAT
2日前
フォーラム: C言語何でも質問掲示板
トピック: 文字コード変換
返信数: 2
閲覧数: 123

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
閲覧数: 200

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
閲覧数: 249

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
閲覧数: 249

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

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

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

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

コード:

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

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

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

コード:

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


kwziさんへ

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

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

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

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

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

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
閲覧数: 224

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

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

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

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

コード:

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

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

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

コード:

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

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

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

コード:

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

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

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

コード:

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

Re: 関数の宣言の順番

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

Re: 関数の宣言の順番

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

Re: 線形リスト

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

Re: 関数の宣言の順番

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

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

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
閲覧数: 218

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
閲覧数: 291

Re: 大文字変換

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

Re: 部分文字列の検索

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

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
閲覧数: 646

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
閲覧数: 646

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
3週間前
フォーラム: C言語何でも質問掲示板
トピック: +=と==について
返信数: 5
閲覧数: 344

Re: +=と==について

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

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

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

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

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

もしかして:GPD
gpdjapan.com

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

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

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

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

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

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

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

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

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

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
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がNULL
返信数: 16
閲覧数: 2451

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

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

コード:

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

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
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がaが追加される
返信数: 4
閲覧数: 1151

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
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: (コードレビュー)(url解析機)[雑談]
返信数: 7
閲覧数: 1356

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
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: (コードレビュー)(url解析機)[雑談]
返信数: 7
閲覧数: 1356

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

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

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

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

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
2ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力が一文字だけになってしまう
返信数: 3
閲覧数: 915

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

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

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

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

コード:

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

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

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

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

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

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

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

また、Convert_10_64関数の中に

コード:

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

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
3ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 学校の課題について
返信数: 6
閲覧数: 1124

Re: 学校の課題について

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

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

Re: 学校の課題について

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

Re: 学校の課題について

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

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

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

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

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

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

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

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

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

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

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

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
3ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: リズムゲームの判定について
返信数: 5
閲覧数: 1373

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
3ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C言語の課題演習において、scanfのスペース区切りの文字列の読み込みについて困っております。
返信数: 5
閲覧数: 1248

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
3ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C++ コンストラクター のインスタンスが引数リストと一致しません
返信数: 5
閲覧数: 1349

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

C++では文字列リテラルはconst char*型に変換され、char*型の引数に(キャストなしで)使うことはできません。
文字列を書き換える処理は無いようなので、該当の引数をconst char*型にするといいでしょう。
by みけCAT
3ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C言語のファイルの読み込みができない
返信数: 8
閲覧数: 1611

Re: C言語のファイルの読み込みができない

ファイルを読み込む際は、読み込みが成功したかを確認するべきです。 修正前 /* ファイルが終わりでない「かつ」配列を飛び出さないうちは,読み込みを続ける */ while ( ! feof(fp) && n < 10000) { fscanf(fp, "%lf %lf %lf %lf %lf\n", &(r[n]), &(z[n]),&(vr[n]),&(vz[n]),&(vphi[n])); n++; } 修正後 /* ファイルが終わりでない「かつ」配列を飛び出さない「かつ」読み込みに成功するうちは,読み込みを続ける */ while ( ! feof(fp) && n < 10000) {...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 任意のタイミング,サイズで配列を作る方法
返信数: 8
閲覧数: 1912

Re: 任意のタイミング,サイズで配列を作る方法

やっぱ、static int* a; を free(a); しちゃ、まずいだろ。 static int* a;はヌルポインタに初期化され、 freeにヌルポインタを渡した場合は何もしないと決まっているので、問題ないはずです。 また、#6ではmallocに0を渡しているようですが、malloc(0)が何を返すかは処理系定義です。 #6の例では、malloc(0)はヌルポインタではないポインタを返すタイプの処理系であり、 その返されたポインタをfreeしていないため、メモリリークの発生として検出されているようですね。 以下、 N1570 より引用 6.7.9 Initialization If ...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 任意のタイミング,サイズで配列を作る方法
返信数: 8
閲覧数: 1912

Re: 任意のタイミング,サイズで配列を作る方法

呼び出された時に、要素数nの配列を確保して破棄しない(static付けた時のように)関数を作りたいんですけど、 どうしてそのようなことがしたいのですか? ( The XY Problem の疑いがあります) #include <stdlib.h> void main(){return;} void f (int n) { static int* a; a = (int*)malloc(sizeof(int)*n); free(a); return; } このプログラムは、この質問の回答としては間違っています。 free(a);にとり、せっかく確保した配列が破棄されてしまいます。 #inclu...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 任意のタイミング,サイズで配列を作る方法
返信数: 8
閲覧数: 1912

Re: 任意のタイミング,サイズで配列を作る方法

staticでなくてよければ、gcc拡張、もしくはC99の仕様で可変長配列(VLA : Variable-Length Array)が使えます。

コード:

void main(){return;}
void f (int n)
{
	int a[n];
	return;
}
【追記】
すいません、質問をよく読んでいませんでした。
「確保して解放しない」というのが条件なのですね。
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: キャストについて
返信数: 2
閲覧数: 1368

Re: キャストについて

ポインタに対する加算は、「1」を足すとそのポインタが指す型のサイズ分先へ進む、ということになります。
今回のreadRange.Beginには既にUINT64のサイズが掛けてあるので、
pDataをUINT64*にキャストしてから足すとUINT64のサイズを二重に掛けることになり、おかしくなります。
また、標準ではvoid*に加算を行うことはできません。
そこで、1バイトのデータ型へのポインタであるUINT8*にキャストをしていますね。
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: フィボナッチ数列
返信数: 5
閲覧数: 671

Re: フィボナッチ数列

n>=2のとき、n項目を求めるにはn-1項目とn-2項目を使うので、n項目は必ずn-1項目よりも後に求まります。 従って、前に出力した項の次の項が求まった時に出力するといいでしょう。 また、いきなりreturnするのではなく、一旦結果をresultに格納して後で処理できるようにしました。 #include <stdio.h> int lastN = 0;//グローバル変数 int f(int n) //フィボナッチ数列を計算する関数 { int result; if(n == 0){//2項目を1と表示するため、return0としている result = 0; } else if(n == 1...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C言語の課題演習において、strstrを用いた文字列の比較についてのご質問です。
返信数: 10
閲覧数: 1902

Re: C言語の課題演習において、strstrを用いた文字列の比較についてのご質問です。

fgetsとsscanfを用いて、標準入力から2行の文字列を比較して一行目の文字が2行目に含まれているかどうかのプログラムを作成したいです。 「sscanfを用いて」という条件があるのですね。 うーん…返り値を作るのにでも使っておきましょうか。 #include <stdio.h> #include<string.h> int main(void){ char str[1000]; char abc[1000]; fgets(str, sizeof(str), stdin); char* lf = strchr(str, '\n'); // 改行文字を探す if (lf != NULL) *...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C言語の課題演習において、strstrを用いた文字列の比較についてのご質問です。
返信数: 10
閲覧数: 1902

Re: C言語の課題演習において、strstrを用いた文字列の比較についてのご質問です。

#2の指摘通り、sscanfの結果は使われていないので、sscanfの2行とbufの宣言は消してよさそうですね。 また、char xyzではなくchar* xyzとするべきですね。 fgetsは改行文字が入力された場合その改行文字もバッファに保存するので、 それを削除してからstrstrに渡さないとうまく検索できないという可能性があります。 #include <stdio.h> #include<string.h> int main(void){ char str[1000]; char abc[1000]; fgets(str, sizeof(str), stdin); char* lf =...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 構造体の動的配列の記述を教えてください。
返信数: 25
閲覧数: 3252

Re: 構造体の動的配列の記述を教えてください。

ワド さんが書きました:
4ヶ月前
C言語初心者です。
あたっしゅ さんが書きました:
4ヶ月前
C++ 17 で確認。
うーん…まあ、C言語初心者だからといってC言語を使っているとは限らない、
むしろ初心者だからC言語を使うのを避けるという可能性もあるからなあ…
ただ、C++ならmalloc/freeではなくnew/deleteやstd::vectorを使うべきではないかなあ…?
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 構造体の動的配列の記述を教えてください。
返信数: 25
閲覧数: 3252

Re: 構造体の動的配列の記述を教えてください。

nums[0].valueに入れている0についても最大値や最小値を求める対象としているため、 全て正の数を入力した時にはmin = 0となってしまいます。 また、全て負の数を入力したときにはmax = 0となってしまいます。 これを回避するには、例えばnums[0].valueにはINT_MIN (limits.hで定義) を入れておき、 &nums[0]ではなくnums[0].biggerから最大値や最小値の探索を始める、という方法が考えられます。 ただし、この場合引数を与えずに実行した時にNULLをデリファレンスしてエラーになる可能性があるので、 このケースへは別途対処するべきでしょう。 ...
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 構造体の動的配列の記述を教えてください。
返信数: 25
閲覧数: 3252

Re: 構造体の動的配列の記述を教えてください。

Meta3 さんが書きました:
4ヶ月前
読みやすくして
掲示板の不親切設計によって[​/i]が無いのにも関わらず[​i]が斜体を表すタグとして解釈され、消えています。
その消えたままのコードを使用しているため、不正なコードになっています。
codeタグを使わずに貼り付けられたコードは、表示された本文から直接コピペするのではなく、
引用ボタンを押して引用投稿用のフォームからコピペするといいでしょう。
by みけCAT
4ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 構造体の動的配列の記述を教えてください。
返信数: 25
閲覧数: 3252

Re: 構造体の動的配列の記述を教えてください。

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、 BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただける と、 見やすくてありがたいです。 []で囲まれていないcodeや/codeは、codeタグではありません。 参考書に書いてあるコードを書いていたのですが、配列に不定定数を入れる部分でエラーが出ており、これの直し方がわかりません。 これは可変長配列(Variable-Length Array)といい、C99では必ず認められ、C11ではオプションの仕様です。 したがって、対応するコンパイラ(gccなど)をC99モード(gccなら-std=c...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: fgetsとsscanfで複数の数字を読み込みたいです。
返信数: 5
閲覧数: 1778

Re: fgetsとsscanfで複数の数字を読み込みたいです。

書式%nを使うとそこまでに読み込んだバイト数を取得できるので、 これを用いて読み込む位置をずらしていくといいでしょう。 #include <stdio.h> int main(void){ char str[1000]; int n; int m; int i; char* p; fgets(str, sizeof(str), stdin); sscanf(str, "%d", &n); fgets(str, sizeof(str), stdin); p = str; for (i = 0; i < n; i++) { int len; if (sscanf(p, "%d%n", &m, &l...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 2次元配列の累乗について
返信数: 16
閲覧数: 2177

Re: 2次元配列の累乗について

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、 BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただける と、 見やすくてありがたいです。 提示されたコードでは、aおよびbが宣言なしで使用されているため、コンパイルエラーになりますね。 以下のような手順で処理を行うといいでしょう。 ただし、擬似コード中の配列の添字は0から始まり、ループの範囲は両端を含むものとします。 xとyを読み込む y行x列の配列を確保する for jを0からx-1までループ 配列の0行j列目の値を(x-j)にする next for iを1から(y-1)までループ for...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: gccの64bit環境コンパイルでlong型を4バイトにしてくれる方法
返信数: 2
閲覧数: 1509

Re: gccの64bit環境コンパイルでlong型を4バイトにしてくれる方法

どうしてもlong型を使わないといけないのですか?
int32_t型に置き換えるなどではいけないのですか?
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: エンターで処理を進める方法
返信数: 2
閲覧数: 1466

Re: エンターで処理を進める方法

エンター(改行文字)が入力されるまで次に進まないようにすればいいでしょう。 #include <stdio.h> #include <stdlib.h> /* exit()用 */ void wait_enter(void) { int c; while ((c = getchar()) != '\n') { if (c == EOF) { puts("bye!"); exit(1); } } } void print(); char c; int main() { print(); printf("END\n"); return 0; } void print() { printf("1行目...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 二分探索木のプログラムを実装したいです
返信数: 9
閲覧数: 5549

Re: 二分探索木のプログラムを実装したいです

「32行目」で記述エラーを発見しました。 というのは再現できませんでしたが、 gccでコンパイル したところ、以下のコンパイルエラーが出ました。 (gccの-Werrorオプションを用いて警告もエラー扱いにしました) ロジックはチェックしていません。 2行目:あってはいけない位置に全角スペースがある (消すべき) 42行目:ifが無いのにelseがある (39~41行目を{}で囲むのを忘れた?) 45行目・74行目:ifが無いのにelseがある (代わりに} else {とするべき?) 74行目:ifが無いのにelseがある (代わりに} else {とするべき?) 82行目:代入できないも...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 二分探索木のプログラムを実装したいです
返信数: 9
閲覧数: 5549

Re: 二分探索木のプログラムを実装したいです

matcha さんが書きました:
5ヶ月前
投稿した質問を編集する方法もしりたいです
投稿した記事の右上にある鉛筆っぽいマークのボタンを押すことで編集できます。
ただし、投稿してから5分間しか編集できません。
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: Dxライブラリでランダムに画像を配置したい
返信数: 3
閲覧数: 1635

Re: Dxライブラリでランダムに画像を配置したい

標準のrand関数は、乱数の質が低い可能性があります。 DXライブラリには、 GetRand という乱数を取得する関数があります。 int image = LoadGraph(".\\Media\\a.jpg"); // ループ while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) { // 画面を初期化する ClearDrawScreen(); for (int i = 0; i < 10; i++) { int n = GetRand(640 - 1); int m = GetRand(480 - 1); D...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: vector<string> のソートの仕方 (STL)
返信数: 5
閲覧数: 1934

Re: vector<string> のソートの仕方 (STL)

足りないところを補ってみましたが、ちゃんと動きそうに思えます。 #include <iostream> #include <vector> #include <string> #include <algorithm> using std::vector; using std::string; using std::sort; int main(void) { vector<string> g_vLink1; g_vLink1.push_back("cat"); g_vLink1.push_back("dog"); g_vLink1.push_back("rabbit"); g_vLink1.p...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 教えてください(グラフの作り方)
返信数: 5
閲覧数: 1855

Re: 教えてください(グラフの作り方)

aが正の実数、qが0以上の実数で、xが実数のとき、 -2/(a*sqrt(x*x)) -2*q/(a*sqrt((x-1)*(x-1))) -pow(x-q/a, 2.0) は全て0以下 (ただしxが0, 1の時は分母が0になるので無効) ですね。 aが正、qが0のとき、 -2/(a*sqrt(x*x)) はx≠0のとき負、 -2*q/(a*sqrt((x-1)*(x-1))) はx≠1のとき0、 -pow(x-q/a, 2.0) はx≠0のとき負、x=0のとき0 なので、0, 1以外の任意の実数xについてfuncは負になります。 q=1.0/25, a=q+1のとき、q/a≒0.038であり...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 教えてください(グラフの作り方)
返信数: 5
閲覧数: 1855

Re: 教えてください(グラフの作り方)

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、 BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただける と、 見やすくてありがたいです。 ([]で囲まれていないcodeや/codeは、BBCodeのcodeタグではありません) 式を Wolfram Alphaにかけて みましたが、0になるのは複素解しか出てきませんでした。 (funcが0になる実数xは無いと推測できます) また、 const double q = 1/25; は、C言語では整数同士の除算は切り捨てられるので const double q = 0; と同じになります。 これ...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 教えてください!早急!!
返信数: 2
閲覧数: 1697

Re: 教えてください!早急!!

まずは作るものの仕様をはっきりさせましょう。 まずは入力について。 入力ファイルの「.csv」は RFC 4180 - Common Format and MIME Type for Comma-Separated Values (CSV) Files に準拠したCSVファイルですか?それとも、そのサブセットですか?もしくは、独自の形式ですか? いずれにしろ、まずはどのような入力を扱うかを決めましょう。 入力されるデータそのものについても仕様を決めないといけないでしょう。 ヘッダ行やその他無視するべき行はありますか?データの長さはどの程度までですか?書式は? 無視するべき行ではないはずなのに、...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C言語のint型の割り算
返信数: 4
閲覧数: 2028

Re: C言語のint型の割り算

コード:

    char d;
    scanf("%s",&d);
これはダメですね。
dには1文字分の領域しか無く、それは終端のナル文字で使うため、0文字までの文字列しか入力できません。
1文字以上の文字列を入力してしまうと、範囲外への書き込みを起こし、周辺のデータの破壊に繋がります。
今回の場合、dはこのあと使われていないので、
dを経由せずに直接bが指す領域に対して文字列を入力した方がいいでしょう。
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 添削お願いします
返信数: 2
閲覧数: 1640

Re: 添削お願いします

0と、「下位から連続したjビットと、他に1ビット」だけが1の数のみを出力するようになっているのに対し、
110は下位0ビットと他に2ビットが1なので、出力されないですね。
どのような出力が欲しいのかわかりませんが、素直にこれではいけないのでしょうか?

コード:

for(i=0;i<(1<<h);i++){
    aa(i,h);
}
また、コードはインデントをして構造をわかりやすくした方がいいと思います。
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 関数を作って欲しいです
返信数: 3
閲覧数: 1797

Re: 関数を作って欲しいです

あなたが「関数を作って欲しい」ということはわかりました。 質問はありますか? 課題の丸投げは禁止です。 フォーラムルール を読み、従ってください。 ちなみに、ココナラで「プログラム 作成」で検索したらこんなのがありました。 簡単なC/C++コード/実行ファイルつくります お安く早く作ります。仕様相談、レビューもできます。 | プログラミング | ココナラ C/C++のプログラム開発を承ります 業務や学校の課題でプログラム作成が必要な方どうぞ | プログラミング | ココナラ C言語やJavaのプログラミングをお手伝いします C言語やJavaでプログラミングが必要な方ぜひご相談下さい! | プロ...
by みけCAT
5ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: n個のビット列の全パターンを生成するプログラム
返信数: 1
閲覧数: 1541

Re: n個のビット列の全パターンを生成するプログラム

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

Re: Dxライブラリで模様を作りたい

こんなんで、どうでせう。 ダメですね。 if (a > MAX) { a = 0; } という処理だと、a = MAX の時はそのまま次のループに行き、R[a++]が範囲外へのアクセスになってしまいます。 if (a >= MAX) { a = 0; } とするべきでしょう。 もしくは、R[a++]をR[a]として、このif文の代わりに a = (a + 1) % MAX; とするか。 また、 SetDrawScreen(DX_SCREEN_BACK); をしていないのに ScreenFlip(); をしているのも、おかしいと思います。
by みけCAT
6ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ifかswitchか
返信数: 4
閲覧数: 2124

Re: Re:Re: ifかswitchか

出た数字をatari (-1とか?) に変える仕様だと仮定すると、以下のようにできます。 for (int r = 0; r < 5; r++) { // どの行を調べるか int bingo = 1; // その行が全部atariか? for (int c = 0; c < 5; c++) { if (b[r][c] != atari) bingo = 0; // その行にatariじゃないマスがあるか? } if (bingo) { // 全部atariだった! (atariじゃないマスが無かった!) printf("おめでとう!%d行目がビンゴです!", r); } } for (int...
by みけCAT
6ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: DxLibでの開発について
返信数: 6
閲覧数: 2321

Re: DxLibでの開発について

ブロックの描写位置がループ変数に依存しなくなってしまいましたね。
なぜそのように変更したのでしょうか?
by みけCAT
6ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ifかswitchか
返信数: 4
閲覧数: 2124

Re: ifかswitchか

この後、生成した乱数とビンゴカードの数がアタリかどうかを判定し、『アタリ』『ハズレ』と表示するソースを書きたいのですが、このときif文を繰り返しで行うのと、switch文で書くのとどちらが良いでしょうか? ifを 繰り返す のがいいでしょう。 すなわち、ビンゴカード全体について判定を行い、どれかが一致すればアタリとするのが一般的でしょう。 for (n = 0; n <= 100; n++) { x = rand() % (n + 1); printf("抽選 %2d回目:%3d", n, x); int atari = 0; /* 当たったか */ /* カード全体に対し判定を行う *? ...
by みけCAT
6ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: DxLibでの開発について
返信数: 6
閲覧数: 2321

Re: DxLibでの開発について

エラーの原因は、初期値 PositionY = 0 ではループ条件 PositionY >= 700 が真にならないことですね。
条件は PositionY <= 700 の間違いではないでしょうか?

また、この条件を直しても、画像が2×701枚全部一気に描画され、モーションにはならないでしょう。
モーションにするには、1回描画するごとにウェイトと画面クリアを入れるといいでしょう。
(本当は描画位置を状態として管理し、1フレームごとにメインループに戻すべきですが、
この段階ではメインループが無いようなので…)
by みけCAT
6ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: Segmentation fault: 11の原因
返信数: 5
閲覧数: 2209

Re: Segmentation fault: 11の原因

fg->g[i][j]<=γ

という条件がおかしいですね。
緑を2回比較してしまっています。
正しくは

fg->b[i][j]<=γ

でしょう。
by みけCAT
6ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: Segmentation fault: 11の原因
返信数: 5
閲覧数: 2209

Re: Segmentation fault: 11の原因

ループ条件のwidthとheightが逆ですね。
他の関数にも同じ間違いが見られます。
by みけCAT
6ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 複数の入力した整数値から最大・最小値の求め方
返信数: 1
閲覧数: 1721

Re: 複数の入力した整数値から最大・最小値の求め方

maxとminは個別の入力値ではなく、最初に入力した値に初期化するといいでしょう。 #include <stdio.h> int main(void) { int data, max = 0, min = 0, is_first = 1; for(; scanf("%d", &data)==1;) { if (is_first || data > max) max = data; if (is_first || data < min) min = data; is_first = 0; } if (is_first) { puts("no input"); } else { printf("%...
by みけCAT
6ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C言語 平均点の結果が0になりおかしいです。
返信数: 2
閲覧数: 1805

Re: C言語 平均点の結果が0になりおかしいです。

出力指定子%fに対してint型のデータを渡しているのが間違っていますね。
by みけCAT
6ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 関数が機能していない
返信数: 2
閲覧数: 1998

Re: 関数が機能していない

beki関数から返した結果をmain関数側で全く使わず、投げ捨てているのが間違っています。 また、beki関数の引数numおよびansの値を使わずにローカル変数のように使っていること、 およびせっかくdoubleで計算した結果をintで返しているのは不自然に思えます。 #include <stdio.h> /* 計算結果をdoubleにし、引数numとansを削除する */ double beki ( double input, int jou ); int main(void) { double real; double result; int power; int i; printf( "...
by みけCAT
6ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 参照を、このときどうつかっていいのかわかりません。
返信数: 3
閲覧数: 1853

Re: 参照を、このときどうつかっていいのかわかりません。

とりあえず、元のプログラムをできるだけ残して、修正。 コンパイルエラー になりました。 prog.cc: In constructor 'samp::samp()': prog.cc:12:31: error: invalid conversion from 'char' to 'char*' [-fpermissive] 12 | samp() { cout << "a"; s = '\0'; } | ^~~~ | | | char どのようにすれば、このプログラムはきちんと動くのでしょうか。 samp::sはポインタなので、文字'\0'ではなくポインタを代入するようにする sampのコピ...
by みけCAT
6ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 複数ある同じ条件のwhileをまとめる方法を教えてください
返信数: 1
閲覧数: 1693

Re: 複数ある同じ条件のwhileをまとめる方法を教えてください

同じ条件のwhile文を3回も使うのでまとめたいのですが、 以下のように、ループを使ってまとめることができそうですね。 //***入力された文字列を文字列、1文字ずつ、10進数、16進数それぞれに変換して表示***// #include <stdio.h> #define MAX 10 //格納上限 int main(void) { const char* headers[] = {"文字", "10進数", "10進数"}; const char* formats[] = {"%c", "%d", "%x"}; char moji[MAX] ; //文字入力 printf("文字列を入力し...
by みけCAT
6ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 多次元配列に一次元配列を代入する
返信数: 6
閲覧数: 2271

Re: 多次元配列に一次元配列を代入する

判断、というのはif文を使えば良いのでしょうか? 効率は落ちますが、if文を使ってもいいです。 int main(void) { int b[5][5]; int a[25] = {0}; int i, j, m; for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { for (m = 0; m < 25; m++) { /* i,j,mの値からして、a[m]をb[i][j]に格納するべきか? (仮で全て偽) */ if (0) { /* もし格納するべきなら、格納する */ b[i][j] = a[m]; } } } } return 0;...
by みけCAT
6ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 多次元配列に一次元配列を代入する
返信数: 6
閲覧数: 2271

Re: 多次元配列に一次元配列を代入する

「aの要素」を代入したい場合は int main(void) { int b[5][5]; int a[25] = {0}; int i, j; /* #2 の (1) */ for (i = 0; i < 25; i++) { /* iに基づき、a[i]をbのどこに格納するかを求める (仮で(0, 0)) */ int y = 0; int x = 0; /* そこに格納する */ b[y][x] = a[i]; } /* #2 の (2) */ for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { /* (i, j)に基づき、b[i][j]...
by みけCAT
6ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 多次元配列に一次元配列を代入する
返信数: 6
閲覧数: 2271

Re: 多次元配列に一次元配列を代入する

5×5の多次元配列bの各要素に、要素数25の1次元配列aを代入するにはどうしたらよいですか? 「aの要素」ではなく「a」を代入するんですよね? #include <string.h> int main(void) { int b[5][5][25]; /* 5x5の多次元配列 (各要素はint[25]) */ int a[25] = {0}; /* 要素数25の1次元配列 */ int i, j; /* bの各要素にaを代入(コピー) */ for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { memcpy(b[i][j], a, sizeo...

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