Zum Inhalt springen

c ++ für arme .... *hilfääää*


Gast Lanfear
 Teilen

Empfohlene Beiträge

ich soll für meinen prof nen programm schreiben, mit dem ich das newtonsche näherungsverfahren berechnen kann....

bei uns inner FH haben wir dazu visual c++, zuhause hab ich MS Visual .NET 2003, der entfernte bekannte von dem ich das hab sagte, das sei zum c-programmieren ganz gut :-/

naja, zu meinem problem:

// beispiel.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include "stdafx.h"


#include <stdio.h>

void main ()
{
double a, d, x0, x, x2;
char nochmal;

do
{
//eingabe

printf ("\n\n bitte a eingeben: ");
scanf ("%le", &a);

printf ("\n\n bitte x0 eingeben: ");
fflush (stdin);
scanf ("%le", &x0);


do
{
if (x0 == 0)
{
printf ("\n\n bitte eine andere zahl als 0 eingeben: ");
fflush (stdin);
scanf ("%le", x0);

}
}while (x0 == 0);


printf ("\n\n bitte d eingeben: ");
fflush (stdin);
scanf ("%le", &d);

printf ("\n die von ihnen eingebenen werte: \n\n a=%le d=%le x0=%le", a, d, x0);

//berechnungen

x = (0.5)*(x0+(a/x0));
x2 = (x-x0)/x0;

printf ("\n\n der errechnete x-wert: %le", x);
printf ("\n\n der errechnete x2-wert: %le", x2);

do
{
if (x2 > d)
{
x0 = x;
printf ("\n --neuer x0: %le", x0);
x = (0.5)*(x0+(a/x0));
printf ("\n --neuer x: %le", x);
x2 = (x-x0)/x0;
printf ("\n --neuer x0: %le < d: %le", x2, d);

printf ("\n\n der naechste errechnete x-wert: %le", x);
printf ("\n\n der naechste errechnete x2-wert: %le", x2);
}
} while (x2 > d);

//frage nach einer weiteren brechnung

printf ("\n\n\n\n bitte geben sie [j] fuer eine weitere berechnung ein.\n jedes andersgeartete zeichen wird dieses programm beenden.");
fflush (stdin);
scanf ("%c", &nochmal);
}while (nochmal == 'j');
}

also das programm solll einfach am anfang 3 variablen abfragen, und diese auf dem bildschirm zur kontrolle anzeigen.

danach soll es gemäss der formel: x=1/2(x0+(a/x0) einen x-wert errechnen. dieser muss gemäss (x-x0)/xo < d sein. sollte das nicht der fall sein, muss der errechnete x-wert für x0 eingesetzt werden, und ein neuer x-wert errechnet werden, welcher dann wieder in die 2te formel kommt usw.

bis x2 < d ist.

mein programm macht irgendwie was anderes :-(

weiss einer von euch zufällig rat ?

edit: das erste problem habsch gefunden, gleich zum 2ten :-P

Link zu diesem Kommentar
Auf anderen Seiten teilen

hey leute, ich hab keine ahnung was ich gemacht hab *gg*

das iss das "fertige" programm:


// beispiel.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include "stdafx.h"


#include <stdio.h>


void main ()
{
double a, d, x0, x, x2, x3;
char nochmal;

do
{
//eingabe

printf ("\n\n bitte a eingeben: ");
scanf ("%le", &a);

printf ("\n\n bitte x0 eingeben: ");
fflush (stdin);
scanf ("%le", &x0);


do
{
if (x0 == 0)
{
printf ("\n\n bitte eine andere zahl als 0 eingeben: ");
fflush (stdin);
scanf ("%le", x0);

}
}while (x0 == 0);


printf ("\n\n bitte d eingeben: ");
fflush (stdin);
scanf ("%le", &d);

printf ("\n die von ihnen eingebenen werte: \n\n a=%le d=%le x0=%le", a, d, x0);

//berechnungen

x = ( ( x0 + ( a / x0 ) ) / 2 );
x2 = ( x - x0 ) / x0;

printf ("\n\n der errechnete x-wert: %le", x);
printf ("\n\n der errechnete x2-wert: %le", x2);

if ( x2 > 0 )
{
x3 = x2;
printf ("\n\n ---zahl ist positiv---");
}
else
{
x3 = x2 * (-1);
printf ("\n\n ---zahl wird positiv---");

}


do
{
x0 = x;
printf ("\n --neuer x0: %le", x0);
x = ( x0 + ( a / x0 ) ) / 2;
printf ("\n --neuer x: %le", x);
x2 = ( x - x0 ) / x0;
printf ("\n --neuer x2: %le < d: %le", x2, d);

// umwandeln von x2 in eine positive zahl

if ( x2 > 0 )
{
x3 = x2;
printf ("\n\n ---zahl ist positiv---");
}
else
{
x3 = x2 * (-1);
printf ("\n\n ---zahl wird positiv---");

}



} while ( x3 > d);

printf (" \n\n ---- x: %le ----\n\n ---- wert von x2: %le < d: %le ---- ", x, x3, d);

//frage nach einer weiteren brechnung

printf ("\n\n\n\n bitte geben sie [j] fuer eine weitere berechnung ein.\n jedes andersgeartete zeichen wird dieses programm beenden.");
fflush (stdin);
scanf ("%c", &nochmal);
}while (nochmal == 'j');
}

das einzige problem iss, das das proggy bei mir irgendwie abschmiert, wenn man bei der eingabe der zahl x0 eine null eingibt.

inner FH hat das geklappt, bei mir zuhause schmiert das proggy wegen speicherverletzung ab. ka was da net funkt :-(

aber ich bin ja schon froh das am ende ein nachvollziehbares ergebnis raus kommt :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Deine Meinung

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Benutzerkonto hast, melde Dich bitte an, um mit Deinem Konto zu schreiben.

Guest
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

  • Vorschau
 Teilen

×
×
  • Neu erstellen...

Wichtige Information

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung.