Mit Hilfe von Schleifen e-Funktion malen ... WIE

brownsuga

Grünschnabel
Hi!

ich schreibe next week einen Test in c++ und kann nur Eingabe, Ausgabe und If.. else.. anwenden. Thema dieses mal Test ist...
Schleifen!
Könnt Ihr mir eine Anleitung geben wie man an so eine Aufgabenstellung rangeht?Ich hab den Dev-C++ compiler.

Aufgabe ist folgende:

einen C-Programm entwickeln um mit Hilfe von Schleifen eine e-Funktion auf dem bildschrim zu malen. Dabei verläuft die x-Achse vertikal, die y-Achse horizontal. Die Anzahl der Punkte entspricht y, die Punktzeile endet mit einem Sternchen.
Der Anwender soll den Anfangs- und Endwert und die Abstufung von x sowie die Konstanten a und b eingeben können.
Beispiel: Anfangswert x=0, Endwert x=5, Abstufung 1,5 a=50 und b=20

Formel:

y= a*exp(-x/b)

Beispiel:

x________y
-------------------------------------------------------------------------------------------------------------
0.0_____50.00................................................................................*
1.5_____46.39............................................................................*
3.0_____43.04.......................................................................*
4.5_____39.93...................................................................*

Wäre super wenn Ihr mir helfen würdet. ich muss es bis Montag verstanden haben!
ganz lieben Dank!
 
moin


Was genau ist denn das Problem?

Code:
#include <iostream>
#include <math.h>

using namespace std;

int main()
{
	double y = 0, a=50, b=20;

	for(double x = 0; x <= 5; x+=1.5)
	{
		y = a * exp(-x/b);

		cout<< x << "\t" << y <<"\t";

		for(int i=0; i<y; i++)
			cout<<".";

		cout<< "*" << endl;
	}

	return 0;
}
So, das wars im großen und ganzen schon. Jetzt noch ein bsichen Textformatierung, halt das es so aussieht wie du es haben möchtest.


mfg
umbrasaxum
 
mein code:


Code:
#include <stdio.h>
#include <math.h>
int main ()
{
    double x,y,xx,xz,a,b
    printf("Bitte a eingeben:");
    scanf("%lf",&a);
    printf("Bitte b eingeben:");
    scanf("%lf",&b);
    printf("Bitte xx eingeben:");
    scanf("%lf",&xx);
    printf("Bitte xz eingeben:");
    scanf("%lf",&xz);
    for (x=0;x<=5;x=x+1.5)
    {
        x=x+1.5;
        printf("\n);
    }
    for (y=50;y<=39.93;y=y-3.61)
    {
        y=a*exp(-x/b);
        printf("\n");
        printf("%.......*lf" "%........*lf\n",x,y);
    }        
fflush(stdin);
getchar();
return 0;
}

wisst ihr warum das nicht funktioniert?
 
moin


Code:
for (x=0;x<=5;x=x+1.5)
    {
        x=x+1.5;
        printf("\n);
    }
Du weisst x zweimal Werte zu, die Schleife dürfte nur 2 mal durchlaufen, also das zweite x=x+1.5; raus!

Code:
for (y=50;y<=39.93;y=y-3.61)
    {
        y=a*exp(-x/b);
        printf("\n");
        printf("%.......*lf" "%........*lf\n",x,y);
    }
Du weisst y den Wert 50 zu, sodass die Abbruchbedingung sofort erfüllt ist, und die Schleife wohl garnicht läuft, außerdem machst du den gleich Fehler wie in der ersten Schleife.

Die Punkte werde so natürlich auch nciht angezeigt.

Und warum schreibst du nciht genau was nciht geht?
Und warum schreibst du das du in C++ programmieren willst, wenn es dann doch C sein soll?!


mfg
umbrasaxum
 
ich wusste garnicht dass das jetzt C-programmierung ist. Aber ich benutze den Bloodshed dev c++. ist es dann nicht auch c++ programmierung?

ausserdem...

ich weiss eben nicht genau wie ich die aufgabenstellung lösen soll.
wie kann ich z.B. eine x-Achse "malen lassen"? Mit schleifen natürlich.
ich hab bis jetzt 1000 bücher gewälzt nichts in der richtung gefunden.

Danke auf jeden fall schonmal!
 
moin


Also, ein C++ Compiler macht noch lange keine C++ programmierung.
Hast du meinen Code mal getestet? Der macht so ziemlich das was du oben als Aufgabenstellung geschrieben hast.

Willst du mit Sternen zeichnen, oder willst du einen richtig schönen Graphen zeichnen?
Wie du das machst kann ich dir zeigen, aber dann wird dein Lehrer dir nciht mehr glauben das das von dir ist.


mfg
umbrasaxum
 
Mit sternen soll der Graph gezeichnet werden. Der schöne Graph kann ja wohl kaum von mir stammen. Das weiß mein Prof ;)
Der erste Code hat irgendwie nicht funktioniert. Die Verbesserungsvorschläge mache ich gleich und schaue mal.

Thanx alot!
 
moin


:rolleyes:
Was funktioniert denn nicht? Eine etwas genauere Fehlerbeschreibung wäre sehr von Vorteil!
Aber hier nochmal in C:
Code:
#include <stdio.h>
#include <math.h>


int main()
{
	double y = 0, a=50, b=20;

	for(double x = 0; x <= 5; x+=1.5)
	{
		y = a * exp(-x/b);

		printf("%.2f\t%.2f\t", x, y);

		for(int i=0; i<y; i++)
			printf(".");

		printf("*\n");
	}

	return 0;
}


mfg
umbrasaxum
 
Zuletzt bearbeitet:
der Code leuchtet mir ein.. aber ich den code nach compilieren nicht ausführen. der DOS-Fenster schliesst sich sofort. ich versuchs mit Microsoft Visual ++
leider weiss nicht was bei dem ersten nicht funktioniert hat.
Thanx
 
moin


Dann mach doch am Ende vor dem return 0
Code:
fflush(stdin);
getchar();
Das das dafür ist solltest du doch wissen, da du es selber benutzt hast!


mfg
umbrasaxum
 
Zurück