Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Das schreit ja nach golfen!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
29.03.2007, 11:30 Uhr
virtual
Sexiest Bit alive
(Operator)


Gegeben:

C++:
#include <stdio.h>

typedef char TimeString[9]; // Format: hh:mm:ss

/*
   Wandelt einen Zeitstempel hh:mm:ss in die entsprechende Anzahl sekunden um.
   Rückgabe -1, wenn kein gültiger stempel.
*/

int timeStringToInt(const TimeString ts) {
    int h, m, s;

    if (3 != sscanf(ts, "%02d:%02d:%02d", &h, &m, &s)) {
        return -1;
    }

    return h*3600 + m*60 + s;
}

/*
    Wandelt eine Sekundenzahl in einen Zeitstempel um. Rückgabe -1, wenn zeit nicht als
    Zeitstempel darstellbar (zugroß/klein)
*/

int intToTimeString(int t, TimeString ts) {
    if (t<100*3600 && t>=0) {
        sprintf(ts, "%02d:%02d:%02d", t/3600, (t/60)%60, t%60);
        return 0;
    }
    else {
        return -1;
    }
}



Golfe intToTimeString und timeStringToInt ohne verwendung von Funktionen aus der C/C++ Library (also kein sscanf/sprintf et al.)
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.03.2007, 12:47 Uhr
kronos
Quotenfisch
(Operator)


Ich leg mal vor:
string2int: 108
int2string: 123
Da geht natürlich noch mehr.
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.03.2007, 12:52 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von kronos:

Da geht natürlich noch mehr.

Mehr ja, aber weniger ist das Problem
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.03.2007, 14:14 Uhr
kronos
Quotenfisch
(Operator)


Noch mehr Kürze versteht sich...
Will niemand mitspielen?
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>

Dieser Post wurde am 30.03.2007 um 17:26 Uhr von kronos editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.04.2007, 21:39 Uhr
~kronos
Gast


So, Ostern ist 'rum.
Was is los, will sich niemand mit dem tollen Rätsel befassen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
08.10.2007, 19:00 Uhr
0xdeadbeef
Gott
(Operator)


Okay, okay. Erstmal die einfache Hälfte, int2string in 77. Streng nach Spezifikation Kleiner krieg ichs grad nicht mehr, also hier:

C++:
int intToTimeString(unsigned t, TimeString s) {
for(int i=8,j=6;i--;t/=j)s[i]=t%(j^=i?12:0)+48,j<7?s[--i]=58:0;return s[8]=t;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 08.10.2007 um 23:27 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.10.2007, 20:28 Uhr
Suba Esel



Hm, ist jetzt wahrscheinlich ne völlig bescheuerte Frage, ich hab mich da überhaupt nicht eingedacht.... aber return s[8]=t;? Wieso nicht einfach return t;?
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
08.10.2007, 20:55 Uhr
0xdeadbeef
Gott
(Operator)


String-Terminierung.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
09.10.2007, 00:09 Uhr
0xdeadbeef
Gott
(Operator)


In die andere Richtung bring ichs mit Überprüfungen nur auf 111

C++:
int timeStringToInt(TimeString const s) {
int r=0,m=6,i=8,f=1,x;for(;i--;f*=m){x=s[i]-48;if((m^=i?12:0)<7&&s[--i]-58||x<0||x>m)return-1;r+=f*x;}return r;
}


...das ist aber auch ein Gepfriemel, da die Doppelpunkte und falschen Zahlen abzufangen...
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
09.10.2007, 13:33 Uhr
Suba Esel



D.h.?
Was string-terminierung ist weiß ich... aber warum gibt man nicht einfch t zurück und lässt s verfallen?
--
Simon

Dieser Post wurde am 09.10.2007 um 13:33 Uhr von Suba Esel editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: