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

Bool переменные - как записать таблицы истинности функции, используя цикл - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Адаптировать задачу для работы с файлом http://www.cyberforum.ru/cpp-beginners/thread513038.html
Дали такое задание: написать функцию revpositn которая которая принмает два параметра str1,str2 типа string и возвращает позицию начала первого появления в str1 текста содержащего литеры str2 в обратном порядке. Другими словами при вводе слов vnesnos sen выведет 2. Теперь суть проблемы. Написать программу я написал, и она работает: #include <iostream> #include <stdio.h> #include <string> ...
C++ Реализация класса "Время" Помогите в реализации класса 1.разность двух времен в секундах, 2.прибавление ко времени одной секунды, 3.сравнение двух времен, Заранее спасибо! Добавлено через 57 секунд #include "stdafx.h" #include <iostream> http://www.cyberforum.ru/cpp-beginners/thread513024.html
Извлечь из записи целого числа нули C++
Извлеч из записи целого числа нули
C++ Составить программу, которая по введенному числу n печатает фразу
составить программу которая по введенному числу n печатает фразу "n долларов" в правильной форме "2 доллара,21 доллар" помогите
C++ Разработать функцию, которая сравнивает две строки, игнорируя количество пробелов между словами http://www.cyberforum.ru/cpp-beginners/thread512995.html
Имеется такое задание: Разработать функцию, которая сравнивает две строки, игнорируя количество пробелов между словами. Можете объяснить как это можно сделать? Пишу в Microsoft Visual Studio ->Win32 Console application ->C++.
C++ Напишите программу, которая соединит три строки в одну таким образом, что... Заданы три строки длиной по 11 символов. Напишите программу, которая соединит три строки в одну таким образом, что в первую очередь будет располагаться строка, которая начинается с любого символа от «а» до «d», затем строка, которая начинается с любого символа от «е» до «k». Строка, которая начинается с любого символа после «k» будет располагаться на последнем месте. В результирующей строки... подробнее

Показать сообщение отдельно
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
15.03.2012, 11:23     Bool переменные - как записать таблицы истинности функции, используя цикл
Цитата Сообщение от go Посмотреть сообщение
так сделал
Обновил:
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 <algorithm>
#include <iostream>
#include <iterator>
#include <array>
 
bool foo(const std::array<bool, 3> values)
{
   return ((!values[0] && values[2]) || (values[0] && !values[1]));
}
 
int main()
{
   std::array<bool, 3> values;
   
   for (std::size_t i = 0; i < (1U << values.size()); ++i)
   {
      for (std::size_t j = 0; j < values.size(); ++j)
         values[j] = i & (1U << j);
 
      std::copy(std::begin(values), std::end(values), std::ostream_iterator<bool>(std::cout, " | "));
      std::cout << foo(values) << std::endl;
   }
}
http://liveworkspace.org/code/0ca42e...12b5f621754904

Код
0 | 0 | 0 | 0
1 | 0 | 0 | 1
0 | 1 | 0 | 0
1 | 1 | 0 | 0
0 | 0 | 1 | 1
1 | 0 | 1 | 1
0 | 1 | 1 | 1
1 | 1 | 1 | 0
Добавлено через 5 минут
Для четырех соответственно меняем размер массива и добавляем перегруженную функцию:
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 <algorithm>
#include <iostream>
#include <iterator>
#include <array>
 
bool foo(const std::array<bool, 3> values)
{
   return ((!values[0] && values[2]) || (values[0] && !values[1]));
}
 
bool foo(const std::array<bool, 4> values)
{
   return ((!values[0] && values[2]) || (values[1] && !values[3]));
}
 
int main()
{
   std::array<bool, 4> values;
   
   for (std::size_t i = 0; i < (1U << values.size()); ++i)
   {
      for (std::size_t j = 0; j < values.size(); ++j)
         values[j] = i & (1U << j);
 
      std::copy(std::begin(values), std::end(values), std::ostream_iterator<bool>(std::cout, " | "));
      std::cout << foo(values) << std::endl;
   }
}
Код
0 | 0 | 0 | 0 | 0
1 | 0 | 0 | 0 | 0
0 | 1 | 0 | 0 | 1
1 | 1 | 0 | 0 | 1
0 | 0 | 1 | 0 | 1
1 | 0 | 1 | 0 | 0
0 | 1 | 1 | 0 | 1
1 | 1 | 1 | 0 | 1
0 | 0 | 0 | 1 | 0
1 | 0 | 0 | 1 | 0
0 | 1 | 0 | 1 | 0
1 | 1 | 0 | 1 | 0
0 | 0 | 1 | 1 | 1
1 | 0 | 1 | 1 | 0
0 | 1 | 1 | 1 | 1
1 | 1 | 1 | 1 | 0
 
Текущее время: 15:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru