Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Just_Big_K
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 6
#1

Изменяется значение щетчика - C++

17.10.2010, 00:17. Просмотров 459. Ответов 4
Метки нет (Все метки)

програма читает с файлов числа, и выводит на екран. Не могу понять, почему щетчики i,j после исполнения цыкла увеличиваются на 1? Пишу в VS 2010

к примеру в файле у меня 7 чисел, и соответственно i после исполнения цыкла должно = 6, а оно становится 7...

код...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
 
    
    int mas1 [40];
    int mas2 [20];
    int i,j;
    
    ifstream f("1.txt");
    ifstream ff("2.txt");
 
    if(f.is_open()==false)
    {
        cout<<"File isnt open\n";
        exit (1);
    }
 
        if(ff.is_open()==false)
        {
            cout<<"File isnt open\n";
            exit(1);
        }
 
 
    for(i=0;!f.eof();i++)
        {
            f>>mas1[i];
            cout<<mas1[i]<<" ";
        }
 
 
 
    
for(j=0;!ff.eof();j++)
        {
            ff>>mas2[j];
            cout<<mas2[j]<<" ";
        }
 
f.close();
ff.close();
 
 
    
 return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2010, 00:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Изменяется значение щетчика (C++):

Вычислить значение функции a = b ^2 sin (b), причем b изменяется от 0,9 до 1,7 с шагом 0,2. Найти среднее значение разности между элементами - C++
Доброго времени суток ! Помогите решить задачу ! Нужно написать в цикле с постусловием следующее : Вычислить значение функции...

Значение аргумента х изменяется от а до b с шагом h - C++
Здравствуйте уважаемые любители и ценители языка С++! У меня к вам огромная просьба. На днях нужно сдать контрольную работу по предмету...

Функция суммы, не изменяется значение - C++
#include &lt;iostream&gt; using namespace std; int sum(int); int main() { int value = 10; cout &lt;&lt; &quot;sum = &quot; &lt;&lt; sum(value) &lt;&lt;...

Почему значение tellg() не изменяется? - C++
Следующий код: #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; void main() { ifstream file;

Не изменяется значение элемента класса - C++
Часть программы: class Saving { public: ... void set(double); double calculate(); double get() const;

Не изменяется значение переменной в объекте - C++
Переменная health меняет своё значение только внутри функции punch(), при этом её значение в объектах a и b остаётся неизменным. Как...

4
Unforgiven_00
60 / 60 / 2
Регистрация: 12.10.2010
Сообщений: 129
17.10.2010, 00:39 #2
сдесь лучше использовать
C++
1
while(!f.eof())
0
Just_Big_K
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 6
17.10.2010, 00:49  [ТС] #3
пробовал и while тот же результат... в цыкле i изменяется 0..6 а после цыкла становится 7...
0
Nick Alte
Эксперт С++
1640 / 1012 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
17.10.2010, 09:57 #4
Потому что надо знать структуру for:
Код
for(<инициализатор>; <условие>; <приращение>) 
    <тело цикла>
соответствует такой управляющей структуре:
Код
<инициализатор>
loop:
    if(!<условие>)
        goto exit_loop;
    <тело цикла>
    <приращение>
    goto loop;
exit_loop:
Таким образом, в ходе выполнения тела цикла мы в конце концов достигаем момента, когда условие продолжения работы нарушается, после чего происходит приращение счётчика. В простейшем случае, когда условие завязано на сам счётчик, это ещё очевиднее:
в for(i=0; i<7; ++i) для выхода из цикла значение счётчика должно сначала дойти до значения, нарушающего условие продолжения (то есть, до 7). В случае с чтением из файла эта закономерность несколько более замаскирована, но соблюдается так же железно.
Кстати, эта особенность зачастую полезна для циклов с преждевременным выходом, например, для линейного поиска:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Найти в массиве a индекс первого элемента, равного b
// Если такой элемент не найден, вернуть (unsigned) -1
const unsigned int N = 20;
extern int a[N];
const int b = 7;
unsigned int find()
{
    unsigned int i=0;
    for( ; i<N; ++i)
        if(a[i] == b)
            break;    // Выйти из цикла
    if(i==N)      // Если счётчик дошёл до этого значения, то цикл перебрал все элементы и не нашёл нужного
        return -1;
    else          // А если нужное значение нашлось даже в последнем элементе, то счётчик не успеет дойти до N
        return i;
}
0
Just_Big_K
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 6
17.10.2010, 15:03  [ТС] #5
спасибо огромное. понял)))
0
17.10.2010, 15:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2010, 15:03
Привет! Вот еще темы с ответами:

Почему не изменяется значение члена класса - C++
Инструкция по запуску: &lt;имя.exe&gt; &lt;inputfilename&gt; &lt;outputfilename&gt; &lt;-s|-i&gt; &lt;-a|-d&gt; В конструкторе (FileSorter.cpp, line 21) я изменяю...

Почему изменяется значение переменной между функциями класса? - C++
Почему-то изменяется значение переменной m(кол-во специальностей) в output_spec. Пробовал в других средах покомпилить, но m все равно...

Изменяется ли адрес или значение переменной при объявлении ее как const? - C++
При объявлении const у нас значение переменной или адрес переменной не изменяется?

Найти наибольшее и наименьшее значение функции y = 3x2 + x – 4, если на заданном интервале [a,b] x изменяется с шагом 0,1. - C++
помогите пожалуйста.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru