Rechen Aufgabe!

Hallo Leute, ich habe mich mal mit meinem Kumpel unterhalten, und dann kamen wir auf eine Rechen Aufgabe, die ich nicht lösen konnte.
Mitlerweile ist sie mir leider wider entfallen, aber ich weiß noch das prinzip:

z.B.:

7 10

(damit ist gemeint, zwei Zahlen zu finden, die Addiert 7 ergeben und multipliziert 10) in diesem Fall: 5 und 2.

Die Aufgabe die ich damals gekommen bin war aber mit höheren Zahlen und auch mit Minus.

Jetzt wollte ich ein Programm schreiben in das man, in diesem Fall, 7 und 10 eingibt und es dann 5 und 2 anzeigt.
Ein müsste halt auch mit Minus funktionieren.

Bitte halft mir

mfg

Doran

Hallo,

Jetzt wollte ich ein Programm schreiben in das man, in
diesem Fall, 7 und 10 eingibt und es dann 5 und 2 anzeigt.
Ein müsste halt auch mit Minus funktionieren.

Du probierst in dem Programm doch vermutlich verschiedene Zahlen durch. Dann kannst du halt wie bisher alle interesannten Zahlen durchlaufen, nur halt dabei alle möglichen Vorzeichenkombinationen durchprobieren. Wenn das Produkt (in dem Fall 10) positiv ist, musst du nur beide positiv oder beider negativ probieren, wenn es negativ ist, musst du die Möglichkeiten mit entgegengesetztem Vorzeichen anschauen.

Grüße,
Moritz

Hallo,

Das ist zwar gut, aber ich weiß einfach nicht, wie ich das programmieren soll.

könnte mir vielleicht jemand den quelltext senden?

Bitte helft mir.

mfg

Doran

Hallo Doran,

Jetzt wollte ich ein Programm schreiben in das man, in
diesem Fall, 7 und 10 eingibt und es dann 5 und 2 anzeigt.
Ein müsste halt auch mit Minus funktionieren.

ein bißchen Mathematik kann da auch helfen:
Wenn die Zahlen a=7 und b=10 vorgegeben sind, dann suchst Du zwei Zahlen x, y für die gilt:

x + y = a
x \* y = b

Umgeformt

y = a - x
x \* (a - x) = b

und noch einmal umgeformt

y = a - x
x^2 - ax + b = 0

Damit mußt Du nur eine quadratische Formel lösen und dann einsetzen, also

x = a/2 +/- sqrt(a^2/4 - b)
y = a/2 -/+ sqrt(a^2/4 - b)

Wenn Du statt dessen
x - y = a
x * y = b
haben willst (also mit Minus statt Plus), dann ergibt sich

x = -a/2 +/- sqrt(a^2/4 + b)
y = a/2 +/- sqrt(a^2/4 + b)

Da frage ich mich, ob es nicht schneller geht, den Kopf (oder Taschenrechner) zu verwenden anstatt ein Programm zu schreiben :wink:

Gruß
Diether

Hallo Doran,

Das ist zwar gut, aber ich weiß einfach nicht, wie ich das
programmieren soll.

könnte mir vielleicht jemand den quelltext senden?

int x, y;
for (x = INT\_MIN; x 

Nun mußt Du nur noch ein Überlaufen bei den Berechnungen abfangen und die ~2^64 Schleifendurchläufe (bei 32-Bit-Integer) abwarten. Aber das läßt sich auch noch verbessern (Hinweis: nutze 'x + y == 7' aus).


Gruß
Diether

Hallo,

leider kenne ich mich da noch nicht so aus, und kann desshalb auch nicht das Including(heißt doch so, oder?) selber schreiben.
kann mir jemand code senden, den ich nur noch kopieren muss?

Es währe mir sehr damit geholfen.

mfg

Doran

Hallo Doran,

kann mir jemand code senden, den ich nur noch kopieren muss?

Nein, deine Hausaufgaben musst du schon selbst lösen.

Es währe mir sehr damit geholfen.

Dahs glauhbe ihch dihr sogahr.

mfg
Martin

Nein, deine Hausaufgaben musst du schon selbst lösen.

Das sind nicht meine Hausaufgaben, ich kam mit einem Kumpel auf die Aufgabe.

Doch da war die Aufgabe:

1215,54 (erste Zahl plus zweite Zahl)
46565,869 (erste Zahl mal zweite Zahl)

Kann mir denn das mal jemand mit dem Taschenrechner ausrechnen?
Ich kann das nämlich nicht.

Und wie mach ich das im Programm?

mfg

Doran

Hallo Doran,

ich dachte, meine erste Antwort ist für diese Aufgaben ausreichend.

Doch da war die Aufgabe:

1215,54 (erste Zahl plus zweite Zahl)
46565,869 (erste Zahl mal zweite Zahl)

Kann mir denn das mal jemand mit dem Taschenrechner
ausrechnen?
Ich kann das nämlich nicht.

dknof@localhost:~$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
scale=10
a=1215.54
b=46565.869
x = a/2 + sqrt(a^2/4 - b)
y = a/2 - sqrt(a^2/4 - b)
x+y
1215.5400000000
x\*y
46565.8690000581

Und wie mach ich das im Programm?

Für C einfach die Formeln übertragen:

double a=1215.54;
double b=46565.869;
double x = a/2 + sqrt(a\*a/4 - b);
double y = a/2 - sqrt(a\*a/4 - b);
printf("x=%g\ny=%g\nx+y=%g\nx\*y=%g\n", x, y, x+y, x\*y);

MfG
Diether

Hallo,

tut mir echt leid, aber ich verstehe nur Bahnhof.
Wenn ich den Text Kopiere bekomme ich 3 Fehler und 1 Warnung.
Und was für ein Including(heißt doch so oder?) muss ich denn noch hinschreiben?

Bitte helft mir

Doran

Hallo Doran,

tut mir echt leid, aber ich verstehe nur Bahnhof.
Wenn ich den Text Kopiere bekomme ich 3 Fehler und 1 Warnung.
Und was für ein Including(heißt doch so oder?) muss ich denn
noch hinschreiben?

Ich habe natürlich nicht die gesamte Quelldatei kopiert, den Rest drumherum mußt Du schon selber ausfüllen.
Da Du in diesem Brett fragen stellst erwarte ich Grundkenntnisse im Programmieren allgemein und in C/C++ insbesondere. Mehr brauchst Du mit meiner Vorlage nicht.
Wenn Dir die Grunkenntnisse fehlen, dann nutze doch etwas, mit dem Du arbeiten kannst (z.B. einen Taschenrechner). Den halte ich für diese Problemstellung auch für geeigneter und habe daher meine erste Antwort darauf zugeschnitte.

Gruß
Diether