[C] swich mit Wort

strcmp braucht einen string und kein char.
Code:
printf("%d + %d = %d", zahl1, rechenart, zahl2, zahl1 + zahl2);
Der dritte Parameter ist rechenart, aber da wo du eigentlich rechenart ausgeben willst steht ein "+".

Wozu soll das ganze denn gut sein?

Gruß
BlackMark
 
ich habe das "+" nicht ersetzt so soll es eigentlich sein.

Code:
#include <stdio.h>


int main()
{
	int zahl1, zahl2;
	char rechenart[5];
	printf("Eingabe:");
	scanf("%d %c %d",&zahl1, &rechenart, &zahl2);
	printf("Eingabe: %d %c %d\n",zahl1, rechenart, zahl2);
	if(rechenart == "+")
		{
			printf("%d %c %d = %d", zahl1, rechenart, zahl2, zahl1 + zahl2);
		}
	else  printf("Sie wollen nicht rechnen");
	

return 0;
}

Ich will eigentlich nur das 5+6 eingeben, und es nicht einzeln nacheinander.
 
Zuletzt bearbeitet:
Du könntest einen char Array erstellen und in diesen erstmals alles einlesen,
dann kannst du die Zahlen und das Rechenzeichen aus dem Array lesen und dementsprechend verwalten.

Das Problem dabei ist, dass du nicht weißt an welcher stelle im Array die Zahlen und das Rechenzeichen stehen,
du müsstest also den Benutzer eine allgemeine Form der Eingabe vorschlagen.
z.B.: xxx + xxx
Für xxx natürlich die Zahl einsetzen und wenn die Zahl nicht 3-stellig ist nullen davor setzen.

Mir würde zwar etwas leichteres einfallen, aber nur für C++

Gruß
BlackMark
 
Ich fange jetzt auch bald mit c++ an. Ich mache C jetzt seinen 1,5 Monaten. Kann es vielleicht nicht wirklich gut aber man ließt häufig im internet das C++ viel besser ist.Was würdest du sagen C noch weiter bis man es schon sehr gut kann oder jetz mit C++ anfangen?
 
C ist komplett in C++ enthalten, somit lernt man wenn man C++ lernt automatisch auch C.

Deshalb würde ich schon sagen du solltest C++ jetzt lernen, schaden kann es sicherlich nicht.

Gruß
BlackMark
 
Das geht schon. Du musst halt das eingelesene Char-Array durchgehen und parsen. Dazu kannst du einfach das aktuelle char des Arrays mit '+', '-', '1','2' usw. vergleichen (kommt ein unbekanntes Zeichen wie z.B. Leerzeichen wird es einfach übergangen). Das letzte Rechenzeichen speicherst du in ner Variable mit ab (tmpChar), eine temporäre Zahl in nem extra int (tmpInt). Daneben wirst du noch ein paar Variablen brauchen um z.B. das Ergebnis zu speichern. Wenn du ne Ziffer findest, so rechnest du einfach tmpInt * 10 * <aktuelle Ziffer>. Damit kannst du beliebig lange Zahlen einlesen (bis halt das int nicht mehr ausreicht).

Solange nur so einfache Rechenoperationen von Nöten sind (keine Klammern oder Punkt-vor-Strich und nur 2 Variablen) ist das gar kein Problem, bei mehr wirds aufwändiger weil du Variablen und Rechenzeichen abspeichern und in der richtigen Reihenfolge dann damit rechnen musst.
 
BlackMark schrieb:
C ist komplett in C++ enthalten, somit lernt man wenn man C++ lernt automatisch auch C.

Deshalb würde ich schon sagen du solltest C++ jetzt lernen, schaden kann es sicherlich nicht.
C ist nicht komplett in C++ enthalten. Großteils ähnlich ja, aber komplett enthalten auf keinen Fall.

Außerdem sind es zwei grundverschiedene Sprachen. Man kann zwar mit C++ auch C programmieren, aber mit C geht's einfacher. Wenn man C++ lernt, sollte man zuerst sein C-Wissen irgendwohin wegsperren und mit einem neuen, unbekannten Wesen anfangen.
 
Klar sind C und C++ andere Sprachen, habe auch nie etwas anderes behauptet.

Was ich damit meinte, dass es komplett enthalten ist, ist dass jeder C++ Compiler auch C code schluckt.
Somit kann man in C++ auch C programmieren, ohne auf irgend welche besoderheiten achten zu müssen.
Man kann zwar mit C++ auch C programmieren, aber mit C geht's einfacher.
Warum sollte es einfacher sein?

Wenn man C++ lernt und schon C Kentnisse hat ist das sicherlich nicht schlecht und wegsperren sollte man sein Wissen auf keinen Fall.
Man sollte jedoch C und C++ immer unterscheiden können und kein misch masch aus C und C++ Programmieren.
Aber wenn man die Grundlagen von C kennt ( if - else, while / for, Datentypen, Funktionen, Pointer, Array's, ... ) ist es viel viel leichter in C++ einzusteigen und da sich ja an den Grundlagen nichts ändert ist es auch sinnlos das C Wissen wegzusperren und diese neu zu lernen.

Gruß
BlackMark
 
BlackMark schrieb:
Was ich damit meinte, dass es komplett enthalten ist, ist dass jeder C++ Compiler auch C code schluckt.
Code:
void* p;
...
int* i = p;
Ist gültiges C, aber kein gültiges C++. Solche Beispiele gibt es zuhauf. Falls du meinst, dass die meisten C++-Compiler auch einen C-Compiler dabei haben - das stimmt zwar i.d.R.. Trotzdem wäre es immernoch insofern missverständlich, dass jemand denken könnte C wäre in C++ komplett enthalten. Das ist es nicht und die Liste der Inkompatibiläten ist lang.

Den Rest hast du schön formuliert - man sollte immer zwischen C und C++ unterscheiden können. Jemand der C++ nicht kann, kann das wohl nicht. Dabei kann man schönes C++ ganz ohne Pointerfrickelei o.ä. schreiben und ohne (für den Anfang) wissen zu müssen, was hinter der Bühne abgeht.
 
Ja ich meinte, dass die meisten, naja nicht alle aber doch einige, Compiler sowohl C als auch C++ unterstützern.

Ich habe es wirklich etwas ungeschickt formuliert, denn komplett enthalten ist es sicherlich nicht.

Ja in C++ wäre dein Code nicht möglich, jedoch mit einem Cast würde das ganze in C und C++ laufen:
Code:
void* p;
...
int* i = (int*) p;

Aber grundsätzlich sollte man C und C++ trennen, da vor allem bei den Pointern sich die beiden Sprachen von einander unterscheiden ( eben wie dein Beispiel zeigt ).

Gruß
BlackMark
 
Zurück
Oben