Abfrage: ist ein Element in einer Menge enthalten?

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Abfrage: ist ein Element in einer Menge enthalten?

von cgnieder » Do 21. Apr 2016, 11:50

Dann vielleicht so:
\documentclass[a4paper,12pt]{article}
\usepackage{pgffor,etoolbox}

\newbool{iselement}

% #1: control sequence containing element to check
% #2: control sequence containing csv list of elements
% #3: true
% #4: false
\newcommand\checkelement[4]{%
  \global\boolfalse{iselement}%
  \foreach \Y in #2 {%
    \ifx#1\Y
      \global\booltrue{iselement}%
    \fi
  }%
  \ifbool{iselement}{#3}{#4}%
}

% #1 (optional): control sequence containing element of first set
% #2: control sequence containing first csv list of elements
% #3: control sequence containing second csv list of elements
% #4: true
% #5: false
\newcommand\checksets[5][\X]{%
  \foreach #1 in #2 {%
    \checkelement#1{#3}{#4}{#5}%
  }%
}

\begin{document}

\newcommand{\setX}{a,b,c,d}
\newcommand{\setY}{a}

Positivbsp: Menge Y = \setY

\checksets{\setX}{\setY}
  {Element \X\ ist auch in Menge Y.\par}
  {Element \X\ ist nicht in Menge Y.\par}

\bigskip
\renewcommand{\setY}{a,b,c}

Negativbsp: Menge Y = \setY

\checksets[\elementX]{\setX}{\setY}
  {Element \elementX\ ist auch in Menge Y.\par}
  {Element \elementX\ ist nicht in Menge Y.\par}

\end{document}
Grüße

von ravintastentyp123 » Mo 18. Apr 2016, 15:37

Okay, ich habe jetzt mal zusammengestellt, was ich bisher habe. Du siehst dann in dem Dokument, was schief läuft:
\documentclass[a4paper,12pt]{article}
\usepackage{ifthen,pgffor}

\newcommand{\ifiselementof}[4]{\foreach \element in #2 {\ifthenelse{\equal{\element}{#1}}{#3}{#4}}}

\newcommand{\setX}{a,b,c,d}
\newcommand{\setY}{a}

\begin{document}
Positivbsp: Menge Y = \setY\\
\foreach \elementX in \setX
{\ifiselementof{\elementX}{\setY}{Element \elementX\ ist auch in Menge Y.\\}{Element \elementX\ ist nicht in Menge Y.\\}}
\renewcommand{\setY}{a,b,c}
Negativbsp: Menge Y = \setY\\
\foreach \elementX in \setX
{\ifiselementof{\elementX}{\setY}{Element \elementX\ ist auch in Menge Y.\\}{Element \elementX\ ist nicht in Menge Y.\\}}
\end{document}

von cgnieder » Mo 18. Apr 2016, 13:08

Was ich eigentlich meinte, war: [mm][/mm] Dann kann man Dir was passendes vorschlagen…

Grüße

von ravintastentyp123 » Mo 18. Apr 2016, 13:06

Hallo Clemens,

danke für die Antwort! Also, die Mengen/Listen werden vorher im Latex-Code per (re)newcommand festgelegt und trennen die Elemente tatsächlich immer per Komma. (Jede Liste steht dann für eine Menge von Elementen, die eine bestimmte Eigenschaft haben, und die Abfrage soll dann klären, ob das eine spezifische Element eine bestimmte Eigenschaft hat.) Entsprechend sind die Listen auch unterschiedlich lang.

von cgnieder » Mo 18. Apr 2016, 12:51

Da gibt es so viele verschiedene Möglichkeiten, dass man nicht weiß, was man raten soll, wenn man Deine konkrete Anwendung nicht kennt. Ist die Liste tatsächlich eine csv-Liste? Kann die Liste alles enthalten? Ist die Liste konstant, oder soll sie per Input veränderbar sein? Soll die Abfrage expandierbar sein? Und, und, und, …
\documentclass{article}

\usepackage{expl3,xparse}

\ExplSyntaxOn
\NewDocumentCommand \funktion {mmmm}
  { \clist_if_in:nnTF {#1} {#2} {#3} {#4} }
\ExplSyntaxOff

\begin{document}

\funktion{a,b,c}{d}{1}{0} = 0

\funktion{a,b,c}{a}{1}{0} = 1

\end{document}
Grüße

von Besserwisser » Mo 18. Apr 2016, 12:47

Wo ist das Minimalbeispiel zur Frage?

Wie hast du denn die Mengen definiert? Falls du sie noch gar nicht definiert hast: LaTeX3 hat auch Funktionen für Listen.

Abfrage: ist ein Element in einer Menge enthalten?

von ravintastentyp123 » Mo 18. Apr 2016, 12:41

Hallo zusammen,

ich benötige grade einen Funktion, die mir sagt, ob ein Element in einer Menge enthalten ist. Ist also beispielsweise X={a,b,c} die zu durchsuchende Menge und d ein Element, für das ich entscheiden will, ob es in der Menge enthalten ist, so benötige ich eine Funktion f(d,X), die den Wert 1 annimmt, wenn d=a oder d=b oder d=c, und sonst 0.

Weiß hier jemand, wie eine solche Abfrage zu programmieren wäre?

Vielen Dank schon einmal!
Christian

Nach oben