initial commit
This commit is contained in:
		
						commit
						79e61a227c
					
				
							
								
								
									
										6
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					CFLAGS = -I lib/ -O3 -Wall -Werror -Wextra -Wpedantic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					build: src/main.c
 | 
				
			||||||
 | 
						mkdir -p bin/
 | 
				
			||||||
 | 
						gcc $(CFLAGS) -o bin/main \
 | 
				
			||||||
 | 
							src/main.c
 | 
				
			||||||
							
								
								
									
										88
									
								
								src/main.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								src/main.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,88 @@
 | 
				
			|||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct BookNode
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    struct BookNode*  next;
 | 
				
			||||||
 | 
					    char*             name;
 | 
				
			||||||
 | 
					    uint32_t          price;       // in cents
 | 
				
			||||||
 | 
					    uint16_t          page_amount;
 | 
				
			||||||
 | 
					    char              language[2]; // code: EN, UA, FR, GE, etc.
 | 
				
			||||||
 | 
					    uint16_t          weight;      // in grams
 | 
				
			||||||
 | 
					    int               year;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static struct BookNode*
 | 
				
			||||||
 | 
					new_book(char*      name,
 | 
				
			||||||
 | 
					         uint32_t   price,
 | 
				
			||||||
 | 
					         uint16_t   page_amount,
 | 
				
			||||||
 | 
					         char       language[2],
 | 
				
			||||||
 | 
					         uint16_t   weight,
 | 
				
			||||||
 | 
					         int        year)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    struct BookNode* book = malloc(sizeof(struct BookNode));
 | 
				
			||||||
 | 
					    book->name = name;
 | 
				
			||||||
 | 
					    book->price = price;
 | 
				
			||||||
 | 
					    book->page_amount = page_amount;
 | 
				
			||||||
 | 
					    book->language[0] = language[0];
 | 
				
			||||||
 | 
					    book->language[1] = language[1];
 | 
				
			||||||
 | 
					    book->weight = weight;
 | 
				
			||||||
 | 
					    book->year = year;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return book;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					print_book(struct BookNode*  book)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    printf("Book title: %s\n", book->name);
 | 
				
			||||||
 | 
					    printf("- $%.2lf\n", (double) book->price / 100.0 );
 | 
				
			||||||
 | 
					    printf("- %d pages\n", book->page_amount);
 | 
				
			||||||
 | 
					    printf("- %c%c\n", book->language[0], book->language[1]);
 | 
				
			||||||
 | 
					    printf("- %d g\n", book->weight);
 | 
				
			||||||
 | 
					    printf("- Year: %d\n", book->year);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					add_book_to_list(struct BookNode*  head,
 | 
				
			||||||
 | 
					                 struct BookNode*  book)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    struct BookNode* current_object = head;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (NULL != current_object->next)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        current_object = current_object->next;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    current_object->next = book;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					print_list(struct BookNode*  head)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    struct BookNode* current_object = head;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (NULL != current_object)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        print_book(current_object);
 | 
				
			||||||
 | 
					        puts("");
 | 
				
			||||||
 | 
					        current_object = current_object->next;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int
 | 
				
			||||||
 | 
					main(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    struct BookNode* head = new_book("Harry Potter and the Sorcerer's Stone", 962, 360, "EN", 518, 1997);
 | 
				
			||||||
 | 
					    add_book_to_list(head, new_book("Harry Potter and the Chamber of Secrets", 821, 352, "EN", 310, 1998));
 | 
				
			||||||
 | 
					    add_book_to_list(head, new_book("Harry Potter and the Prisoner of Azkaban", 1030, 384, "EN", 370, 1999));
 | 
				
			||||||
 | 
					    add_book_to_list(head, new_book("Harry Potter and the Goblet of Fire", 1100, 464, "EN", 434, 2000));
 | 
				
			||||||
 | 
					    add_book_to_list(head, new_book("Harry Potter and the Order of the Phoenix", 1044, 816, "EN", 670, 2003));
 | 
				
			||||||
 | 
					    add_book_to_list(head, new_book("Harry Potter and the Half-Blood Prince", 973, 576, "EN", 400, 2005));
 | 
				
			||||||
 | 
					    add_book_to_list(head, new_book("Harry Potter and the Deathly Hallows", 1253, 640, "EN", 500, 2007));
 | 
				
			||||||
 | 
					    add_book_to_list(head, new_book("Harry Potter and the Cursed Child", 1000, 352, "EN", 315, 2016));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    print_list(head);
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user