for schleife
-
Hallo alle,
habe Just For Fun ein Prog geschrieben zum umwandeln von Hexadezimal in dezimal- Zahlen.
Aber da ich den Code nicht sonderlich gut finde, dachte ich ich frage mal nach Hilfe
#include <stdio.h> #include <stdlib.h> #include <math.h> char hexal[4]="acdc"; int a,b,c,d; int ausgabe() { printf("%s\n\n",hexal); printf("a: %c\n",hexal[0]); printf("b: %c\n",*(hexal+1)); printf("c: %c\n",*(hexal+2)); printf("d: %c\n\n",*(hexal+3)); return 0; } int main() { ausgabe(); int dezimal = 0; if(isalpha(hexal[0])){a = hexal[0] - 87;printf("a: %i\t\t",a);} else if(isdigit(hexal[0])){a =hexal[0] - 48;printf("a: %i\t\t",a);} else printf("ERROR: C0DE.a != HEX.C0DE"); printf("a = %i*16^3 =",a); a=a*pow(16,3); printf("%i\n\n",a); if(isalpha(*(hexal+1))){b = *(hexal+1) - 87;printf("b: %i\t\t",b);} else if(isdigit(*(hexal+1))){b = *(hexal+1) - 48;printf("b: %i\t\t",b);} else printf("ERROR: C0DE.b != HEX.C0DE"); printf("b = %i*16^2 =",b); b=b*pow(16,2); printf("%i\n\n",b); if(isalpha(*(hexal+2))){c = *(hexal+2) - 87;printf("c: %i\t\t",c);} else if(isdigit(*(hexal+2))){c = *(hexal+2) - 48;printf("c: %i\t\t",c);} else printf("ERROR: C0DE.c != HEX.C0DE"); printf("c = %i*16^1 =",c); c=c*pow(16,1); printf("%i\n\n",c); if(isalpha(*(hexal+3))){d = *(hexal+3) - 87;printf("d: %i\t\t",d);} else if(isdigit(*(hexal+3))){d = *(hexal+3) - 48;printf("d: %i\t\t",d);} else printf("ERROR: C0DE.d != HEX.C0DE"); printf("d = %i*16^0 =",d); d=d*pow(16,0); printf("%i\n\n",d); dezimal = a+b+c+d; printf("HEXA:____%s____DEZIMAL:____%i\n\n",hexal,dezimal); return 0; }
Möchte eine for-Schleife einbauen, und damit die 4 Blöcke in einen packen.
Würde mich freuen über jeden Tipp.
Danke
-
hättest ja wenigsten eine Funktion für hex_digit_to_value einbauen koennen - dann waere es ein 3-6-Zeiler gewesen
oder besser gleich die Schleife einbauen - vor dem 1. Post
jetzt gibts Gehirnkrampf für viele
-
//#include... #include <assert.h> int hex_digit_to_int(char p_digit) { if(p_digit >= '0' && p_digit <= '9') { return p_digit - '0'; } else if(p_digit >= 'A' && p_digit <= 'F') { return p_digit - 'A'; } else if(p_digit >= 'a' && p_digit <= 'f') { return p_digit - 'a'; } assert(false); // hier fehlt richtige behandlung return -1; } int main() { char hexal[4]="acdc"; int value = hex_digit_to_int(hexal[0])*1000+ hex_digit_to_int(hexal[1])*100+ hex_digit_to_int(hexal[2])*10+ hex_digit_to_int(hexal[3])*1; return 0; }
-
die *1,*10,*100 usw. sollten 0x1, 0x10, 0x100 sein
-
Das ist so ungefähr die zweitbeste for-Schleife, die ich in meinem ganzen Leben gesehen habe.
Respekt. Gut gemacht.
-
habs nur for-Bereitet
-
char deadbeef[] = "DeadBeef"; printf( "%i", strtol( deadbeef, NULL, 16 ) );
-
@Gast3
Danke
Das kann ich verwenden.http://forum.gofeminin.de/forum/couple1/__f80573_couple1-Frustabbau.html
-
essio schrieb:
@Gast3
Danke
Das kann ich verwenden.Hoffentlich weißt du auch, was du daran ändern musst, damit es richtig wird.
essio schrieb:
http://forum.gofeminin.de ....... 3_couple1-Frustabbau.html
Und deswegen hast du diesen Thread eröffnet?
-
essio schrieb:
@EOP
http://forum.gofeminin.de/forum/couple1/__f80573_couple1-Frustabbau.htmlAuweia, das irritiert mich jetzt ein bißchen.
Nicht nur daß es solche Seiten überhaupt gibt, sondern auch der Zusammenhang zu mir ist mir nicht ganz klar da ich nicht halbnackt vor irgendeinem Partner rumtanze. Wenn schon dann ganz nackt mit Polizeimütze.
-
DirkB schrieb:
essio schrieb:
@Gast3
Danke
Das kann ich verwenden.Hoffentlich weißt du auch, was du daran ändern musst, damit es richtig wird.
Ja, ich kann das selber in eine for Schleife setzen.
DirkB schrieb:
essio schrieb:
http://forum.gofeminin.de ....... 3_couple1-Frustabbau.html
Und deswegen hast du diesen Thread eröffnet?
Ich finde den Umgang von OEP lediglich nicht angebracht, Gast3 hat sich den Aufwand gemacht um mir zu helfen.
Seinen Code kann man leichter in eine Schleife setzen als meinen, wenn es denn noch nötig wäre.
-
essio schrieb:
ch finde den Umgang von OEP lediglich nicht angebracht, Gast3 hat sich den Aufwand gemacht um mir zu helfen.
Ich bin nicht OEP (https://www.google.de/search?q=original+entry+point) sondern EOP und wir spielen hier nicht Kinderspiele. Da muss man schon mal mit harschen Antworten rechnen.
Als Unregistrierter erst recht.EDIT:
Und schon hast du wieder was gelernt wenn du dem link gefolgt bist.
-
essio schrieb:
Ja, ich kann das selber in eine for Schleife setzen.
Darum geht es nicht.
Die Berechnung ist falsch.
-
DirkB schrieb:
essio schrieb:
Ja, ich kann das selber in eine for Schleife setzen.
Darum geht es nicht.
Die Berechnung ist falsch.
Das ist mir aufgefallen, das Setzen einer Funktion kann ich dennoch übernehmen.
Nicht nur im Kindergarten hat man vernünftig mit einander umzugehen.
Es geht um Ursache und Wirkung.
Wenn man solch eine Grundeinstellung hat, braucht man sich nicht zu wundern, wenn der eine oder andere im Umfeld stutzig wird.Gast3 hat mir einen Ansatz gegeben, Du hast lediglich seine Antwort bemängelt, das war auch das einzige was du zu diesem Thema beigetragen hast.