Bin ich ein guter Programmierer?



  • #include <iostream>
    #include <math.h>
    using namespace std;
    
    int main() {
    
    	printf("Herzlich Willkommen. Was m\x94 \bchten Sie tun?");
    	printf("\n\nDr\x81 \bcken Sie die 1 f\x81r Addition");
    	printf("\nDr\x81 \bcken Sie die 2 f\x81r Subtraktion");
    	printf("\nDr\x81 \bcken Sie die 3 f\x81r Multiplikation");
    	printf("\nDr\x81 \bcken Sie die 4 f\x81r Division");
    	printf("\nDr\x81 \bcken Sie die 5 f\x81r Radizieren");
    	printf("\nDr\x81 \bcken Sie die 6 f\x81r Potenzieren");
    	printf("\n\n");
    
    	double a;
    
    	cout << "";
    	cin >> a;
    
    	if(a==1) {
    		printf("\n");
    
    		double a;
    
    		cout << "1. Summand: ";
    		cin >> a;
    
    		printf("\n");
    
    		double b;
    
    		cout << "2. Summand: ";
    		cin >> b;
    
    		printf("\n");
    
    		double c;
    
    		c = a + b;
    		cout << "Die Summe ist: " << c << endl;
    	}
    
    	if(a==2) {
    
    	    printf("\n");
    
    		double a;
    
    		cout << "Minuend: ";
    		cin >> a;
    
    		printf("\n");
    
    		double b;
    
    		cout << "Subtrahend: ";
    		cin >> b;
    
    		printf("\n");
    
    		double c;
    
    		c = a - b;
    		cout << "Die Differenz ist: " << c << endl;	
    	}
    
    	if(a==3) {
    
    		printf("\n");
    
    		double a;
    
    		cout << "1. Faktor: ";
    		cin >> a;
    
    		printf("\n");
    
    		double b;
    
    		cout << "2. Faktor: ";
    		cin >> b;
    
    		printf("\n");
    
    		double c;
    
    		c = a * b;
    		cout << "Das Produkt ist: " << c << endl;	
    	}
    
    	if(a==4) {
    
    		printf("\n");
    
    		double a;
    
    		cout << "Dividend: ";
    		cin >> a;
    
    		printf("\n");
    
    		double b;
    
    		cout << "Divisor: ";
    		cin >> b;
    
    		printf("\n");
    
    		if(b==0) {
    
    		printf("Teilen durch Null nicht erlaubt");
    		printf("\n");
    		}
    
    		else {
    
    			double c;
    
    			c = a / b;
    			cout << "Der Quotientenwert ist: " << c << endl;
    		}
    
    	}
    
    	if(a==5) {
    
    		printf("\n");
    
    		double a; 
    
    		cout << "Radikant: ";
    		cin >> a;
    
    		if(a<0) {
    
    			printf("\n");
    			printf("Negative Zahlen d\x81rfen nicht radiziert werden");
    			printf("\n");
    		}
    
    		else {
    			double b;
    			printf("\n");
    			b = sqrt (a);
    			cout << "Der 1. Radix ist: " << b << endl;
    
    			double c;
    			printf("\n");
    			c = - sqrt (a);
    			cout << "Der 2. Radix ist: " << c << endl;
    		}
    	}
    
    	if(a==6) {
    
    		printf("\n");
    		double a;
    
    		cout << "Basis: ";
    		cin >> a;
    
    		if(a==0) {
    
    			double b;
    			printf("\n");
    			cout << "Exponent: ";
    			cin >> b;
    
    			if(b<0) {
    
    				printf("\n");
    				printf("Null darf nicht mit negativen Exponenten potenziert werden");
    				printf("\n");
    			}
    
    			else {
    				printf("\n");
    				double c;
    
    				c = pow (a, b);
    				cout << "Der Potenzwert ist: " << c << endl;
    			}}
    		else {
    
    			printf("\n");
    			double b;
    
    			cout << "Exponent: ";
    			cin >> b;
    
    			printf("\n");
    
    			double c;
    			c = 
    			 (a, b);
    			cout << "Der Potenzwert ist: " << c << endl;
    
    		}
    
    	}
    
    	printf("\n\n");
    	printf("Vielen Dank f\x81r die Nutzung meines Programms");
    
    cin.get();
    return 0;
    
    }
    

    Gerade programmiert. Ist das gut und elegant gelöst?



  • japp. noch nie so schönen code gesehen.
    schreib am besten ein buch unter dem pseudonym Jürgen Fuchs oder so.



  • Jetzt mal im Ernst. Ist da noch was verbesserungswürdig und wenn ja, was? 😕



  • C ist das jedenfalls nicht...



  • Nein nein nein nein nein nein nein nein, CCCCC. Tu uns das nicht an, nein nein nein nein.



  • Könnt ihr mir bitte ein Feedback geben? 🙄
    Und wieso soll das nicht C sein?


  • Mod

    CCCCC schrieb:

    Jetzt mal im Ernst. Ist da noch was verbesserungswürdig und wenn ja, was? 😕

    Was erwartest du denn für eine Antwort, wenn du solch eine Frage stellst? Da kann doch nur Satire bei rauskommen, bei solch einer Steilvorlage.

    CCCCC schrieb:

    Ist das gut und elegant gelöst?

    Nein.

    Bin ich ein guter Programmierer?

    Möglicherweise. Ich habe den Eindruck, das deine Frage nicht ganz ernst gemeint ist und du die Fehler absichtlich eingebaut hast. In dem Fall ist es eine gut gemachte Parodie auf typischen schlechten Code. Andernfalls ist es einfach nur mäßig bis schlecht vom Design her und extrem schlecht von der Wahl der Sprachmittel her.



  • Ich bin ja noch Anfänger, deshalb die Frage, ob noch was verbesserungswürdig ist.
    Und nein, Fehler wurden nicht absichtlich gebaut. Kannst du mir erklären, wieso Design und Sprachmittel schlecht sind?



  • Jetzt mal im Ernst. Ist da noch was verbesserungswürdig und wenn ja, was

    Öhm so ziemlich alles 🤡
    Nur für den Fall dass du das erst meinst, hier mal ne schönere Version, korrigieren deiner Version dauert länger als neuschreiben:

    int main() { 
    
        printf("Herzlich Willkommen. Was m\x94 \bchten Sie tun?"); 
        printf("\n\nDr\x81 \bcken Sie die 1 f\x81r Addition"); 
        printf("\nDr\x81 \bcken Sie die 2 f\x81r Subtraktion"); 
        printf("\nDr\x81 \bcken Sie die 3 f\x81r Multiplikation"); 
        printf("\nDr\x81 \bcken Sie die 4 f\x81r Division"); 
        printf("\nDr\x81 \bcken Sie die 5 f\x81r Radizieren"); 
        printf("\nDr\x81 \bcken Sie die 6 f\x81r Potenzieren"); 
        printf("\n\n"); 
    
    	int mode;
        double number1, number2, result; 
    
    	scanf("%d", &mode);
    	switch(mode)
    	{
    		case 1:
    			printf("1. Summand: "); 
    			scanf("%lf", &number1);
    			printf("2. Summand: "); 
    			scanf("%lf", &number2);
    			result = number1 + number2;
    			printf("Die Summe ist: %f\n", result);
    			break;
    		case 2:
    			printf("Minuend: "); 
    			scanf("%lf", &number1);
    			printf("Subtrahend: "); 
    			scanf("%lf", &number2);
    			result = number1 - number2;
    			printf("Die Differenz ist: %f\n", result);
    			break;
    		case 3:
    			printf("1. Faktor: "); 
    			scanf("%lf", &number1);
    			printf("2. Faktor: "); 
    			scanf("%lf", &number2);
    			result = number1 * number2;
    			printf("Das Produkt ist: %f\n", result);
    			break;
    		case 4:
    			printf("Dividend: "); 
    			scanf("%lf", &number1);
    			printf("Divisor: "); 
    			scanf("%lf", &number2);
    			 if(number2 == 0)
    				printf("Teilen durch Null nicht erlaubt\n"); 
    			 else
    			 {
    				result = number1 / number2;
    				printf("Der Quotientenwert ist: %f\n", result);
    			 }
    			break;
    		case 5:
    			printf("Radikant: "); 
    			scanf("%lf", &number1);
    			if(number1 < 0)
    				printf("\nNegative Zahlen d\x81rfen nicht radiziert werden!\n"); 
    			else
    			{
    				result = sqrt(number1);
    				printf("Der 1. Radix ist: %f\n", result);
    				printf("Der 2. Radix ist: %f\n", -result);
    			}
    			break;
    		case 6:
    			printf("Basis: "); 
    			scanf("%lf", &number1);
    			printf("Exponent: "); 
    			scanf("%lf", &number2);
    			if(number1 == 0 && number2 < 0)
    				printf("Null darf nicht mit negativen Exponenten potenziert werden"); 
    			else
    			{
    				result = pow(number1, number2);
    				printf("Der Potenzwert ist: %f\n", result); 
    			}
    			break;
    	}
    
        printf("\n\nVielen Dank f\x81r die Nutzung meines Programms"); 
    
    	getchar();
    	getchar();
    	return 0; 
    }
    

  • Mod

    CCCCC schrieb:

    Und nein, Fehler wurden nicht absichtlich gebaut. Kannst du mir erklären, wieso Design und Sprachmittel schlecht sind?

    Fangen wir ganz klein an: In welcher Programmiersprache ist das Programm deiner Meinung nach geschrieben?

    C? Das ist kein C. Es sieht aus wie C, aber es ist keines.
    C++? Technisch gesehen ja, aber dennoch würde jeder, der C++ kann, sagen, dass das kein C++ ist.



  • Das sieht schon mal besser aus. Ich denke ich habe noch Einiges zu lernen, aber es ist nett zu sehen, wie ein Taschenrechner sauber codiert aussieht.

    Mal eine typische dumme Anfängerfrage: Wie schaffe ich das Programm neuzustarten, also so, dass die Konsole geleert wird und ich wieder eine neue Rechenoperation durchführen kann?



  • SeppJ schrieb:

    CCCCC schrieb:

    Und nein, Fehler wurden nicht absichtlich gebaut. Kannst du mir erklären, wieso Design und Sprachmittel schlecht sind?

    Fangen wir ganz klein an: In welcher Programmiersprache ist das Programm deiner Meinung nach geschrieben?

    C? Das ist kein C. Es sieht aus wie C, aber es ist keines.
    C++? Technisch gesehen ja, aber dennoch würde jeder, der C++ kann, sagen, dass das kein C++ ist.

    Ich versuche in C zu programmieren.



  • aber es ist nett zu sehen, wie ein Taschenrechner sauber codiert aussieht.

    Naja an einen guten Taschenrechner hab ich noch andere Ansprüche, zum Beispiel einfach reinschreiben was ich ausgerechnet haben will und das macht der dann... Aber das wird dann schnell deutlich komplexer. 😃

    Mal eine typische dumme Anfängerfrage: Wie schaffe ich das Programm neuzustarten, also so, dass die Konsole geleert wird und ich wieder eine neue Rechenoperation durchführen kann?

    Schleifchen ?
    Einfach ne Schleife deren Abbruchbedingung mode==0 ist z.B.


  • Mod

    CCCCC schrieb:

    Ich versuche in C zu programmieren.

    Dann ist die Frage, woher du iostream, cout, cin und using namespace hast, denn nichts davon gibt es in C. Guck dir mal die Linkliste für Anfänger an. Internettutorials sind oft keine gute Quelle, um Programmieren zu lernen, da man nie wirklich weiß, ob der Schreiber überhaupt qualifiziert ist (ist bei Büchern leider ähnlich). Ganz besonders, wenn man sich selber Anleitungen zu bestimmten Themen sucht. Denn es gibt viele Sprachen, deren Name "C" und ein paar Sonderzeichen enthält (was für viele Suchmaschinen dann das gleiche ist) und du bist offensichtlich nicht in der Lage, den Unterschied zu erkennen.



  • Wenn mein Code ein Mischmasch aus verschiedenen P-Sprachen ist, wieso spuckt mein Compiler trotzdem ein funktionierendes Programm aus?



  • Weil ein C++ Compiler (leider Gottes) auch den meisten C Code frisst. Das liegt in der Vergangenheit von C++ begründet, es hat auch Vorteile bezüglich der Kompatibiliät, aber halt auch einige Nachteile.
    Dennoch solltest du tunlichst vermeiden die 2 Sprachen zu mischen, und ja, es sind zwei verschiedene Sprachen, auch wenn es nicht so scheinen mag.



  • DarkShadow44 schrieb:

    Dennoch solltest du tunlichst vermeiden die 2 Sprachen zu mischen, und ja, es sind zwei verschiedene Sprachen, auch wenn es nicht so scheinen mag.

    Nein, der Code ist C++. Das wurde hier auch schon gesagt.


  • Mod

    Z schrieb:

    Nein, der Code ist C++. Das wurde hier auch schon gesagt.

    Aber nur im technischen Sinne. Niemand, der C++ macht, würde so programmieren.



  • SeppJ schrieb:

    Z schrieb:

    Nein, der Code ist C++. Das wurde hier auch schon gesagt.

    Aber nur im technischen Sinne. Niemand, der C++ macht, würde so programmieren.

    Auch schlechter C++-Code ist C++-Code.

    Genauso wie es schlechter C-Code wäre, wenn man ihn auf C adaptieren würde. In C würde das auch niemand so machen.


  • Mod

    c-programmierer schrieb:

    Auch schlechter C++-Code ist C++-Code.

    Genauso wie es schlechter C-Code wäre, wenn man ihn auf C adaptieren würde. In C würde das auch niemand so machen.

    Dies sind zwei unterschiedliche Qualitäten von schlecht. Das erstere ist schlecht, weil es die Sprache an sich falsch benutzt. Das letztere ist schlecht, weil es einfach anfängerhaft geschrieben ist. Der Threadersteller macht hier beides. Er setzt sowohl die Sprache falsch ein (oder genauer: Er setzt die falsche Sprache ein.) und das auch noch auf anfängerhaftem Niveau. Für letzteres hat er einen guten Grund: Er ist Anfänger. Für den Sprachmischmasch muss seine Lernmethode verantwortlich gemacht werden.

    Daher nochmal:
    Technisch gesehen ist das C++. Würde ein "richtiges" C++-Programm so aussehen? Nein, denn man würde nicht die C-Bibliothek benutzen. Würde ein C++-Programm so aussehen, wenn man die C-Teile durch entsprechendes C++ ersetzen würde? Ja, zumindest auf absolutem Anfängerniveau.

    Ist dies C? Nein, denn es enthält C++. Würde ein C-Programm so aussehen, wenn man die C++-Teile durch entsprechendes C ersetzen würde? Ja, zumindest auf absolutem Anfängerniveau.


Anmelden zum Antworten