Startfehler
-
Auf ein letztes.
In dem Thread nebenher hast du ja deine Stellung zu Büchern schon erwähnt.
Das was du da machst ist wirklich nicht sinnvoll. Ich hab es dir sciher schon geschrieben(bin es gerade leid nachzuschauen), dass du nicht immer 4 Variablen nutzt, wo es nur eine benötigt.
Du hast es scheinbar noch nicht verstanden, wie das alles theoretisch funktioniert und willst jetzt schon praktisch an die Sachen gehen. Es gibt sicherlich Anfängerbücher, die einem Sachen wie die richtige Nutzung von Variablen(anhand von Schubladen oder was auch immer) erklärt. Und wenn ich von Anfängerbüchern rede, dann meine ich ebendiese und zwar GUTE... sowas ersetzt dir kein Tutorial.
Du brauchst mehr THEORIE!
-
Ich hab doch damit erst angefangen
Meine Fehler hab ich schon gefunden. Es ist doch so, dass man durch die Praxis mehr lernt
-
Windassel schrieb:
Ich hab doch damit erst angefangen
Meine Fehler hab ich schon gefunden. Es ist doch so, dass man durch die Praxis mehr lernt
Ja, man lernt durch die Praxis. Aber wie DaRe schon gesagt hat: Ohne Theorie gehts nicht. Ich musste mich auch durch die Sprach-Theorie schlagen, Syntax lernen und mich mehr als einmal fragen warum dieses Übungs-Programm nicht das macht was es soll. Und damals kannte ich das Forum nicht; Probleme lösen hieß solange probieren bis es funktionierte.
Wenn du einmal die Theorie drauf hast, dann macht es Sinn durch Praxis zu lernen. Denn dann kannst du viel besser verstehen was das Problem ist und wie man es am besten löst.
-
ich lese mir die theorie in verschiedenen tutorials durch, und versuche dann meine eigenen aufgaben danach zu erstellen. Klappt eigentlich ganz gut. Natürlich geht auch ohne theorie garnix
dann wüsste ich ja netmal wie ich anfangen soll
-
Windassel schrieb:
ich lese mir die theorie in verschiedenen tutorials durch, und versuche dann meine eigenen aufgaben danach zu erstellen. Klappt eigentlich ganz gut. Natürlich geht auch ohne theorie garnix
dann wüsste ich ja netmal wie ich anfangen soll
na dann versuche es noch etwas mit der praxis und mach mal deine eingabe absturz sicher.
-
Bin seid 2 Tagen an nem kleinen Programm dran, und habs vorhin fertig gestellt
Kann zwar nicht viel, aber fürn Anfang denke ist es ganz okay
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int zahleingeben, zahleingeben1; int untermenuepunktergebnis; int menuepunkt = 0; int untermenuepunkt = 0; /*Zahlen eingeben*/ printf("Taschenrechner 1.0\n"); printf("Bitte geben Sie keine Fliesskommazahlen ein, Danke\n"); printf("---------------------\n\n"); printf("Geben Sie einen Wert fuer Zahl[1] ein: "); scanf("%i", &zahleingeben); printf("Geben Sie einen Wert fuer Zahl[2] ein: "); scanf("%i", &zahleingeben1); printf("---------------------\n\n"); /*Menuepunkt auswaehlen*/ printf("Bitte waehlen Sie als naechstes einen Menuepunkt aus:\n\n"); printf("1: Summe, Differenz etc. berechnen\n"); printf("2: Groessere bzw. kleinere Zahl errechnen lassen\n\n"); printf("Ihre Zahl: "); scanf("%i", &menuepunkt); printf("---------------------\n\n"); /*Wenn Menuepunkt 1 ausgewaehlt wird, dann passiert das*/ if (menuepunkt == 1) { printf("Was moechten Sie berechnen?\n"); printf("1: Die Summe\n"); printf("2: Die Differenz\n"); printf("3: Das Produkt\n"); printf("4: Den Quotienten\n\n"); printf("Ihre Zahl: "); scanf("%i", &untermenuepunkt); } /*Wenn ein Untermenuepunkt ausgewaehlt wird, dann passiert das*/ if (untermenuepunkt == 1) { printf("\nIhr Ergebnis: %i\n", zahleingeben + zahleingeben1); } else if (untermenuepunkt == 2) { printf("\nIhr Ergebnis: %i\n", zahleingeben - zahleingeben1); } else if (untermenuepunkt == 3) { printf("\nIhr Ergebnis: %i\n", zahleingeben * zahleingeben1); } else if (untermenuepunkt == 4) { printf("\nIhr Ergebnis: %i\n", zahleingeben / zahleingeben1); } /*Wenn Menuepunkt 2 ausgewaehlt wird, dann passiert das*/ else if ((menuepunkt == 2) && (zahleingeben > zahleingeben1)) { printf("%i ist groesser als %i\n", zahleingeben, zahleingeben1); } else if (zahleingeben < zahleingeben1) { printf("%i ist kleiner als %i\n", zahleingeben, zahleingeben1); } else if(zahleingeben = zahleingeben1) { printf("%i hat den selben Wert wie %i", zahleingeben, zahleingeben1); } printf("\n---------------------\n\n"); system("PAUSE"); return 0; }
-
Windassel schrieb:
printf("Bitte geben Sie keine Fliesskommazahlen ein, Danke\n");
das ist doch ein scherz, ne.
-
wollte das einfach mal einbringen
aber wie siehts sonst mit dem code aus?
-
für den anfang ok.
für eine künftige version 1.1:
- der datentyp sollte unbedingt double sein.
- das programm sollte 'selbständig' erkennen, was zu tun ist. im sinne vonswitch (operator) { case '*' // multiplizieren ... break; ... }
- der rückgabewert von scanf sollte überprüft werden, denn wenn jemand buchstaben eingibt, macht dein programm nen klappmann.
- künftig sollten die einrückungen ausgewogener werden, du hast da zu viele leerzeichen drin.
- die einteilung in zwei menüpunkte finde ich übertrieben, so viele optionen sind es ja nicht.
- ich finde, die variablen-namen sind zu lang.
-
okay danke
double hatte ich in der theorie noch nicht. bis jetzt hab ich immer nur int und float benutzt
das mit dem rückgabewert hatte ich auch nicht
der eine gesagt, dass sie zu kurz sind, du sagst sie sind zu lang
ich hab sie so, dass ich mir merken kann was damit gemeint ist
sonst komm ich ja noch durcheinander
Danke für das Feedback erstma
-
was mir noch auffällt, beim ersten überfliegen habe ich übersehen:
wenn du zwei untermenüs benutzt bzw. generell solltest du menüs klar voneinander trennenif ( 1 == menuepunkt ) { ... } if ( 2 == menuepunkt ) { ... } usw.
denn bei deinen if else ketten ist es relativ mühsam zu erkennen, was das programm eigentlich bei welcher bedingung macht. hast du das programm eigentlich schon getestet?
-
klar hab ich das programm getestet. läuft auch so wie ich es haben will.
Bin gerade an nem anderen dran, was so ähnlich aufgebaut ist wie das
-
weiß eigentlich jemand wie man das in c schreibt, wenn man "Zurück" gehen möchte?, und dann zum Menue davor kommt?
-
menüs in funktionen aufteilen und durch erfüllung von if/else bedingungen menüfunktionen aufrufen.
-
hm okay, dann versuch ich es mal so mit if else. dachte da würde es einen einfacheren weg geben^^
-
CStoll schrieb:
Korrekt heißt es entweder int main(void) oder
int main(int argc, char** argv)
- genau das will dir der Compiler auch mitteilen.Fixed that for you.
(Einint main()
ist in C eine Funktion mit beliebigen Argumenten.)
-
Es wird ja besser, muss ich jetzt zugeben... aber die Theorie ist immernoch nicht durchgebraten:
Schlag mal iwo nach boolscher Algebraelse if ((menuepunkt == 2) && (zahleingeben > zahleingeben1)) { printf("%i ist groesser als %i\n", zahleingeben, zahleingeben1); } else if (zahleingeben < zahleingeben1) { printf("%i ist kleiner als %i\n", zahleingeben, zahleingeben1); } else if(zahleingeben = zahleingeben1) { printf("%i hat den selben Wert wie %i", zahleingeben, zahleingeben1); }
Ich hab mir mal erlaubt es einzurücken.
Das du deinen Code geprüft hast, wage ich zu bezweifeln:
Was passiert, wenn im Menü 3 ausgewählt wird? Auch wenn dies nicht gehen sollte, wird da eine Ausgabe getätigt. Da hast du dich noch nicht allzu sehr mit den UND und ODER Verknüpfungen auseinander gesetzt.Wie gesagt, die Boolsche Algebra würde dir hier mit den Äquivalenten der Deutschen Sprache helfen, was es in manchen Situation sehr einfach macht, ausformulierte Bedingungen zu transkribieren.
Die Variablen für (Unter)Menüpunkt kann man auf eine Variable begrenzen.
EDIT: im letzten else if hab ich noch vergessen zu erwähnen, dass ein = kein == ist... eine Zuweisung ergibt immer die zugewiesene Zahl zurück.
-
Danke für das Lob
Ja, auch wenn ich da eine andere Zahl eingeben würde, würde das da auftauchen. bei switch case kann man ja default angeben und dann dahinter eine Meldung setzen, nur wie das bei if else läuft weiß ich noch nicht. für mich war es erstmal wichtig, dass ich das grobe hinbekommen habe.
-
Hat mit switch garnix zu tun. Das geht auch mit if. Du musst es nur verschachteln:
//... else if(menuepunkt == 2) { if(zahl1 > zahl2) //Variablennamen gekürzt { printf("%i ist größer als %i", zahl1, zahl2); } else if(zahl1 < zahl2) { printf("%i ist kleiner als %i", zahl1, zahl2); } else if(zahl1 == zahl2) //Beachte: ==, und nicht = { printf("%i ist gleich %i", zahl1, zahl2) } }
-
Hab jetzt noch ein wenig rumgebastelt und komme gut vorran, leider finde ich - und mir fallen auch - keine weiteren Übungsaufgaben ein. Vielleicht habt Ihr ja noch was für mich? Was ich bis jetzt gemacht habe: Variablen, mathematische funktionen, verzweigen, if else, break, switch case, default und bin jetzt bei schleifen angekommen. Was könnte ich mit dem Wissen noch so programmieren?
mit der such funktion hab ich nicht wirklich das rausgefunden, was ich brauche, nur ma so