Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2013, 17:44   #1
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
Подмигивание Что тут неправильно???

Почему не компилируется код:

Код:
#include "mainwindow.h"

bool KeyFilter::eventFilter(QObject * pobj, QEvent * pe) {
    if(pe -> type() == QEvent::KeyPress) {
        if(((QKeyEvent *)pe) -> key() == Qt::Key_Z) {
            QKeyEvent * pe = new QKeyEvent(QEvent::KeyPress, Qt::Key_A,
                                           Qt::NoModifier,
                                           "A");

            QApplication::sendEvent(pobj, pe);
            return true;
        }
        if(((QKeyEvent *)pe) -> key() == Qt::Key_A) {
            QKeyEvent * pe = new QKeyEvent(QEvent::KeyPress, Qt::Key_Z,
                                           Qt::NoModifier,
                                           "Z");

            QApplication::sendEvent(pobj, pe);
            return true;
        }
    }

    return false;
}
Если нажать на клавиши "A" или "Z", то
Выводит: Программа неожиданно завершилась.

"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 28.03.2013, 17:49   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Мне кажется, или Вы получите исчерпание стека (нажали 'A' - нажалось 'Z' - нажалось 'A' - ...)?
Abstraction вне форума Ответить с цитированием
Старый 28.03.2013, 17:53   #3
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию

Спасибо!!!
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 28.03.2013, 17:56   #4
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию

Тогда почему, если Key_A заменить на Key_B, выводит "A"???
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 28.03.2013, 17:58   #5
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию

Все понял!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 28.03.2013, 19:37   #6
Proger16
Пользователь
 
Аватар для Proger16
 
Регистрация: 15.02.2013
Сообщений: 38
По умолчанию

Здравствуйте!
Я совсем недавно начал изучать язык C++. Мне 15 лет. Мой репетитор по программированию как-то дал мне задание - написать программу, используя условие if else. Вот что я написал:
#include <iostream>

using namespace std;

int main()
{
int x, y;
cin>>x>>y;
int z = (x+y)/(x-y);
if (x>y);
{
int z = (x+y)/(x-y);
}
else
{
int z = x*y/(x+y);
}
cout<<z;
return 0;
}


Но компилятор (Microsoft Visual Studio) выдаёт ошибку: Error 2 error C2181: illegal else without matching if
3 IntelliSense: expected a statement

Помогите пожалуйста, найдите ошибку. Первоначально их было 9. Но я сам нашёл 8, так что рассчитываю на вашу помощь!
Proger16 вне форума Ответить с цитированием
Старый 28.03.2013, 19:40   #7
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Код:
if (x>y);
Не нужна точка с запятой.

upd.
По сути и выделять блок фигурными скобками тут не нужно. Можно так:
Код:
if (x>y)
   z = (x+y)/(x-y);
else
   z = x*y/(x+y);
Да, и не надо каждый раз писать int z. Достаточно сделать это в одном месте программы.
Μολὼν λαβέ

Последний раз редактировалось alexander13; 28.03.2013 в 19:42.
alexander13 вне форума Ответить с цитированием
Старый 28.03.2013, 19:42   #8
Proger16
Пользователь
 
Аватар для Proger16
 
Регистрация: 15.02.2013
Сообщений: 38
По умолчанию Точно

Слушай! Ты ЧЕЛ!!!! Спасибо от души!!!! Помогло!!!
Proger16 вне форума Ответить с цитированием
Старый 28.03.2013, 19:49   #9
Proger16
Пользователь
 
Аватар для Proger16
 
Регистрация: 15.02.2013
Сообщений: 38
По умолчанию

Программа то пошла, но вот в чём проблема:
Мне надо было сделать программу, которая вычисляет значение функции z(x,y):
z(x,y) = (x+y)/(x-y), если x>y
z(x,y) = x*y/(x+y), в остальных случаях.
Значения x и y действительные (double) и вводятся с консоли.
После вычисления z вывести ее значение на консоль.
Проблема в том, что когда консоль просит ввести первое, затем второе число, то программы просто закрывается, а надо было сделать, чтобы значение z вывести на консоль. Помогите пожалуйста!

#include <iostream>

using namespace std;

int main()
{
int x, y;
cin>>x>>y;
int z = (x+y)/(x-y);
if (x>y)
{
int z = (x+y)/(x-y);
}
else
{
int z = x*y/(x+y);
}
cout<<z;
return 0;
}
Proger16 вне форума Ответить с цитированием
Старый 28.03.2013, 19:52   #10
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

Код:
......cout<<z;


cin.get();
cin.get();
return 0;
}
Сделай на форуме свою тему, а то в чужой.)))))
Fanyuus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что тут сделать? Izobara Свободное общение 43 19.01.2013 16:55
что делаю неправильно zidane007_06 БД в Delphi 2 10.05.2011 22:28
паскаль.что неправильно? AndrewPl Помощь студентам 9 29.05.2010 22:35
что неправильно? helavisa Общие вопросы C/C++ 18 02.06.2009 17:51