Code Example
Example code consisting of five files of the tutorial example.
1 /* File prime.c ---------------------------------------------- */ 2 /* This example demonstrates some elementary CTC++ properties. */ 3 /* Not meant to be any good solution to the 'prime' problem. */ 4 5 #include "io.h" 6 #include "calc.h" 7 8 int main(void) 9 { 10 unsigned prime_candidate; 11 12 while((prime_candidate = io_ask()) > 0) 13 { 14 if (is_prime(prime_candidate)) 15 io_report(prime_candidate, "IS a prime."); 16 else 17 io_report(prime_candidate, "IS NOT a prime."); 18 } 19 return 0; 20 } 1 /* File io.h ------------------------------------------------- */ 2 3 /* Prompt for an unsigned int value and return it */ 4 unsigned io_ask(); 5 6 /* Display an unsigned int value and associated string */ 7 void io_report(unsigned val, char* str); 1 /* File io.c ------------------------------------------------- */ 2 #include <stdio.h> 3 4 /* Prompt for an unsigned int value and return it */ 5 unsigned io_ask() 6 { 7 unsigned val; 8 int amount; 9 10 printf("Enter a number (0 for stop program): "); 11 if ((amount = scanf("%u", &val)) <= 0) { 12 val = 0; /* on 'non sense' input force 0 */ 13 } 14 return val; 15 } 16 17 /* Display an unsigned int value and associated string */ 18 void io_report(unsigned val, char* str) 19 { 20 printf("%u %s\n\n", val, str); 21 } 1 /* File calc.h ----------------------------------------------- */ 2 3 /* Tell if the argument is a prime (ret 0) or not (ret 1) */ 4 int is_prime(unsigned val); 1 /* File calc.c ----------------------------------------------- */ 2 3 /* Tell if the argument is a prime (ret 1) or not (ret 0) */ 4 int is_prime(unsigned val) 5 { 6 unsigned divisor; 7 8 if (val == 1 || val == 2 || val == 3) 9 return 1; 10 if (val % 2 == 0) 11 return 0; 12 for (divisor = 3; divisor < val / 2; divisor += 2) 13 { 14 if (val % divisor == 0) 15 return 0; 16 } 17 return 1; 18 }