tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
362
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    benito benito ist offline Rookie
    Registriert seit
    Jan 2011
    Beiträge
    8
    hallo alle zusammen,

    ich suche den c++ Programmcode zu der folgenden Problematik.

    Geben Sie bitte eine Funktion zum Testen von wieOft an.
    int testWieOft();
    Im Rumpf von testWieOft sind:
    3 int‐Variablen, iV1, iV2, iV3 zu vereinbaren und zu initialisieren.
    ‐‐ iV1 sei mit 1,
    ‐‐ iV2 sei mit 2
    ‐‐ iV3 sei mit 3 initialisiert.
    Weiter seien 3 int‐Adress‐Variablen iPv1, iPv2, iPv3 zu vereinbaren und zu intialisieren.
    ‐‐ iPv1 sei mit der iV1‐Referenz,
    ‐‐ iPv2 sei mit der iV2‐Referenz
    ‐‐ iPv3 sei mit der iV3‐Referenz initialisiert.
    Geben Sie bitte anschliessend im Rumpf von testWieOft
    6 wieOft()‐Aufrufe, so dass
    1. Jede Variable in genau zwei verschiedenen wieOft()‐Aufrufen vorkommt und
    2. Sichergestellt ist, dass genau die o. a. Ausgaben und keine anderen an
    der Aufrufstelle zurueckgeliefert werden.

    Ich habe das so verstanden, daß in er Funktion testwieoft() halt die Variablen zu deklarieren sind und im Rumpf der testwieoft() 6 mal die wieoft() Funktion aufgerufen werden soll, die die Variablen an die Aufrufstelle ...ja 1. von welcher Funktion zurückliefert und 2.wie soll das gehen das jede Variable zwei mal in zwei verschiedenen wieoft() Aufrufen vorkommt.
    Ich bin ein Anfänger , aber ich habe gehört das man in "nicht main Funktionen" keine anderen Funktionen aufrufen soll..
     

  2. #2
    badday badday ist offline Mitglied Brokat
    Registriert seit
    Dec 2009
    Beiträge
    321
    Blog-Einträge
    1
    1. Ist das hier kein Hausaufgaben-Forum, es wird somit Eigeninitiative erwartet. Wenn du also schon Code hast, der nicht so funktioniert wie er soll, so solltest du uns diesen zeigen.

    In einer "nicht main Funktion" kann und wird man natürlich Funktionen aufrufen, ich weiß nicht, wo du das herhast.


    Gruß,

    badday
     
    Galaxy under Fire - 24/7 Online-Real-Time-Strategy-Game - servers are already running - Wir suchen einen Texturier für 3D-Modelle (bei Interesse einfach PM ;) )

  3. #3
    benito benito ist offline Rookie
    Registriert seit
    Jan 2011
    Beiträge
    8
    aso verstehe.also ich habe keinen code gepostet.richtig.nur die aufgabe und meine gedanken dazu.sorry.
    hier ist er : ( wie kann ich ihn in einer Bilddatei posten ? bin wie gesagt absoluter neulig hier und in c++ )


    #include <cstdlib>
    #include <iostream>

    using namespace std;

    int wieOft()

    {




    }

    int testWieOft()
    {
    int iV1=1, iV2=2, iV3=3;
    int *iPv1=&iV1, *iPv2=&iV2, *iPv3=&iV3;

    wieOft();
    wieOft();
    wieOft();
    wieOft();
    wieOft();
    wieOft();

    }


    int main()
    {

    testWieoft();
    system("PAUSE");
    return 0;
    }

    ich weiss nicht genau welche parameter ich an die wieoft() fkt. packen soll xD
    funktionen ? das stand in einem buch bzw. script , daß es nicht erwünscht ist, funktionen in funktionen aufzurufen.


    gruß

    b.
     

  4. #4
    badday badday ist offline Mitglied Brokat
    Registriert seit
    Dec 2009
    Beiträge
    321
    Blog-Einträge
    1
    Also Code solltest du in Tags machen
    HTML-Code:
    [cpp] dein Code [/cpp]
    Ich weiß nicht, ob unter int-Adress-Variablen Zeiger gemeint sind, ich nehme es mal an.

    Dann kannst du folgendes machen:

    Code cpp:
    1
    2
    3
    4
    5
    
    void wieOft(int *i1, int *i2)
    {
    ++(*i1);
    ++(*i2);
    }

    Was passiert hier? wieOft() übernimmt 2 Zeiger auf integer-Objekte. D. h. ihm werden nicht die Objekte übergeben, die er dann kopiert und somit temp. Objekte erzeugt, die einen Gültigkeitsbereich besitzen, der auf die Funktion beschränkt ist (genannt: pass-by-value), sondern hier wird die Adresse des tatsächlichen Objekts, dessen Gültigkeitsbreich in deinem Fall der Rumpf der Funktion testWieOft ist. Es wird also nicht das Objekt an sich übergeben, sondern ein Verweis auf dieses Objekt.

    Was bedeutet
    Code cpp:
    1
    
    ++(*i1);
    ?
    Zunächst wird hier der Zeiger dereferenziert, d. h. durch "*" (sog. Dereferenzierungsoperator) erhalten wir Zugriff auf das Objekt, auf das i1 zeigt, sozusagen die in testWieOft definierte Variable. Das "++" davor ist ein Pre-inkrementoperator. Ob du hier den Pre-Inkrementoperator oder den Post-Inkrementoperator benutzt, spielt hier keine Rolle.

    Solltest du noch Fragen haben, stelle sie einfach
     
    Galaxy under Fire - 24/7 Online-Real-Time-Strategy-Game - servers are already running - Wir suchen einen Texturier für 3D-Modelle (bei Interesse einfach PM ;) )

  5. #5
    benito benito ist offline Rookie
    Registriert seit
    Jan 2011
    Beiträge
    8
    vielen dank

    ich glaube auch das zeiger gemeint sind.

    übrigens ..zitieren kann ich auch nicht ...sch..xD

    aber ich bin mir nicht sicher, ob die variablen inkremeniert werden sollen ..
    -->
    6 wieOft()‐Aufrufe, so dass
    1. Jede Variable in genau zwei verschiedenen wieOft()‐Aufrufen vorkommt und
    2. Sichergestellt ist, dass genau die o. a. Ausgaben und keine anderen an
    der Aufrufstelle zurueckgeliefert werden.

    ich habe das so verstanden, das jede variable einmal mit referenz und einmal mit zeigern übergeben werden können, weil so kommt jede variable 2 mal in 2 verschiedenen wieoft() fkt vor .. ..ich verstehe die aufgabenstellung einfach nicht .. habe das so gemacht ..xD

    Code cpp:
    1
    2
    3
    4
    5
    6
    
    wieOft(iV1,&iPv1);
                    wieOft(iV2,&iPv2);
                    wieOft(iV3,&pIv3);
                    wieOft(&iV1,iPv1);
                    wieOft(&iV2,iPv2);
                    wieOft(&iV3,iPv3);
     

  6. #6
    badday badday ist offline Mitglied Brokat
    Registriert seit
    Dec 2009
    Beiträge
    321
    Blog-Einträge
    1
    Weiter seien 3 int‐Adress‐Variablen iPv1, iPv2, iPv3 zu vereinbaren und zu intialisieren.
    ‐‐ iPv1 sei mit der iV1‐Referenz,
    ‐‐ iPv2 sei mit der iV2‐Referenz
    ‐‐ iPv3 sei mit der iV3‐Referenz initialisiert.
    Gute Frage, was hier nun mit Referenz gemeint ist.

    Du kannst das ganze nat. auch mit Referenzen machen:
    Code :
    1
    2
    3
    4
    5
    
    void wieOft(int &i1, int &i2)
    {
    ++i1;
    ++i2;
    }
    Nur: Wofür solltest du dann diese "int‐Adress‐Variablen" benutzen?


    Offengestanden finde ich die Aufgabenstellung auch verwirrend, und bevor ich dir was falsches sage, lasse ich es lieber
     
    Galaxy under Fire - 24/7 Online-Real-Time-Strategy-Game - servers are already running - Wir suchen einen Texturier für 3D-Modelle (bei Interesse einfach PM ;) )

  7. #7
    benito benito ist offline Rookie
    Registriert seit
    Jan 2011
    Beiträge
    8
    Danke dir trotzdem
     

Ähnliche Themen

  1. [c++] Pointer auf konstanten Pointer-Parameter setzen
    Von digitalFreeman im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 18.02.09, 11:11
  2. Invalid Pointer Addition.. wo is denn da n pointer !
    Von GartenUmgraben im Forum Borland CBuilder und VCL
    Antworten: 3
    Letzter Beitrag: 29.07.06, 16:48
  3. Antworten: 4
    Letzter Beitrag: 07.07.06, 13:34
  4. Antworten: 1
    Letzter Beitrag: 22.12.05, 09:27
  5. Antworten: 6
    Letzter Beitrag: 02.11.03, 21:23