Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

1

28.03.2012, 12:46

Algorithmus für 1/x

HI

Kennt jemand von euch einen Algorithmus zur Berechnung von 1/x?

Das x wir als vector übergeben und so hat man dann auch für jede Ziffer der Zahl
eine Variable, die man dabei benutzen kann.

Kennt ihr da einen?
Danke schonmal

ProAmateur
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

28.03.2012, 13:04

Division lernt man doch schon in der Schule, oder? ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

idontknow

unregistriert

3

28.03.2012, 13:19

Für x=0 hat 1/x halt keine Lösung..

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

28.03.2012, 13:21

Er hat nicht spezifiziert, dass x=0 ist :) Aber ja, dieser mathematischen Tatsache sollte man sich bewusst sein.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

idontknow

unregistriert

5

28.03.2012, 13:27

Ich hab ehrlich gesagt ehh nicht richtig verstanden bzw bin mir nicht sicher ob ichs richtig verstanden habe was er mit "Das x wir als vector übergeben und so hat man dann auch für jede Ziffer der Zahl eine Variable, die man dabei benutzen kann." meint. Warum da einen vector übergeben? Ist aber auch egal letztlich einfach keine Null und die Welt ist in Ordnung :P.

6

28.03.2012, 13:34

Meine Lösung für das x=0 Problem wäre

Quellcode

1
2
3
4
5
6
7
8
9
public Vec3 OneDivX (Vec3 x)
{
 try {
  return 1.0f / x;
 }
 catch(Exception ex) {
  return Vec3(42.0, 42.0, 42.0);
 }
}
Musikvisualisierungsprojekt Soundbild 2

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

28.03.2012, 13:42

42 finde ich gut, aber try/catch sollte man wirklich nicht als Control-Flow verwenden. Ganz und gar nicht.

Außerdem meinte er sicher keinen Vec3, sondern eher einen std::vector<char>.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

8

28.03.2012, 13:52

ok hab mich wohl sehr oberflächlich und ungenau ausgedrückt..
also nochmal:

Ich bin dabei ein klasse für (theoretisch) unendlich große Zahlen zu schreiben.
Darin besteht die Klasse aus einem vector jeder seiner Ziffern, so ist sie dann unendlich groß,
bzw. so groß wie Speichervolumen vorhanden ist P:
Jetzt bin ich bei der Division angekommen.
Da ich nicht weiß wie ich auf "normalen Weg" dividieren soll, wollte ich einfach
Divident * Divisor^-1

So und dafür brauche ich einen Algorithmus zur berechnung von 1/x mit x als instanz meiner BigNumber klasse,
worin, wie schon gesagt, jede Ziffer hintereinander in einem vector gespeichert ist.

Wüsste jemand wie ich das machen kann bzw. einen Algorithmus dafür?
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

9

28.03.2012, 13:54

Ich schätze mal, x soll ein Vektor mit Ziffern sein, aus denen du eine Zahl machen willst?
Das ginge dann so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
int Zahl=0;

foreach(Ziffer in X)
{
   Zahl*=10;//oder eine andere Basis, je nachdem
   Zahl+=Ziffer;
}

return 1/Zahl;


[edit]Knapp verpasst: Also deine gesamte Zahl ist zu Groß für ein Int?
Naja, dann mach einfach genau das, was du beim schriftlichen dividieren machen würdest. Allerdings dürfte es effizienter sein, x/y zu rechnen, statt x*1/y, weil du so ja noch eine zusätzliche Multiplikation brauchst.
Lieber dumm fragen, als dumm bleiben!

idontknow

unregistriert

10

28.03.2012, 14:02

C-/C++-Quelltext

1
2
3
4
5
int result = 0;
foreach(Zahl in Vector)
{
   result += 1/Zahl;
}


Angenommen das Zahl immer != 0 ist.

Werbeanzeige