Konvertierungsprogramm in C

Das Forum fĂĽr Programmierer und Systemadmins. Von Shell-, Perl- und PHP-Scripts bis zur objektorientierten Programmierung mit C++.

Beitragvon superracer » Sa 07 Okt, 2006 19:21

na ein bisserl muĂźt deine hausaufgaben aber scho selber auch machen...
superracer
Board-User Level 3
Board-User Level 3
 
Beiträge: 1073
Registriert: So 04 Jul, 2004 11:18

Beitragvon moonangel » Sa 07 Okt, 2006 21:02

sagte ja schon ist keine hausaufgabe :p
moonangel
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 49
Registriert: Sa 04 Mär, 2006 16:14

Beitragvon superracer » So 08 Okt, 2006 02:36

das war auch bildlich gesprochen...
superracer
Board-User Level 3
Board-User Level 3
 
Beiträge: 1073
Registriert: So 04 Jul, 2004 11:18

Beitragvon moonangel » So 08 Okt, 2006 13:47

achso na dann :?
moonangel
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 49
Registriert: Sa 04 Mär, 2006 16:14

Beitragvon moonangel » Di 10 Okt, 2006 17:37

jaaaa bin endlich dazu gekommen das programm auszuprobieren.
musste nämlich leider nebenbei noch ein andres doofes listen index
programm schreiben. aufjedenfalls wollt ihc mich bei all denen bedanken
die mir geholfen haben. eine (ich weiß ich nerv :)) frage hätte ich noch:
welche bedeutungen haben die einzelnen variablen. ich weiĂź das fact fĂĽr
das vorzeichen ist undd ret und zahl is auch klar.
aber was heist

dig;
basedig;
base;
nc;
exp;
*cp;
cp;
fact;
nc+= dig/exp --> nc=nc+dig /exp ?;
return fact* (nc+ret) ?
exp*=base --> exp= exp*base ?;

und wieso mache ich das?
moonangel
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 49
Registriert: Sa 04 Mär, 2006 16:14

Beitragvon superracer » Di 10 Okt, 2006 17:57

ja meine variablennamen sind immer sehr kurz und kryptisch (normalerweise noch schlimmer als hier) ;)

>dig
kurz für digit, enthält den wert (0-35) der aktuell bearbeiteten ziffer
>basedig
funktion, die eine ziffer (char 0-9, a-z) als int (dezimal) zurĂĽckgibt. wobei mir gerade auffallt, daĂź der "base" parameter hier nicht verwendet wird.
>base
die basis halt, 2-36
>nc
der nachkomma-teil der zahl
>exp
exponent, ist aber falsch benamst, wird zum durchdividieren der einzelnen stellen des nachkommateils gebraucht. die schleife zum ausrechnen des nachkommateils sollte eigentlich zu verstehen sein..
>cp
char pointer, damit wird der string von anfang bis ende zeichen fĂĽr zeichen durchgehatscht -> lies das kapitel ĂĽber pointer/zeiger in deinem buch (oder was auch immer du da hast)
>fact
-1 oder 1, je nach vorzeichen
>nc+= dig/exp --> nc=nc+dig /exp ?;
yep
>return fact* (nc+ret)
gibt das endergebnis zurĂĽck, bestehend aus vorzeichen (fact), ganzzahliger anteil (ret) und nachkommateil (nc)
>exp*=base --> exp= exp*base ?
yep
>und wieso mache ich das?
weiĂź nicht? und wieso mach ich das ĂĽberhaupt?
superracer
Board-User Level 3
Board-User Level 3
 
Beiträge: 1073
Registriert: So 04 Jul, 2004 11:18

Beitragvon moonangel » Di 10 Okt, 2006 20:20

hui sehr gut jetzt weiĂź ich auch was was bedeutet.
das programm wandelt jetzt also von einen beliebigen
in ein beliebiges zahlensystem um? den:

void main()
{
unsigned int x;
x = my_strtol("2", 16); //welche eingabe?
printf("%u \n", x);

}

hat mich ein wenig verwirrt. und my_strtol ist das nur
ein beliebig ausgewählter name oder auch so eine
funktion wie strcmp oder strlen oder sowas? und wenn
ja was genau macht diese funktion (definition) ?
bitte und danke danke danke ^^
moonangel
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 49
Registriert: Sa 04 Mär, 2006 16:14

Beitragvon superracer » Di 10 Okt, 2006 20:55

ist ein fast beliebig ausgewählter name, einfach weil strtol() eine standardfuntion ist, die eigentlich genau das macht (bis auf vorzeichen und nachkommazeugs)
superracer
Board-User Level 3
Board-User Level 3
 
Beiträge: 1073
Registriert: So 04 Jul, 2004 11:18

Beitragvon moonangel » Mi 11 Okt, 2006 11:00

aaaah sehr gut danke :) und hach ich wollte nicht fragen
muss es aber doch: wieso static unsigned int oder double?
was bedeutet das? wieso nicht normales int ?
und bevor wieder sowas kommt wie in ein c lehr buch schaun,
soetwas habe ich nicht so etwas besitzen wir nicht. alles was ich bis
jetzt gelernt habe hat uns unsre lehrerin so erklärt.
ich denke das erklärt auch solche dinge wie funktion nicht
deklarien oder definieren .. :roll:
und wie weiĂź ich in diesen programm welche anfangsbasis der
benutzer hat? weil char dig is ja die zahl und base ja die basis
halt aber wo is die anfangsbasis?
moonangel
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 49
Registriert: Sa 04 Mär, 2006 16:14

Beitragvon superracer » Mi 11 Okt, 2006 11:18

moonangel hat geschrieben:muss es aber doch: wieso static unsigned int oder double?
was bedeutet das? wieso nicht normales int ?

static bei funktionen heißt, daß sie nicht exportiert werden und nur innerhalb des selben source files gültig sind. (static bei variablen hat andere bedeutung, außer bei globalen variablen.) das hat der vorteil, daß in dem fall die funktionsaufrufe per inlining optimiert werden können, was etwas an performance bringt. nötig ist's aber nicht wirklich.
unsigned int deswegen, weil der wert einer einzelnen ziffer nicht negativ sein kann.
und double ist der datentyp fĂĽr flieĂźkommazahlen.

und bevor wieder sowas kommt wie in ein c lehr buch schaun,
soetwas habe ich nicht so etwas besitzen wir nicht. alles was ich bis
jetzt gelernt habe hat uns unsre lehrerin so erklärt.

na dann solltest dir vl ĂĽberlegen, dir mal so ein buch zu kaufen, oder das ganze zeug im internet nachzulesen (dokus oder tutorials gibts wie sand am meer).

ich denke das erklärt auch solche dinge wie funktion nicht
deklarien oder definieren .. :roll:

wĂĽrde es sogar sicher ^^

und wie weiĂź ich in diesen programm welche anfangsbasis der
benutzer hat? weil char dig is ja die zahl und base ja die basis
halt aber wo is die anfangsbasis?

was fĂĽr ne anfangsbasis? die basis bleibt ja wohl immer gleich, oder?
superracer
Board-User Level 3
Board-User Level 3
 
Beiträge: 1073
Registriert: So 04 Jul, 2004 11:18

Beitragvon moonangel » Mi 11 Okt, 2006 11:32

aah sehr gut bist besser als meine lehrer.
hoffe du bist nicht mein lehrer (!?) :P
also double is jetzt quasi "mein" float.
ein c lehrbuch jetzt noch zu kaufen bringt sich
nix da wir (hoffentlich bald) mit c++ anfangen
aber danke fĂĽr den typ vl gibts ja fĂĽr c++ was
gescheites. und anfangs basis meine ich in
welcher basis du die zahl eingibst. weil meine
zahl kann 1010101010 im binär system sein
oder was weiĂź ich 12A4BD im Hexadezimal
system.
moonangel
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 49
Registriert: Sa 04 Mär, 2006 16:14

Beitragvon moonangel » Mi 11 Okt, 2006 11:37

achja "else if" =

if(dig>='0'&& dig<='9')
{
return ...
}
else
{
if(dig'a' ...)
{
return ...
}
else
{
if(dig 'A'..)
{
return...
}
} //?
moonangel
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 49
Registriert: Sa 04 Mär, 2006 16:14

Beitragvon superracer » Mi 11 Okt, 2006 11:38

>also double is jetzt quasi "mein" float.
double ist wie float, nur mit höherer genauigkeit. man sollte immer double verwenden wenn möglich.

>und anfangs basis meine ich in welcher basis du die zahl eingibst.
das ist ja die basis -> zweiter parameter zur my_strtol() funktion. auĂźer dieser basis gibt's ja sonst eh keine...?

und an "else if" is nix besonderes, gleich wie "else { if ... }"
superracer
Board-User Level 3
Board-User Level 3
 
Beiträge: 1073
Registriert: So 04 Jul, 2004 11:18

Beitragvon moonangel » Mi 11 Okt, 2006 11:40

doch doch. ich hab eine zahl und die anfangsbasis dann gebe ich die zielbasis ein. also die basis in der ich die zahl dann haben möchte.
also eine konverteirung von einem beliebgen (x) in in belieibiges (y)
moonangel
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 49
Registriert: Sa 04 Mär, 2006 16:14

Beitragvon superracer » Mi 11 Okt, 2006 11:42

naja, du kriegst die zahl ja als double zurĂĽck und nicht als string, da gibt's ja keine basis dazu. wenn du die zahl in eine andere beliebige basis umkonvertieren willst, brauchst du da eine zweite funktion dafĂĽr, die dann einen string zurĂĽckgibt (oder ausprintet). aber laut deinem ersten posting hast du so eine funktion eh schon?
superracer
Board-User Level 3
Board-User Level 3
 
Beiträge: 1073
Registriert: So 04 Jul, 2004 11:18

VorherigeNächste

ZurĂĽck zu PROGRAMMIER FORUM

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste