Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
1

Не заходит в тело цикла

09.04.2018, 16:10. Показов 1693. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Всех с праздниками!
Помогите пожалуйста, тут такая проблема... У меня в цикле:
C++
1
2
3
4
for (int j = 0; j != numerator; j++)
    {
        if (mas[j] > max) max = mas[j];
    }
переменная "j" сразу же получает значение "numerator" соответственно цыкл закрывается не начавшись. В чем может быть проблема?
P. S. Переменная "numerator" не равна 0.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2018, 16:10
Ответы с готовыми решениями:

Не заходит в тело WebView клиента
import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint;...

Тело какого из перечисленных операторов цикла выполняется как минимум один раз, независимо от значения параметра цикла
Оператор цикла, тело которого выполняется как минимум один раз независимо от значения параметра...

Тело цикла
Здравствуйте, имеется код: var mas:array of integer; i,n,j,r,g,s:integer; begin...

где тело цикла ?
for(aa=a,a=1,j=k+1;j<=n+1;j++)//преобразование ведущей строки; a=a/aa; for(i=k+1;i<=n;i++)...

26
Заблокирован
09.04.2018, 16:53 2
Цитата Сообщение от Iangyl Посмотреть сообщение
переменная "j" сразу же получает значение "numerator"
Как узнал?
Цитата Сообщение от Iangyl Посмотреть сообщение
Переменная "numerator" не равна 0.
Тот же вопрос.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,715
09.04.2018, 17:38 3
Вангую, на самом деле у Вас написано:
C++
1
for (int j = 0; j != numerator; j++); // тут ;
0
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
10.04.2018, 10:19  [ТС] 4
Цитата Сообщение от Pavel_Srgv Посмотреть сообщение
Как узнал?Тот же вопрос.
Отладка

Добавлено через 1 минуту
Цитата Сообщение от zss Посмотреть сообщение
Вангую, на самом деле у Вас написано:
C++
1
for (int j = 0; j != numerator; j++); // тут ;
Нда... У вас хорошее чувство юмора...
1
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
10.04.2018, 11:30 5
Цитата Сообщение от Iangyl Посмотреть сообщение
Помогите пожалуйста,
Кода мало.
0
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
10.04.2018, 15:05  [ТС] 6
nd2, Вот:
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <fstream>
#include <ctime>
using namespace std;
 
void funct_f();
void funct_file(int *array, int size);
 
void main()
{
    int size = 2;
    int mass[2];
    funct_f();
    funct_file(mass, size);
    int Dan9_JIox;
    ifstream exit_1("exesize.txt");
    cout << "35 means that had file: " << endl;
    for (int l = 0; l < 35; l++)
    {
        exit_1 >> Dan9_JIox;
        cout << Dan9_JIox << " ";
    }
    cout << endl << "Amount of means that ended on 5: " << mass[0] << "\nMax mean that ended on 5: " << mass[1] << endl;
    exit_1.close();
}
 
void funct_f()
{
    srand(time(0));
    ofstream enter("exesize.txt");
    for (int i = 0; i < 35; i++)
    {
        enter << 1 + rand() % 100 << " ";
    }
    enter.close();
}
 
void funct_file(int *array, int size)
{
    int numerator = 0;
    int k;
    int mas[35];
    ifstream exit("exesize.txt");
    for (int i = 0; i < 35; i++)
    {
        exit >> k;
        if (k % 10 == 5)
        {
            mas[i] = k;
            numerator++;
        }
    }
    int max = -9999;
    for (int j = 0; j != numerator; j++)
    {
        if (mas[j] > max) max = mas[j];
    }
    array[0] = numerator;
    array[1] = max;
    exit.close();
    ofstream enter_1("exesize.txt", ios::app);
    enter_1 << "Amount of means that ended on 5: " << array[0] << "\nMax mean that ended on 5: " << array[1];
    enter_1.close();
}
0
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
10.04.2018, 15:11 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <fstream>
#include <ctime>
using namespace std;
 
void funct_f();
void funct_file(int *array, int size);
 
int main()
{
    int size = 2;
    int mass[2];
    funct_f();
    funct_file(mass, size);
    int Dan9_JIox;
    ifstream exit_1("exesize.txt");
    cout << "35 means that had file: " << endl;
    for (int l = 0; l < 35; l++)
    {
        exit_1 >> Dan9_JIox;
        cout << Dan9_JIox << " ";
    }
    cout << endl << "Amount of means that ended on 5: " << mass[0] << "\nMax mean that ended on 5: " << mass[1] << endl;
    exit_1.close();
 
    return 0;
}
 
void funct_f()
{
    srand(time(0));
    ofstream enter("exesize.txt");
    for (int i = 0; i < 35; i++)
    {
        enter << 1 + rand() % 100 << " ";
    }
    enter.close();
}
 
void funct_file(int *array, int size)
{
    int numerator = 0;
    int k;
    int mas[35];
    ifstream exit("exesize.txt");
    for (int i = 0; i < 35; i++)
    {
        exit >> k;
        if (k % 10 == 5)
        {
            mas[i] = k;
            numerator++;
        }
    }
    int max = -9999;
    for (int j = 0; j != numerator; j++)
    {
        if (mas[j] > max) max = mas[j];
    }
    array[0] = numerator;
    array[1] = max;
    exit.close();
    ofstream enter_1("exesize.txt", ios::app);
    enter_1 << "Amount of means that ended on 5: " << array[0] << "\nMax mean that ended on 5: " << array[1];
    enter_1.close();
}
все что я сделал это изменил void main() на int main() ну и в конце return 0;
numerator в начале цикла равна 3
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
10.04.2018, 18:27 8
Цитата Сообщение от tdo22 Посмотреть сообщение
я не понял суть проблемы, но у меня вроде как все работает:
Карты так легли.
Iangyl, это лучше в main перенести:
Цитата Сообщение от tdo22 Посмотреть сообщение
C++
1
srand(time(0));
И учитывай, что в файл записываются случайные числа, среди которых может и не оказаться подходящих под условие:
Цитата Сообщение от Iangyl Посмотреть сообщение
C++
1
2
3
4
5
if (k % 10 == 5) 
{ 
    mas[i] = k; 
    numerator++; 
}
Тогда numerator останется нулевым, и не будет захода в цикл.
1
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
10.04.2018, 21:27  [ТС] 9
tdo22, nd2, Вот я все поменял по вашим рекомендациям. На счет: предусмотреть если numerator = 0 - хорошая идея, спасибо. По поводу сменить void на int, я конечно не догнал, как это может повлиять, но решил попробывать, теперь знаю, что никак, тоже спасибо(ибо не проверил бы не узнал бы).
Но прога не пашет numerator не равен 0, но max по прежнему не находится.

Вот актуальный код:
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
#include <fstream>
#include <ctime>
using namespace std;
 
void funct_f();
void funct_file(int *array, int size);
 
int main()
{
    srand(time(0));
    int size = 2;
    int mass[2];
    funct_f();
    funct_file(mass, size);
    int Dan9_JIox;
    ifstream exit_1("exesize.txt");
    cout << "35 means that had file: " << endl;
    for (int l = 0; l < 35; l++)
    {
        exit_1 >> Dan9_JIox;
        cout << Dan9_JIox << " ";
    }
    if (mass[1] = -9999) cout << endl << "Amount of means that ended on 5: " << mass[0] << "\nMax mean that ended on 5: none" << endl;
    else cout << endl << "Amount of means that ended on 5: " << mass[0] << "\nMax mean that ended on 5: " << mass[1] << endl;
    exit_1.close();
    return 0;
}
 
void funct_f()
{
    ofstream enter("exesize.txt");
    for (int i = 0; i < 35; i++)
    {
        enter << 1 + rand() % 100 << " ";
    }
    enter.close();
}
 
void funct_file(int *array, int size)
{
    int numerator = 0;
    int k;
    int mas[35];
    ifstream exit("exesize.txt");
    for (int i = 0; i < 35; i++)
    {
        exit >> k;
        if (k % 10 == 5)
        {
            mas[i] = k;
            numerator++;
        }
    }
    int max = -9999;
    for (int j = 0; j != numerator; j++)
    {
        if (mas[j] > max) max = mas[j];
    }
    array[0] = numerator;
    array[1] = max;
    exit.close();
    ofstream enter_1("exesize.txt", ios::app);
    if (array[1] == -9999) enter_1 << "Amount of means that ended on 5: " << array[0] << "\nMax mean that ended on 5: none";
    else
    enter_1 << "Amount of means that ended on 5: " << array[0] << "\nMax mean that ended on 5: " << array[1];
    enter_1.close();
}
А вот результаты компиляции:
Кликните здесь для просмотра всего текста
Не заходит в тело цикла
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
11.04.2018, 00:26 10
Вот так измени кусок, и выложи скрин работы:
C++
1
2
3
4
5
6
7
8
    int max = -9999;
    cout << "numerator = " << numerator << endl;
    for (int j = 0; j != numerator; j++)
    {
        cout << "mas[j] = " << mas[j] << endl;
        if (mas[j] > max) 
            max = mas[j];
    }
1
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,715
11.04.2018, 01:08 11
Цитата Сообщение от nd2 Посмотреть сообщение
int max = -9999;
Возможно, что это и не важно (все mas[j]>-9999), но таких ВОЛШЕБНЫХ чисел в алгоритмах должно быть поменьше
C++
1
nt max = mas[0];
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
11.04.2018, 09:12 12
 Комментарий модератора 
Iangyl, пожалуйста, прочитайте правила форума.
Особое внимание обратите на пункт 4.7 (как правильно сформулировать ТЗ).

.
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
11.04.2018, 09:57 13
if (mass[1] = -9999)
0
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
11.04.2018, 15:01  [ТС] 14
nd2, Вот:
Не заходит в тело цикла
0
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
11.04.2018, 15:02  [ТС] 15
Цитата Сообщение от GbaLog- Посмотреть сообщение
Где вы видели такой э-нт в моем коде?
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
11.04.2018, 15:58 16
Цитата Сообщение от Iangyl Посмотреть сообщение
Где вы видели такой э-нт в моем коде?
строка 24 в #9.
1
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
11.04.2018, 16:58 17
Цитата Сообщение от Iangyl Посмотреть сообщение
Вот:
На этом скрине не видно куска изменённого кода.
0
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
11.04.2018, 17:18  [ТС] 18
Цитата Сообщение от GbaLog- Посмотреть сообщение
строка 24 в #9.
Вижу, спасибо.
0
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
11.04.2018, 18:04  [ТС] 19
nd2,
Вот скрин:
Не заходит в тело цикла

Вот актуальный код:
Кликните здесь для просмотра всего текста
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
#include <fstream>
#include <ctime>
using namespace std;
 
void funct_f();
void funct_file(int *array, int size);
 
int main()
{
    srand(time(0));
    int size = 2;
    int mass[2];
    funct_f();
    funct_file(mass, size);
    int Dan9_JIox;
    ifstream exit_1("exesize.txt");
    cout << "35 means that had file: " << endl;
    for (int l = 0; l < 35; l++)
    {
        exit_1 >> Dan9_JIox;
        cout << Dan9_JIox << " ";
    }
    if (mass[1] == -9999) cout << endl << "Amount of means that ended on 5: " << mass[0] << "\nMax mean that ended on 5: none" << endl;
    else cout << endl << "Amount of means that ended on 5: " << mass[0] << "\nMax mean that ended on 5: " << mass[1] << endl;
    exit_1.close();
    return 0;
}
 
void funct_f()
{
    ofstream enter("exesize.txt");
    for (int i = 0; i < 35; i++)
    {
        enter << 1 + rand() % 100 << " ";
    }
    enter.close();
}
 
void funct_file(int *array, int size)
{
    int numerator = 0;
    int k;
    int mas[35];
    ifstream exit("exesize.txt");
    for (int i = 0; i < 35; i++)
    {
        exit >> k;
        if (k % 10 == 5)
        {
            mas[i] = k;
            numerator++;
        }
    }
    int max = -9999;
    cout << "numerator = " << numerator << endl;
    for (int j = 0; j != numerator; j++)
    {
        if (mas[j] > max) max = mas[j];
    }
    array[0] = numerator;
    array[1] = max;
    exit.close();
    ofstream enter_1("exesize.txt", ios::app);
    if (array[1] == -9999) enter_1 << "Amount of means that ended on 5: " << array[0] << "\nMax mean that ended on 5: none";
    else
    enter_1 << "Amount of means that ended on 5: " << array[0] << "\nMax mean that ended on 5: " << array[1];
    enter_1.close();
}
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
11.04.2018, 18:11 20
Цитата Сообщение от Iangyl Посмотреть сообщение
Вот скрин:
Теперь сравни твой код с кодом в 10-м посте.
0
11.04.2018, 18:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2018, 18:11
Помогаю со студенческими работами здесь

Как выделить тело цикла for?
Изучив основы C++ я приступил к Python и сразу же наткнулся на непонятное. Как выделить тело цикла...

Передача управления в тело цикла
Вопрос к старожилам фортрана. Не было ли такого компилятора, который мог &quot;позволить&quot;...

Сколько раз выполнится тело цикла?
Сколько раз выполнится тело цикла: for i:=2 to 5 do i:=4; ?

Сколько раз выполняется тело цикла?
B:=false;r:=45; While not B do begin B:=r=15; r:=r mod 4 + 15 end;


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru