1000個の固定した文字列から20個を任意に表示するには? – プログラミング – Home

1000個の固定した文字列から20個を...
 
通知
すべてクリア

[解決済] 1000個の固定した文字列から20個を任意に表示するには?


yuki
 yuki
(@yuki)
ゲスト
結合: 24年前
投稿: 39
Topic starter  

例えば データを1000個 プログラム内に登録して

100番目から400番目までとかを指定して

その中から任意に20個を

コンピューターに選択させて 表示させるというような

プログラムってどうやってつくればよいのでしょうか?

(こんな感じの表示結果)

何番から?    とでて 100 と入力

何番まで?    とでて 400 と入力

いくつ選択する? とでて 20 と入力       

そうしたら

111 star

162 get
 ・

 ・

 ・

320 tax

って言う感じに20個出力できたらベストです


引用未解決
トピックタグ
く
 く
(@く)
ゲスト
結合: 24年前
投稿: 10
 

課題でしたら課題を出した方に質問するのが筋だと思います
違ってたらごめんなさい

さて、質問ですが、この程度の問題でここまで仕様が決まっているなら
このまま作れば問題なく動きますよ
逆に、どこが分からないの?って感じです
分からない所を具体的に書きましょう
特殊な知識が必要な問題じゃないので
「手の着けようがないので」最初から教えてくださいというのは無しですよ

1.1000個のデータをプログラム内に保持する方法
2.3つの質問を表示する方法
3.3つの答えを取得する方法
4.開始位置と終了位置の値が逆の場合はどうするのか
 答えの範囲が20個未満ならどうするのか
 (20個未満を表示すればよい等)
 答えの範囲が21個以上ならどう、任意の20個を決めるのか
 (rand()を使うのが楽です)
5.答えを指定開始位置から20個表示する方法
この5つくらいが分かれば答えは出るでしょう
たぶんC言語の入門書の最初の方を見れば
だいたい分かると思うので基礎を身につけましょう


返信引用
yuki
 yuki
(@yuki)
ゲスト
結合: 24年前
投稿: 39
Topic starter  

すみませんでした
僕が分からないのは
1.1000個のデータをプログラム内に保持する方法
と指定した範囲からランダムに20個表示する方法です
入門書でどのようなものにかいてありますか
そこら辺も勉強したいので是非教えて下さい


返信引用
CdS
 CdS
(@CdS)
ゲスト
結合: 24年前
投稿: 176
 

そのままのサンプルが載っている書籍があるかどうかは知りません。
「配列」「乱数」などで調べればどのような書籍にも大概は書いてあるはずです。


返信引用
ku
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

> 1.1000個のデータをプログラム内に保持する方法
これは配列について書いてありませんでしたか?
良い方法とは思わないけど、intの配列なら
int a[1000] = {1, 100, ~省略~};
文字列なら
char *p[1000] = {abc, 123, ~省略~};
なんてやれば1000個のデータを保持できるでしょ
もう少し複雑なものなら構造体(struct)の配列を使う方法があります
また、データをファイルにしておいて、読み込むって方法もあります
intの配列なら、初期値を設定せずにrand()関数を使うという方法もあります

> と指定した範囲からランダムに20個表示する方法です
rand()を使うのが楽ですと一応書いたんだけどね
int nInputStart = ;//最初の位置
int nInputEnd = ;//最後の位置
int nInputExtent = nInputEnd - nInputStart + 1;//有効範囲の個数
int anRandNo[20];//最大で20個の位置を保存する
int nRandCnt = 0;//ランダムの値をカウントする
int nRandMax = 20;//ランダムの値をいくつカウントするかの最大値
// 指定した範囲がカウントの最大値より小さければカウントの最大値を下げる
if (nInputExtent < nRandMax) {
nRandMax = nInputExtent;
}
while (nRandCnt < nRandMax) {
int nValue = nInputStart + (rand() % nInputExtent);
int nRepCheckPos;
for (nRepCheckPos = 0; nRepCheckPos < nRandCnt; nRepCheckPos++) {
if (anRandNo[nRepCheckPos] == nValue) {
continue;
}
}
anRandNo[nRandCnt] = nValue;
nRandCnt++;
}
int nOutPos;
for (nOutPos = 0; nOutPos < nRandMax; nOutPos++) {
printf(%d\n, anRandNo[nOutPos]);
}
これは範囲内の任意の20個のインデックスを表示するものです
確認してないので間違っている所があるかもしれません
最後の方のprintfは最終的な情報ではなく、最終的な配列のインデックスなので気を付けて
C言語の場合は変数の宣言の位置にも気を付けてね(C++なら気にしなくていいです)

> 入門書でどのようなものにかいてありますか
> そこら辺も勉強したいので是非教えて下さい
とりあえず、書店へGOです
自分にあった参考書を揃えましょう(合う合わないがあるので自分で選ぶしかないです)
有名な本は初心者には難解な物が多いので、絵や図がたくさん入っているようなもので
C言語とともにコンピュータの仕組みやメモリのことや関数・オート変数とスタックの関係とか
ポインタにアドレスなんかが載っているものが良いかなと思います


返信引用
yuki
 yuki
(@yuki)
ゲスト
結合: 24年前
投稿: 39
Topic starter  

本屋やまわりの方々の助けもあり
どうにか問題解決いたしました
kuさんCdSさんありがとうございました


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました