Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Hilfe ... hab ein problem

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 < [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ]
010
06.12.2003, 23:25 Uhr
~cosmic
Gast


also gut ...

hab jetzt ne weile dran gesessen und hab das hier rausbekommen ...
was haltet ihr davon???

C++:
#include <stdio.h>

double exp(double b,int e)
{
    double x=1;
    if (e==0) return 1;
    else for (int i=1;i<=e;i++) x=x*b;
    return x;
}

void main(void)
{
    double f=0,s=0,x=0;
    int i=0;

    do
    {
        printf("\nBitte Quotienten eingeben: \n");

        fflush(stdin);
        scanf("%Lf",&f);
        fflush(stdin);
        if((f>=1)||(f<=0)) printf("\nBitte nur Werte zwischen 0 und 1 eingeben !\n");
    }while((f>=1)||(f<=0));

    do
    {
        i=i+1;
        x=s;
        s=s+exp(f,i);
    }while (s!=x);

    printf("\nSumme gleich %f bei %i durchg%cngen\n",s,i,132);


    //for (i=0;i<=100;i++) printf("\n2 ^ %i = %f",i,exp(2,i));
}




Bearbeitung von Pablo:

BITTE CPP TAGS BENUTZEN. DAS IST ECHT NICHT VIEL VERLANGT!!!


Dieser Post wurde am 06.12.2003 um 23:27 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
06.12.2003, 23:44 Uhr
Pablo
Supertux
(Operator)


Nicht schlecht, dass du deine eigene Potenzierung Funktion machst, aber finde ich unnötig. Benutze pow von math.h. Das ist zwar kein Fehler, aber die Funktion als exp zu nennen, find eich nicht gut, denn wenn du math.h includierst, (z.b. für sqrt), dann krigst du bestimmt ne Fehlermeldung, weil es exp(double,double) schon gibt, nämlich die Exponential Funktion e^x.

Die main Funktion ist nach ANSI keine void Funktion, sondern main. Du musst also

C++:
· int main(void)
· int main()
· int main(int argc, char** argv)
· int main(int argc, char* argv[])


schreiben.

Deine erste do Schleife gefällt mir nicht, weil
1. ich nicht verstehe, wozu die ganzen fflushes.
2. wenn du floats und doubles miteindander vergleichst, solltest du mit einer EPSILON Umgeben arbeiten, wegen Rundungsfehlern
3. es mathematisch nicht korrekt ist. Die geometrische Reihe nimmt Werte im Betrag im offenen Intervall (0,1), das heißt, dass wenn q == -0.5 ==> die geo-reihe konvergiert. q liegt in offenen Intervall (-1, 1).

ich bin mir sicher, dass die 2. while-Schleife nie terminiert. Du musst, wie gesagt, in einem Schlauch arbeiten, wegen Rundungsfehlern. Ich habe aber dein Programm nicht getestet, aber wenne s terminiert, dann ist gut.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 06.12.2003 um 23:45 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
07.12.2003, 11:57 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat:
Pablo Yanez Trujillo postete
Die main Funktion ist nach ANSI keine void Funktion, sondern main.


Das ist logisch, main ist nach ANSI main

Nein mal im Ernst, du meintest natürlich


Zitat:

Die main Funktion ist nach ANSI keine void Funktion, sondern int.




--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
07.12.2003, 12:51 Uhr
Pablo
Supertux
(Operator)


Stimmt, Parse Fehler in meinem Hirn das muss ein int kommen. Ich habe hier diesen Satz 100....000 Mal gepostet, dass ich nicht merke, wasd ich da schreibe
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
07.12.2003, 22:18 Uhr
~cosmic
Gast


und wie würdest du es abändern, damit es dir gefallen würde ...

... ok .. die fflushes könnte man quasi auch rauslassen ...
... was ist eine epsilon umgebung???...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
07.12.2003, 22:26 Uhr
Pablo
Supertux
(Operator)


Wie ich schon sagte. Benutze die Pow Funktion von math.h

Wenn man mit double und float arbeitet, muss mein nicht direkt == benuten, das klappt nicht immer. Guck mal hier: www.fun-soft.de/showtopic.php?threadid=5192
www.fun-soft.de/showtopic.php?threadid=4600
www.fun-soft.de/showtopic.php?threadid=5105

Damit du auch Zahlen zwischen -1 und 0 rechnen kannst, benutze die Funktion fabs, da wo du überprüfst, ob die Zahl zulässig ist, oder nicht.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 07.12.2003 um 22:29 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
07.12.2003, 22:28 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

und wie würdest du es abändern, damit es dir gefallen würde ...


quasi so wie ich es gemacht habe. Du hast eine variable die bei q startet und multiplizierst sie bei jedem durchlauf der schleife mit q so das sie beim ersten mal q^1 dann q^2 usw. wird..., damit ist pow dann überflüssig


Zitat:

was ist eine epsilon umgebung???...



Pablo meint damit das du ein Intervall wählen sollst um was zu vergleichen und nicht direkt mit einer spezielle zahl
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 07.12.2003 um 22:31 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
07.12.2003, 22:34 Uhr
~cosmic
Gast


sorry ... aber nach dem was ich hier gemacht hab hört mein c++ latein auf ...
hab mit pow noch nie was gemacht ... und hab da net ganz so viel plan ... bin halt voll der anfänger der das in seinem studium als nebenfach machen muß ...
hab halt nur etwasahnung von assembler programmierung und mit diesem grundwissen und nem studienkollegen haben wir das prog so wie oben fertig gemacht ... war für uns ne heiden arbeit :-) ...
deswegen sprecht bitte nicht ganz so in rätseln ;-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
07.12.2003, 22:39 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


es ging darum das du das rad nicht ständig neu erfinden musst.
es gibt eine funktion in math.h der übergibst du einen zahl und einen exponenten und diese rechnet dir dann die zahl dieser potenz aus. da gibt es nichts zu verstehen du musst es einfach nur benutzen. wie das implementiert ist ist egal


C++:
double zahl= pow(2,3); // in zahl würde jetzt 2^3 drin stehen also 8. Die Funktion pow nimmt dir also das potenzieren ab ohne das du wissen musst wie das geht du musst es einfach nur benutzen


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 07.12.2003 um 22:40 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
08.12.2003, 14:20 Uhr
~cosmic
Gast


d.h. dann das ich bei pow folgendes machen kann ...

pow(q,x) ... damit hätte ich dann mein quotient hoch x ...
... x kann ich in ner schleife immer größer werden lassen ... x=x+1

und wie bekomm ich das dann hin das das in die summenformel eingebunden habe ??? argh ... ich glaub ich lass das ganze ... verzweifle hier mehr und mehr ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ]     [ 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: