2016-05-22 2 views
-2

私はinput.txtファイルを持っています。私は入力ファイルを1行ずつ読み込もうとしています.2つの配列を作成したいと思います。スペースの後の最初の行は、配列のサイズを示します。以下の私の入力ファイルの場合、配列のサイズは3です。最初のスペースの後の2行目からファイルの最後までは、配列A []を構成します。この例の場合、A [3] = {5,8,14}入力ファイルの2番目のスペースから2番目の行までは、配列B []の内容を構成します。この入力ファイルの場合はB [3] = {67,46,23}です。最初の行の後のすべての行の最初の数字は、単に各line.Inputファイルの行数がそのようなものです与えている:ここでは入力ファイルの行の2番目と最後の文字を取得し、C++で配列を作成するにはどうすればよいですか?

10 3 
1 5 67 
2 8 46 
3 14 23 

は私のスタートコードを下回っています。入力ファイルの行の2番目と最後の文字を取得するにはどうすればよいですか?

#include<stdio.h> 
#define N 128 
#include <iostream> 
#include <fstream> 

int A[N]; 
int B[N]; 

int main(){ 

    ifstream fin; 
    fin.open("input.txt", ios::in); 

    char CHARACTER; 
    int ITEMNUMBER = 0; 

    while (!fin.eof()) { 

    fin.get(CHARACTER); 
     if (CHARACTER== '\n'){ 
      ++ITEMNUMBER; 
     }  

    } 
    printf("\n"); 
    cout << "NUMBER OF ITEMS: " << ITEMNUMBER<< endl; 

return 0; 
} 
+2

あなたの専門用語は混乱しているようです。あなたは "フィールド"の代わりに "文字"と "ライン"という言葉を使用しているようです。質問を表現するために十分にコミュニケーションできるようにするには、適切な用語を使用する必要があります。あなたは質問を編集し、あなたが求めていることを明確にする必要があります。 –

+0

フィールドではどういう意味ですか?私の質問は十分明確です。 – zeynep

+0

ええ、私はあなたが "数字"を意味するときに "文字"と "行"という単語を使用していると思われます。非常に混乱しています。 – Galik

答えて

0

本当にCスタイルの配列を持つソリューションが必要ですか?

標準的な容器を使用した解決策が良いですか?この第2のケースで

(私は示唆していること)、Iロードと印刷firstNumように改変---次の例

を提案---

#include <vector> 
#include <cstdlib> 
#include <fstream> 
#include <iostream> 
#include <stdexcept> 

int main() 
{ 
    std::ifstream fin("input.txt", std::ios::in); 

    int  firstNum; 
    int  unused; 
    unsigned dimV; 

    if (! (fin >> firstNum >> dimV)) 
     throw std::runtime_error("error reading dimension"); 

    std::vector<int> a(dimV); 
    std::vector<int> b(dimV); 

    std::cout << "firstNum is " << firstNum << std::endl; 

    for (unsigned i = 0U ; i < dimV ; ++i) 
     if (! (fin >> unused >> a[i] >> b[i])) 
     throw std::runtime_error("error reading dimension"); 

    for (unsigned i = 0U ; i < dimV ; ++i) 
     std::cout << "-- " << a[i] << ", " << b[i] << std::endl; 

    return EXIT_SUCCESS; 
} 

出力

firstNum is 10 
-- 5, 67 
-- 8, 46 
-- 14, 23 
+0

ありがとう私はinput.txtから最初の文字を取得する必要がありますが、この例のファイルでは10です。 – zeynep

+0

@zeynep - 修正された答え。 'firstNum'で最初の文字を見つけます(注意:未テスト)。 – max66

+0

私はテストしましたが、私は数字1を得ることができると思います。数字10を得る必要があります。私は計算のために別の方法でそれを使用します。 @ max66 – zeynep

0

ファイルが上記の形式と一貫していて、配列の制限に達していない場合は、これが問題を解決すると思います。

int main(int argc, const char * argv[]) 
{ 
    ifstream fin("input.txt", ios::in); 

    int A[N]; 
    int B[N]; 

    //get first num and size 
    int first; // not sure what that is for but i guess you know 
    int arraySize; 

    fin >> first; 
    fin >> arraySize; 


    int id; 
    int aData; 
    int bData; 
    int i = 0; 

    while(fin >> id >> aData >> bData) 
    { 

    A[i] = aData; 
    B[i] = bData; 
    i++; 
    } 


    return 0; 
} 
+0

それをありがとう、ただそれを修正しました –

関連する問題