Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.05.2017
Сообщений: 7
1

В программе игнорируется условие

15.05.2017, 11:00. Показов 681. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Искал в интернете схожие задачи/коды, находил подобные, но с другим синтаксисом.Так как я только начинающий, мне очень затруднительно его понимание. Много раз проверял синтаксис функций и операторов в моем коде, ошибок сам не могу обнаружить.
Ниже прилагаю код:
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
#include <iostream>
using namespace std;
int main()
{
    int farg = 0;
    int sarg = 0;
    unsigned int divisor = 1;
    int c = 0;
    unsigned int ii = 0;
    cout << "Enter First argument\n";
    cin >> farg;
    cout << "Enter Second argument\n";
    cin >> sarg;
    for (int i = farg; i <= sarg; i++)
    {
        ii = i;
        while (ii>divisor);
        {
            if (ii%divisor == 0)
            {
                c++;
            }
            divisor++;
            cout << "U chisla " << i << "\t" << c << "delitelei\n";
 
        }
    }
    cin.ignore();
    cin.get();
 
}
Исходя из условия в строке 19, переменная c должна увеличиваться только тогда, когда происходит деление без остатка, но она увеличивается каждый круг цикла независимо от условия.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2017, 11:00
Ответы с готовыми решениями:

Не отрабатывает условие в программе
int C,D,temp; float y; const int A=2,B=3; temp=exp(3*log(D)); cout&lt;&lt;&quot;Vvedite znachenie...

Не выполняется условие в программе
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; int main() { float x1; char...

Условие в тестовой программе
Здравствуйте. Подскажите пожалуйста как сделать так что при выполнение if ball*1&gt;=3 или if...

Не выполняется условие в программе
Ввожу значение 1 или 2, но при этом не заходит в блок if char Buffer = {0}, *b = Buffer; ......

8
J5
25 / 25 / 9
Регистрация: 22.12.2013
Сообщений: 107
15.05.2017, 11:14 2
loadex,
C++
1
while (ii>divisor);
Уберите точку с запятой.
1
0 / 0 / 0
Регистрация: 14.05.2017
Сообщений: 7
15.05.2017, 11:33  [ТС] 3
Убрал точку с запятой, но условие все равно не выполняется.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
15.05.2017, 11:34 4
loadex, что ж так сложно-то! Куча лишних переменных зачем-то... Лишний цикл... Можно же проще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int main()
{
    std::cout << "Enter an integer: ";
    int number;
    std::cin >> number;
 
    int counter = 0;
    for (int divisor = 1; number >= divisor; ++divisor)
        if (number % divisor == 0)
            ++counter;
 
    std::cout << "The number " << number << " has " << counter << " divisors.\n";
}
1
0 / 0 / 0
Регистрация: 14.05.2017
Сообщений: 7
15.05.2017, 12:25  [ТС] 5
Виноват, не изложил точно задание. Так заморочился, потому что нужна программа, которая будет выводить количество делителей каждого числа из промежутка чисел, заданного пользователем.

Добавлено через 45 минут
Всем спасибо кто откликнулся, проблема была в том, что переменные divisor и c не обнулялись с каждым началом цикла, поэтому условие выполнялось, но не так, как было запланировано.
Оставлю код здесь, вдруг кто-то будет тупить как я и ему поможет.
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
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
    int farg = 0;
    int sarg = 0;
    int divisor = 1;
    int c = 0;
    int ii = 0;
    int line = 1;
    cout << "Enter First argument\n";
    cin >> farg;
    cout << "Enter Second argument\n";
    cin >> sarg;
    for (int i = farg; i <= sarg; i++)
    {
        divisor = 1;
        c = 0;
        clock_t start;
        start = clock();
        while (i>=divisor)
        {
            if (i%divisor == 0)
                c++;
            divisor++;
        }
        clock_t stop;
        stop = clock();
        cout << line << ".\t";
        line++;
        if (c > 2)
            cout << "U chisla " << i << "\t" << c << "delitelei\t";
        else
            cout << "Chislo " << i << "\t" << "prostoe\t";
        cout << (stop - start) /(double) CLOCKS_PER_SEC<<"\n";
    }
    cin.ignore();
    cin.get();
}
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
15.05.2017, 12:54 6
Цитата Сообщение от loadex Посмотреть сообщение
Виноват, не изложил точно задание. Так заморочился, потому что нужна программа, которая будет выводить количество делителей каждого числа из промежутка чисел, заданного пользователем.
Да всё равно много лишнего у Вас. Вот же:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int main()
{
    std::cout << "Enter first argument: ";
    int firstArg;
    std::cin >> firstArg;
 
    std::cout << "Enter second argument: ";
    int secondArg;
    std::cin >> secondArg;
 
    for (int i = firstArg, counter = 0; i <= secondArg; ++i)
    {
        for (int divisor = 1; i >= divisor; ++divisor)
        {
            if (i % divisor == 0)
                ++counter;
        }
        std::cout << "The number " << i << " has " << counter << " divisors.\n";
        counter = 0;
    }
}
Добавлено через 3 минуты
Ну или так даже:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
int main()
{
    std::cout << "Enter first argument: ";
    int firstArg;
    std::cin >> firstArg;
 
    std::cout << "Enter second argument: ";
    int secondArg;
    std::cin >> secondArg;
 
    for (int i = firstArg, counter = 0; i <= secondArg; ++i, counter *= 0)
    {
        for (int divisor = 1; i >= divisor; ++divisor)
        {
            if (i % divisor == 0)
                ++counter;
        }
        std::cout << "The number " << i << " has " << counter << " divisors.\n";
    }
}
1
0 / 0 / 0
Регистрация: 14.05.2017
Сообщений: 7
15.05.2017, 14:27  [ТС] 7
Спасибо за помощь! Еще учиться и учиться, даже основы не очень легко даются
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
15.05.2017, 14:41 8
Цитата Сообщение от loadex Посмотреть сообщение
Еще учиться и учиться,
Это нормальное состояние программиста. Прекратил учиться - умер как программист, личность, творец. Превратился в машину.

Цитата Сообщение от loadex Посмотреть сообщение
даже основы не очень легко даются
Это тоже нормально. Пройдитесь по ссылкам у меня в подписи (я имею ввиду вторую и третью ссылки).
0
0 / 0 / 0
Регистрация: 14.05.2017
Сообщений: 7
15.05.2017, 19:17  [ТС] 9
Уже прошелся, и взял на вооружение!) Спасибо большое за такой объем информации для новичков, мне кажется это очень круто, и я уверен многие вам очень благодарны за эту работу , как и я.
0
15.05.2017, 19:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2017, 19:17
Помогаю со студенческими работами здесь

Не срабатывает условие в программе
сделал программу по заданию: Дан файл, содержащий некоторый текст. Оставить в этом файле только те...

Почему не выполняется условие в программе?
Есть программа: http://rghost.ru/6sxJSr7Yt Почему не выполняется условие: if sum2&lt;=10 then...

Правильно оформить условие в программе
program lab1; var x,y:real; begin writeln('Введіть x'); readln(x); if ?????????? then...

Не работает второе условие в программе
Второе условие просто не считывается, при проверке пишет, что точка не принадлежит графику, хотя...


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

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