2016-04-08 10 views
0

配列ampValには25600の整数があります。配列内の1024個の値のそれぞれの最大値を見つけて、別の配列に格納する必要があります。しかし、私はそれが21値と乱数 '1348410436'を与える​​だけで動作するようになっているわけではありません。 ampValは動的配列です。array(C++)の値の範囲の最大値

#include<iostream> 
#include<fstream> 
#include<string> 
#include<sstream> 
using namespace std; 

int main() { 

ifstream miniProject; 
int n = 0; 
miniProject.open("C:\\Users\\Simeon Ramjit\\Desktop\\audioframes.txt"); 
if (!miniProject) { 
    cout << "File not found" << endl; 
} 
else { 
    cout<<"File Located ! :D \nCounting Lines in file..." << endl; 

    while (miniProject) { 
     string lines; 
     getline(miniProject, lines); 
     n++; 

    } 
    cout << "Number of lines in file are: " << n << endl; 
    miniProject.close(); 
} 

int *frNum = new int[n]; 
int *bitNum = new int[n]; 
int *ampVal = new int[n]; 
    for (int i = 0; i < n;i++){ 
     frNum[i] = 0; 
     bitNum[i] = 0; 
     ampVal[i] = 0; 
    } 




miniProject.open("C:\\Users\\Simeon Ramjit\\Desktop\\audioframes.txt"); 
if (!miniProject) { 
    cout << "File not found" << endl; 
} 
else { 
    int i = 0; 
    string frameNumber, bitNumber, amplitudeValue; 
    while (miniProject) { 
     (miniProject >> frameNumber >> bitNumber >> amplitudeValue); 
     stringstream(frameNumber) >> frNum[i]; 
     stringstream(bitNumber) >> bitNum[i]; 
     stringstream(amplitudeValue) >> ampVal[i]; 
     i++; 

    } 
} 
miniProject.close(); 


int frameGroupStart = 0; 
int frameGroupEnd = 1024; 
int maxAmpVal = 0; 
while (frameGroupEnd != 25600) { 
    for (int i = frameGroupStart; i < frameGroupEnd; i++) { 
     if (ampVal[i] >maxAmpVal) { 
      maxAmpVal = ampVal[i]; 
      cout << maxAmpVal << endl; 
     } 
    } 
    frameGroupStart = frameGroupStart + 1024; 
    frameGroupEnd = frameGroupEnd + 1024; 
} 





getchar(); 
return 0; 

}

+0

あなたはより多くのコードを表示する必要があります。 – blazs

+0

'frameGroupStart'は常に0のままです。' frameGroupStart = frameGroupStart + 0; 'はあなたのフレームグループの開始位置を決して移動しません。それも1024で増やすべきではありませんか? – cwschmidt

+0

@cwschmidtはい、私は変更を行い、何が起こるかを見てください...今は、質問に列挙されているような2つの乱数が与えられ、プログラムがクラッシュします。 –

答えて

0

私は別のアプローチを使用し、これは仕事を取得します。

int bitGroupStart = 0; 
int bitGroupEnd = 1024; 
int arrayOfMaxAmpVal[25]; 
int frameNumMaxVal[25]; 
int maxAmpVal = 0; 

for (int i = 0; i < 25; i++) { 
    for (int j = bitGroupStart; j < bitGroupEnd; j++) { 
     if (ampVal[j] > maxAmpVal) { 
      maxAmpVal = ampVal[j]; 
     } 
    } 
    bitGroupStart = bitGroupStart + 1024; 
    bitGroupEnd = bitGroupEnd + 1024; 
    arrayOfMaxAmpVal[i] = maxAmpVal; 
    frameNumMaxVal[i] = i; 
    maxAmpVal = 0; 
} 
関連する問題