![]() |
Anzeige:
|
|
|||||||
| C/C++, Visual C++, Visual C++.NET Fragen und Antworten zu C/C++, Visual C++ und Visual C++.NET |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 08.11.2005
Alter: 22
Beiträge: 721
|
hallo
ich moechte ein programm zum wurzelziehen schreiben, komm aber nicht weiter. in der schule haben wir handschriftliches wurzelziehen folgendermasen gelernt(gibt, glaub ich noch eine andere methode): gesucht: wurzel aus 11 die naechst niedrige und hoeere quadratzahlen sind 9 und 16 der kleinere abstand ist zur 9 -> daraus die wurzel ist 3, die hat man schon mal. wurzel aus 9 = 3 wurzel aus 11 = 3, ?? wurzel aus 16 = 4 jetzt nimmt man den unterschied der beiden zahlen (9 und 16), also 7 und den unterschied zwischen der 11 und der zahl, wo der andere unterschied kleiner ist, also 9 -> unterschied ist 2. daraus macht man 2/7 + die vorher ermittelte zahl, hier also 3. = ca. 3,28 hoffe, man kann das verstehen. hier nochmal vieleicht einfacher: --- --- W. aus 9 =3 | | 2 | |__ W. aus 11 =3.2/7 = 3.28 |7 |____ W. aus 16 = 4 so, mathe stunde vorbei, jetzt das programm: eingabe: 11 11 = groesser als 9, kleiner als 16 unterschied zu 9: 2, zu 16= 5 -> 2 kleiner als 5 unterschied zwischen 9 und 16 ist 7 (16-9) Ergebnis: wurzel, zu der der unterschied kleiner ist (hier 3) + unterschied zwischen 9 und 11 = 2 geteilt durch unterschied zwischen 9 und 16 = 7, also 3+(2/7)(macht der compiler automatisch punkt vor strich?) meine probleme: wie findet das programm herraus, welche quadratzahlen die eingegebene zahl umklammern? und: wie findet das programm die unterschiede zwischen den zahlen herraus? hoffe, ich hab das halbwegs verstaendlich ausgedrueckt. bin fuer alle loesungsvorschlaege offen (ausser: benutz doch nen taschenrechner!)! EDIT: programm soll in c geschrieben werden. gruss cage
__________________
Change my Avatar |
|
|
|
|
|
|
#2 (Direktlink) | |
|
Stammuser
![]() Registriert seit: 08.01.2004
Beiträge: 471
|
Bist du sicher, dass das nach dieser Methode und nicht nach dem Intervallschachtelungsverfahren gemacht werden soll?
Der Anfang ist zwar gleich, aber wesentlich genauer trifft man das Ergebnis wenn man bis auf eine bestimmte Zahl weiter zwischen nächst kleinerer und größerer Quadratzahl einschränkt. Ich hab das nun mal nach deine Erklärung in C++ gebastelt, kenne diese Methode zur Wurzelbestimmung allerdings nicht. Code:
#include <iostream.h>
#include <conio.h>
int main() {
int input = 0;
int minor_square = 0;
int major_square = 0;
int square_minor = 0;
int diff_i2minor = 0;
int diff_i2major = 0;
int abs_diff = 0;
cin >> input;
for (int i = 1; i <= input; i++) {
major_square = i * i;
if (major_square == input) {
minor_square = major_square;
break;
} else {
if (major_square < input) {
minor_square = major_square;
} else {
break;
}
}
}
diff_i2minor = input - minor_square;
diff_i2major = major_square - input;
abs_diff = major_square - minor_square;
for (int n = 1; n < minor_square; n++) {
if (n * n == square) {
square_minor = n;
}
}
cout << square_minor + (double) diff_i2minor/abs_diff;
getch();
}
Zitat:
Ich würde einfach in einer Schleife von 1 bis Eingabe (im Beispiel 11) die Zählvariable quadrieren und schauen, ob sie den Wert der Eingabe überschreitet. Außerdem speicherst du die jeweils die Quadratzahl aus dem letzten Durchgang. Dadurch erhälst du dein Intervall. Und ja, der Compiler beherrscht Punkt vor Strich. |
|
|
|
|
|
|
#3 (Direktlink) | |||
|
Forenmaskottchen
![]() Registriert seit: 08.11.2005
Alter: 22
Beiträge: 721
|
hi
Zitat:
Zitat:
Zitat:
aber trotzdem danke fuer die muehe! gruss cage
__________________
Change my Avatar |
|||
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|