Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Mit Hilfe von Schleifen e-Funktion malen ... WIE????

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
04.06.2005, 18:38 Uhr
Brownsuga



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!

Dieser Post wurde am 04.06.2005 um 19:11 Uhr von Brownsuga editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.06.2005, 19:59 Uhr
virtual
Sexiest Bit alive
(Operator)


Es gibt while,
do- while sowie
for Schleifen.
Was ist unklar, wo ist Dein Code?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.06.2005, 20:42 Uhr
Brownsuga



ich weiss garnicht wie ich da vorgehen soll. wie kann ich z.B. die x-/y- achsen "malen"? Wie lasse so eine Kurve "malen"?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.06.2005, 21:07 Uhr
Brownsuga



ich hab hier irgendwas "gebastelt" funktioniert leider nicht:


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;
}    





warum funktionierts nicht???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.06.2005, 22:21 Uhr
(un)wissender
Niveauwart


Erstmal musst du dich entscheiden, mit welcher Genauigkeit du zeichen willst (Console lässt da wohl nicht viel zu). Also wohl eher ganze Zahlen, höchstens eine Nachkommastelle.

Der cpp-Code zeichnet die beiden Achsen. Wenn du Werte ins System zeichnen willst, dann musst du das in der ersten Schleife machen.


C++:
#include <iostream>

int main()
{
    const float step = 0.25f; //<= 1.0!
    
    //y-Achse
    const int y_max = 5;
    
    std::cout << " y\n";
    std::cout << '\n';
    std::cout << " ^\n";
    for(int i = int(y_max / step) - 1; i >= 0; --i)
    {      
        if(0 == (i % int((y_max / step) / y_max)))
        {
            std::cout << i / int((y_max / step) / y_max) << "|\n";
        }
        else
        {          
            std::cout << " |\n";              
        }    
    }
    
    //x-Achse  
    const int x_max = 5;
    std::cout << "  ";
    for(int i = 0; i < int(x_max / step); ++i)
    {      
        std::cout << '-';
    }
    std::cout << "> x\n";
    std::cout << "  ";
    for(int i = 0; i < int(x_max / step); ++i)
    {
        if(0 == (i % int((x_max / step) / x_max)))
        {
            std::cout << i / int((x_max / step) / x_max);
        }  
        else
        {        
            std::cout << ' ';            
        }      
    }
}




Bearbeitung:


C++:
for (y=50;y<=39.93;y=y-3.61)


Das ist Nonsens! Du beginnst mit 50, sagst aber, es soll nicht größer werden als 39.93. Wie soll diese Schleife dann je ausgeführt werden?


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 04.06.2005 um 22:29 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.06.2005, 22:27 Uhr
Brownsuga



Danke für deine Antwort. Weisst du eigentlich wie es in der normalen c-programmierung aussehen würde? also nicht c++

Thx
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.06.2005, 22:30 Uhr
(un)wissender
Niveauwart


Ach komm, ersetze std::cout durch prinf und du hast es schon fast.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.06.2005, 22:34 Uhr
Brownsuga



Oh OK! ich kenne mich fast garnicht aus mit programmieren musst du wissen, und muss übermorgen eine klausur schreiben. Deshalb stelle ich mich gard einbissen an.. hehe
ich probiere es gleich aus.

Thanx alot!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
04.06.2005, 22:37 Uhr
(un)wissender
Niveauwart


Na gut, weils brennt. Hier ist c.


C++:
#include <stdio.h>

int main()
{
    const float step = 0.25f; //<= 1.0!
    
    //y-Achse
    const int y_max = 5, x_max = 5;
    int i;
    
    printf(" y\n");
    printf("\n");
    printf(" ^\n");
    for(i = (int)(y_max / step) - 1; i >= 0; --i)
    {      
        if(0 == (i % (int)((y_max / step) / y_max)))
        {
            printf(("%d|\n"), i / (int)((y_max / step) / y_max));
        }
        else
        {          
            printf(" |\n");              
        }    
    }
    
    //x-Achse  
    printf("  ");
    for(i = 0; i < (int)(x_max / step); ++i)
    {      
        printf("-");
    }
    printf("> x\n");
    printf("  ");
    for(i = 0; i < (int)(x_max / step); ++i)
    {
        if(0 == (i % (int)((x_max / step) / x_max)))
        {
            printf(("%d"), i / (int)((x_max / step) / x_max));
        }  
        else
        {        
           printf(" ");            
        }      
    }
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
04.06.2005, 22:44 Uhr
Brownsuga



Vielen Dank!

Das wir mir eine große Hilfe! ich werde jetzt schauen wie ich zu meinem Code mit dem e-Funktion komme.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: