Ergebnis 1 bis 18 von 18
  1. #1

    C++ die zweite ....

    Servus ...

    nachdem ich die letzte Plichtübung in C++ mit eurer Hilfe erfolgreich geschafft hab hab ich ein weiteres Problem
    die 2. Pflichtübung steht an ... und ich hab noch weniger Plan als beim 1. Teil ...

    folgende Aufgabenstellung:

    Entwickeln sie ein C-Programm, welches nach Eingabe eines Quotienten q ( 0<q<1 ) die summe S=q+q^1+q^2+q^3+... einer unendlichen geometrischen reihe näherungsweise berechnet ...
    Bei der Lösung der Summe darf die Summenformel S=1/(1/q) nicht verwendet werden ...


    kann mir da jemand helfen ... ???
    ich versteh noch net mal wirklich den text *g* wie sol lich dann das prog machen

  2. #2
    dim
    Gast

    Re: C++ die zweite ....

    scheiße... der ganze text weg... mann...

    ok, nochmal in kurzfassung...


    keine ahnung ob mehr mathe dahintersteht als ich vermute...


    wenn man etwas endloseß machen will würde ich es mit einer bedingung machen die nie erfüllt wird, würde mich ungefähr so an das ganze ransetzen (wie gesagt, ich hatte noch nie wirklich mathe in der schule und weiß net ob hinter der aufgabe mehr steckt):

    schalter=1;
    zaehler=0;
    ausgabe;

    q = q+q;
    cout<<q;

    while(schalter!=0)
    {
    zaehler++;

    ausgabe = zaehler+q;
    cout<<ausgabe;

    }

    somit müsste man eine endlosschleife gebaut haben weil die bedingung schalter=0 nicht vorhanden ist und die routine solange macht weil die bedingung schalter ungleich 0 immer zutrifft.

    aber nagel mich bitte nicht drauf fest dass es funkzt, war jetzt auf die ganz schnelle und ohne viel denken/compilieren...

    wenns tiefer reingehen soll frag einfach nochmal.

  3. #3
    dim
    Gast

    Re: C++ die zweite ....

    erklär mir halt nochmal im klartext was sie von dir wollen wenn dus kapiert hast, ein proggie kann man dann immer backen sobald man weiß was gebraucht wird...

    haha, das ist ja fast wie auf arbeit, wenn man nach nem programmierauftrag nochmal ne halbe stunde telefonieren muss um rauszukriegen was eigentlich gemeint ist, die testgruppen schreiben manchmal einen scheissdreck zam... hardcore.

  4. #4
    zwiebelring
    Gast

    Re: C++ die zweite ....

    Was sind denn das für Aufgaben?
    So Zeugs findet sich samt Lösung meist im "Kernighan und Ritchie - Programming in C", in dem die beiden Irren, die die Sprache erfunden haben, sie beschreiben und mit Beispielen erläutern.

    Ich würde versuchen:

    int i;
    float q, sum;
    scanf(&q,"%f");
    sum = q;
    for (i=1;;i++)
    {
    sum = sum + (q**i);
    printf (sum,"%f\n");
    }


  5. #5
    dim
    Gast

    Re: C++ die zweite ....

    öhem, wo wird denn i zu q addiert odda hab ich die aufgabe falsch verstanden...?

  6. #6
    dim
    Gast

    Re: C++ die zweite ....

    achso... war noch nicht ferttg... ähm, i++ ist doch c++ hab in der aufgabe überlesen dass es c sein soll, haben mir am dienstag wegen so nem scheiß 1 punkt abgezogen (an der bs).

  7. #7

    Re: C++ die zweite ....

    hmm .. so geht das irgendwie nicht


    weiß auch nicht was das für aufgaben sind... will unser prof halt so ...

    wasn das fürn buch?? iss dat gut??? hate das? bzw haste da genauere angaben dazu???

  8. #8
    Erfahrener Benutzer Avatar von pimpi
    Modell
    Audi A4 8E/B6
    Bauform
    Limousine
    Baujahr
    2001
    Motor
    1.8T Quattro
    MKB/GKB
    AVJ/FTZ

    Ort
    Kraichgau-Stromberg
    Registriert seit
    08.11.2002

    Re: C++ die zweite ....

    Also ich hab's heut Mittag auch probiert und nach langer Zeit den Konsolenexperten vom Borland wieder aufgemacht. Hab's nichtmal ansatzweise verstanden was in der Aufgabenstellung verlangt wird. Ich schlage vor du suchst ein anderes Forum (www.c-plusplus.de).

    BTW: Von Zwiebelrings Endlosschleife solltest du die Finger lassen.
    Gruß Frank

  9. #9

    Re: C++ die zweite ....

    da hab ichs auch versucht ...
    aber die sagen mir was von wir machen hier keine hausaufgaben


    weiß immer noch net was da verlangt wird *g*

  10. #10
    Erfahrener Benutzer Avatar von pimpi
    Modell
    Audi A4 8E/B6
    Bauform
    Limousine
    Baujahr
    2001
    Motor
    1.8T Quattro
    MKB/GKB
    AVJ/FTZ

    Ort
    Kraichgau-Stromberg
    Registriert seit
    08.11.2002

    Re: C++ die zweite ....

    So der Kollege war grad da. Hab ihn mal drum gebeten was rauszulassen. Ganz erklären kann er sich die Aufgabe aber auch nicht.

    Hier sein "Ergebnis":

    Code:
    #include <stdlib.h>
    #include <stdio.h>
    #include <math.h>
    
    main (int argc, char *argv[])
    {
     double res,q;
     int n;
     if (argc==2) {
      q=atof(argv[ 1 ]);
    }
    else {
      printf("q angeben!\n");
      exit(0);
    }
    
    n=0;
    res=q;
    
    while (pow(q,n) > 0.000001)
    {
     n++;
     res=res+pow(q,n);
    }
     printf ("%d %f\n",n,res);
    }
    Gruß Frank

  11. #11

    Re: C++ die zweite ....

    hmm ... kann doch irgendwie so gar nicht gehen ... weil ich da doch gar kein wert einlese ...
    oder irr ich mich da jetzt???

    irgendwie fehl da ein scanf ... irgendwo

  12. #12
    53freak
    Gast

    Re: C++ die zweite ....

    Der Wert wird über Argumente eingegeben (argc - wieviele Parameter mit Programmnamen, argv - Feld mit allen Parametern)

    Beispiel: Das Programm heißt unter Windoof test.exe.

    Eingabe: test.exe 2

    argc ist dann gleich 2 und argv(0) enthält "text.exe" und argv(1) "2".


  13. #13
    Erfahrener Benutzer
    Modell
    Audi A4 8E/B7
    Bauform
    Avant
    Baujahr
    2005
    Motor
    2.0 TFSI Quattro
    MKB/GKB
    BGB

    Ort
    LT-08113 Vilnius
    Registriert seit
    18.05.2003

    Re: C++ die zweite ....

    Lasst mal den Diplominformatiker ran...

    Also: Verlangt wird ein Programm, das näherungsweise die Summe einer unendlichen geometrischen Reihe berechnet.

    q ist dabei eine Zahl zwischen 0 und 1. Diese haben die Eigenschaft, dass ganzzahlige Potenzen von q kleiner sind als q.

    Also: q > q^2 > q^3 usw.

    Wenn man daraus die Summe bildet, also:

    q + q^2 + q^3 + q^4 + ...

    werden die Summanden immer kleiner. Das heißt, die Summe konvergiert gegen einen bestimmten Wert. Und den kann man berechnen.

    Programmatisch können wir das ganze so umsetzen: Wir berechnen

    S(n) := q^1 + ... + q^n

    bis zu einem gewissen Wert n. Dann vergleichen wir S(n) mit S(n+1).

    Ab einem gewissen Wert n wird q^(n+1) so klein, dass für den Rechner S(n) = S(n+1) - weil wir ja nur mit einer eingeschränkten Genauigkeit rechnen. Das ist unsere Abbruchbedingung (irgendwann soll unser Programm ja auch wieder zu rechnen aufhören).

    In unserem Programm haben wir dafür zwei Variablen: old und new. Dabei ist old die Summe aus dem letzten Durchlauf; new ist die Summe aus dem aktuellen Durchlauf.

    Den Quotienten habe ich auf die Schnelle mal hartcodiert.

    Code:
    int i; 
    float q = 1/2; // hier den Quotienten eintragen
    float old, new; 
    scanf(&q,"%f"); 
    old = 0; 
    new = q;
    for (i=2;(old != new);i++) 
    { 
    old = new;
    new = old + (q**i); 
    printf ("Schritt %d: %f\n", i, new); 
    }

  14. #14
    53freak
    Gast

    Re: C++ die zweite ....

    Jetzt hab ich die Aufgabenstellung von diesem wirren Professor auch verstanden. Hat etwas gedauert aber ich hab ja nur einen Abschluss an einer "Polytechnischen Oberschule"...

    Funktionieren müssten demzufolge ja beide Programme. Beim ersten Vorschlag wird die Genauigkeit nur über die while-Bedingung festgelegt.

  15. #15

    Re: C++ die zweite ....

    also wenn ich das jetzt kompilieren will

    void main(void)
    {
    int i;
    float q = 1/2; // hier den Quotienten eintragen
    float old,neu;
    scanf(&q,"%f");
    old=0;
    neu=q;
    for (i=2;(old!=neu);i++)
    {
    old=neu;
    neu=old+(q**i);
    printf ("Schritt %d: %f\n", i, neu);
    }
    }

    bekomm ich folgende fehlermeldungen, mit denen ich nix anfangen kann ...


    1.)
    error C2664: 'scanf' : Konvertierung des Parameters 1 von 'float *' in 'const char *' nicht moeglich
    Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat


    2.)
    error C2100: Zeigeroperation ungueltig

  16. #16
    Erfahrener Benutzer
    Modell
    Audi A4 8E/B7
    Bauform
    Avant
    Baujahr
    2005
    Motor
    2.0 TFSI Quattro
    MKB/GKB
    BGB

    Ort
    LT-08113 Vilnius
    Registriert seit
    18.05.2003

    Re: C++ die zweite ....

    Nimm mal die Zuweisung für q raus; die brauchst Du ja nicht mehr, wenn Du den Wert für q direkt einliest.

    Also:
    Code:
    float q;

  17. #17

    Re: C++ die zweite ....

    wenn ich mich nicht irre ist im scanf nen fehler

    void main(void)
    {
    int i;
    float q = 1/2; // hier den Quotienten eintragen
    float old,neu;
    scanf(&q,"%f"); --> scanf("%f", &q);
    old=0;
    neu=q;
    for (i=2;(old!=neu);i++)
    {
    old=neu;
    neu=old+(q**i);
    printf ("Schritt %d: %f\n", i, neu);
    }
    }

  18. #18
    dim
    Gast

    Re: C++ die zweite ....

    high, hab auf die schnelle durch den kompiler gejagt so läuft ohne fehler durch... aber nicht ausgeführt als prog nur compaliert wie gesagt.


    // sex.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
    //

    #include "stdafx.h"
    #include "stdio.h"


    int main(int argc, char* argv[])
    {
    int i;
    float q = 1/2; // hier den Quotienten eintragen
    float old,neu;
    scanf("%f", &q);
    old=0;
    neu=q;
    for (i=2;(old!=neu);i++)
    {
    old=neu;
    neu=old+(q*i);
    printf ("Schritt %d: %f\n", i, neu);
    }

    }

Lesezeichen

Berechtigungen

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