С++
Реалізувати власні функції для роботи з рядками не використовуючи
стандартні бібліотеки
7. int StringToNumber (char * str); - функція конвертує рядок в число і повертає
це число.
8. char* NumberToString (int number); - функція конвертує число в рядок і
повертає покажчик на цей рядок.
9. char * Uppercase (char * str1); - функція перетворює рядок у верхній регістр.
10.char * Lowercase (char * str1); - функція перетворює рядок у нижній регістр.
11.char * mystrrev (char * str); - функція реверсує рядок і повертає покажчик на
новий рядок.
Ответы
Ответ:
=-| c++ |-=
#include <iostream>
using namespace std;
// Функція конвертує рядок в число і повертає це число.
int StringToNumber(char* str) {
int num = 0, sign = 1;
// Ігнорувати пробіли.
while (*str == ' ') {
str++;
}
// Визначити знак числа.
if (*str == '-') {
sign = -1;
str++;
} else if (*str == '+') {
str++;
}
// Конвертувати рядок в число.
while (*str >= '0' && *str <= '9') {
num = num * 10 + (*str - '0');
str++;
}
return num * sign;
}
// Функція конвертує число в рядок і повертає покажчик на цей рядок.
char* NumberToString(int number) {
char* str = new char[20];
int i = 0, j = 0;
// Визначити знак числа.
if (number < 0) {
str[j++] = '-';
number = -number;
}
// Конвертувати число в рядок у зворотному порядку.
do {
str[i++] = (number % 10) + '0';
number /= 10;
} while (number);
// Реверсувати рядок.
str[i] = '\0';
j = i - 1;
i = 0;
while (i < j) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
i++;
j--;
}
return str;
}
// Функція перетворює рядок у верхній регістр.
char* Uppercase(char* str) {
int i = 0;
// Перетворити кожен символ у верхній регістр.
while (str[i]) {
if (str[i] >= 'a' && str[i] <= 'z') {
str[i] = str[i] - 'a' + 'A';
}
i++;
}
return str;
}
// Функція перетворює рядок у нижній регістр.
char* Lowercase(char* str) {
int i = 0;
// Перетворити кожен символ у нижній регістр.
while (str[i]) {
if (str[i] >= 'A' && str[i] <= 'Z') {
str[i] = str[i] - 'A' + 'a';
}
i++;
}
return str;
}
// Функція реверсує рядок і повертає покажчик на новий рядок.
char* mystrrev(char* str) {
int i = 0, j = 0;
// Знайти кінець рядка.
while (str[j]) {
j++;
}
// Реверсувати рядок.
j--;
while (i < j) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
i++;
j--;
}
return str;
}
int main() {
char str1[20] = "12345";
char str2[20] = "-67890";
char str3[20] = "Hello World!";
int num1 = StringToNumber(str1);
int num2 = StringToNumber(str2);
cout << "num1 = " << num1 << endl;
cout << "num2 = " << num2 << endl;
char* str4 = NumberToString(num1);
char* str5 = NumberToString(num2);
cout << "str4 = " << str4 << endl;
cout << "str5 = " << str5 << endl;
char* str6 = Uppercase(str3);
cout << "str6 Uppercase = " << str6 << endl;
char* str7 = Lowercase(str3);
cout << "str7 Lowercase = " << str7 << endl;
char* str8 = mystrrev(str3);
cout << "str8 mystrrev = " << str8 << endl;
return 0;
}
=-| END |-=
Объяснение: