This repository has been archived by the owner on Nov 17, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathlab1.cpp
123 lines (108 loc) · 2.33 KB
/
lab1.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
int Convert(const char s[])
{
if (s[0] == '-')
{
printf("Error, numbers don't natural!\n");
return -1;
}
int i = 0, sum = 0;
while (s[i] != '\0' && s[i] != '\n' && s[i] != ' ')
{
if (s[i] <= '9' && s[i] >= '0')
{
sum = sum * 10 + (s[i] - '0');
i++;
}
else
{
printf("Error, you must enter numbers!\n");
return -1;
}
}
return sum;
}
int power(int x, unsigned int y)
{
int temp;
if (y == 0)
{
return 1;
}
temp = power(x, y / 2);
if ((y % 2) == 0)
{
return temp * temp;
}
else
{
return x * temp * temp;
}
}
int sizeOfNumber(int number)
{
if (number < 10)
{
return 1;
}
else
{
return 1 + sizeOfNumber(number / 10);
}
}
int rankDivision(int* k)
{
int maxRank = *k / power(10, sizeOfNumber(*k) - 1) * power(10, sizeOfNumber(*k) - 1);
*k -= maxRank;
free(k);
return maxRank;
}
int main(int argc, const char* argv[]) {
int k = 0, l = 0, m = 0;
char dividend[10] = "";
char divsor[10] = "";
printf("Enter dividend:\n");
gets_s(dividend, 10);
k = Convert(dividend);
printf("Enter divsor:\n");
gets_s(divsor, 10);
l = Convert(divsor);
// еще проверо4ки
if (l == 0)
{
printf("Error! Cannot be divided by 0\n\n");
return 0;
}
if (k % l != 0)
{
printf("Error! Numbers should be shared\n\n");
return 0;
}
int lenght_k = sizeOfNumber(k);
m = k / l;
// оформление
printf("%d | %d = %d\n", k, l, m);
while (k != 0) {
int temp = rankDivision(&m) * l;
for (int i = 0; i < lenght_k - sizeOfNumber(temp); i++)
{
printf(" ");
}
printf("%d\n", temp);
for (int i = 0; i < lenght_k; i++)
{
printf("_");
}
printf("\n");
k -= temp;
for (int i = 0; i < lenght_k - sizeOfNumber(k); i++)
{
printf(" ");
}
printf("%d\n", k);
}
return 0;
}