o4kareg schrieb:
das bloede dabei ist dass die C und Java Kode fast dasselbe Zeit brauchen
Das halte ich bei diesen Aufgabenstellungen für unhaltbar.
o4kareg schrieb:
(21 sek Java vergl. 19 sek C) und ich habe keine Ahnung wie man dies in C noch optimisieren soll:
Jedenfalls nicht mit verketteten Listen, verkettete Listen und Performanz schließen sich gegenseitig aus.
char **ipv4(const char *s)
{
int n,n0,n1,n2,n3;
char *r=calloc(2,strlen(s)),**p=r,*c=r+strlen(s)/2;
while( EOF!=sscanf(s,"%*[^0-9]%n",&n) )
if( n0=n1=n2=n3=0,sscanf(s+=n,"%*3[0-9]%n.%*3[0-9]%n.%*3[0-9]%n.%*3[0-9]%n",&n0,&n1,&n2,&n3), n3 )
{
memcpy(c,s,n3);
*p++=c+=n3+1;
s+=n3;
}
else
s+=n2?n2:n1?n1:n0;
return r;
}
int main()
{
char **p=ipv4("abd\n\n\tc\r123.198.77.001fddfsd245.223.54.345 546.345.234..543gd"
"asdadfsdfgdfgdfgdg1233.4444.5555.666.777.888.999.dfgadfgkajhdfogiuadf"
"oiguahdfgjandlfgadfgaldfjkgaldkfjghaldkfjghalkdjfghakljdfhgklajdfhgkljd"
"fhlgkjadf444.444.44.44.1.1.1.1.1.1.1.1.1.1.1.1.2.2.2.2.dfgdfgdfgdfdfgdfgdf"
"sdfgjksfhgisudfhgjnwe.e,rrmnw.e,rndk;fjgnd;kfjgnw.,rmn;kjdfs;kdjgndfg"
"#$%#$%.@$@#$2.qweqwr.2#$@#4.wer.er.e.e.r4f.5g.3d.34.df.45.45.45.45g"
"abd\n"),*r=p;
while( *p )
puts(*p++);
free(r);
return 0;
}