Dining Philosophers Problem in C – pthreads and Deadlock Prevention

The Dining Philosophers problem is a classic synchronization puzzle introduced by Edsger Dijkstra to illustrate deadlock and resource contention. Five philosophers sit at a round table with a single fork between each pair of neighbors — five forks total. Each philosopher alternates between thinking and eating, but eating requires picking up both the fork on …

C Program to Print Prime Numbers in a Given Range – Trial Division and Sieve

This C program generates and prints all prime numbers in a given range and reports the total count. It uses an efficient is_prime() function with a √n bound, plus a Sieve of Eratosthenes for cases where you need all primes up to a large limit. Trial Division — Check Each Number in the Range For …

K&R C Programs Exercise 7-9

Exercise 7-9. Functions like isupper can be implemented to save space or to save time. Explore both possibilities. Standard library character-classification functions like isupper are typically implemented as macros. There are two design axes: Save time: use a precomputed lookup table — one array access, no branches, O(1) at maximum cache efficiency Save space: use …

K&R C Programs Exercise 7-8

Exercise 7-8. Write a program to print a set of files, starting each new file on a new page, with a title and a running page count for each file. Print each file with a header line (filename + page number) at the top of every page. A page is LINES_PER_PAGE lines. When a page …

K&R C Programs Exercise 7-7

Exercise 7-7. Modify the pattern finding program of Chapter 5 to take its input from a set of named files or, if no files are named, from the standard input. Should the file name be printed when a match is found? Yes — when searching multiple files the filename should prefix each matching line (the …

K&R C Programs Exercise 7-6

Exercise 7-6. Write a program to compare two files, printing the first line where they differ. Open both files, read them line by line in parallel, and compare. When a differing line is found, print both versions with a line number and exit. Also handle the case where one file is longer than the other. …