[Newbaufgaben]C++ Ausgabe von ungeraden Zahlen;Buchstaben Großmachen
-
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.
-
30 Elemente Array hört sich gut an, wie mache ich das ^^
irgendwie sowas ?
#include "stdafx.h" void main() { int i; int a[30]; for ( i=0; i<4; i++ ) printf("%d ", a[30]); printf("\n"); }
-
Kaelron schrieb:
30 Elemente Array hört sich gut an, wie mache ich das ^^
Jedenfalls nicht durch Raten, sondern indem du deine Lehrmaterialien durchliest und verstehst.
Wie du wahrscheinlich selbst gemerkt haben dürftest, kann man dein Programm zwar compilieren, aber es macht nicht das richtige.
-
Naja soviele Scripts haben wir bis jetzt auch nicht,
wir haben halt nur das Aufgabenscript, habe mir auch schon
so ein Buch gekauft, aber der Prof springt wohl etwas mit den
Themen, als die, dies es im Buch machen..
Bis jetzt habe ich eigl immer den code durch überlegen herausgefunden
oder mir halt auch mal sagen lassen, um es daran zu verstehen.
Deswegen frage ich ja hier nach Hilfe..
Wenns nur so wenige Zeilen sind, kannst du sie mir ja mal aufzeigen,
dann kann ich es besser verstehen und muss mich nicht
den halben Nachmittag mit den Paar Zeilen rumschlagen.
-
int a[30];
Richtig, dies definiert ein Array von 30 int-Elementen.
for ( i=0; i<4; i++ ) printf("%d ", a[30]);
Nachdem das Array erstmal definiert wurde, greift man mit dem []-Operator auf die einzelnen Elemente zu. Und zwar auf das Element mit der Nummer die in den eckigen Klammern steht. Hier gibst du also jedes Mal das Element mit der Nummer 30 aus.
Wie man das richtig macht, sollte klar sein.
Im übrigen sei noch erwähnt, dass ein Array mit 30 Elementen kein Element mit der Nummer 30 besitzt, sondern nur die Nummern 0 bis 29. Zugriffe auf Elemente außerhalb von 0-29 sind zwar prinzipiell nicht verboten, aber es ist nicht definiert was dann passiert und es ist daher eigentlich immer ein Fehler wenn man das macht.
-
ahh danke
ich vestehe nur das nicht ganzfor ( i=0; i<4; i++ ) printf("%d ", a[30]);
ich schreib dir mal in worten auf was ich verstehe:
i gleich 0
wenn i kleiner 4 dann erhöhe i um eins (solange bis 4 )??!Schreibe %d, wobei %d a[30] ist..
-
SeppJ hat da etwas unüberlegt geschrieben. Es sollte heißen:
for ( i=0; i<30; ++i ) printf("%d ", a[i]);
Sprich: Solange i kleiner als 30 ist, gebe den i-ten Index des Arrays aus.
-
habe mir auch schon
so ein Buch gekauft, aber der Prof sprinkt wohl etwas mit den
Themen, als die, dies es im Buch machen..Erstmal: sprinkt
Des Weiteren würde ich dir empfehlen, trotzdem das Buch konsequent durchzuarbeiten. Das sind alles Grundlagen, die du früher oder später (spätestens bei der Klausur) brauchen wirst. Wenn dein Prof nicht in der Lage ist die Vorlesung didaktisch gut aufzubauen, vertraue lieber auf dein Buch, das sich wahrscheinlich schon tausendfach bewährt hat.
-
Bruder Lustig schrieb:
SeppJ hat da etwas unüberlegt geschrieben. Es sollte heißen:
for ( i=0; i<30; ++i ) printf("%d ", a[i]);
Sprich: Solange i kleiner als 30 ist, gebe den i-ten Index des Arrays aus.
Eigentlich habe ich das ganz bewusst geschrieben, denn ich wollte dem Fragesteller seinen Fehler erklären...
Da der Threadersteller es aber anscheinend noch nicht verstanden hat:
int a[30];
Das gibt dir ein Array mit 30 Elementen. Dieses Array heißt
a
und nirgendwie sonst. Nichta[]
und auch nichta[30]
sondern einfach nura
. Die Elemente vona
heißena[0]
bisa[29]
. Und jetzt denk nochmal darüber nach, wasfor ( i=0; i<4; i++ ) printf("%d ", a[30]);
macht und wie man es richtig machen kann.
-
Achso, sorry.
Habe nicht den ganzen Thread mitverfolgt und bin, wie der Fragesteller, davon ausgegangen, dass das die Lösung sei.
Nichts für ungut.