Archiv verlassen und diese Seite im Standarddesign anzeigen : atoi selber schreiben ??
WiTcHmAsTeR
20.03.2002, 08:17
Hi :D
Ich bin gerade dabei, c zu lernen und nun steh ich vor dem Problem, das ich ein prog schreiben soll, das eine mit gets() eingelesene zahl als int zahl auf dem Monitor ausgegeben werden soll. Ich darf aber keine vorgefertigten Hilfsfunktionen verwenden X(
Kann mir da irgentwer nen coolen tip geben??
Dank im Vorraus
Durchlaufe dein Char Array von der niederwertigsten Stelle bis zur höchsten Stelle, also in etwa so
for(int i = (SizeOfYourArray-1); i >= 0; i--)
{
}
Jede Stelle, die du weiter vorrückst, ist 10 mal mehr Wert, als die Stelle davor, d.h. du führst ne Variable
int decimal = 1;
ein, die du nach jedem Schleifendurchlauf erhöhst:
decimal = decimal * 10;
Mit der mußt du den ermittelten Wert des aktuellen Charakters multiplizieren und zu deiner Ergebnisvariablen addieren.
Den Wert des Charakters kannst du entweder durch 10 if Anweisungen (0-9) ermitteln, oder du gehst die einfachere Variante mit Hilfe der ASCI Tabelle:
int value = ((int) YourArray[i]) - 48;
(Die Werte 48 - 57 stellen die Zeichen 0-9 dar in der ASCII Tabelle)
nach Durchlauf der Schleife hast du dann dein Ergebnis.
Wenn du wirklich auf alle vorgefertigten Hilfsfunktionen verzichten mußt, mußt du auch dein SizeOfArray selber rauskriegen: Suche mit einer while Schleife und nem Zähler nach ´\0´
WiTcHmAsTeR
20.03.2002, 10:59
Danke Jack :)
Ich hab mich da mal durchgearbeitet und bin auf folgende Lösung gekommen:
#include "stdio.h"
#include "string.h"
void main()
{
char eing[100];
int zahl=0,x,len;
x=0;
printf("Bitte geben sie eine Zahlenreihe ein ");
gets(eing);
len=strlen(eing);
do
{
zahl=(zahl*10)+(eing[x]-48 );
x++;
}while (x!=len);
printf("die Zahl ist %i\n",zahl);
}
Ist warscheinlich nicht die beste, aber den Lehrer reicht es... :D
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.