• Предмет: Информатика
  • Автор: Kukuwka0Ha0DepeBe
  • Вопрос задан 4 месяца назад

С++
Реалізувати власні функції для роботи з рядками не використовуючи
стандартні бібліотеки
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.

Ответы

Ответ дал: dominostart123
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++.

Объяснение:

можете позначити як краща відповідь, якщо допоміг, буду дуже вдячний


garexo: Нічособ ти геній урока інформатики
dominostart123: я вже в школі не вчуся)
dominostart123: Я там все розписав, сподіваюсь допоміг
Вас заинтересует