brauche hilfe zum lösen einer aufgabe
-
dankesehr! also, da wir diese Hausaufgabe so abgeben müssen, also diese 3 Dateien einzeln hochladen müssen, glaube ich, dass das mit dem projekt hinzufügen nicht okay wäre, oder was meint ihr?
und wie passe ich den make-file an??? wäre echt super lieb wenn ihr mir helfen könntet :S
-
Bei Codeblocks ist das sehr einfach,
zunächst mal ein C-Grundgerüst erstellen
File > New > Project > Console application > C > Projektnamen vergeben > OK
jetzt hast du schon mal main.c
dann 2x via
File > New > Empty File
deine beiden zusätzlichen Dateien ins Projekt einfügen (du wirst extra danach gefragt) und Codeblocks compiliert dann immer alle 3 Dateien zusammen, fertig.
-
Hi, wenn ich das programm so teste wei es jetzt hier gepostet wurde bekomme ich die Fehlermeldung:
" ;9Assertion failed: n>=0,file myio.c, line 12 "This application has requested the Runtime to terminate it in an unusual way.
Please contact the application´s team for more information.Könnte mir vielleicht jemand sagen wie dieser Fehler zustande kommt?
Eigentlich müsste er ja B9 und nich ;9 ausgeben da man ja die basis 16 wählt ?
(Verwende notepad++ und Mingw compiler )
-
Das habe ich dir doch schon angedroht
Das liegt daran, dass die Buchstaben nicht direkt auf die Ziffern folgen.
Du kannst dich ja mal über ASCII schlau machen.
-
ich hab die selbe Aufgabe und habe das jetzt auch mal so probiert nur das bei mir statt:
10111001
base 7 not supported
271
185
B9
Assertion failed: n>=0, file myio.c, line ?das:
10111001
base 7 not supported
271
185
B9
n must be a natural numberausgegeben werden soll.
Nun die Frage wo ich das im Quelltext ändern muss damit sich die Ausgabe verändert?
-
achso ich nutze übrigens codeblocks...
-
Hast du ein
assert(n>=0);
in deinem Code?
-
DirkB schrieb:
Hast du ein
assert(n>=0);
in deinem Code?ja hab ich...
-
DirkB schrieb:
Du musst auch bedenken, das bei Ziffer-Werten über 9, Buchstaben genommen werden.
Alsomyprintf(10,16);
ergibt ein 'A' und keinen ':'hmm so wie du es gesagt hast müsste es doch eigentlich direkt funktionieren?
also ";" hat ein anderen wert als "B" in der ascii tabelle aber wie rechne ich das ineinander um? hat c dafür vielleicht eine funktion?
oder wie sollte ich das am besten umsetzen?
-
Ok, war wohl etwas missverständlich. Da fehlte das "sollte"
Wie ezeugst du denn die Zahlen bzw. wie gibst du die Zahlen aus?
-
ich geb die zahlen ganz normal über printf aus und erzeug sie durch den rekursiven aufruf von myprintf
-
Zahlen gibt man normalerweise bei printf() mit %d oder %u aus.
Da du aber ein ';' erhhälst, nimmst du %c. Das ist auch in Ordnung.printf("%c", Wert);
Nur wie erzeugst du den Wert den du ausgeben willst.
-
Ich erzeuge den wert den ich ausgeben möchte in dem ich jedes zeichen des zielwertes einzeln berechne und diese dann aneinander füge
also hier
"11" "9" und das wäre dann ja im hexa
"B" "9"
-
Zeig mal deinen Code. Zumindest die Zeilen wo du die 11 berechnest bis zur Ausgabe.
Nebenbei ist "9" ein String, '9' ein Zeichen und 9 ein Zahlenwert.
-
void myprintf(int n, int b) { assert(n>=0); // stellt sicher das n größer gleich 0 ist if(b==2||b==8||b==10||b==16) { int k; k=(n%b); if(n!=0) { n=(n/b); myprintf(n,b); putchar('0'+k); } }
-
die " waren auch nur da um den wert zu verdeutlichen sorry hät ich vllt schreiben sollen
-
Wie musst du putchar('0'+k); anpassen, wenn du erstmal für die 0 ein 'A' haben möchtest. (und für die 1 ein 'B')
Die endgültige Lösung klappt nicht mit einem Befehl.
-
Hmmm könnteste mir da nen ansatz zu geben? Vielleicht irgendwas in der richtung das ich da ne if verzweigung reinsetze?
-
habe jetzt ein bisschen rumprobiert etwas zu ändern und zu tauschen...
finde aber keine Lösung was soll ich mit assert(n>=0) machen um meine gewünschte ausgabe zu bekommen...
ich steh echt aufm schlauch und könnte hilfe gebrauchen...
-
Ein if ist für dich (als Anfänger) sicher am sinnvollsten*.
Am besten ob k > 9 ist.
Aber aufpassen: 'A' steht für 10. Wenn du dann zu k das 'A' addierst, bekommst du einen anderen Buchstaben.Und für das assert schau mal auf der 1. Seite des Threads nach. Da steht ein bisschen Code.
*Es geht auch ohne if