2012-06-15 13 views
0

Это действительно простая программа, которую я пишу здесь, но подошла к проблеме. ну, программа заполняет массив [2000] из файла, а затем он должен TYPE (cout) массив [i], который не равен второму элементу массива. Я не уверен, как указать на второй элемент массива в программе. вот часть программы:второе целое число массива

#include <iostream> 
#include <fstream> 

using namespace std; 
const int N=2000; 

int main() { 
    int* array; 
    array = new int[N]; 

    for (int i=0; i<N; i++){ 
     ifstream ifs("reals.txt"); 
     ifs>>array[i]; 
    } 

    for (int i=0; i<N; i++){ 
     if(array[i] != array[1]) /// is this right? is array[1] second member? 
      cout<<array[i]<<'\t'; 
     if((i+1)%13) cout<<endl; 
    } 
    system("pause"); 
    return 0; 
} 

, как это будет, если же я хотел, чтобы проверить на второй элемент из последнего элемента массива?

P.S. Извините за мой английский. если есть что-то, что вы не можете понять, не стесняйтесь комментировать, и я попытаюсь объяснить. заранее спасибо.

+0

вы должны вероятно, только что использовал 'int array [2000];' –

+0

что, если что-нибудь, выводит ли программа при запуске? Есть ли ошибки? – ChadNC

ответ

5

array[1]является вторым членом. Ваша проблема в том, однако, что вы повторное открытии файла каждый раз в цикле:

for (int i=0; i<N; i++){ 
    ifstream ifs("reals.txt"); 
    ifs>>array[i]; 
} 

вам нужно открыть файл перед циклом:

ifstream ifs("reals.txt"); 
for (int i=0; i<N; i++){ 
    ifs>>array[i]; 
} 
+0

Да, ты прав. Я это исправлю. Кстати, если я хочу, чтобы функция использовалась в любом случае, поэтому я не буду знать размер массива. как бы я указал на второй элемент из последнего? –

+0

@GeoDrawkcab: Самый простой способ - использовать std :: array (или std :: vector для динамического массива), поэтому размер всегда известен (myArray.size()) – stefaanv

+0

@GeoDrawkcab, см. [Этот ответ] (http://stackoverflow.com/questions/11047239/how-can-i-know-legth-of-array-in-c/11047259#11047259) из вопроса ранее. – Shahbaz

0

Да, это правильно, как массивы 0 на основе. Например, с массивом 5 elements последний элемент будет index 4 or array[4];

1
for (int i=0; i<N; i++){ 
    ifstream ifs("reals.txt"); 
    ifs>>array[i]; 
} 

Должно быть

ifstream ifs("reals.txt"); 
for (int i=0; i<N; i++){   
    ifs>>array[i]; 
} 

если (массив [я]! = Массив [1]) /// это право ? - массив [1] второй участник?

Ответ на этот вопрос да.

array = new int [N];

не забудьте

delete[] array; 

Если вы хотите получить доступ к позапрошлом элемент, есть капля в замене в стандартной библиотеке для массива:

#include <vector> 

int main(){ 
    std::vector<int> array(1000); 
    array[998]= 42; 
    int prelast= *(array.end()- 2); // end() is an iterator to one-past the last element 
} 
+0

спасибо, и, если, например, я хочу сделать функцию, чтобы использовать ее во всем, поэтому я не буду знать размер массива. как бы я указал на второй элемент из последнего? есть ли какая-либо команда, похожая на .size() в массивах? –

+0

в стандартном C++ мы используем контейнеры для таких вещей, я обновил ответ на примере. – nurettin

Смежные вопросы