Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > C/C++, Visual C++, Visual C++.NET

C/C++, Visual C++, Visual C++.NET Fragen und Antworten zu C/C++, Visual C++ und Visual C++.NET

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50849, Antworten: 1390
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26615, Antworten: 4194
Gehe zum ersten neuen Beitrag Windows Oberfläche (Schrift,...
Aufrufe: 176, Antworten: 10
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 63, Antworten: 5
Gehe zum ersten neuen Beitrag TabCtrl
Aufrufe: 121, Antworten: 12
Gehe zum ersten neuen Beitrag Rechner fährt herunter,...
Aufrufe: 93, Antworten: 4
Gehe zum ersten neuen Beitrag Dateien lassen sich nicht...
Aufrufe: 17, Antworten: 2
Gehe zum ersten neuen Beitrag Suche Programm um Werbung zu...
Aufrufe: 49, Antworten: 2
Gehe zum ersten neuen Beitrag McAfee AVERT Stinger...
Aufrufe: 13, Antworten: 0
Gehe zum ersten neuen Beitrag Sticky Password 6.0.2...
Aufrufe: 25, Antworten: 0
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30.11.2005, 00:52   #1 (Direktlink)
Forenmaskottchen
 
Registriert seit: 08.11.2005
Alter: 22
Beiträge: 721
Standard Programm zum Wurzel ziehen

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
Cage ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 02.12.2005, 23:03   #2 (Direktlink)
Stammuser
 
Registriert seit: 08.01.2004
Beiträge: 471
Standard

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:
wie findet das programm herraus, welche quadratzahlen die eingegebene zahl umklammern?
Naja, natürlich könnte man eine vordefinierte Wurzelfunktion verwenden, allerdings könnte man damit das ganze Programm in einen AUdruck fassen, was allerdings witzlos wäre. Hier geht es schließlich um das Berechnungsprinzip.
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.
Eckard41 ist offline   Mit Zitat antworten
Alt 04.12.2005, 01:30   #3 (Direktlink)
Forenmaskottchen
 
Registriert seit: 08.11.2005
Alter: 22
Beiträge: 721
Standard

hi
Zitat:
Bist du sicher, dass das nach dieser Methode und nicht nach dem Intervallschachtelungsverfahren gemacht werden soll?
tja, wuerd ich schon machen (wenns einfacher ist), aber das ist die einzige methode, die ich kenne. kannst du das irgentwie kurz erklaeren?

Zitat:
Ich hab das nun mal nach deine Erklärung in C++ gebastelt, kenne diese Methode zur Wurzelbestimmung allerdings nicht.
kannst du das auch in c "basteln" . bin immernoch am versuchen, den code zu verstehen...

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.
sorry, aber das check ich noch nicht. was ist die zaehlvariable? koenntest du das irgentwie noch mal verstaendlicher erklaeren?

aber trotzdem danke fuer die muehe!

gruss

cage
__________________
Change my Avatar
Cage ist offline   Mit Zitat antworten
Antwort

  Paules-PC-Forum.de > Programmierung > C/C++, Visual C++, Visual C++.NET

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an




Alle Zeitangaben in WEZ +2. Es ist jetzt 05:27 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2