Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
C++
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
1

Непонятная ошибка в работе программы

24.06.2018, 16:52. Показов 660. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сама проблема будет описана ниже исходника, а сейчас я вкратце опишу суть программы. Необходимо создать программу, в которой функция bythrees() возвращает последовательность чисел, каждое из которых на 3 больше предыдущего. Также в программу нужно внедрить функцию reset(), которая будет начинать последовательность снова с 0.

В бесконечный цикл for помещена функция bythrees(). Возвращённые числа выводятся на экран. Вначале выводится 0. А затем срабатывает функция ожидания нажатия клавиши _getch() при нажатии клавиши программа продолжает свою работу выводя число на 3 больше предыдущего. Если нажать клавишу r, то запустится функция reset().

Вот исходник:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <conio.h>
using namespace std;
int x = -3;
int bythrees();
void reset();
int main() {
    for (;;) {
        cout << bythrees() << ", ";
        if ('r' == _getch()) reset();
    }
    return 0;
}
int bythrees() {
    x += 3;
    return x;
}
void reset() {
    x= -3;
    cout << endl;
}

Но только вот вся проблема в том, что числа после нуля выводятся не по одному, а по два.
Моя версия студии Visual Studio 2017 15.7.4. в версии Visual Studio 2017 15.3.7. тоже самое.
На старом компе установлена версия Visual Studio 2017 15.3.5. и в ней всё работает, как надо.
В чём проблема? Я предполагаю, что это связано с недавней стандартизацией c++ 2017, которая еще не была применена в студии 2017 15.3.5.
При том если в программу добавить еще одно условие по типу else if ('e' == _getch()) return 0, то числа выводятся по одному, но клавиша r, запускающая reset() срабатывает лишь один раз. Вот текст программы с вышеописанными изменениями:
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>
#include <conio.h>
using namespace std;
int x = -3;
int bythrees();
void reset();
int main() {
    for (;;) {
        cout << bythrees() << ", ";
        if ('r' == _getch()) reset();
        else if ('e' == _getch()) return 0;
    }
    return 0;
}
int bythrees() {
    x += 3;
    return x;
}
void reset() {
    x= -3;
    cout << endl;
}
Форумчане пожалуйста помогите, кто чем может!
Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2018, 16:52
Ответы с готовыми решениями:

непонятная ошибка
прога визуал студио 2010 выводит: 1&gt;------ Перестроение всех файлов начато: проект: sfggasdfgh,...

3d графика (непонятная ошибка)
Добрый день/вечер. Проблема заключается в следующем: Был проект (рабочий). Добавил в него чужой...

Классы, непонятная ошибка в коде
на следующий код: #include &lt;iostream.h&gt; #include &lt;string.h&gt; class Count { privat: char*...

Непонятная ошибка при работе с vector
Здравствуйте! Что делает программа: Определить, сколько раз в заданном предложении встречаются 3...

6
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
25.06.2018, 06:28 2
Если так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
nt x = -3;
int bythrees();
void reset();
int main() {
    for (;;) {
        bythrees();
        cout <<  x << ", ";
        if ('r' == _getch()) reset();
    }
    return 0;
}
void bythrees() {
    x += 3;
}
void reset() {
    x= -3;
    cout << endl;
}
0
C++
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
25.06.2018, 20:04  [ТС] 3
nd2 ничего не изменилось. Такое ощущение, что функция _getch() воспринимает 1 нажатие за 2 :\
nd2 а у Вас работает программа? Какой у Вас компилятор?
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
26.06.2018, 09:41 4
Цитата Сообщение от JustLearn Посмотреть сообщение
у Вас работает программа?
Работает.
Цитата Сообщение от JustLearn Посмотреть сообщение
Какой у Вас компилятор?
10-я студия, 17-я студия.

Добавлено через 1 час 18 минут
Цитата Сообщение от JustLearn Посмотреть сообщение
что числа после нуля выводятся не по одному, а по два
На что жмёшь?
0
C++
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
27.06.2018, 13:41  [ТС] 5
nd2 Все клавиши на клавиатуре перепробовал. Всё равно числа по два выводятся.

Вы работаете В Visual Studio? Если да, то какая у вас версия? Дело в том, что на моём старом компьютере стоит Visual Studio 2017 15.3.5., а на новом Visual Studio 2017 15.4.5. В версии 15.3.5. всё работает, а в 15.4.5. выдаёт такую ошибку :/

Добавлено через 19 минут
Как я понял, Microsoft уже не распространяет Visual Studio 2017 15.3.5. Самая ранняя версия, которую Microsoft предлагает загрузить - это Visual Studio 2017 15.4.5. Перекинул 15.3.5. со старого компа на новый, но при создании проекта выдаёт ошибку: Исключение из HRESULT:0x80041FE2
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
02.07.2018, 12:43 6
Цитата Сообщение от JustLearn Посмотреть сообщение
Если да, то какая у вас версия?
Visual Studio 2017 15.5.7
0
C++
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
02.07.2018, 15:21  [ТС] 7
Хмммм. Очень странно....

Добавлено через 59 секунд
nd2 Спасибо. Видимо какие-то аппаратные ошибки...
0
02.07.2018, 15:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2018, 15:21
Помогаю со студенческими работами здесь

Непонятная ошибка при работе с библиотекой requests
Привет. Запускаю такой скрипт: import requests ...

Непонятная ошибка при запуске программы
суть в том что при запуске программа сразу же выдает ошибку. Может ли это быть связано со...

ошибка в работе программы
преобразование числа в строку (число&lt;1000) до 100 все работает отлично,а после,выводит только...

Ошибка в работе программы
Целью является проверить есть ли в строке два последовательно идущих одинаковых символа ...


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

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