Array



  • Was ist den an dem Code verkehrt? Nymer wollte ihm nicht die Hausaufgaben machen und bekam als Dankeschön den Titel "Schlaumeier". Ich hätte gleich reagiert.

    gruß
    syntax



  • lolalter schrieb:

    @Nymer
    Warum verschwendest Du Deine Zeit mit Code, den der OP nicht verstehen wird? Das ist hier im Forum eine ätzende Krankheit, totalen Anfängern Code vorzuwerfen, der ihnen nichts bringen wird.

    So besser?

    #include <iostream.h>
    #include <stdio.h>
    #include <stdio.h>
    #include <windows.h>
    #include <math.h>
    
    struct MITARBEITER
    {
    	char *name;
    	short nummer;
    	double gehalt;
    };
    
    MITARBEITER *MITARBEITER2;
    int b;
    #define max 5
    MITARBEITER *temp;
    
    void main()
    {
    	MITARBEITER2 = (MITARBEITER *)malloc(sizeof(MITARBEITER2) * max);
    	short i = 0; //eine short deklimition
    	for (short i = 1; i = 5; +i)
    	{
    		gets(MITARBEITER2[i].name);
    		scanf("%s", MITARBEITER2[i].nummer);
    		scanf("%d", MITARBEITER2[i].nummer);
    	}
    	for (int b = 1; b <= 6; i++)
    	{
    		if (MITARBEITER2[b + 1].gehalt < MITARBEITER2[b].gehalt)
    		{
    			temp = MITARBEITER2[b];
    			MITARBEITER2[b + 1] = MITARBEITER2[b];
    			MITARBEITER2[b] = temp;
    		}
    	}
    	for (short i2 = 1; i2 = 5; +i2)
    	{
    		printf("%c", MITARBEITER2[i].name);
    		printf("%c", MITARBEITER2[i].nummer);
    		printf("%c", MITARBEITER2[i].gehalt);
    	}
    	return;
    }
    


  • TyRoXx schrieb:

    So besser?

    Nein, denn es sind viel zu viele Fehler drin.



  • Nee nicht besser.
    Mit Lambda-Ausdrücken muss man einen Anfänger nicht belästigen. Es geht hier um Leute, die gerade lernen was eine Funktion ist und wie man Schleifen und structs verwendet. Deshalb muss man aber auch nichts ins andere Extrem fallen und rotzigen C Code posten.



  • lolalter schrieb:

    Und die beiden for_each mit Lambdas zur Ein- und Ausgabe sind ja hoffentlich ein Witz, oder?

    Wieso Witz? Wie würdest du es den machen? Ich find das gar net so schlecht.



  • out schrieb:

    lolalter schrieb:

    Und die beiden for_each mit Lambdas zur Ein- und Ausgabe sind ja hoffentlich ein Witz, oder?

    Wieso Witz? Wie würdest du es den machen? Ich find das gar net so schlecht.

    Äh, ein wenig übertrieben ist es schon, anstatt bspw. gleich

    for(auto& m : arr)
        std::cin >> m;
    

    zu schreiben.

    Edit: Referenz vergessen.



  • Hacker schrieb:

    nicht nur schöner, sondern auch evt. performanter (aber wie Lambdas geinlined oder optimiert werden, weiß ich nicht).

    So wie alle anderen Funktionen auch.
    Was soll das beim Lesen aus cin für eine Rolle spielen?

    Hacker schrieb:

    for(auto m : arr)
        std::cin >> m;
    

    Und falsch ist es obendrein. Vielleicht ist es deutlicher, wenn du auto selbst durch Mitarbeiter ersetzt.
    Visual C++, ein typischer Einsteiger-Compiler, kann das nicht. Für einen Anfänger sehr verwirrend.



  • TyRoXx schrieb:

    Hacker schrieb:

    for(auto m : arr)
        std::cin >> m;
    

    Und falsch ist es obendrein. Vielleicht ist es deutlicher, wenn du auto selbst durch Mitarbeiter ersetzt.
    Visual C++, ein typischer Einsteiger-Compiler kann das nicht. Für einen Anfänger sehr verwirrend.

    Referenz vergessen 😃
    Visual Studio kann doch echt garnix 👎
    Und was bitte ist an range-based for verwirrend? Nicht nur auf Wikipedia (unter C++11) erklärt, sondern auch vom Kontext her erkenntlich.

    Was es beim Lesen aus cin für eine Rolle spielt? for_each muss die Funktion dann entsprechend oft aufrufen, und ist selbst eine Funktion. Wenn die Lambdas nicht geinlined würden, würde doch wie bei einer normalen Funktion Die Rücksprungadresse und die Parameter auf den Stack gelegt, die Funktion angesprungen, die Parameter würden nach dem Ablauf der Funktion wieder freigegeben und das Programm zum Ausgangspunkt zurückspringen.


  • Mod

    Stream Iteratoren?



  • Woher soll ich denn wissen, was er überhaupt versteht? Dass er das wahrscheinlich nicht versteht war mir relativ klar..
    Ich hätte ihm ja sofort geholfen, wenn er wenigstens einen Ansatz hätte.. Einfach die Aufgabenstellung zu posten klingt doch zu sehr nach Hausaufgaben.

    Ich persönlich find ja meinen Ansatz mit std::for_each schöner, aber das ist wahrscheinlich Ansichtssache, solange ich nicht weiss was schneller ist.



  • Hacker schrieb:

    Und was bitte ist an range-based for verwirrend? Nicht nur auf Wikipedia (unter C++11) erklärt, sondern auch vom Kontext her erkenntlich.

    Ich meide das neue for noch in Beispielen, weil das ein sehr verbreiteter Compiler nicht kann. Ein erfahrener Programmierer weiß das und kennt andere Alternativen, aber ein Anfänger ist mit der kryptischen Fehlermeldung möglicherweise überfordert.

    Hacker schrieb:

    Was es beim Lesen aus cin für eine Rolle spielt? for_each muss die Funktion dann entsprechend oft aufrufen, und ist selbst eine Funktion.

    Du meinst nicht, dass das irrelevant sein könnte, weil beim Lesen aus der Standardeingabe typischerweise zig Funktionen inklusive Syscalls beteiligt sind? Ganz zu schweigen von der Verzögerung beim Eingeben, wenn das mit der Tastatur passiert.



  • Ich hoffe "lolalter" trollt. So dumm sind Menschen - hoffentlich - nicht.



  • TyRoXx schrieb:

    Hacker schrieb:

    Und was bitte ist an range-based for verwirrend? Nicht nur auf Wikipedia (unter C++11) erklärt, sondern auch vom Kontext her erkenntlich.

    Ich meide das neue for noch in Beispielen, weil das ein sehr verbreiteter Compiler nicht kann. Ein erfahrener Programmierer weiß das und kennt andere Alternativen, aber ein Anfänger ist mit der kryptischen Fehlermeldung möglicherweise überfordert.

    Gut. Er kann natürlich auch einfach eine ganz normale Schleife nehmen, und dann später auf C++11-features die VC++ nicht unterstützt zurückgreifen.

    for(int a(0);a < m.size();++a)
        std::cin >> m[a];
    

    Gebastel mit istream_iterator macht dann aber auch keinen Sinn, wenn er ein Anfänger ist 🙄

    Was die Performance angeht: Gut, das ist wohl stark übertrieben.



  • Hacker schrieb:

    Gut. Er kann natürlich auch einfach eine ganz normale Schleife nehmen, und dann später auf C++11-features die VC++ nicht unterstützt zurückgreifen.

    Ich hab absolut keine Ahnung, was VC++ kann und was nicht. Ich benutze den GCC 4.7 unter Ubuntu.


Anmelden zum Antworten