]> git.sur5r.net Git - cc65/commitdiff
Calculate time in seconds, not ticks. Implement pager output for primes.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 30 Jul 2009 19:25:59 +0000 (19:25 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 30 Jul 2009 19:25:59 +0000 (19:25 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3986 b7a2c559-68d2-44c3-8de9-860c34a00d81

samples/sieve.c

index cb6783c935ad4e997fdb76c928301b7c439a1451..b2fc9cdbc7eef5e3fedd327579e7cdf84a8e15dc 100644 (file)
@@ -35,10 +35,20 @@ static unsigned char Sieve[COUNT];
 
 
 
+static char ReadUpperKey (void)
+/* Read a key from console, convert to upper case and return */
+{
+    return toupper (cgetc ());
+}
+
+
+
 int main (void)
 {
     /* Clock variable */
     clock_t Ticks;
+    unsigned Sec;
+    unsigned Milli;
 
     /* This is an example where register variables make sense */
     register unsigned char* S;
@@ -70,19 +80,29 @@ int main (void)
 
     /* Calculate the time used */
     Ticks = clock() - Ticks;
+    Sec = (unsigned) (Ticks / CLOCKS_PER_SEC);
+    Milli = ((Ticks % CLOCKS_PER_SEC) * 1000) / CLOCKS_PER_SEC;
 
     /* Print the time used */
-    printf ("Time used: %lu ticks\n", Ticks);
-    printf ("Press Q to quit, any other key for list\n");
+    printf ("Time used: %u.%03u seconds\n", Sec, Milli);
+    printf ("Q to quit, any other key for list\n");
 
     /* Wait for a key and print the list if not 'Q' */
-    if (toupper (cgetc()) != 'Q') {
+    if (ReadUpperKey () != 'Q') {
        /* Print the result */
+        J = 0;
        for (I = 2; I < COUNT; ++I) {
            if (Sieve[I] == 0) {
-               printf ("%4d\n", I);
+               printf ("%4d\n", I);
+                if (++J == 23) {
+                    printf ("Q to quit, any other key continues\n");
+                    if (ReadUpperKey () == 'Q') {
+                        break;
+                    }
+                    J = 0;
+                }
            }
-           if (kbhit() && toupper (cgetc()) == 'Q') {
+                   if (kbhit() && ReadUpperKey == 'Q') {
                break;
            }
        }