Forum: C-Programmieren
Moderatoren: juergen, Martin ConradThema: Aufgabe von der Uni
Aufgabe von der Uni
Student89 am 27.11.2011 um 16:02
hab mal wieder eine für mich unlösbare Aufgabe von der Uni gestellt bekommen
Zitat:
Lösen Sie folgende Programmieraufgabe ohne andere vorgegebene Bibliotheks-Funktionen außer
printf und getchar zu benutzen:
– Schreiben Sie ein C-Programm, das zwei Eingabe-Zeichen einliest und dann ausgibt, ob es
sich dabei um zwei Großbuchstaben handelte.
– Erweitern Sie das Programm, so dass im Fall der Eingabe von zwei Großbuchstaben der
Abstand zwischen den beiden Buchstaben ausgegeben wird und nutzen Sie hierfür den ?:-
Operator.
– Erweitern Sie das Programm, so dass im Falle von der Eingabe von zwei Großbuchstaben die
zugehörigen Kleinbuchstaben ausgegeben werden.
b) Schreiben Sie ein Programm, das für drei beliebige vom Benutzer eingegebene Kleinbuchstaben
diese nach der lexikografischen Ordnung aufsteigend sortiert wieder ausgibt. Dabei soll Ihr Programm
jegliche Falscheingaben abfangen, so dass nur bei der Eingabe von drei Kleinbuchstaben die richtige
Ausgabe erfolgt und in allen anderen Fällen eine Fehlermeldung mit dem Hinweis erscheint, an
welcher Stelle eine Falscheingabe getätigt wurde!
Damit ich einigermaßen weiterkomme mit der Aufgabe, wäre es super, wenn mir jemand ein paar Tipps zu meinen Fragen geben könnte:
-Wie kann man ausgeben, ob es sich um Großbuchstaben handelt?
-Wie kann ich den Abstand zwischen 2 Buchstaben ausgeben?
-Wie kann man die zugehörigen Kleinbuchstaben ausgeben lassen?
Vielen Dank für eure Hilfe
P.S. Ja ich war in der Vorlesung, aber die glauben doch tatsächlich, dass man sich das alles "selber" erarbeiten kann.
[EDIT] - Re: Aufgabe von der Uni
icefire am 27.11.2011 um 17:23
in C werden Buchstaben als ASCII
Zeichen verwaltet. D.h., wenn du einen Buchstaben in eine char-Variable einliest, dann hat diese Variable den entsprechenden numerischen Wert. Diesen Wert kann man dann überprüfen, bzw. mit diesen Zahlenwerten auch rechnen.
Zitat:
-Wie kann man ausgeben, ob es sich um Großbuchstaben handelt?
Sieh dir die ASCII-Tabelle an: Die Großbuchstaben liegen zwischen dezimal 65 und 90. Alternativ kann man auch direkt mit char-Konstanten arbeiten:
char c = 'H';
if( (c >= 'A') && (c <= 'Z') )
{
printf( "c ist ein Großbuchstabe\n" );
}
Zitat:
-Wie kann ich den Abstand zwischen 2 Buchstaben ausgeben?
Einfach die Differenz bilden. Da du keine Bibliotheken verwenden darft, musst du selber sicherstellen, dass die Zahl positiv ist.
Also entweder vorher überprüfen welche die größere Zahl ist, oder im Nachhinein bei negativen Zahlen das Vorzeichen umdrehen.
Zitat:
-Wie kann man die zugehörigen Kleinbuchstaben ausgeben lassen?
Der Abstand zwischen Großbuchstaben und Kleinbuchstaben ist konstant
mfg, Wolfgang
--
Hex, Bugs and Rock 'n Roll
Re: Aufgabe von der Uni
Student89 am 27.11.2011 um 19:12
Hab mich gleich ans Programmieren gemacht, nachdem ich die Idee von dir hatte. hier mein Code:
#include <stdio.h>
main() {
char zeichen1;
char zeichen2;
char c;
while (getchar() !='\n') {}
printf("Bitte 1.Zeichen eingeben: \n");
getchar("%c",&zeichen1);
while (getchar() !='\n') {}
printf("Bitte 2.Zeichen eingeben: \n");
getchar("%c",&zeichen2);
if(zeichen1 && zeichen2 >=64 && 90) {
printf("Es handelt sich um Großbuchstaben");
}
else {
printf("Keine Großbuchstaben");
}
if(zeichen1 && zeichen2 >=64 && 90) {
if(zeichen1 > zeichen2)
{
printf("Abstand ist: %i",zeichen1-zeichen2);
}
if(zeichen2 == zeichen1) {
printf("Abstand ist: 0");
}
else{ printf("Abstand ist: %i",zeichen2-zeichen1
}
if(zeichen1 && zeichen2 >=64 && 90) {
printf("Zeichen1 und 2 in Kleinbuchstaben: %c, %c",(zeichen1+32),(zeiche2+32))
}
}
}
beim schreiben des codes kommt gleich am Anfang eine Fehlermeldung: too many arguments to function "getchar". was bedeutet diese? wie kann man es richtig machen?
Vielen Dank fürs Beantworten
[EDIT] - Re: Aufgabe von der Uni
icefire am 27.11.2011 um 19:27
Zitat:
beim schreiben des codes kommt gleich am Anfang eine Fehlermeldung: too many arguments to function "getchar". was bedeutet diese?
Die Funktion getchar() hat keine Argumente, also kannst du auch keine übergeben. Sieh dir zB im Buch C von A bis Z
noch mal das Kapitel über Ein/Ausgabe in C an damit du deinen beiden Zeichen einlesen kannst.
Und allgemein ein wichtiger Tipp: Versuch nicht schwierige Aufgaben auf einmal zu erledigen: Divide & Conquer
D.h. lös deine Aufgabe Schritt für Schritt. Erst wenn eine Teilaufgabe funktioniert, geh zur nächsten.
mfg, Wolfgang
--
Hex, Bugs and Rock 'n Roll
Re: Aufgabe von der Uni
Student89 am 27.11.2011 um 19:53
das meintest du doch oder?
aber so richtig weitergekommen bin ich dadurch jetzt nicht. Was meinst du mit die Funktion getchar hat keine Argumente? Was bedeutet denn der Fehler in meinem Programm?
Danke für die Hilfe
andi
