-         

Ergebnis 1 bis 10 von 10

Thema: total überfordert!

  1. #1

    total überfordert!

    Anzeige

    Hallo ,

    ich studiere seit diesem Semester Machinenbau , unter anderem haben wir dort auch C-Programmierung.Davon höre ich zum ersten mal und habe dementsprechend relativ wenig Ahnung.

    Wir schreiben allerdings bald ein praktisches Testat und ich bräuchte zu folgender Aufgabe mal eure Hilfe.:

    wir sollen ein C-Programm schreiben welches die n-te Wurzel der Zahl a errechnet. Dies soll mithilfe des Itterationsverfahrens geschehen.

    x=1/n*((n-1)*x+a/x^(n-1)) , diese Formel ist gegeben. Das Programm soll n und a einlesen , wobei n ganzzahlig ist.

    Das ganze soll abbrechen wenn die Differenz zweier Itterationswerte kleiner als 10^-8 ist.

    x^(n-1) soll durch (n-1)-maliges Multiplizieren von x errechnet werden.

    Mein Quelltext sieht bis jetzt so aus:

    #include<stdio.h>
    #include<math.h>
    void main()
    {
    double x=0,a;
    int n,i=1;
    printf("\nWurzelrechnung\n");
    printf("a= ");
    scanf("%lf",&a);
    printf("n= ");
    scanf("%i",&n);





    }


    Habe auch ein bisschen mit der Formel rumprobiert aber es funktioniert nicht , bzw. nur ganz einfache Teile.

    Hoffe ihr könnt mir Helfen , Vielen Dank schonmal im Voraus.

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2007
    Beiträge
    386
    sollen wir auch gleich deine diplomarbeit schreiben?

    mensch, da musst du durch, setzt dich mit deinen kameraden zusammen und diskutiere darüber. es gibt bestimmt einige die davon ahnung haben.

    ansonsten würde ich maschinenbau aufgeben und tischler lernen.

  3. #3
    hab mir schon ein Buch durchgelesen mit den Grundlagen zur Programmierung. Wir hatten 2 Praktika und im 3. ist das o.g. Testat. Habe schon mehrere Stunden mit Übungen verbracht , aber die war kein Vergleich zu dem was hier gefordert ist. Unser Prof. setzt solche sachen vorraus und kann es einfach nicht erklären und der Übungsleiter sagt wieder das wir alles aus der Vorlesung können müssen. Geht mir ja nur um nen Ansatz bzw. einen Denkanstoß.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.02.2006
    Alter
    53
    Beiträge
    114
    Kannst du Unterprogramme schreiben? Wenn ja, dann schreib eines, um die Potenz zu berechnen, also z.B. Potenz(a,b) liefert a hoch b durch Multiplizieren.
    Ein zweites Unterprogramm berechnet dir die Näherungslösung, deine Formel, und benutzt dabei das Unterprogramm Potenz(),

    D. h. Naeherung(x0,a,n) liefert eine neue Näherung x1.

    Im Hauptprogramm rufst du dann Naeherung solange auf, bis die Differenz zwischen x1 und x0 klein genug ist.

    Poste einfach mal weiter deine Versuche hier.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2007
    Beiträge
    386
    ....und der Übungsleiter sagt wieder das wir alles aus der Vorlesung können müssen. ....


    na dann ist doch alles in ordnung..

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Ich würde das, als Anschlussvorschlag zu dem von phaidros, rekursiv machen, d.h. eine Funktion, die rechnet einen Teil und für den weiteren Teil ruft sie sich selbst mit neuen Parametern auf. Das passiert so lange, bis das Ergebnis < 10^-8 ist, dann gibt die innerste Funktion ihren Wert an den nächstinnere zurück usw. usw.

  7. #7
    den Vorschlag mit Unterprogrammen werden wir auch noch mal testen.
    haben jetzt weiter probiert und haben für die Berechnung von x^(n-1) folgendes:

    #include<stdio.h>
    #include<math.h>
    void main()
    { float b=1,n,x,z,k=1;
    printf("x= ");
    scanf("%f",&x);
    printf("n= ");
    scanf("%f",&n);

    while (k<=(n-1.))
    { k=k+1;
    b=(b*x)*(k/k);
    }
    if (k<=n);
    printf("b= %f",b);
    x=(1./n)*(((n-1)*x)+(a/b));

    }


    damit funktioniert die Berechnung , a/x ist jetzt quasi x/b.
    das Programm soll nun noch b selbst berechnen , so das es nicht mehr eingegeben werden soll.
    wir müssen nun noch die abbruchbedingung formulieren.

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.07.2004
    Ort
    bei Stuttgart
    Alter
    35
    Beiträge
    760
    hi,
    Unser Prof. setzt solche sachen vorraus und kann es einfach nicht erklären und der Übungsleiter sagt wieder das wir alles aus der Vorlesung können müssen. Geht mir ja nur um nen Ansatz bzw. einen Denkanstoß.
    ohjee, die erstis. daran wirst du dich im laufe des studiums noch gewöhnen, das ist ganz normal, spätestens in ein oder 2 semester wirst du dann auch erkennen, dass man in den meisten vorlesungen nix lernt. wichtig ist, dass man das skript hat, dann braucht man eigentlich gar nicht mehr hin gehn, und dann muss man sich halt zuhause vor der prüfung hinsetzen und lernen. am besten mit ein oder 2 andere zusammen, ist unterhaltsammer, und man kann zwischdrin au mal ne runde zocken vorbei ist es jetzt mit dem schönen schulerleben, in dem einem alles 3 mal vorgekaut wird. jetzt fängt das schöne studentenleben an, in dem man sich selbst einteilen muss, was man wann und wie lernt, dafür hat man aber eigentlich immer zeit für was anderes und man kann endlich ausschlafen.
    mfg jeffrey

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Zitat Zitat von jeffrey
    dass man in den meisten vorlesungen nix lernt. wichtig ist, dass man das skript hat, dann braucht man eigentlich gar nicht mehr hin gehn, und dann muss man sich halt zuhause vor der prüfung hinsetzen und lernen. am besten mit ein oder 2 andere zusammen, ist unterhaltsammer, und man kann zwischdrin au mal ne runde zocken [...] und man kann endlich ausschlafen.
    OMG - Unis^^ Ein Glück, dass ich so ne Einrichtung gemieden habe...

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.02.2006
    Alter
    53
    Beiträge
    114
    Macht es doch bitte mit Unterprogrammen.
    So steigt ihr ja selber nicht mehr durch, was ihr da macht:

    b=(b*x)*(k/k);
    Was soll die Multiplikation mit (k/k) ??
    k/k ist im besten Fall 1; wenn Rundungsfehler wegen Float zuschlagen, sogar irgend etwas anderes.

    if (k<=n);
    Diese Zeile bewirkt rein gar nichts. Das Semikolon beendet die if-Anweisung. Mit anderen Worten: Wenn k <= n, tu nichts. Wenn nicht, tue auch nichts.

    { k=k+1;
    Euch ist klar, dass ihr bei k=2 anfangt? Am Anfang setzt ihr k=1 und erhöht dann gleich am Anfang der Schleife um 1.

    Ehrlich gesagt, dass ist der grausamste Quellcode, den ich seit langem gesehen habe. Und ich habe Erstsemester (allerdings Informatik) an der Uni betreut. Mein Rat: Holt euch professionelle Hilfe! Einfach in der Mensa einen Informatiker anquatschen, die reden gerne über Source-Code und erklären euch sicherlich mehr als ihr je wissen wolltet.

    Das ist nicht böse gemeint, aber online ist euer Problem nicht zu lösen, ohne dass man gleich die ganze Lösung hinschreibt,

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •