Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
_THE_f0restw0w
1 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 14
03.06.2013, 10:24     Ошибка в dev C++! #1
Сделал небольшую программку,при вводе числа 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();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2013, 10:24     Ошибка в dev C++!
Посмотрите здесь:

dev c++: ошибка <anonymous union> C++
C++ ошибка Dev-c++
ошибка Dev-C++ C++
C++ Ошибка в Dev C++
C++ Ошибка в Dev-C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
serggg
53 / 37 / 5
Регистрация: 24.03.2013
Сообщений: 630
03.06.2013, 11:15     Ошибка в dev C++! #2
Ну как-то вот так:
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 сек и выходим
    }
}
_THE_f0restw0w
1 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 14
03.06.2013, 12:40  [ТС]     Ошибка в dev C++! #3
Цитата Сообщение от 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();
так как он отлавливает все что входит в консоль..
serggg
53 / 37 / 5
Регистрация: 24.03.2013
Сообщений: 630
03.06.2013, 12:44     Ошибка в dev C++! #4
Можно сделать так:
Подключить библиотеку:
C++
1
#include <conio.h>
И на место cin.get(); написать:
C++
1
_getche();
И тогда программа остановится, пока вы не нажмёте любую клавишу!
А если вам нужно нажатие определённой клавиши, то в скобках указываете её код.
_THE_f0restw0w
1 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 14
03.06.2013, 13:09  [ТС]     Ошибка в dev C++! #5
Цитата Сообщение от serggg Посмотреть сообщение
Можно сделать так:
Подключить библиотеку:
C++
1
#include <conio.h>
И на место cin.get(); написать:
C++
1
_getche();
И тогда программа остановится, пока вы не нажмёте любую клавишу!
А если вам нужно нажатие определённой клавиши, то в скобках указываете её код.
Ещё раз спасибо...можно ещё вопросик..
А как сделать обратный отсчет времени например где:

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

и чтобы этот % секунд брало из Sleep()
но прибавляло ещё +100 к времени но Sleep остался тотже...
тоесть % секунд нужно что-бы показывало на 0.1 больше...
serggg
53 / 37 / 5
Регистрация: 24.03.2013
Сообщений: 630
03.06.2013, 13:18     Ошибка в dev C++! #6
Вот так будет:
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
        }
    }
Naudiz
 Аватар для Naudiz
14 / 12 / 1
Регистрация: 04.11.2011
Сообщений: 137
03.06.2013, 13:19     Ошибка в dev C++! #7
_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 лет в обед, как с такими делами в его форках хз.
serggg
53 / 37 / 5
Регистрация: 24.03.2013
Сообщений: 630
03.06.2013, 13:24     Ошибка в dev C++! #8
Naudiz
Проблема уже давно решена
_THE_f0restw0w
1 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 14
03.06.2013, 13:34  [ТС]     Ошибка в dev C++! #9
Цитата Сообщение от serggg Посмотреть сообщение
Naudiz
Проблема уже давно решена
так не получается нужен отсчет по sleep..
а не всё сразу..
получится что просто цикл выведет 5 строк со значениями в меньшую сторону...
нужно чтобы поочерёдно шло,секунда пройдёт, выведет что осталось сколько-то секунд..

Добавлено через 1 минуту
А нет извените...всё работает спасибо!
serggg
53 / 37 / 5
Регистрация: 24.03.2013
Сообщений: 630
03.06.2013, 13:37     Ошибка в dev C++! #10
Если бы там не было строки:
C++
1
system("cls");  // очищаем экран
то получилось бы 5 строк, а так создаётся впечатление что просто секунды тикают!
_THE_f0restw0w
1 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 14
03.06.2013, 13:40  [ТС]     Ошибка в dev C++! #11
Цитата Сообщение от serggg Посмотреть сообщение
Если бы там не было строки:
C++
1
system("cls");  // очищаем экран
то получилось бы 5 строк, а так создаётся впечатление что просто секунды тикают!
нельзя ли сделать чтобы только секунда менялась ?
- а-то вся строка моргает впечатление как-будто подзависает )
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,266
03.06.2013, 14:27     Ошибка в dev C++! #12
Цитата Сообщение от Naudiz Посмотреть сообщение
Т.к. компилятор в Dev-C++ пропускает такую явную ошибку: if(set = 29) - присваивание не является условием, если заменить на if(set == 29) всё работает, как надо. В новых версиях MinGW этот косяк исправили
Это не ошибка. Впрочем, последнее слово за стандартом, а я английского не знаю. А предупреждения бы не помешали в любом случае.

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

Добавлено через 3 минуты
Ради интереса скачал Orwell Dev C++ (форк) - этой проблемы в частности и ряда других уже нет ))
serggg
53 / 37 / 5
Регистрация: 24.03.2013
Сообщений: 630
03.06.2013, 14:52     Ошибка в dev C++! #14
нельзя ли сделать чтобы только секунда менялась ?
- а-то вся строка моргает впечатление как-будто подзависает )
Тут уж никак! Т. к. ты хочешь получать строку "До выхода осталось ... секунд" каждый раз - то только так! А если без этой строки, чтобы на экране было только число секунд - то можно!
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.06.2013, 15:18     Ошибка в dev C++! #15
Цитата Сообщение от Naudiz Посмотреть сообщение
Visual C++ такое не компилирует
Очень даже компилирует.
Т.к. компилятор в Dev-C++ пропускает такую явную ошибку: if(set = 29) - присваивание не является условием
И вообще это не ошибка. А если написать: if (cin >> a), то это тоже ошибка? Присваивание имеет результат, этот результат if и анализирует: 0 или не 0.
Naudiz
 Аватар для Naudiz
14 / 12 / 1
Регистрация: 04.11.2011
Сообщений: 137
03.06.2013, 15:22     Ошибка в dev C++! #16
alsav22, спорить не буду, но у меня VS 2010 Ultimate ругается на такую запись, хоть убейте.
_THE_f0restw0w, вынести счетчик секунд на новую строку))
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.06.2013, 15:35     Ошибка в dev C++! #17
Цитата Сообщение от Naudiz Посмотреть сообщение
alsav22, спорить не буду, но у меня VS 2010 Ultimate ругается на такую запись, хоть убейте.
_THE_f0restw0w, вынести счетчик секунд на новую строку))
Я тоже не буду, просто покажу.
Миниатюры
Ошибка в dev C++!  
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,266
03.06.2013, 19:27     Ошибка в dev C++! #18
Цитата Сообщение от 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))" - то нет.
"
Отсюда взято:
http://www.cyberforum.ru/blogs/18334/blog104.html
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2013, 19:48     Ошибка в dev C++!
Еще ссылки по теме:

ошибка в Dev C++ source not complete C++
Ошибка Dev C++ undefined reference C++
Ошибка компиляции в Dev C++ C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.06.2013, 19:48     Ошибка в dev C++! #19
http://ideone.com/2NAWum
http://ideone.com/uNciDU
http://ideone.com/8gqwmG
Yandex
Объявления
03.06.2013, 19:48     Ошибка в dev C++!
Ответ Создать тему
Опции темы

Текущее время: 09:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru