Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
5 changes: 5 additions & 0 deletions include/task1.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#define M 28
#define N 28
void drawFractal(char(*arr)[M], int x, int y, int size); //�������, ����������� �����������
//� ������� arr, ����� �������� ������������(x, y)
//� ������� ����������� �������� size
4 changes: 4 additions & 0 deletions include/task2.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#include <stdio.h>
#define SIZE 1000000
unsigned int seqCollatz(unsigned int* maxlen); //�������, ������������ ����� � ������������ �� ������ maxlen �����
unsigned int collatz(unsigned long long num); // �������, ������������ ����� ������������������ �������� ��� ����� num
1 change: 1 addition & 0 deletions include/task3.h
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
char* int2str(char* buf, unsigned int value);
2 changes: 2 additions & 0 deletions include/task4.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
long long sumC(char* arr, int len); //������������ ������� ������
long long sumR(char* arr, int len); //������������ ������� ���������
1 change: 1 addition & 0 deletions include/task5.h
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
unsigned long long fib1(int N);
2 changes: 2 additions & 0 deletions include/task6.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
unsigned long long fib2(int N);
unsigned long long fib1(unsigned long long f1, unsigned long long f2, int N);
4 changes: 4 additions & 0 deletions include/task7.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#define M 29
#define N 9

void place(int x, int y); //����������� � ������ ������� � ������������(x, y)
2 changes: 2 additions & 0 deletions include/task8.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
int eval(char* buf); //�������, ����������� ������, ������������ � buf
char partition(char* buf, char* expr1, char* expr2); //�������, ������� ��������� ������, ������������ � buf �� ��� ����� : ������ � ������ ���������, ���� �������� � ������ �� ������ ���������
28 changes: 28 additions & 0 deletions src/main1.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#include <stdio.h>
#include "task1.h"
#define SIZE 3

int main()
{
char arr[M][N];
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
arr[i][j] = ' ';
}
}

drawFractal(arr, M / 2, N / 2, SIZE);

for (int i = 0; i < M; i++)
{
for (int j = 0; j < M; j++)
{
printf("%2c", arr[i][j]);
}
printf("\n");
}

return 0;
}
9 changes: 9 additions & 0 deletions src/main2.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#include "task2.h"

int main()
{
unsigned int maxlen = 0;
int maxnumber = seqCollatz(&maxlen);
printf("Number is %u, max length is %u\n", maxnumber, maxlen);
return 0;
}
20 changes: 20 additions & 0 deletions src/main3.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#define _CRT_SECURE_NO_WARNINGS
#include "task3.h"
#include <stdio.h>

#define SIZE 256

int main()
{
char buf[SIZE] = { 0 };
unsigned int value = 0;

printf("Enter number\n");
scanf("%u", &value);

printf("%s\n", int2str(buf, value));

return 0;
}


38 changes: 38 additions & 0 deletions src/main4.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#define _CRT_SECURE_NO_WARNINGS
#include "task4.h"
#include <stdio.h>
#include <math.h>
#include<stdlib.h>
#include<time.h>

int main() {

int number = 0;
unsigned long long result = 0;
clock_t start, finish;

printf("Enter number\n");
scanf("%i", &number);

int len = pow(2.0, number);
char* arr = (char*)calloc(len, sizeof(char));

for (int i = 0; i < len; i++)
{
arr[i] = rand() % 100;
}

start = clock();
result = sumC(arr, len);
finish = clock();
printf("Cycle result = %lld, time = %3.2f\n", result, (float)(start - finish) / CLOCKS_PER_SEC);

start = clock();
result = sumR(arr, len);
finish = clock();
printf("Cycle result = %lld, time = %3.2f\n", result, (float)(start - finish) / CLOCKS_PER_SEC);

free(arr);

return 0;
}
21 changes: 21 additions & 0 deletions src/main5.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#define _CRT_SECURE_NO_WARNINGS
#include "task5.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define SIZE 40

int main()
{
FILE* f_out = fopen("FILE.xls", "wt");
for (int i = 1; i < SIZE; i++)
{
clock_t start = clock();
unsigned long long fib = fib1(i);
clock_t finish = clock();
fprintf(f_out, "%llu\t %6.2f\n", fib, (float)(finish - start) / CLOCKS_PER_SEC);
}
fclose(f_out);
return 0;
}
22 changes: 22 additions & 0 deletions src/main6.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#define _CRT_SECURE_NO_WARNINGS
#include "task6.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


#define SIZE 40

int main()
{
FILE* out = fopen("FILE.xls", "wt");
for (int i = 1; i < SIZE; i++)
{
clock_t start = clock();
unsigned long long fib = fib2(i);
clock_t finish = clock();
fprintf(out, "%6.2f - %llu\n", (float)(finish - start) / CLOCKS_PER_SEC, fib);
}
fclose(out);
return 0;
}
35 changes: 35 additions & 0 deletions src/main7.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#include <stdio.h>
#include "task7.h"

#define M 29
#define N 9

char labirinth[N][M] ={ "############################",
"# # # #",
"########## # # #",
"# # ####### ###",
"# ###### # x #",
"# # # ####### ##",
"##### # # # ##",
" # # ######",
"############################" };

int main()
{

int x = 0, y = 0;
for (int i = 0; i < N; i++)// ����� ��������� �����
{
for (int j = 0; j < M; j++)
if (labirinth[i][j] == 'x')
{
x = i;
y = j;
break;
}
if (x != 0)
break;
}
place(x, y);
return 0;
}
8 changes: 8 additions & 0 deletions src/main8.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#include "task8.h"
#include <stdio.h>

int main(int argc, char* argv[])
{
printf("%s = %d\n", argv[1], eval(argv[1]));
return 0;
}
21 changes: 21 additions & 0 deletions src/task1.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#include "task1.h"
#include <stdio.h>
#include <math.h>

void drawFractal(char(*arr)[M], int x, int y, int size)
{
int space = 0;

if (size == 0) {
arr[x][y] = '*';
}
else
{
space = pow(3, size - 1);
drawFractal(arr, x, y, size - 1);
drawFractal(arr, x + space, y, size - 1);
drawFractal(arr, x - space, y, size - 1);
drawFractal(arr, x, y + space, size - 1);
drawFractal(arr, x, y - space, size - 1);
}
}
29 changes: 29 additions & 0 deletions src/task2.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#include "task2.h"

unsigned int collatz(unsigned long long num)
{
if (num == 1)
return 1;
if (num % 2 == 0)
return 1 + collatz(num / 2);
else
return 1 + collatz(3 * num + 1);
}

unsigned int seqCollatz(unsigned int* maxlen)
{
unsigned int len = 0, maxnum = 0;
*maxlen = 0;

for (int i = 2; i <= SIZE; i++)
{
len = collatz(i);
if (len > * maxlen)
{
*maxlen = len;
maxnum = i;
}
}

return maxnum;
}
14 changes: 14 additions & 0 deletions src/task3.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
char* int2str(char* buf, unsigned int value)
{
static int i = 0;
if (value > 10)
{
int2str(buf, value / 10);
}
value %= 10;
buf[i] = value + '0';
buf[i + 1] = '\0';
i++;
return buf;
}

19 changes: 19 additions & 0 deletions src/task4.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#include <stdio.h>

long long sumC(char* arr, int len)
{
long long sum = 0;
for (int i = 0; i < len; i++)
{
sum += + arr[i];
}
return sum;
}

long long sumR(char* arr, int len)
{
if (len == 1)
return arr[len - 1];
else
return sumR(arr, len / 2) + sumR(arr + len / 2, (len - len / 2));
}
9 changes: 9 additions & 0 deletions src/task5.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
unsigned long long fib1(int N)
{
if (N == 1)
return 1;
else if (N == 2)
return 1;
else
return (fib1(N - 2) + fib1(N - 1));
}
15 changes: 15 additions & 0 deletions src/task6.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#include <stdio.h>

unsigned long long fib1(unsigned long long f1, unsigned long long f2, int N)
{
if (N == 1)
return 1;
else if (N == 2)
return f2;
else
return fib1(f2, f2 + f1, N - 1);
}
unsigned long long fib2(int N)
{
return (fib1(1, 1, N));
}
48 changes: 48 additions & 0 deletions src/task7.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#include "task7.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

extern char labirinth[N][M];

void place(int x, int y)
{
labirinth[x][y] = 'x';

if (y == 0)
{
labirinth[x][y] = 'x';
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
printf("%c", labirinth[i][j]);
}
printf("\n");

}
}
else
{
if (labirinth[x + 1][y] == ' ')
{
labirinth[x][y] = 'x';
place(x + 1, y);
}
if (labirinth[x][y - 1] == ' ')
{
labirinth[x][y] = 'x';
place(x, y - 1);
}
if (labirinth[x - 1][y] == ' ')
{
labirinth[x][y] = 'x';
place(x - 1, y);
}
if (labirinth[x][y + 1] == ' ')
{
labirinth[x][y] = 'x';
place(x, y + 1);
}
}
}
Loading