brauche hilfe zum lösen einer aufgabe
-
Du musst auch bedenken, das bei Ziffer-Werten über 9, Buchstaben genommen werden.
Alsomyprintf(10,16);
ergibt ein 'A' und keinen ':'
-
XDX schrieb:
Achsoo, ich benutze meistens Code-Blocks und manchmal notepadd++
"undefined reference" bedeutet, dass du zwar den Prototypen zu der Funktion deklariert hast (das Ding im Header), dir aber die Definition fehlt. Das heißt, myio.c wird wohl gar nicht kompiliert und gelinkt. In einer IDE musst du deine .c-Datei einfach dem Projekt hinzufügen. Dann erledigt die IDE die Arbeit für dich. Wenn du ohne arbeitest, musst du eventuell mal dein Makefile anpassen.
-
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?