• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Podpowiedz w stworzeniu funkcji, ktora bedzie uzywala operatorow bitowych

0 głosów
280 wizyt
pytanie zadane 22 maja 2018 w C i C++ przez DragonCoder Nałogowiec (36,500 p.)
zamknięte 23 maja 2018 przez DragonCoder

Witam,

tworze projekt z gui, ktory ma tworzyc tabele z wyjsciami. Uzytkownikowi pokazuje sie ComboBox x3. W pierwszym wybiera pierwsze wejscie(input 1), w drugim 2 wejscie (input 2), a w trzecim jeden z operatorow bitowych (or, and itd). Teraz chcialem stworzyc funkcje, ktora sama wy wyliczala, to co wybierze uzytkownik:

#include <iostream>
#include <string>

#define OR  |
#define AND  &
#define NEGATION  ~

#define bit_operators [4] = {AND, OR, NEGATION, IDENTITY};

int a,b = 0;
int c;

void z1(input_one, input_two, bit_operator){
  output = intput_one bit_operator input_two
}



int main()
{
  int wejscie;

  std::cin>> wejscie;
  if ((wejscie==1) OR (wejscie == 2)){
    for (int i=0; i<4; i++){
      std::cout<<i;
    }
}else{
  std::cout<<"kappa";
}
}

Tak wiem, ze funkcja z1 nie dziala, ale wlasnie zastanawiam sie, jak mozna zrobic podobna funkcje, to znaczy funkcje ktora dzialalaby podobnie do tej, czyli pobiera z comboboxa input, pozniej wstawia operator bitowy i laczy go z drugim inputem. Niby moglby sprawdzic, co wybral uzytkownik przez if itd, ale gdy program bedzie duzy, a liczba wejsc i wyjsc bedzie nieznana, to sprawa sie komplikuje, a takie jest zalozenie koncowe. Dowolna mozliwosc laczenia wejsc i wyjsc.

 

Dziekuje, za kazda podpowiedz. Milego wieczoru

DragonCoder

komentarz zamknięcia: Uzyskana odpowiedz jest wystarczajaca i pomogla

1 odpowiedź

+1 głos
odpowiedź 22 maja 2018 przez niezalogowany
wybrane 22 maja 2018 przez DragonCoder
 
Najlepsza

Może za pomocą unordered_map każdemu znakowi oznaczającemu daną operację przypisać odpowiadający obiekt funkcyjny (przyjmujący dwa argumenty):

#include <iostream>
#include <functional>
#include <unordered_map>

int main() 
{
	std::unordered_map<char, std::function<int(int, int)>> operation_map =
	{
		{ '&', std::bit_and<int>() },
		{ '|', std::bit_or<int>() },
		{ '^', std::bit_xor<int>() }
	};

	int value1, value2;
	char op;

	while (std::cin >> value1 >> op >> value2)
	{

		if (operation_map.find(op) != operation_map.end())
		{
			std::cout << operation_map[op](value1, value2) << "\n";
		}
		else
		{
			std::cout << "unknown operation\n";
		}
	}
}

 

komentarz 22 maja 2018 przez DragonCoder Nałogowiec (36,500 p.)
Do op, przypisuje operator z combo boxa, a do reszty przypisuje tablice intow i tyle.

Ok, przeanalizuje to i jak bede mial pytanie to zapytam, ale dziekuje za szybka odpowiedz.
komentarz 22 maja 2018 przez DragonCoder Nałogowiec (36,500 p.)

Chcialem jeszcze zapytac:

#define OR  |
#define AND  &
#define NEGATION  ~
#define OPERATOR

tutaj zdefiniowalem tylko OPERATOR i nic wiecej, czy moge mu nadac wartosc, podczas trwania programu? Wiem, ze to raczej sprzeczne, bo preprocesory wykonuja sie odrazu, a pozniej reszta kodu, ale da sie to obejsc?

komentarz 22 maja 2018 przez niezalogowany
Nie da się.

Podobne pytania

0 głosów
1 odpowiedź 1,231 wizyt
pytanie zadane 27 marca 2016 w C i C++ przez SebekChlebek Stary wyjadacz (11,290 p.)
+1 głos
2 odpowiedzi 2,791 wizyt
0 głosów
1 odpowiedź 733 wizyt
pytanie zadane 17 lutego 2018 w PHP przez sapero Gaduła (4,100 p.)

93,742 zapytań

142,678 odpowiedzi

323,297 komentarzy

63,328 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...