C++


以下のプログラムをお願いします。
1 23桁の乱数(整数)を作り、その乱数をhoge.txtとして保存するタイプ

2 そのhoge.txtを読み、その整数の最大と最小の数字と最初と最後の計4つの整数を表示

回答の条件
  • 1人2回まで
  • 登録:2009/01/23 14:02:35
  • 終了:2009/01/26 02:06:49

ベストアンサー

id:GoldenDawn No.1

GoldenDawn回答回数426ベストアンサー獲得回数812009/01/23 14:51:17

ポイント60pt

乱数はできれば MT法などの質のよいものを使いたいところですが。

#include <fstream>
#include <stdlib.h>
#include <time.h>

int main() {
  std::fstream fst("hoge.txt", std::ios::out) ;
  if (fst.fail()) return -1 ; // ファイルをオープンできなかった

  srand((unsigned) time(NULL)) ; // 乱数初期化

  rand() ; // 片寄りを防ぐために一回捨てる
  for (int i = 0; i < 23; ++i)  fst << (rand() / (RAND_MAX / 10)) ;

  return 0 ;
}
#include <iostream>
#include <fstream>

int main() {
  std::fstream fst("hoge.txt", std::ios::in) ;
  if (fst.fail()) return -1 ; // ファイルがオープンできなかった

  char num[23] ;
  fst >> num ;

  int max, min ;
  for (int i = 0; i < 23; ++i) {
    if (i == 0) max = min = num[i] ;
    if (max < num[i]) max = num[i] ;
    if (min > num[i]) min = num[i] ;
  }

  std::cout << "max : " << (max - '0') << std::endl
            << "min : " << (min - '0') << std::endl
            << "1st : " << num[0] << std::endl
            << "last : " << num[22] << std::endl ;
}
id:esecua

早速の回答有り難うございます。

1ですが、

cout << "保存したいファイル名を入力して下さい" << end;

cin >> name;

std::fstream fst(name, std::ios::out) ;

で、できますでしょうか?

2009/01/23 16:03:21
  • id:GoldenDawn
    だいたいこんな感じでいけると思います。
    char name[255] ;
    std::cout << "ファイル名" << std::endl ;
    std::cin >> name ;
    std::fstream fst(name, std::ios::out) ;

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません