С++
Реалізувати власні функції для роботи з рядками не використовуючи
стандартні бібліотеки
1. int mystrlen (const char * str); - функція визначає довжину рядка.
2. char * mystrcpy (char * str1, const char * str2); - функція копіює рядок str2 в
буфер, що адресується через str1. Функція повертає покажчик на перший
рядок str1.
3. char * mystrcat (char * str1, const char * str2); - функція приєднує рядок str2 до
рядка str1. Функція повертає покажчик на перший рядок str1.
4. char * mystrchr (char * str, char s); - функція здійснює пошук символу s в рядку
str. Функція повертає покажчик на перше входження символу в рядок, в
іншому випадку 0.
5. char * mystrstr (char * str1, char * str2); - функція здійснює пошук підрядка str2
в рядку str1. Функція повертає покажчик на перше входження підрядка str2 в
рядок str1, в іншому випадку 0.
6. int mystrcmp (const char * str1, const char * str2); - функція порівнює два рядки,
і, якщо рядки рівні повертає 0, якщо перший рядок більше другий, то повертає
1, інакше -1.
Ответы
Ответ:
Ось можливий код для виконання цих завдань:
1. int mystrlen(const char *str) {
int length = 0;
while (*str != '\0') {
length++;
str++;
}
return length;
}
2. char *mystrcpy(char *str1, const char *str2) {
char *p = str1;
while (*str2 != '\0') {
*str1 = *str2;
str1++;
str2++;
}
*str1 = '\0';
return p;
}
3. char *mystrcat(char *str1, const char *str2) {
char *p = str1;
while (*str1 != '\0') {
str1++;
}
while (*str2 != '\0') {
*str1 = *str2;
str1++;
str2++;
}
*str1 = '\0';
return p;
}
4. char *mystrchr(char *str, char s) {
while (*str != '\0') {
if (*str == s) {
return str;
}
str++;
}
if (*str == s) {
return str;
}
return 0;
}
5. char *mystrstr(char *str1, char *str2) {
while (*str1 != '\0') {
char *p1 = str1;
char *p2 = str2;
while (*p1 == *p2 && *p2 != '\0') {
p1++;
p2++;
}
if (*p2 == '\0') {
return str1;
}
str1++;
}
return 0;
}
6. int mystrcmp(const char *str1, const char *str2) {
while (*str1 != '\0' || *str2 != '\0') {
if (*str1 > *str2) {
return 1;
} else if (*str1 < *str2) {
return -1;
}
str1++;
str2++;
}
return 0;
}
Ці функції можуть бути використані у вашій програмі таким чином:
```c++
#include <iostream>
using namespace std;
int main() {
char str1[100] = "Hello";
char str2[100] = "World";
cout << "Length of str1: " << mystrlen(str1) << endl;
mystrcpy(str1, str2);
cout << "str1 after copying str2: " << str1 << endl;
mystrcat(str1, "!!");
cout << "str1 after concatenation: " << str1 << endl;
char *p = mystrchr(str1, 'o');
if (p != 0) {
cout << "Found o at position " << p - str1 << endl;
} else {
cout << "o not found" << endl;
}
char *q = mystrstr(str1, "rl");
if (q != 0) {
cout << "Found rl at position " << q - str1 << endl;
} else {
cout << "rl not found" << endl;
}
int result = mystrcmp(str1, "Hello");
if (result == 0) {
cout << "str1 is equal to Hello" << endl;
} else if (result== -1) {
cout << "str1 is less than Hello" << endl;
} else {
cout << "str1 is greater than Hello" << endl;
}
return 0;
}
```
Цей код демонструє використання шести різних функцій для роботи з рядками. Починаючи з функції `mystrlen`, яка обчислює довжину рядка, і закінчуючи функцією `mystrcmp`, яка порівнює два рядки та повертає відповідне значення, ці функції можуть бути корисними для вирішення багатьох завдань, що пов'язані з обробкою рядків у C++.
Объяснение:
можете позначити як краща відповідь, якщо допоміг, буду дуже вдячний