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

функции странное задание - C++

Восстановить пароль Регистрация
 
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
17.11.2011, 00:44     функции странное задание #1
Напишите функцию, которая принимает два логических значения и один символ ('&', '|' или '^') и возвращает результат соответствующей логической операции.

Продемонстрируйте работу функции.
помогите а то что то не понимаю
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 00:44     функции странное задание
Посмотрите здесь:

Задание на функции C++
Странное поведение функции работы с массивом(шаблон) C++
Странное поведение map в объкт-функции C++
C++ Задание на функции - сумма квадратов чисел
C++ Спасайте х( Простое задание на функции, сумма квадратов чисел
C++ Как выполнить задание (написать две функции getAllDivisors и getLowestDivisor)
Странное на мой взгляд объявление функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Serejke_qq
 Аватар для Serejke_qq
150 / 108 / 9
Регистрация: 06.07.2011
Сообщений: 224
Завершенные тесты: 2
17.11.2011, 01:03     функции странное задание #2
Выглядеть походу должно как-то так..
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
41
42
43
44
45
46
#include <iostream.h>
#include <conio.h>
 
bool f(bool x, bool y, char w);
 
int main(int argc, char* argv[])
{
        bool x,y,r;
        char w;
 
        cout << "x = "; cin >> x;               // Ввод 1 или 0
        cout << "y = "; cin >> y;               // 1 или 0
        cout << "znak = "; cin >> w;
 
        r = f(x,y,w);
 
        cout <<"res = "<< r  ;
 
        getch();
        return 0;
}
 
bool f(bool x, bool y, char w)
{
        if(w = '&')
                return (x&&y);    // Или return(x*y);
        /*
            Так должно быть:
            x = 0 y = 0 rez = 0
            x = 0 y = 1 rez = 0
            x = 1 y = 0 rez = 0
            x = 1 y = 1 rez = 1
        */
 
        if(w = '|')
                return (x|y);     // Или return(x+y);
        /*
            Так должно быть:
            x = 0 y = 0 rez = 0
            x = 0 y = 1 rez = 1
            x = 1 y = 0 rez = 1
            x = 1 y = 1 rez = 1
        */
        if(w = '^')
                return (x^y);
}
Но что-то я очень не уверен)
Gepar
 Аватар для Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
17.11.2011, 01:10     функции странное задание #3
Как-то так:
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;
 
int StrangeFunction(bool a,bool b, char c)
{
    switch (c)
    {
        case '|':
         return a|b;
 
        case '^':
         return a^b;
 
        case '&':
         return a&b;
 
        default:
         exit(1);
    }
}
 
int main()
{
    bool result=StrangeFunction(true,false,'|');
    cout<<boolalpha<<result;
}
Gepar
 Аватар для Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
17.11.2011, 01:13     функции странное задание #4
Serejke_qq, у Вас не обработан случай дополнения (по условию) и того что символ может быть левым (тогда результат что вернёт Ваша функция не определён).

Добавлено через 1 минуту
Хотя нет, дополнение у Вас проверяется, почему-то изначально не заметил.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
17.11.2011, 01:14     функции странное задание #5
Gepar, лучше не использовать exit в программах на С++ (как и другие функции из C), при выходе из программы с её помощью, деструкторы не вызываются
TwiX
60 / 60 / 1
Регистрация: 27.10.2011
Сообщений: 189
17.11.2011, 01:14     функции странное задание #6
http://www.newty.de/fpt/intro.html#what
Вот тут вначале есть подобная штуку (только +, -, *, /). Немного подправить и всё. Вот пример умножения:
int Multiply(int a, int b) { return a&b; } //Или взять &&, если нужно не побитовое умножение
UPD: лол... Давно не обновлял станичку... =)
Serejke_qq
 Аватар для Serejke_qq
150 / 108 / 9
Регистрация: 06.07.2011
Сообщений: 224
Завершенные тесты: 2
17.11.2011, 01:19     функции странное задание #7
Цитата Сообщение от Gepar Посмотреть сообщение
(тогда результат что вернёт Ваша функция не определён).
Точно) Ну добавить веточку else автору надеюсь не составит труда..

Хотя надо было делать кейсами -_-

Отак:

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
#include <iostream.h>
#include <conio.h>
 
bool f(bool x, bool y, char w);
 
int main(int argc, char* argv[])
{
        bool x,y,r;
        char w;
 
        cout << "x = "; cin >> x;
        cout << "y = "; cin >> y;
        cout << "znak = "; cin >> w;
 
        r = f(x,y,w);
 
        cout <<"res = "<< r  ;
 
        getch();
        return 0;
}
 
bool f(bool x, bool y, char w)    
{
        switch (w)
        {
        case '|':
                return x|y;
 
        case '^':
                return x^y;
 
        case '&':
                return x&y;
 
        default:
                return 0;   // х3 чё вернуть.. :D
    }
}
Gepar
 Аватар для Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
17.11.2011, 01:25     функции странное задание #8
Net_Wanderer, дык нечему вызываться же, оно и using namespace std тоже в больших приложениях не хорошо использовать если на то пошло, но ведь это не тот случай же

Добавлено через 1 минуту
Serejke_qq, вы возвращаете false в др. случаях, а как узнать что значит ваше false: это результат одной из 3х операций такой false или это последнее лже-false ?
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
17.11.2011, 01:26     функции странное задание #9
Цитата Сообщение от Gepar Посмотреть сообщение
дык нечему вызываться же
а деструкторы std::cout и std::cin ?
Цитата Сообщение от Gepar Посмотреть сообщение
Net_Wanderer, дык нечему вызываться же, оно и using namespace std тоже в больших приложениях не хорошо использовать если на то пошло, но ведь это не тот случай же
using namespace std - это лишь правило хорошего тона, а использование exit перекладывает на систему освобождение ресурсов, которые не всегда система может освободить правильно
Serejke_qq
 Аватар для Serejke_qq
150 / 108 / 9
Регистрация: 06.07.2011
Сообщений: 224
Завершенные тесты: 2
17.11.2011, 01:29     функции странное задание #10
Цитата Сообщение от Gepar Посмотреть сообщение
вы возвращаете false в др. случаях, а как узнать что значит ваше false: это результат одной из 3х операций такой false или это последнее лже-false ?
Вот по этому и х3 чё вернуть) там как раз bool...

Тогда так:

C++
1
2
3
4
5
6
...
    default:
    {
         cout << "Не знаю что делать! закрываю программу..";
         return 0;  // -_-
    }
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
17.11.2011, 01:34  [ТС]     функции странное задание #11
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
#include <iostream>
#include  <math.h>
#include <iomanip>
using namespace std;
bool func(bool i1, bool j1,char q1); 
 
bool func (bool i1, bool j1,char q1)
{
    if (q1=='&')
    {
        return i1 & j1;
    }
    if (q1=='|')
    {
        return i1 | j1;
    }
    if (q1=='^')
        return i1 ^ j1;
};
 
   
 
 
void  main(void)
{
 
    setlocale(LC_ALL,"Russian");
    bool  a,b;
    char q;
    double z;
    cout<<"Введите два логических оператора 1 или 0"<<endl;
    cin>>a>>b;
    cout<<"Введите cимвол '&', '|' или '^'"<<endl;
    cin>>q;
    z=func(a,b,q);
    cout<<"результат="<<z<<endl;
cin>>a;
}
я так сделал
Gepar
 Аватар для Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
17.11.2011, 01:36     функции странное задание #12
Нарекаю тему названием "сделай свой велосипед".
sergeu90, Ваш велосипед без тормозов - что если символ не будет равен тем трём что Вы проверили, Вы ведь доверяете пользователю самому ввести что угодно в поток.
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
17.11.2011, 01:38  [ТС]     функции странное задание #13
я понимаю надо обработать исключение но я делаю лабу не себе думаю препод не докулупаеться
Gepar
 Аватар для Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
17.11.2011, 01:45     функции странное задание #14
sergeu90, чтобы обработать исключение нужно сначала выбросить исключение
То что Ваша программа не учитывает другие варианты преподаватель точно "доколупается", в этом же вся суть - учитывать разные обстоятельства. То что Вы сделали объявление функции и сл. строкой начали её определять тоже выглядит немного странно - либо не объявляйте, либо перенесите определение под main уже.

Добавлено через 1 минуту
Задержка делается через
C++
1
system("PAUSE"); // принадлежит windows.h
а не через простой cin, в си ещё правда было модно использовать getch().

Добавлено через 58 секунд
main должна возвращать значение, те быть типом int так как половина компиляторов на это ругаются либо выдают предупреждение.
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
17.11.2011, 01:46  [ТС]     функции странное задание #15
я это все знаю прикалупаеться переделаю
Gepar
 Аватар для Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
17.11.2011, 01:46     функции странное задание #16
Но это я просто придираюсь от нечего делать, лучше ведь будет если я укажу Вам на ошибки и Вы их исправите, а не преподаватель Вам на них указывать.
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
17.11.2011, 01:47  [ТС]     функции странное задание #17
))ок)
переделаю
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2011, 01:51     функции странное задание
Еще ссылки по теме:

C++ Задание на двумерный массив с оформлением в виде функции
Странное поведение функции C++
C++ Выполнить задание, оформив его в виде шаблона функции
C++ Глобальное задание массива в качестве параметра функции
задание используя функции!Решение есть,но без функций C++

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

Или воспользуйтесь поиском по форуму:
Jupiter
17.11.2011, 01:51     функции странное задание
  #18

Не по теме:

Цитата Сообщение от Gepar Посмотреть сообщение
system("PAUSE"); // принадлежит windows.h
вообще-то stdlib.h/cstdlib
http://cplusplus.com/reference/clibrary/cstdlib/system/

Yandex
Объявления
17.11.2011, 01:51     функции странное задание
Ответ Создать тему
Опции темы

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