Traverisieren von Feld mit Pointerarithmetik



  • Hallo hab grad sone Aufgabe wo ich ein Feld per pointerarithmetik traversieren soll also in meinem fall tu ich alles mit null beschreiben.

    int faktor=8,y=emax+2;
    
    	feld = new double[y];
    
        /*
        for(int i=1;i<=emax;i++)    //traveriseren des Feldes mittels INDEX
    	{
    		feld[i]=0;
    	}
        */
    
        for(int i=0; i<y ; i++)    //traveriseren des Feldes mittels Pointerarithmetik
    	{
    		* feld=0;
    		feld+=faktor;
    	}
    

    so dacht ich das es gemacht werden muss funktioniert aber nicht.



  • Was bedeutet denn traverisieren/traversieren?

    Und warum benutzt du new wenn du C programmierst, bzw. andersrum: warum postet du in ANSI C wenn du C++ benutzt?



  • Was bedeutet denn traverisieren/traversieren?

    Traversieren ist einmaliges besuchen jeder Position des Feldes.

    Und warum benutzt du new wenn du C programmierst, bzw. andersrum: warum postet du in ANSI C wenn du C++ benutzt?

    Das ist ein Konsolen Programm! Und es ist doch mir überlassen ob ich nun malloc oder new benutze. Ich gewöhne mir gleich new an weil beim Objektorientierten gibt es kein malloc mehr. Ich mein wenn mein Prof das schon empfielt dann wirds schon besser sein.



  • Trotzdem hat new nichts mit C zu tun. Das ist C++ (hab ich glaub schonmal erwähnt).



  • Dieser Thread wurde von Moderator/in TactX aus dem Forum ANSI C in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Das Traversieren per Zeigerarithmetik funktioniert folgendermaßen:

    for (double* i = feld; i < feld + y; ++i)
        *i = 0;
    


  • ich habs mal unten mit reingeschoben



  • Es war aber gemeint, dass es dann kein ANSI-C mehr ist sondern new eben ein Sprachelement von C++ ist. Aber sei das dahingestellt...
    Wenn du mit double arbeitest mach dann auch ordentlich. Und btw: warum ne Schleife wenn du nicht jeden Index ansprechen willst? Naja, so gehts denke ich:

    {
    	double* feld = new double[y];
    
    	*feld = 0.0;
    
    	for(int i=0; i<y; i++) {
    		printf("%lf",&feld[i]);
    	}
    }
    


  • Konrad Rudolph schrieb:

    Das Traversieren per Zeigerarithmetik funktioniert folgendermaßen:

    for (double* i = feld; i < feld + y; ++i)
        *i = 0;
    

    also damit geht es nicht 😉 , ich hats auch schon so ähnlich

    Matthias S schrieb:

    Wenn du mit double arbeitest mach dann auch ordentlich. Und btw: warum ne Schleife wenn du nicht jeden Index ansprechen willst? Naja, so gehts denke ich:

    {
    	double* feld = new double[y];
    
    	*feld = 0.0;
    
    	for(int i=0; i<y; i++) {
    		printf("%lf",&feld[i]);
    	}
    }
    

    ich soll aber jeden Wert ansprechen

    Definition Traversieren : Einmaliges Besuchen aller Elemente im Array



  • Konrad Rudolph schrieb:

    Das Traversieren per Zeigerarithmetik funktioniert folgendermaßen:

    for (double* i = feld; i < feld + y; ++i)
        *i = 0;
    

    damit gehts doch hab mal meinen debug ordner geleert weil beim debuggen haben alle werte gestimmt und nun funktioniert es so wie ich es will 😉

    danke



  • pad8626 schrieb:

    Konrad Rudolph schrieb:

    Das Traversieren per Zeigerarithmetik funktioniert folgendermaßen:

    for (double* i = feld; i < feld + y; ++i)
        *i = 0;
    

    also damit geht es nicht

    Doch.

    /EDIT: Zu spät.



  • 😉 siehe beitrag davor



  • pad8626 schrieb:

    Was bedeutet denn traverisieren/traversieren?

    Traversieren ist einmaliges besuchen jeder Position des Feldes.

    Und warum benutzt du new wenn du C programmierst, bzw. andersrum: warum postet du in ANSI C wenn du C++ benutzt?

    Das ist ein Konsolen Programm! Und es ist doch mir überlassen ob ich nun malloc oder new benutze. Ich gewöhne mir gleich new an weil beim Objektorientierten gibt es kein malloc mehr. Ich mein wenn mein Prof das schon empfielt dann wirds schon besser sein.

    Anscheinend kennt dein Prof den Unterschied zwischen einer prozeduralen Programmiersprache, C, und einer objektorientierten Programmiersprache, C++, nicht und ist demzufolge auch nicht in der Lage sauberen getrennten Code zu produzieren. 😞



  • er macht es uns leichter in dem er uns von vornherein sagt nehmt new weil im objektorientierten es soweiso nur new gibt.



  • Nehm new, Du kannst C++ auch immer als besseres C benutzen - Dein Prof hat Recht. :xmas1:



  • pad8626 schrieb:

    er macht es uns leichter in dem er uns von vornherein sagt nehmt new weil im objektorientierten es soweiso nur new gibt.

    Naja, solange Du den Code für Dich oder Deinen Prof schreibst, wird das wahrscheinlich nicht viele Programmierer ausser euch interessieren.
    Aber wenn Du später mal, sagen wir in der Realität ankommst ;), wird das Ärger geben, wenn Du C und C++ mischst. Glaub es mir (eigene Erfahrung, schmerzlich 🙂 ).

    Entweder mit Kollegen (und da gibt es einige Hardcore-Programmierer) die das absolut nicht abhaben können, oder mit anderen Compilern bzw.
    anderer Umgebung. Ausserdem zeugt es von gutem Programmierstiel.
    Dieses Forum hier heisst ANSI C. und da gibt es nun mal kein new. Es ist vielleicht auch eine gute Übung mit calloc, malloc usw zu arbeiten,
    damit Du nicht vergisst wo new herkommt und was bei new eigentlich passiert ;).


Log in to reply