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

Ошибка в dev C++!

03.06.2013, 10:24. Показов 3218. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сделал небольшую программку,при вводе числа 29,должно вывести числа 2013..все проходит без ошибок...а при вводе числа больше или меньше данного всё-же высвечивается число 2013...помогите пожалуйста...
Хотелось бы сделать:
Вывести сообщение 'неверное число'! и выйти из программы через 5 секунд..
А главное чтобы не выводило число 2013
Заранее спасибо!

Код:
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>
using namespace std;
 
int main()
{   
    setlocale(LC_CTYPE,"Russian");
    
    int set = 0;
    cout << "Введите код : ";
    cin >> set;
    
    if(set = 29) 
    {
    cout << "Число: 2013" << endl;
    }
    if(set < 29 || set > 29)
    {
    exit();
    }
    
    cin.get();
    cin.get();
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.06.2013, 10:24
Ответы с готовыми решениями:

Ошибка в Dev-C++
Скачал книгу &quot;Как программировать на С++&quot; Харви и Пола Дейтелов. Дочитал до первой программы и попробовал её переписать в Dev-C++ ...

Ошибка в Dev C++
Внезапно отказался капускать приложение (компилирует без ошиок) Перезагрузка win не помогает. Что делать?

ошибка Dev-c++
у меня с Dev-c++небльшая проблема.когда я набираю любую программу(будь то проект или source file) и нажимаю &quot;запустить&quot; то он мне...

18
 Аватар для serggg
77 / 52 / 32
Регистрация: 24.03.2013
Сообщений: 1,121
03.06.2013, 11:15
Ну как-то вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main()
{   
    setlocale(LC_CTYPE,"Russian");
    
    int set = 0;
    cout << "Введите код : ";
    cin >> set;
    
    if(set == 29)  // у вас было set = 29
    {
    cout << "Число: 2013" << endl;
    }
    else // если условие проверки одно, то не обязательно проверять число ещё раз
    {
    cout << "Неверное число!" << endl;
    }  
    cin.get();
}
Добавлено через 5 минут
Но программа будет закрываться не через 5 секунд, а только после нажатия Enter.
А вот так будет как вы хотели:
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>
#include <windows.h> // подключаем библиотеку функций ОС
using namespace std;
 
int main()
{   
    setlocale(LC_CTYPE,"Russian");
    
    int set = 0;
    cout << "Введите код : ";
    cin >> set;
    
    if(set == 29) 
    {
    cout << "Число: 2013" << endl;
    cin.get(); // здесь просто останавливаем программу до нажатия Enter
    }
    else
    {
    cout << "Неверное число!" << endl;
    Sleep(5000L); // а тут останавливаем выполнение программы на 5 сек и выходим
    }
}
1
1 / 0 / 1
Регистрация: 03.06.2013
Сообщений: 14
03.06.2013, 12:40  [ТС]
Цитата Сообщение от serggg Посмотреть сообщение
Ну как-то вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main()
{   
    setlocale(LC_CTYPE,"Russian");
    
    int set = 0;
    cout << "Введите код : ";
    cin >> set;
    
    if(set == 29)  // у вас было set = 29
    {
    cout << "Число: 2013" << endl;
    }
    else // если условие проверки одно, то не обязательно проверять число ещё раз
    {
    cout << "Неверное число!" << endl;
    }  
    cin.get();
}
Добавлено через 5 минут
Но программа будет закрываться не через 5 секунд, а только после нажатия Enter.
А вот так будет как вы хотели:
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>
#include <windows.h> // подключаем библиотеку функций ОС
using namespace std;
 
int main()
{   
    setlocale(LC_CTYPE,"Russian");
    
    int set = 0;
    cout << "Введите код : ";
    cin >> set;
    
    if(set == 29) 
    {
    cout << "Число: 2013" << endl;
    cin.get(); // здесь просто останавливаем программу до нажатия Enter
    }
    else
    {
    cout << "Неверное число!" << endl;
    Sleep(5000L); // а тут останавливаем выполнение программы на 5 сек и выходим
    }
}
Спасибо большое!!!
Только чуть чуть поправочка:
После -
cout << "Число: 2013" << endl;
cin.get();
нужно добавить ещё один cin.get();
так как он отлавливает все что входит в консоль..
0
 Аватар для serggg
77 / 52 / 32
Регистрация: 24.03.2013
Сообщений: 1,121
03.06.2013, 12:44
Можно сделать так:
Подключить библиотеку:
C++
1
#include <conio.h>
И на место cin.get(); написать:
C++
1
_getche();
И тогда программа остановится, пока вы не нажмёте любую клавишу!
А если вам нужно нажатие определённой клавиши, то в скобках указываете её код.
1
1 / 0 / 1
Регистрация: 03.06.2013
Сообщений: 14
03.06.2013, 13:09  [ТС]
Цитата Сообщение от serggg Посмотреть сообщение
Можно сделать так:
Подключить библиотеку:
C++
1
#include <conio.h>
И на место cin.get(); написать:
C++
1
_getche();
И тогда программа остановится, пока вы не нажмёте любую клавишу!
А если вам нужно нажатие определённой клавиши, то в скобках указываете её код.
Ещё раз спасибо...можно ещё вопросик..
А как сделать обратный отсчет времени например где:

else
{
cout << "Ошибка!!" << endl;
cout << "До выхода осталось % секунд" << endl;
Sleep(3500L);
}

и чтобы этот % секунд брало из Sleep()
но прибавляло ещё +100 к времени но Sleep остался тотже...
тоесть % секунд нужно что-бы показывало на 0.1 больше...
0
 Аватар для serggg
77 / 52 / 32
Регистрация: 24.03.2013
Сообщений: 1,121
03.06.2013, 13:18
Вот так будет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
else
    {
        cout << "Ошибка!!!" << endl; // выдаём инфу об ошибке
        Sleep(1000L); // подождём 1 секунду, чтобы пользователь увидел, что произошла ошибка
        for(int k=5; k>0; k--) // задаём цикл по отсчёту времени, если тебе нужно не 5 секунд, а например 2 или 17, то пишешь k=2 или k=17 и всё... больше ничего не меняешь
        {
            system("cls");  // очищаем экран
            cout << "До выхода осталось "<<k<<" секунд" << endl; // выводим на экран кол-во оставшихся секунд
            Sleep(1000L); // ждём 1 секунду и снова выполняем цикл
                        // цикл for выполняется, пока счётчик k не дойдёт до 0
        }
    }
1
 Аватар для Naudiz
16 / 14 / 7
Регистрация: 04.11.2011
Сообщений: 137
03.06.2013, 13:19
_THE_f0restw0w, вся проблема в этом участке

Цитата Сообщение от _THE_f0restw0w Посмотреть сообщение
C++
1
2
3
4
if(set = 29) 
{ 
cout << "Число: 2013" << endl; 
}
Т.к. компилятор в Dev-C++ пропускает такую явную ошибку: if(set = 29) - присваивание не является условием, если заменить на if(set == 29) всё работает, как надо. В новых версиях MinGW этот косяк исправили, но Dev С++ уже 100 лет в обед, как с такими делами в его форках хз.

Добавлено через 20 секунд
_THE_f0restw0w, вся проблема в этом участке

Цитата Сообщение от _THE_f0restw0w Посмотреть сообщение
C++
1
2
3
4
if(set = 29) 
{ 
cout << "Число: 2013" << endl; 
}
Т.к. компилятор в Dev-C++ пропускает такую явную ошибку: if(set = 29) - присваивание не является условием, если заменить на if(set == 29) всё работает, как надо. В новых версиях MinGW этот косяк исправили, но Dev С++ уже 100 лет в обед, как с такими делами в его форках хз.
0
 Аватар для serggg
77 / 52 / 32
Регистрация: 24.03.2013
Сообщений: 1,121
03.06.2013, 13:24
Naudiz
Проблема уже давно решена
0
1 / 0 / 1
Регистрация: 03.06.2013
Сообщений: 14
03.06.2013, 13:34  [ТС]
Цитата Сообщение от serggg Посмотреть сообщение
Naudiz
Проблема уже давно решена
так не получается нужен отсчет по sleep..
а не всё сразу..
получится что просто цикл выведет 5 строк со значениями в меньшую сторону...
нужно чтобы поочерёдно шло,секунда пройдёт, выведет что осталось сколько-то секунд..

Добавлено через 1 минуту
А нет извените...всё работает спасибо!
0
 Аватар для serggg
77 / 52 / 32
Регистрация: 24.03.2013
Сообщений: 1,121
03.06.2013, 13:37
Если бы там не было строки:
C++
1
system("cls");  // очищаем экран
то получилось бы 5 строк, а так создаётся впечатление что просто секунды тикают!
0
1 / 0 / 1
Регистрация: 03.06.2013
Сообщений: 14
03.06.2013, 13:40  [ТС]
Цитата Сообщение от serggg Посмотреть сообщение
Если бы там не было строки:
C++
1
system("cls");  // очищаем экран
то получилось бы 5 строк, а так создаётся впечатление что просто секунды тикают!
нельзя ли сделать чтобы только секунда менялась ?
- а-то вся строка моргает впечатление как-будто подзависает )
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,701
03.06.2013, 14:27
Цитата Сообщение от Naudiz Посмотреть сообщение
Т.к. компилятор в Dev-C++ пропускает такую явную ошибку: if(set = 29) - присваивание не является условием, если заменить на if(set == 29) всё работает, как надо. В новых версиях MinGW этот косяк исправили
Это не ошибка. Впрочем, последнее слово за стандартом, а я английского не знаю. А предупреждения бы не помешали в любом случае.

Цитата Сообщение от Naudiz Посмотреть сообщение
Dev С++ уже 100 лет в обед, как с такими делами в его форках хз.
надо качать Dev-C++ 4.9.2.5 без компилятора и ставить свой компилятор, какой надо
0
 Аватар для Naudiz
16 / 14 / 7
Регистрация: 04.11.2011
Сообщений: 137
03.06.2013, 14:40
Цитата Сообщение от kravam Посмотреть сообщение
Это не ошибка. Впрочем, последнее слово за стандартом, а я английского не знаю.
Впрочем GCC 4.6 на линуксе у меня такой код не пропускает(странно ведь MinGW его порт), да и Visual C++ такое не компилирует.
Цитата Сообщение от kravam Посмотреть сообщение
надо качать Dev-C++ 4.9.2.5 без компилятора
Просто я не особо слежу за этой IDE, вроде последняя официальная версия от Bloodshed - 4.9.9.2

Добавлено через 3 минуты
Ради интереса скачал Orwell Dev C++ (форк) - этой проблемы в частности и ряда других уже нет ))
0
 Аватар для serggg
77 / 52 / 32
Регистрация: 24.03.2013
Сообщений: 1,121
03.06.2013, 14:52
нельзя ли сделать чтобы только секунда менялась ?
- а-то вся строка моргает впечатление как-будто подзависает )
Тут уж никак! Т. к. ты хочешь получать строку "До выхода осталось ... секунд" каждый раз - то только так! А если без этой строки, чтобы на экране было только число секунд - то можно!
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.06.2013, 15:18
Цитата Сообщение от Naudiz Посмотреть сообщение
Visual C++ такое не компилирует
Очень даже компилирует.
Т.к. компилятор в Dev-C++ пропускает такую явную ошибку: if(set = 29) - присваивание не является условием
И вообще это не ошибка. А если написать: if (cin >> a), то это тоже ошибка? Присваивание имеет результат, этот результат if и анализирует: 0 или не 0.
0
 Аватар для Naudiz
16 / 14 / 7
Регистрация: 04.11.2011
Сообщений: 137
03.06.2013, 15:22
alsav22, спорить не буду, но у меня VS 2010 Ultimate ругается на такую запись, хоть убейте.
_THE_f0restw0w, вынести счетчик секунд на новую строку))
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.06.2013, 15:35
Цитата Сообщение от Naudiz Посмотреть сообщение
alsav22, спорить не буду, но у меня VS 2010 Ultimate ругается на такую запись, хоть убейте.
_THE_f0restw0w, вынести счетчик секунд на новую строку))
Я тоже не буду, просто покажу.
Миниатюры
Ошибка в dev C++!  
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,701
03.06.2013, 19:27
Цитата Сообщение от Naudiz Посмотреть сообщение
вроде последняя официальная версия от Bloodshed - 4.9.9.2
А, ну да.

Цитата Сообщение от Naudiz Посмотреть сообщение
Впрочем GCC 4.6 на линуксе у меня такой код не пропускает(странно ведь MinGW его порт), да и Visual C++ такое не компилирует.
mingw/g++ 4.6.2 пропускает

Надо посмотреть, что говорит стандарт. Буду очень огорчён, если он считает это ошибкой.

Добавлено через 4 минуты
Может пригодится кому:
"Однако засада есть и кроется она вот в чём. Хоть и редко, но бывают случаи, когда на месте операций сравнения действительно находится присваивание и автор хочет сделать присваивание и сравнение результата с нулём. А потому компилятор должен предоставить программисту возможность написать такой код таким образом, чтобы не возникало предупреждений. По негласным соглашениям для таких случаев программист должен экранировать присваивание дополнительными круглыми скобками. Т.е. если написать "if (x = 0)", то компилятор выдаст предупреждение, а если написать "if ((x = 0))" - то нет.
"
Отсюда взято:
https://www.cyberforum.ru/blogs/18334/blog104.html
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.06.2013, 19:48
http://ideone.com/2NAWum
http://ideone.com/uNciDU
http://ideone.com/8gqwmG
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.06.2013, 19:48
Помогаю со студенческими работами здесь

Ошибка линковщика в Dev-C++ 4.9.9.2
Решил попробовать написать какую-нибудь программу с использование glut.h. Установил glut.h написал следующее: #include...

Ошибка компиляции в Dev C++
Здравствуйте, у меня есть ошибка с комплиации в dev c++, ОС Windows 8.1 Профессиональная

Ошибка stdafx в Dev C++
Not such file in derectory. Без stdafx код не работает, но дев выдает ошибку

Ошибка компиляции с dev c ++
Не получается скомпилировать, ошибок нет

Ошибка -lglut32. Dev C++
#include&lt;stdlib.h&gt; #include&lt;GL/glut.h&gt; #include&lt;math.h&gt; int w=800,h=600; int x,y; void DrawBox() { glColor3f(1.0,0.0,0.0); ...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru