構造体
-
- 記事: 3
- 登録日時: 6年前
Re: 上司からの問題が難しくて教えて欲しいです。構造体
次のプログラムは参考になりますか?
何が分かっって、何が分からないか返事を下さい。
このプログラムをどこから起動してもよいようにするためには
SAVEFILE をフルパスにするとか、ユーザごとに異なったファイルにする
などの修正が必要でしょう。
質問するときは、フォーラムルールをよく読んで、
プログラムを添付するときは、codeタグを使うようにしてください。
何が分かっって、何が分からないか返事を下さい。
#include <stdio.h> // printf, fopen, fclose, fscanf, fprintf
#include <stdlib.h> // malloc, srand, rand
#include <time.h> // time
#define SAVEFILE "save.txt"
struct LIST {
struct LIST *next;
int value;
};
struct LIST *plist = NULL;
int main(void)
{
FILE *fp = fopen(SAVEFILE, "r");
srand((unsigned)time(NULL));
while (1) {
int random = 0;
if (fp && fscanf(fp, "%d", &random) != 1) {
fclose(fp);
fp = NULL;
}
if (!fp) {
int q = getchar();
if (q == 'q') break;
if (q != '\n') continue;
random = rand() % 1000;
if (random < 100) random += 100;
}
struct LIST *p = (struct LIST *) malloc(sizeof(struct LIST));
p->value = random;
p->next = NULL;
if (plist == NULL)
plist = p;
else {
struct LIST *prev = plist;
while (prev->next != NULL) prev = prev->next;
prev->next = p;
}
if (!fp) printf(" %d\n", p->value);
}
fp = fopen(SAVEFILE, "w");
struct LIST *p = plist;
while (p != NULL) {
if (fp) fprintf(fp, "%d\n", p->value);
printf("\n%d", p->value);
p = p->next;
}
if (fp) fclose(fp);
getchar();
getchar();
return 0;
}
SAVEFILE をフルパスにするとか、ユーザごとに異なったファイルにする
などの修正が必要でしょう。
質問するときは、フォーラムルールをよく読んで、
プログラムを添付するときは、codeタグを使うようにしてください。
Re: 上司からの問題が難しくて教えて欲しいです。構造体
同じような質問がありましたので参考までにどうぞ。
https://detail.chiebukuro.yahoo.co.jp/q ... 3175061523
https://detail.chiebukuro.yahoo.co.jp/q ... 3175061523
オフトピック
上司からの問題ということはお仕事でされているのでしょうか?
だとすると今後仕事でのプログラムもここで作成代行者を募るおつもりでしょうか?
だとすると今後仕事でのプログラムもここで作成代行者を募るおつもりでしょうか?
Advanced Supporting Developer
無理やりこじつけ(ぉ
無理やりこじつけ(ぉ
-
- 記事: 3
- 登録日時: 6年前
Re: 上司からの問題が難しくて教えて欲しいです。構造体
To. かずまさん
ありがとうございます!!
私がわからなかったのは、一度プログラムを終了して次のプログラムを実行した際に
どうすれば前回のデータを再表示することが出来るのだろう、と悩んでおりました。
C言語を始めて1ヵ月程度で自分でも何が分かっていないのか把握出来ていない部分があります。
これからはまずは何がわからないのかを書いて皆様に助けてもらおうと思います。
本当にありがとうございます!!
ソースコードの書き方などのルールも今後気をつけます。
ありがとうございます!!
私がわからなかったのは、一度プログラムを終了して次のプログラムを実行した際に
どうすれば前回のデータを再表示することが出来るのだろう、と悩んでおりました。
C言語を始めて1ヵ月程度で自分でも何が分かっていないのか把握出来ていない部分があります。
これからはまずは何がわからないのかを書いて皆様に助けてもらおうと思います。
本当にありがとうございます!!
ソースコードの書き方などのルールも今後気をつけます。
-
- 記事: 3
- 登録日時: 6年前
Re: 上司からの問題が難しくて教えて欲しいです。構造体
To. asd さん
その投稿は私がしたものでした。
また、私は仕事でこれからプログラミングを使います。
が、現在研修期間として色々と自習をしています。
今回問題は、上司がこんなのをやってみたら面白いのでは?
と適当に考えた問題で、その上司が暫く会えずにいましたので答えがわからず
ずっと悩んでおりました。
今後とも精進しますが、分からないことはお聞き致しますので、
どうかよろしくお願い致します。
その投稿は私がしたものでした。
また、私は仕事でこれからプログラミングを使います。
が、現在研修期間として色々と自習をしています。
今回問題は、上司がこんなのをやってみたら面白いのでは?
と適当に考えた問題で、その上司が暫く会えずにいましたので答えがわからず
ずっと悩んでおりました。
今後とも精進しますが、分からないことはお聞き致しますので、
どうかよろしくお願い致します。
Re: 構造体
プログラムはまだ完成していませんよ。
考えないといけないことがいくつかあります。
random をリストに追加するとき、いつも先頭からたどって
末尾を探していますが、それは無駄だとは思いませんか?
末尾へのポインタを持っていれば探す必要がありませんよね。
random を求めるとき、0~999 の 1000個のうち、
0~99 の 100個を 100~199 に補正していますが、
こんなことをすると、100~199 が 200~999 の倍の
確率で出やすくなってしまいます。
random = rand() % 900 + 100; とするほうが良いと思いませんか?
plist はグローバル変数にする必要があるでしょうか?
SAVEFILE をどうするかもあります。このプログラムを動かすのが
Linux上なのか、Windows上なのか、その他なのかにも依存します。
考えないといけないことがいくつかあります。
random をリストに追加するとき、いつも先頭からたどって
末尾を探していますが、それは無駄だとは思いませんか?
末尾へのポインタを持っていれば探す必要がありませんよね。
random を求めるとき、0~999 の 1000個のうち、
0~99 の 100個を 100~199 に補正していますが、
こんなことをすると、100~199 が 200~999 の倍の
確率で出やすくなってしまいます。
random = rand() % 900 + 100; とするほうが良いと思いませんか?
plist はグローバル変数にする必要があるでしょうか?
SAVEFILE をどうするかもあります。このプログラムを動かすのが
Linux上なのか、Windows上なのか、その他なのかにも依存します。
Re: 上司からの問題が難しくて教えて欲しいです。構造体
そうであれば「元質問を削除し、かずまさんの質問に答えようとしない」のは矛盾した行動ではないでしょうか?takekkumaaan さんが書きました:To. asd さん
その投稿は私がしたものでした。
また、私は仕事でこれからプログラミングを使います。
が、現在研修期間として色々と自習をしています。
今回問題は、上司がこんなのをやってみたら面白いのでは?
と適当に考えた問題で、その上司が暫く会えずにいましたので答えがわからず
ずっと悩んでおりました。
今後とも精進しますが、分からないことはお聞き致しますので、
どうかよろしくお願い致します。
プログラム本体に対しての踏み込んだ質問がないままですし。
分からない部分があれば具体的に質問いただければまだしもそれさえされないのはなぜでしょうね。
また質問をなされる場合はフォーラムルールをよく読み、マルチポストに対する対応やいただいた回答に真摯に対応されるようお願いします。
少なくともマルチポスト先にあるような「誰かに作ってもらったプログラムを丸ごとコピーする姿勢」は研修として意味をなさないことになると指摘しておきます。
後から閲覧された方のために元質問を張り付けておきます(原文ママ)
---
► スポイラーを表示
Advanced Supporting Developer
無理やりこじつけ(ぉ
無理やりこじつけ(ぉ