Seite 1 von 1

Ersetzung vom Wert der Eingabe (anstatt der direkten Eingabe)

Verfasst: Di 21. Mai 2024, 08:56
von Lorz
Hallo!

Ich hatte in viewtopic.php?f=22&t=25581 bereits ein Problem beschrieben. In viewtopic.php?f=6&t=10257&hilit=SVerweis habe ich nun einen Hinweis gefunden, wie ich keine csv benötige, indem ich mit
\documentclass{article}
\makeatletter
\@namedef{70,8}{10}
\makeatother
\begin{document}
	\csname70,8\endcsname
\end{document}
Ersetzung vornehme.

(die Lösung auf die andere Weise mit Einbinden der csv bzw. Zahlenbereiche interessiert mich aber auch, deshalb lasse ich den anderen Thread von mir erst mal bestehen)

Mein Problem ist nun noch, dass mein zu ersetzender Wert nicht direkt "70,8" ist, sondern er ergibt sich aus einer Rechnung a la
\documentclass{article}
\usepackage[nomessages]{fp} 
\begin{document}

\FPeval{\Punkte}{2+1.5 +2.5+3.5 +1+2 +2+5  +3+1 +4 +1.5+2.5 +2.5 +1.5  +2.5 +1+4.5+2+1.5 +2.5 +1.5}
 \FPeval{\result}{trunc((\Punkte)/72*100,0)}$\result$,\FPeval{\result}{trunc((((\Punkte)/72*100)-trunc((\Punkte)/72*100,0))*10,0)}$\result$

\end{document}
dies liefert die Ausgabe 70,8. Wenn ich jedoch
\documentclass{article}
\usepackage[nomessages]{fp}
\makeatletter
\@namedef{70,8}{10}
\makeatother
\begin{document}
	
\FPeval{\Punkte}{2+1.5 +2.5+3.5 +1+2 +2+5  +3+1 +4 +1.5+2.5 +2.5 +1.5  +2.5 +1+4.5+2+1.5 +2.5 +1.5}
	
\csname\FPeval{\result}{trunc((\Punkte)/72*100,0)}$\result$,\FPeval{\result}{trunc((((\Punkte)/72*100)-trunc((\Punkte)/72*100,0))*10,0)}$\result$\endcsname

\end{document}		
wird die 70,8 nicht in die 10 umgewandelt. Gibt es also eine Möglichkeit, nicht die direkt die Recheneingabe, sondern den (Ausgabe-)Wert von result in csname einzulesen?

Re: Ersetzung vom Wert der Eingabe (anstatt der dirkten Eingabe)

Verfasst: Di 21. Mai 2024, 09:57
von Lorz
Ich habe es jetzt selbst hinbekommen:
\documentclass{article}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage[nomessages]{fp}
\makeatletter
\@namedef{780}{10}
\makeatother
\begin{document}
	
\FPeval{\Punkte}{2+1.5 +2.5+3.5 +1+2 +2+5  +3+1 +4 +1.5+2.5 +2.5 +1.5  +2.5 +1+4.5+2+1.5 +2.5 +1.5}
\FPeval{\Promill}{trunc(trunc((\Punkte)/72*100,0)*10+trunc((((\Punkte)/72*100)-trunc((\Punkte)/72*100,0))*10,0),0)}

\newcounter{mycounter}
\setcounter{mycounter}{\Promill}
\csname\themycounter\endcsname

\end{document}

Re: Ersetzung vom Wert der Eingabe (anstatt der dirkten Eingabe)

Verfasst: Di 21. Mai 2024, 11:50
von Lorz
Gibt es die Möglichkeit in \@namedef nicht nur einen Einzelwert, sondern eine ganze Liste an Werte zuordnen zu lassen?
Also etwa a=[1,2,3,4,5] und \@namedef{a[n],n=1..nops(a)}{b} oder so?
Denn ich habe vor allen Prozentwerten von 0 bis 100 Punktzahlen zuzuordnen (0 bis 15 Punkte).