Problem mit Quellcode aus einem Lehrbuch



  • Guten Tag zusammen,

    ich hab mich entschieden ein bisschen C++ zu programmieren, da mir Visual Basic nicht allzu gut gefällt.
    Hab mir jetzt das Lehrbuch "C/C++" von Ulrich Kaiser gekauft. Ist ein dicker Wälzer mit über 1000 Seiten. Da will ich mich jetzt durch ackern.

    Es ist vor gekommen das der Quellcode in den Übungen nicht ganz richtig ist und ich ein bisschen was verändern musste. Hört sich grausig an, aber das hilft mir den Code zu verstehen. Das Buch ist sehr allgemein und bezieht sich auf keinen speziellen Compiler.

    Nun hab ich Probleme mit diesem Code hier. Ich kann in der Konsole eingeben wieviele Zahlen ich als nächstes eintippen kann. Wenn ich also 8 eintippe müsste 8 mal eine Abfrage kommen wo ich eine positive oder negative Zahl eingebe. Am Ende soll mir die Summe aller positivem, negativen und die Gesamtsumme ausgegeben werden.

    # include <stdio.h>
    # include <stdlib.h>
    # include <iostream>
    
    int main()
        {
    	int anzahl;
    	int z;
    	int summand;
    	int psum;
    	int nsum;
    
    	printf( "Wie viele Zahlen sollen eingegeben werden: ");
    	scanf( "&d", &anzahl);
    	std::fflush( stdin);
    
    	psum = 0;
    	nsum = 0;
    
    	for( z = 1; z <= anzahl; z = z + 1)
    		{
    			printf( "%d. Zahl: ", z);
    			scanf( "%d", &summand);
    			std::fflush( stdin);
    
    			if( summand > 0)
    				psum = psum + summand;
    			else
    				nsum = nsum + summand;
    		}
    	printf( "Summe aller positiven Eingaben: %d\n", psum);
    	printf( "Summe aller negativen Eingaben: %d\n", nsum);
    	printf( "Gesamtsumme: &d\n", psum + nsum);
    	std::fflush( stdin);
    	std::cin.get();
    }
    

    Jetzt habe ich das Problem, dass die 8 Abfragen garnicht erst kommen und das Programm speichert den Wert 0 für die negative und positive Summe. Bei Gesamtsumme wurde keine Variable gespeichert und dort steht dann das &d.

    Kann mir wer helfen?



  • Du hast geschrieben du willst C++ lernen, warum programmierst du dann C und kaufst dir das Buch "C/C++"?Schwachsinn!Dann fixier dich auf eine Sprache und kauf dir für diese ein Buch.
    Benutze für C++ std::cin und std::cout für ein und Ausgaben, dann kommst du der lösung deines Problems schon näher.



  • viel interresanter ist das er beide sprachen eigendlich mischt 😃
    spricht cin scanf und so spaß halt 😃
    zudem verwendet er alte includes 😉



  • Ach stimmt in dem Buch fängt er mit C an. Später geht er auf C++ ein. Das ich beides gemischt habe wußte ich jetzt nicht, da ich beide Sprachen noch nicht kenne.
    Also dann bezieht sich die Frage jetzt auf die Sprache C.

    Das was ich aus C++ hinzugefügt habe, hab ich verwendet weil das Fenster sich immer geschlossen hat sobald das Programm durchgelaufen ist. Ich sehe dann nie das Ergebnis. Mit dem std hat das halt geklappt.

    Edit: vergesst nicht das ihr auch mal Anfänger wart 😉



  • Das er da einiges vermischt ist doch nicht schlimm.

    Mach mal Prozentsymbol bei scanf( "&d", &anzahl) --> scanf( "%d", &anzahl);

    Ausserdem ist das mehr was für die C++ - Sektion



  • Softwaremaker schrieb:

    Das er da einiges vermischt ist doch nicht schlimm.

    Mach mal Prozentsymbol bei scanf( "&d", &anzahl) --> scanf( "%d", &anzahl);

    Ausserdem ist das mehr was für die C++ - Sektion

    Super Danke

    mir ist das einfach nicht aufgefallen. Hab den Fehler gleich 2 mal im Quellcode 😃
    Jetzt geht es. Also möglich scheint es ja zu sein 2 Sprachen in einem Code zu verwenden, aber ich denke mal sollte eigentlich bei einer bleiben. Oder wird in größeren sowas praktiziert?



  • Chiiter schrieb:

    Softwaremaker schrieb:

    Das er da einiges vermischt ist doch nicht schlimm.

    Mach mal Prozentsymbol bei scanf( "&d", &anzahl) --> scanf( "%d", &anzahl);

    Ausserdem ist das mehr was für die C++ - Sektion

    Super Danke

    mir ist das einfach nicht aufgefallen. Hab den Fehler gleich 2 mal im Quellcode 😃
    Jetzt geht es. Also möglich scheint es ja zu sein 2 Sprachen in einem Code zu verwenden, aber ich denke mal sollte eigentlich bei einer bleiben. Oder wird in größeren sowas praktiziert?

    Ich denke, dass du in einigen Fällen sogar nicht darum kommen wirst, da einige Schnittstellen nur in C vorliegen. Allerdings sollte man es trotzdem vermeiden, wenn es denn möglich ist. Zum Beispiel bin ich mir nicht sicher, ob der Aufruf von std::flush nicht eventuell ein undefiniertes Verhalten hervorruft.


Anmelden zum Antworten