2016-04-08 4 views
0

В массиве ampVal содержится 25600 целых чисел внутри него. Мне нужно найти максимальное значение каждого набора из 1024 значений в массиве и сохранить его в другом массиве. Однако я не получаю эту часть для работы, она дает только 21 значение и случайное число «1348410436». ampVal - динамический массив.Максимальное значение диапазона значений в массиве (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 Да, это должно быть, я сделаю изменения и посмотрю, что произойдет ... Ну теперь он дает еще два случайных числа, таких как тот, который указан в вопросе, и сбой программы –

ответ

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; 
} 
Смежные вопросы