私は16行の整数のtxtファイルを持っています。各行には5つの整数が含まれています。ここにはファイルの最初の4行、
0 0 0 0 0
1 2 3 4 5
5 4 3 2 1
5 100 1000 10000 10500
私は一度に1行を読み込み、配列に5つのintをすべて格納し、次に最大値を見つける必要があります。私は自分自身でこれを行うことができます。私が問題を抱えているのは、前の行を読み終えたら、ファイルの次の行に行きます。
テキストファイルの最初の行を読み込みます
数値を配列に格納する
配列内の最大の整数を返す関数に配列を送ります。
返された数値を新しい配列に配置します。最終的には、ファイルの16行すべての中で最大の数が入ります。
ファイルの次の行を読み込みます
16のint配列を持つ配列をファイルに書き出します
私はステップ5で問題を抱えています。コードを実行するたびに、毎回1行目が読み込まれます。
#include
#include
using namespace std;
int main()
{
int n,i,j;
int temp[5];
//ask user
cout<<"How many lines are in the file\n";
cin>>n;
int *array = new int[n];
//open file
ifstream inFile;
inFile.open("input.txt");
for(j=0;j> temp[i];
cout<
ご覧のとおり、最大値検索機能はまだありません。実際のデータを分析する前に、ファイルをどのように読んでいるのかを修正したいと思います。
はい、これは数日後の宿題プロジェクトですが、私の先生はファイルの読み方について説明していないし、教科書の説明を読むように教えてくれました。私は宿題を渡すだけではなく、簡単な説明や欠けていることの例を学びたいと思っています。
istream :: getline()を使用して、一度にすべての行を取得します結果の文字列を解析します。その後、getline()をもう一度呼びます。それはあなたがおそらくエンドラインの文字を読んでいないからですが、なぜあなたが正確な振る舞いをしているのかはわかりません。
まあ、私はあなたが配列が必要とは思わない。 1行ずつ読み込み、トークン化し、それぞれをintに静的にキャストします(0から9までのアスキー値を調べて、慎重にチェックし、ネガをチェックします)。 EOFまで繰り返すと、最も効率的なソリューションが得られる可能性があります。
だからステップは
1)一時的な文字列を宣言します。
2)行を読む
3)スペースをトークン化する
4)最初のものが最大値であると仮定する。読んで比較を続ける。大きな値を見つけたら値を入れ替えてください
5)最後まで繰り返す