Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
0a5b651
Task1: Copy .clang-format file
kulchroman Dec 26, 2022
08f8c9c
Task1: Copy .gitignore file
kulchroman Dec 26, 2022
708a0ea
Task1: Add game code
kulchroman Dec 26, 2022
bf83ddf
Task1: Move all file to task1 subdirectory
kulchroman Dec 27, 2022
dcbe180
Task1: Remove implicit initiaalization for the static variable to 0
kulchroman Dec 27, 2022
268cb57
Task1: Add blank line after variables declarations
kulchroman Dec 27, 2022
4a6d235
Task1: Fix formatting
kulchroman Dec 27, 2022
3166c5d
Task1: Add blank line (code convention)
kulchroman Dec 27, 2022
d2a1dd2
Task1: Change function declaration main()->main(void)
kulchroman Dec 27, 2022
79bb217
Task1: Remove useless else after return
kulchroman Dec 27, 2022
9d2b847
Task1: Add blank line after variable declaration (code convention)
kulchroman Dec 27, 2022
f7b53c2
Task1: Add license to the header of the file
kulchroman Dec 27, 2022
ac169b9
Task2: Add script to copy gzip to release directory
kulchroman Dec 27, 2022
4582993
Task2: Add script to run progrum from task1 in the loop
kulchroman Dec 28, 2022
76007e4
Task3: Add file with settings
kulchroman Dec 30, 2022
4beddd9
Task3: Add files with utility functions
kulchroman Dec 30, 2022
030221d
Task3: Fixup CMake file
kulchroman Dec 30, 2022
9fcf19b
Task3: Add basic Makefile to build source code from task2
kulchroman Jan 14, 2023
358c1f4
Task3: Add target to build utility.c as a static library
kulchroman Jan 14, 2023
bc57cf8
Task3: Add debug flags
kulchroman Jan 14, 2023
5b10282
Task3: Clean .a files
kulchroman Jan 14, 2023
acd7eb4
Task3: Add posibility to build utility as shared library
kulchroman Jan 14, 2023
3f7abe3
Merge branch 'Roman.Kulchytskyi' into task3
kulchroman Jan 14, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion task1/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)

project(GuessANumber LANGUAGES C)

add_executable(GuessANumber main.c)
add_executable(GuessANumber main.c utility.h utility.c settings.h)

install(TARGETS GuessANumber
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
41 changes: 2 additions & 39 deletions task1/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,46 +10,9 @@
*/

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

static const int LOW; // default to 0
static const int HIGH = 9;

// generates random number in range [low, high]
int getRandomNumber(int low, int high)
{
int result = 0, low_num = 0, hi_num = 0;

if (low < high) {
low_num = low;
hi_num = high + 1; // include max_num in output
} else {
low_num = high + 1; // include max_num in output
hi_num = low;
}

srand(time(NULL));
result = (rand() % (hi_num - low_num)) + low_num;
return result;
}

// get user number in range [low, high]
int getUserNumber(int low, int high)
{
int userNumber = -1;

do {
scanf("%d", &userNumber);
if (userNumber < low || userNumber > high) {
printf("Number should be in range [%d, %d]\n", LOW,
HIGH);
userNumber = -1;
}
} while (userNumber == -1);

return userNumber;
}
#include "utility.h"
#include "settings.h"

int main(void)
{
Expand Down
7 changes: 7 additions & 0 deletions task1/settings.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#pragma once

// lower number to guess
static const int LOW; // default to 0

// higher number to guess
static const int HIGH = 9;
40 changes: 40 additions & 0 deletions task1/utility.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#include "utility.h"

#include "settings.h"

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int getRandomNumber(int low, int high)
{
int result = 0, low_num = 0, hi_num = 0;

if (low < high) {
low_num = low;
hi_num = high + 1; // include max_num in output
} else {
low_num = high + 1; // include max_num in output
hi_num = low;
}

srand(time(NULL));
result = (rand() % (hi_num - low_num)) + low_num;
return result;
}

int getUserNumber(int low, int high)
{
int userNumber = -1;

do {
scanf("%d", &userNumber);
if (userNumber < low || userNumber > high) {
printf("Number should be in range [%d, %d]\n", LOW,
HIGH);
userNumber = -1;
}
} while (userNumber == -1);

return userNumber;
}
7 changes: 7 additions & 0 deletions task1/utility.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#pragma once

// generates random number in range [low, high]
int getRandomNumber(int low, int high);

// get user number in range [low, high]
int getUserNumber(int low, int high);
8 changes: 8 additions & 0 deletions task3/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
cmake_minimum_required(VERSION 3.16)

project(GuessANumber LANGUAGES C)

add_executable(GuessANumber main.c utility.h utility.c settings.h)

install(TARGETS GuessANumber
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
36 changes: 36 additions & 0 deletions task3/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
OBJ=GuessANumber

all: ${OBJ}

all_static_lib: main.o static_libs
${CC} -lm -o ${OBJ} main.o -L. -lutility

all_shared_lib: main.o shared_libs
$(CC) -o ${OBJ} main.o -Wl,-rpath=. -L. -lutility

libutility.a: utility.o
ar rcs libutility.a utility.o

libutility.so: utility.o
$(CC) -shared -fPIC utility.o

static_libs: libutility.a

shared_libs: libutility.so

${OBJ}: main.o utility.o
${CC} main.o utility.o -o ${OBJ}

utility.o: utility.c
${CC} ${CFLAGS} ${DEBUGFLAGS} -c utility.c

main.o: main.c
${CC} ${CFLAGS} ${DEBUGFLAGS} -c main.c

exec:
./GuessANumber

clean:
rm -rf ./GuessANumber
rm -rf *.o
rm -rf *.a
30 changes: 30 additions & 0 deletions task3/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// SPDX-License-Identifier: GPL-2.0
/*
* (C) Copyright 2022
* Author: Roman Kulchytskyi <kulch.roman@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; version 2
* of the License.
*/

#include <stdio.h>

#include "utility.h"
#include "settings.h"

int main(void)
{
printf("Enter number (%d - %d):\n", LOW, HIGH);
const int userNumber = getUserNumber(LOW, HIGH);
const int randomNumber = getRandomNumber(LOW, HIGH);

if (userNumber == randomNumber) {
printf("You guess the number %d!\n", userNumber);
return 0;
}

printf("You lose. Number was %d!\n", randomNumber);
return -1;
}
7 changes: 7 additions & 0 deletions task3/settings.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#pragma once

// lower number to guess
static const int LOW; // default to 0

// higher number to guess
static const int HIGH = 9;
40 changes: 40 additions & 0 deletions task3/utility.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#include "utility.h"

#include "settings.h"

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int getRandomNumber(int low, int high)
{
int result = 0, low_num = 0, hi_num = 0;

if (low < high) {
low_num = low;
hi_num = high + 1; // include max_num in output
} else {
low_num = high + 1; // include max_num in output
hi_num = low;
}

srand(time(NULL));
result = (rand() % (hi_num - low_num)) + low_num;
return result;
}

int getUserNumber(int low, int high)
{
int userNumber = -1;

do {
scanf("%d", &userNumber);
if (userNumber < low || userNumber > high) {
printf("Number should be in range [%d, %d]\n", LOW,
HIGH);
userNumber = -1;
}
} while (userNumber == -1);

return userNumber;
}
7 changes: 7 additions & 0 deletions task3/utility.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#pragma once

// generates random number in range [low, high]
int getRandomNumber(int low, int high);

// get user number in range [low, high]
int getUserNumber(int low, int high);