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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
#1

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

17.11.2011, 00:44. Просмотров 663. Ответов 17
Метки нет (Все метки)

Напишите функцию, которая принимает два логических значения и один символ ('&', '|' или '^') и возвращает результат соответствующей логической операции.

Продемонстрируйте работу функции.
помогите а то что то не понимаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 00:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос функции странное задание (C++):

Странное поведение функции - C++
Здравствуйте! Я взялась за реализацию метода Крылова для нахождения коэффициентов характеристического полинома. Написала программу, но...

Странное на мой взгляд объявление функции - C++
Добрый день. В исходниках усмотрел следующую вещь: void __RPC_STUB IAMCollection_get_Count_Stub( IRpcStubBuffer *This, ...

Странное поведение map в объкт-функции - C++
есть класс class writer { map <string, list<string> > &dat; list<string> &all; bool flag; //true = familiya public: ...

Странное поведение функции работы с массивом(шаблон) - C++
Нужно написать функцию, которая из динамического массива удаляет все повторяющиеся элементы(остается только первый), массив сжимается.То...

Задание на функции - C++
Помогите решить задачку на функции С++ , что б работало в CodeGear Составить программу вычисления суммы факториалов всех четных чисел...

Задание на функции - сумма квадратов чисел - C++
Дан интервал натуральных чисел . Напечатать на экране все те числа, которые принадлежат этому интервалу и которые можно выразить как сумму...

17
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);
}
Но что-то я очень не уверен)
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
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;
}
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
17.11.2011, 01:13 #4
Serejke_qq, у Вас не обработан случай дополнения (по условию) и того что символ может быть левым (тогда результат что вернёт Ваша функция не определён).

Добавлено через 1 минуту
Хотя нет, дополнение у Вас проверяется, почему-то изначально не заметил.
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
17.11.2011, 01:14 #5
Gepar, лучше не использовать exit в программах на С++ (как и другие функции из C), при выходе из программы с её помощью, деструкторы не вызываются
0
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: лол... Давно не обновлял станичку... =)
0
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
    }
}
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
17.11.2011, 01:25 #8
Net_Wanderer, дык нечему вызываться же, оно и using namespace std тоже в больших приложениях не хорошо использовать если на то пошло, но ведь это не тот случай же

Добавлено через 1 минуту
Serejke_qq, вы возвращаете false в др. случаях, а как узнать что значит ваше false: это результат одной из 3х операций такой false или это последнее лже-false ?
0
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 перекладывает на систему освобождение ресурсов, которые не всегда система может освободить правильно
0
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;  // -_-
    }
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;
}
я так сделал
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
17.11.2011, 01:36 #12
Нарекаю тему названием "сделай свой велосипед".
sergeu90, Ваш велосипед без тормозов - что если символ не будет равен тем трём что Вы проверили, Вы ведь доверяете пользователю самому ввести что угодно в поток.
0
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
17.11.2011, 01:38  [ТС] #13
я понимаю надо обработать исключение но я делаю лабу не себе думаю препод не докулупаеться
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
17.11.2011, 01:45 #14
sergeu90, чтобы обработать исключение нужно сначала выбросить исключение
То что Ваша программа не учитывает другие варианты преподаватель точно "доколупается", в этом же вся суть - учитывать разные обстоятельства. То что Вы сделали объявление функции и сл. строкой начали её определять тоже выглядит немного странно - либо не объявляйте, либо перенесите определение под main уже.

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

Добавлено через 58 секунд
main должна возвращать значение, те быть типом int так как половина компиляторов на это ругаются либо выдают предупреждение.
1
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
17.11.2011, 01:46  [ТС] #15
я это все знаю прикалупаеться переделаю
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2011, 01:46
Привет! Вот еще темы с ответами:

Задание на двумерный массив с оформлением в виде функции - C++
Среди столбцов заданной целочисленной матрицы, содержащей только такие элементы, которые по модулю не больше m, найти ...

Глобальное задание массива в качестве параметра функции - C++
Дамы и господа, такой вопрос. Работаю с классами и функциями, и мне необходимо сделать так, чтобы значения в массиве сохранялись после...

Выполнить задание, оформив его в виде шаблона функции - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; const int MAXARRSIZE = 10000; // прототип фуннкции для...

задание используя функции!Решение есть,но без функций - C++
Решил такую вот задачу &quot; Написать программу решения задачи , используя функции: в основной функции ввести с клавиатуры или вычислить с...


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

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

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