検索結果 34 件

by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 数字以外の文字をはじきたい。
返信数: 11
閲覧数: 7928

Re: 数字以外の文字をはじきたい。

かずまさん返信ありがとうございます。
コードの提示もありがとうございます。
時間が空いたら元の私のコードに取り込もうと思います。

fgetsはあまり使ったことがないですが調べて使ってみようと思います。
アドバイスありがとうございました。
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 数字以外の文字をはじきたい。
返信数: 11
閲覧数: 7928

Re: 数字以外の文字をはじきたい。

フィーロさん。かずまさん返信ありがとうございます。 フィーロさんのコードで一桁以外の数字をはじけているので参考にしたいと思います。 かずまさんのコードも二桁以上の数値を配列に渡せているのでこれもまた参考にしたいと思います。 かずまさんのコード実行例 m : display this menu r : reset stack i [data] : input data o : output data s : show stack e : exit >> m m : display this menu r : reset stack i [data] : input data o : output...
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 数字以外の文字をはじきたい。
返信数: 11
閲覧数: 7928

Re: 数字以外の文字をはじきたい。

かずまさん返信ありがとうございます。 return stack[sp]を消してみても正常に動いたので余計だったんですね・・。 %sと%c説明もわかりやすかったです。ありがとうございました。 確認したところ確かにchar t; scanf("%s", &t);では二桁以上の数字を正常には読み取ってくれませんでした。 実行するコマンドを選択肢を提示します。 r・・・スタックを初期化します。 i・・・スタックに数字を格納します。 o・・・スタック内から数字を一つ取り出します。 s・・・現在のスタック内の中身を表示します。 e・・・終了します。 それでは実行したいコマンドに対応する文字を入力してくださ...
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 数字以外の文字をはじきたい。
返信数: 11
閲覧数: 7928

Re: 数字以外の文字をはじきたい。

maruさん、かずまさん返信ありがとうございます。 push関数の返却値というのは return stack[sp]のことでしょうか。これは数値をスタックに格納したのち、その次(上)に来る数値のために用意したものです。・・と認識していますが何か間違っているでしょうか・・・? また書き忘れていたのでですがこのpush関数を呼び出す際に文字を入力してこの関数を呼び出しています。 int main(void) { char choice; printf("初期化します\n"); init_stack(); while(1){ printf("実行するコマンドを選択肢を提示します。\n"); prin...
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 数字以外の文字をはじきたい。
返信数: 11
閲覧数: 7928

数字以外の文字をはじきたい。

質問です。 現在スタックに値を入れたり出したりする課題をやっているのですが、数値をスタックに入れるときのエラー耐性で苦戦しています。 具体的にはpush関数(数値をスタックに入れる関数)に数値以外の文字が入力された時にやり直させるというものです。 #incude<stdio.h> #include<ctype.h> #define stack_max 100 int stack[stack_max]; int sp=-1; int push(int data) { if(isdigit(data)){ if(data<10){ printf("---------\n"); printf("pu...
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 整数型について
返信数: 3
閲覧数: 2068

Re: 整数型について

返信ありがとうございます。完全に凡ミスでした・・・。
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 整数型について
返信数: 3
閲覧数: 2068

整数型について

以下のようなプログラムを組んだのですが実行時にSegmation faultと出ます。 何が原因なんでしょうか・・。よろしくお願いします。 #include<stdio.h> int count_bits(unsigned x) { int bits = 0; while(x){ if(x & 1U) bits++; x >>= 1; } return bits; } int int_bits(void) { return count_bits(~0U); } void print_bits(unsigned x) { int i; for(i = int_bits() - 1; i >= 0...
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: データの追加と削除について
返信数: 17
閲覧数: 8164

Re: データの追加と削除について

配慮ありがたいです。
理解するためにも、もう一度コードを見直してみます!
最後までありがとうございました。
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: データの追加と削除について
返信数: 17
閲覧数: 8164

Re: データの追加と削除について

かずまさん、返信遅くなり申し訳ありません。
データの追加はheadやtailで追加する場所を変更できるのですね。
ソースありがとうございます。自分では思いつきませんでした・・。

またソートの関数は以前の記事で完成したので省略させていただきました。
リンク
http://dixq.net/forum/viewtopic.php?f=3&t=19436

ちなみにここでのソートは探索をするためのものを想定していたためファイルの中身自体を入れ替えるものではないです。
もしこのソート法ではうまくいかないのであれば見当違いなことを言っているとは思いますがご了承ください。
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: データの追加と削除について
返信数: 17
閲覧数: 8164

Re: データの追加と削除について

shira211さん、かずまさん返信ありがとうございます。 shira211さん、追加の関数ですが不具合を見つけたので修正中です・・。不具合というのは追加した値が最後の要素にくっついてしまうというものなんですが、かずまさんのコードを見ていたら直すべきところが分かり、それを現在修正しています。また削除の件、アドバイスありがとうございます!実践してみます。 かずまさん、ソースコードの提示ありがとうございます。訂正の件も了解です。参考にさせていただきます。あと、きれいなインデントを目指します! 今回の質問とは関係ないのですが修正した配列は最終的にソートして探索しようかと思っているので、配列の要素の位...
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: データの追加と削除について
返信数: 17
閲覧数: 8164

Re: データの追加と削除について

追加する方はなんとか形になりましたが削除する方がやはりどうしていいかわかりません・・。
調べてみたところ過去のトピックで似たようなことをやっていたのですがよくわからなかったです・・。
たぶんこれがみけCATさんがおっしゃっていたやり方に近いかなと思うのですが・・。


過去トピック 
http://dixq.net/forum/viewtopic.php?t=11000
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: データの追加と削除について
返信数: 17
閲覧数: 8164

Re: データの追加と削除について

わかりました。せっかくまとめるという方法を提示していただいいたのですが、今回は削除する関数と追加する関数、別々に分けようと思います。今回のこのコードが完成してからまとめてみる方法にも挑戦したいと思います。

なるほどファイルフォーマットはそういうことなのですか。
でしたら二番目です。
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: データの追加と削除について
返信数: 17
閲覧数: 8164

Re: データの追加と削除について

指摘ありがとうございます。修正してみます
みけCAT さんが書きました: 「ファイルからメモリにデータを全部読み込む→メモリ上のデータを修正(追加or削除)する→修正したメモリ上のデータをファイルに書き込む(上書きする)」
ということは追加する関数と削除する関数をまとめてしまえばいいのでしょうか?
またファイルフォーマットですが何分初心者なもんでよくわからないのですがどう答えたらいいんでしょうか・・
emacsで作成したファイルに数値をうちこんで作りましたとしか言えないです・・。申し訳ありません・・。
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: データの追加と削除について
返信数: 17
閲覧数: 8164

Re: データの追加と削除について

なるほど。わかっていませんでした。 コードはこれでコンパイルできると思います。 #include <stdio.h> #include <stdlib.h> #define DATA 10000 int insert(const char filename[20],int a[DATA] ) { int n; FILE *fin; if ((fin=fopen(filename,"a"))==NULL){ return -1 ; } for(n = 0; n < 1 ; n++){ fprintf(fin,"%s",a[n]); } fclose(fin); }//xをデータaに加える関数 i...
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: データの追加と削除について
返信数: 17
閲覧数: 8164

データの追加と削除について

すでにあるファイルにx(変数)を新たに加える関数と、x(変数)をファイルから削除する関数を作成せよ という問題です。 コードを途中まで作成したのですが実行結果がうまく出ません。 insertの方は追加されるのが(null)のみです。 なにが原因なのでしょうか? またdelete(削除)の方はいろいろ調べてみたものの、どうすればいいかわかりません・・。 解決策を教えてください。 #include <stdio.h> #include <stdlib.h> #define DATA 10000 int insert(const char filename[20],int a[DATA] ) {  ...
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 再帰関数呼び出しについて
返信数: 10
閲覧数: 4023

Re: 再帰関数呼び出しについて

なるほどそうだったんですね・・。
int の限界は2^31 -1と聞いたのですが実際に二分探索でオーバーフローさせるにはめちゃくちゃ多いデータを用意しなくてはならないってことなんですかね・・。二分探索、奥が深いです・・。
まあなにはともあれ勉強なりました!ありがとうございます!
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 再帰関数呼び出しについて
返信数: 10
閲覧数: 4023

Re: 再帰関数呼び出しについて

なるほど・・。
書き直しておきます!
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 再帰関数呼び出しについて
返信数: 10
閲覧数: 4023

Re: 再帰関数呼び出しについて

すみません提示するコード間違えてました。正しくは、下記のコードの変更前のものです。 紙に書くと自分が何を間違えているか確認することができました。ありがとうございます。 きちんと動作するのでこれにて解決とさせていただきます。 最終コードを載せておきます。 #include <stdio.h> #include <stdlib.h> #define DATA 10000 int fileinput(const char *filename, int a[]) { int n, x; FILE *fin = fopen(filename, "r"); if (fin == NULL) return ...
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 再帰関数呼び出しについて
返信数: 10
閲覧数: 4023

Re: 再帰関数呼び出しについて

提示されたコードと前回のトピックを参考にコードを作ってみたのですが、うまく値を探せません。何が原因なのでしょうか? 教えてください。よろしくお願いします。 #include <stdio.h>   #define DATA 10000   int fileinput(const char *filename, int a[]) {     int n, x;     FILE *fin = fopen(filename, "r");     if (fin == NULL) return -1;     for (n = 0; n <= DATA && fscanf(fin, "%d", &x...
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を使ったコードについて
返信数: 29
閲覧数: 22845

Re: 関数を使ったコードについて

ごもっともです・・。
コードは見やすくなるよう心がけます。
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 再帰関数呼び出しについて
返信数: 10
閲覧数: 4023

Re: 再帰関数呼び出しについて

Mathさん遅くなりましたが返信ありがとうございます。
http://dixq.net/forum/viewtopic.php?f=3&t=19432
こちらのトピックで参考にさせていただきました。
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を使ったコードについて
返信数: 29
閲覧数: 22845

Re: 関数を使ったコードについて

上記の書き方ではだめでした・・。
6しか見つからないのはなぜなんでしょうか・・。

コード:

探したい値を入力してください
1
見つかりませんでした
2
見つかりませんでした
3
見つかりませんでした
4
見つかりませんでした
5
見つかりませんでした
6
x = 6 --> 2
0
見つかりませんでした
43
見つかりませんでした
123
見つかりませんでした

by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を使ったコードについて
返信数: 29
閲覧数: 22845

Re: 関数を使ったコードについて

かずまさん最後までありがとうございました。
このトピックでする話ではないかもしれませんが再帰呼び出しの件は別トピックでMathさんが言っていたように下記のような書き方でいいんでしょうか?

コード:

 if (a[mid] < x)
            return binsearch (x,a,min,mid-1);
        else if (a[mid] > x)
            return binsearch(x,a,mid+1,max);

by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を使ったコードについて
返信数: 29
閲覧数: 22845

Re: 関数を使ったコードについて

無駄が多くて申し訳ないです。
もしよろしければ、xを使ったやり方、もしくは引数ではなくローカル変数を使うやり方を教えていただけませんか?
また、確かにyは不必要でした。修正しておきます。
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を使ったコードについて
返信数: 29
閲覧数: 22845

Re: 関数を使ったコードについて

最後まで至らなくて申し訳ないです・・。 今度こそこれで大丈夫だと思います! #include <stdio.h> #include <stdlib.h> #define DATA 10000   char fileinput(char filename[20], int a[DATA]) {     int n;   FILE *fin;     if ((fin=fopen(filename,"r"))==NULL){   return(-1);   }   n=0;   while(fscanf(fin, "%d", &a[n]) !=EOF) n++;   fclose(fin);   ...
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を使ったコードについて
返信数: 29
閲覧数: 22845

Re: 関数を使ったコードについて

連投すみません 指摘されたところを直したらしっかり動くようになりました! ありがとうございます! #include <stdio.h> #include <stdlib.h> #define DATA 10000 char fileinput(char filename[20], int a[DATA]) { int n; FILE *fin; if ((fin=fopen(filename,"r"))==NULL){ return(-1); } n=0; while(fscanf(fin, "%d", &a[n]) !=EOF) n++; fclose(fin); return n; }//...
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を使ったコードについて
返信数: 29
閲覧数: 22845

Re: 関数を使ったコードについて

入れてみました。
ファイルには入れていないはずの0があります・・・

コード:

1 6 43 123 2 -5 -3 0 : before sorting
 -5 -3 0 1 2 6 43 123 : after sorting
探したい値を入力してください
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を使ったコードについて
返信数: 29
閲覧数: 22845

Re: 関数を使ったコードについて

かずまさん返信ありがとうございます。
0を探したとき「見つかりませんでした」とでません。0を探したときにはー1と出ました・・。
探した結果は以下のようになります

コード:

探したい値を入力してください
0
 x=0 ---> 1
-5
 x=-5 ---> -1
-3
 x=-3 ---> 0
一つ目は何が違うかわかりません・・
二つ目はn-1ですか?
三つ目は実行結果が
x=1 ---> 1
x=2 ---> 2
と出てうまくいかなかったので表示だけでも正確にとやってしまいました・・。
mid-1がmidです。
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 再帰関数呼び出しについて
返信数: 10
閲覧数: 4023

再帰関数呼び出しについて

http://dixq.net/forum/viewtopic.php?f=3&t=19432 からの継続です。 【「二分探索をする関数」を、再帰関数呼出しをするものに作り替えよ。】 という問題なのですが何を加えればいいかわかりません・・。ネットや参考書で調べてみたのですが出てくるのはn!の例題だけで二分探索はどうするのかというのが分からなくなってしまいました。解決策を教えてください。よろしくお願いします。 int binsearch(int a[DATA],int n,int x) { int max; int min; int mid; while (scanf("%d", &x)==1)...
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を使ったコードについて
返信数: 29
閲覧数: 22845

Re: 関数を使ったコードについて

できました! アドバイスありがとうございました! 最終コードは以下のようになります。 #include <stdio.h> #include <stdlib.h> #define DATA 10000 char fileinput(char filename[20], int a[DATA]) { int n; FILE *fin; if ((fin=fopen(filename,"r"))==NULL){ return(-1); } n=0; while(fscanf(fin, "%d", &a[n]) !=EOF) n++; fclose(fin); return n; }//ファイルから...
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を使ったコードについて
返信数: 29
閲覧数: 22845

Re: 関数を使ったコードについて

purin52002さん返信ありがとうございます。
68行目の件了解です。
同じく引数の数お揃えたらいけました!
123の件も  max = n-1 を max =n に変えたらいけました!
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を使ったコードについて
返信数: 29
閲覧数: 22845

Re: 関数を使ったコードについて

purin52002さん返信ありがとうございます。
アドバイスありがとうございます。
アルゴリズムの件分かりました。自分で調べてみます・・・。
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を使ったコードについて
返信数: 29
閲覧数: 22845

Re: 関数を使ったコードについて

purin52002さん返信ありがとうございます。 指摘されたところを修正してみました。 きちんとファイルからは読み込まれるようになりました。 しかしうまいこと実行結果が出てくれません・・。疑問なのは要素の位置が4の倍数で出ていること、また3桁の数字が正しく表示されないことです。またファイルを開いてそこからループさせようともしましたがこのループも「探したい値を入力してください」が1回だけ表示されてその後は実行結果の通りです・・。解決策を教えてください。よろしくお願いします。 ファイルの中身とファイル名はこれです-->wc.out{1,6,43,123,2} ------------------...
by しき
6年前
フォーラム: C言語何でも質問掲示板
トピック: 関数を使ったコードについて
返信数: 29
閲覧数: 22845

Re: 関数を使ったコードについて

purin52002さん返信ありがとうございます。 無事コンパイルできました! コンパイルはできたのですが・・ファイルからデータを入力する関数が動きません・・。これは関数に問題があるのでしょうか?それとも関数の呼び出しに問題があるのでしょうか?よろしくお願いします。 #include <stdio.h> #include <stdlib.h> #define DATA 10000 char fileinput(char filename[20], int a[DATA]) { int n; FILE *fin; if ((fin=fopen(filename,"r"))==NULL){ ret...

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