[Newbaufgaben]C++ Ausgabe von ungeraden Zahlen;Buchstaben Großmachen
-
Der % Operator ist der Modulo Operator.. Wie kommst du auf
modular
?!Wenn du wirklich C++ machen willst, dann sollstest du meinen obigen Code anschauen. Ansonsten bist du eh im falschen Unterforum.
-
omg,
äh ja klar
hatte mich verlesen hehe..
so dann mache ich mich jetzt an Aufgabe 2..
Was meinst du mit falschem Unterforum?
Weils kein c++ ist ?
-
Kaelron schrieb:
Was meinst du mit falschem Unterforum?
Weils kein c++ ist ?Jupp. Du machst lupenreines C, dafür sitzen die Experten hier:
http://www.c-plusplus.net/forum/viewforum-var-f-is-10.html
Die können dir dann auch bei fortgeschrittenen Fragen konstruktiv helfen. Wenn du nämlich C-Fragen im C++ Forum stellst, wird die Antwort in 90% der Fälle "Nimm std::vector/string!" sein.
-
Oh okay,
dann würde ich mich freun, wenn
ein Moderator den Thread verschieben könnte..
-
#include "stdafx.h" void main() { const int Unterschied = 'a' - 'A'; int BUCHSTABE; printf("\nBitte Buchstaben eingeben: "); scanf("%i",&BUCHSTABE); if (BUCHSTABE >= 'a' && BUCHSTABE <= 'z') { printf("/n%i",BUCHSTABE); } else if (BUCHSTABE >= 'A' && BUCHSTABE <= 'Z') { printf("/n%i",BUCHSTABE); getchar(); } }
Soweit bin ich jetzt mit dem Buchstabenprogramm,
allerdings gibt er halt nix aus,
meine Theorie ist, dass er if überspringt..
-
Hast du mal einen Debugger benutzt?
-
int BUCHSTABE;
Kommt dir dies nicht ein bisschen paradox vor?
edit: Und noch ein paar Anmerkungen die nicht direkt mit dem Fehler zu tun haben:
- main hat int zurück zu geben, nicht void
- newline ist \n nicht /n
- Dein getchar() ist etwas merkwürdig positioniert im Programmfluss. Ich glaube nicht, dass du das so willst.
-
Naja ich kenne mich mit VisualStudio noch nicht so aus,
aber wenn ich den Code im Debugmodus starte,
läuft er alles sauber durch, ich kann einen Buchstaben eingeben,
und dann steht da nur "weiter mit beliebiger Taste"..
Wenn ich über F11 einzelne Schritte debugge, funktioniert auch alles..
Daher meine Theorie, dass er if überspringt..//edit
C/C++ Code:
int BUCHSTABE;
C/C++ Code:
int BUCHSTABE;
C/C++ Code:
int BUCHSTABE;Kommt dir dies nicht ein bisschen paradox vor?
edit: Und noch ein paar Anmerkungen die nicht direkt mit dem Fehler zu tun haben:
- main hat int zurück zu geben, nicht void
- newline ist \n nicht /n
- Dein getchar() ist etwas merkwürdig positioniert im Programmfluss. Ich glaube nicht, dass du das so willst.Ja schon, ich habe auch "UNTERSCHIED" initialisiert, aber
es kommt ja nicht in der If vor..
ich schau nochmal drüber
-
Kaelron schrieb:
Naja ich kenne mich mit VisualStudio noch nicht so aus,
aber wenn ich den Code im Debugmodus starte,
läuft er alles sauber durch, ich kann einen Buchstaben eingeben,
und dann steht da nur "weiter mit beliebiger Taste"..
Wenn ich über F11 einzelne Schritte debugge, funktioniert auch alles..
Daher meine Theorie, dass er if überspringt..Anweisungen werden nicht übersprungen. Deine if-Bedingung ist bloß immer falsch. Guck dir mal ein, welchen Wert BUCHSTABE vor und nach der Eingabe hat. Du wirst etwas (für dich) überraschendes feststellen. Und danach lies meinen vorherigen Beitrag nochmal.
edit: Ok, bevor ich dich den ganzen Tag raten lasse:
Du versuchst mit dem scanf eine Zahl einzulesen. Du tippst aber einen Buchstaben. Daher scheitert die Eingabe, weil ein Buchstabe keine Zahl ist.Es ist zwar richtig, dass chars intern auch nur Zahlen sind. Dieses Konzept auf Ein- und Ausgabe zu übertragen wäre aber reichlich unintuitiv, weswegen scanf zwei unterschiedliche Eingabemodi für Zeichen und für Zahlen hat.
-
Okay danke,
das hilft mir soweit..
also im Internet steht, dass mit scanf("%c.. buchstaben auslesen kann,.
die if funktion sagt bei mir jetzt auch nur, dass wenn von klein a bis klein z..aber das DANN fehlt scheinbar noch//edit:
war alter code, poste gleich den neuen
-
#include "stdafx.h" void main() { const int Unterschied = 'a' - 'A'; char cBUCHSTABE; printf("\nBitte Buchstaben eingeben: "); scanf("%c",&cBUCHSTABE); //int einlesen fflush(stdin); if (cBUCHSTABE >= 'a' && cBUCHSTABE <= 'z') { printf("\n%c",cBUCHSTABE-Unterschied); // char ausgeben } else if (cBUCHSTABE >= 'A' && cBUCHSTABE <= 'Z') { printf("\n%c",cBUCHSTABE+Unterschied); //char ausgeben } }
habs nun endlich.. scheiss knobellei..
ist doch garnich so schwer ^^
-
Mahlzeit,
nochmal kurz zur Aufgabe 1, warum da noch extra Modulodivision einbringen?
Mach doch ne ganz einfache Schleife mit:for(int i=1; i<=101;i=i+2) cout << i << endl;
-
joar stimmt,
gibt halt viele Wege, das scheint auch einer zu sein;)
ab wann verwendet man denn effektiv Modulo ?MFg
-
ElCappo schrieb:
Mahlzeit,
nochmal kurz zur Aufgabe 1, warum da noch extra Modulodivision einbringen?
Mach doch ne ganz einfache Schleife mit:for(int i=1; i<=101;i=i+2) cout << i << endl;
Diese Version ist aber nicht gerade die Musterlösung!
Wenn du jetzt zB alle ungeraden Zahlen zwichen 2 und 101 raussuchen musst würdest du mit deiner Version nicht ans Ziel kommen.
Besser ist da der Modulo-Operator.
-
Walnut_Burl schrieb:
ElCappo schrieb:
Mahlzeit,
nochmal kurz zur Aufgabe 1, warum da noch extra Modulodivision einbringen?
Mach doch ne ganz einfache Schleife mit:for(int i=1; i<=101;i=i+2) cout << i << endl;
Diese Version ist aber nicht gerade die Musterlösung!
Wenn du jetzt zB alle ungeraden Zahlen zwichen 2 und 101 raussuchen musst würdest du mit deiner Version nicht ans Ziel kommen.
Besser ist da der Modulo-Operator.Ahh danke, das stimmt wohl
Ich habe hier eine Aufgabe die wohl auch einfach ist, ich aber nicht
weiss wie ich rangehen soll:Schreiben Sie ein Programm, welches ein beliebiges Integer-Array mit 30 Elementen ausgibt!
Vllt. kann mir ja jemand helfen.
Mfg
-
Walnut_Burl schrieb:
ElCappo schrieb:
Mahlzeit,
nochmal kurz zur Aufgabe 1, warum da noch extra Modulodivision einbringen?
Mach doch ne ganz einfache Schleife mit:for(int i=1; i<=101;i=i+2) cout << i << endl;
Diese Version ist aber nicht gerade die Musterlösung!
Wenn du jetzt zB alle ungeraden Zahlen zwichen 2 und 101 raussuchen musst würdest du mit deiner Version nicht ans Ziel kommen.
Besser ist da der Modulo-Operator.
Deswegen sind Programmierer Menschen und keine Copy&Paste-Maschinen. Menschen können nämlich denken und die winzigkleine Modifikation in das Programm einbauen die nötig ist, um nur die ungeraden Zahlen zwischen 2 und 101 auszugeben. Die Lösung mit dem Doppelsprung ist viel besser, weil sie nichts unnötiges macht.
-
Kaelron schrieb:
Schreiben Sie ein Programm, welches ein beliebiges Integer-Array mit 30 Elementen ausgibt!
Wo liegen denn deine Probleme? Eine Schleife die bis 30 zählt solltest du jetzt doch können, oder? Hast du Probleme beim Umgang mit Arrays?
-
Ja eine Schleife die bis 30 zählt ist ja easy,
aber das mit den Array versteh ich nicht, vllt ist die
Aufgabe auch komplizierter formuliert, als sie eigl. ist.void main() { int ibla; if(ibla=0;ibla<=30;ibla++) { printf("\n%bla",ibla); } }
-
SeppJ schrieb:
Walnut_Burl schrieb:
ElCappo schrieb:
Mahlzeit,
nochmal kurz zur Aufgabe 1, warum da noch extra Modulodivision einbringen?
Mach doch ne ganz einfache Schleife mit:for(int i=1; i<=101;i=i+2) cout << i << endl;
Diese Version ist aber nicht gerade die Musterlösung!
Wenn du jetzt zB alle ungeraden Zahlen zwichen 2 und 101 raussuchen musst würdest du mit deiner Version nicht ans Ziel kommen.
Besser ist da der Modulo-Operator.
Deswegen sind Programmierer Menschen und keine Copy&Paste-Maschinen. Menschen können nämlich denken und die winzigkleine Modifikation in das Programm einbauen die nötig ist, um nur die ungeraden Zahlen zwischen 2 und 101 auszugeben. Die Lösung mit dem Doppelsprung ist viel besser, weil sie nichts unnötiges macht.Ja klar ist sie für seine Aufgabe besser.
Ich selber bin auch noch C++ Anfänger und ich dachte mir halt nur dass es einige Undeutlichkeiten hervorrufen kann.
-
Ja eine Schleife die bis 30 zählt ist ja easy,
aber das mit den Array versteh ich nicht, vllt ist die
Aufgabe auch komplizierter formuliert, als sie eigl. ist.Ja glaube ich auch, dass die Aufgabe komplizierter gestellt ist, als gedacht. Habt ihr schon Funktionen besprochen? Falls Ja, ist gemeint, dass du eine Funktion für die Ausgabe schreiben sollst.
Falls Nein, ersetz dein ibla durch ein 30 Elemente-Array und gib dann mit printf die Elemente aus.Achtung: Die Schleife die du da jetzt hast gibt 31 Elemente aus.
Kleiner Tipp: In C fängt man bei der 0 an mit zählen.