Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- #include <locale.h>
- using namespace std;
- char s[] = "012345";
- char dest[] = "OPA NA";
- void strdel1(char *s, int p, int k) {
- int lens = strlen(s);
- if (p > lens)
- return;
- if (p + k > lens) {
- s[p] = '\0'; return;
- }
- if (p < 0) p = 0;
- if (k < 0) k = 0;
- for (int i = p + k; i <= lens; ++i)
- s[i - k] = s[i];
- }
- void strdel2(char *s, int p, int k)
- {
- int lens = strlen(s);
- if (p > lens)
- return;
- if (p + k > lens) {
- s[p] = '\0'; return;
- }
- if (p < 0) p = 0;
- if (k < 0) k = 0;
- s += p;
- for (int i = k; s[i - 1]; ++i)
- s[i - k] = s[i];
- }
- void strdel3(char *s, int p, int k)
- {
- int lens = strlen(s);
- if (p > lens)
- return;
- if (p + k > lens) {
- s[p] = '\0'; return;
- }
- if (p < 0) p = 0;
- if (k < 0) k = 0;
- s += p;
- char *s1 = s + k;
- while (*s++ = *s1++);
- }
- int mystrlen1(char *s)
- {
- int len = 0;
- for (len = 0; s[len]; ++len);
- return len;
- }
- int mystrlen2(char *s)
- {
- return(*s) ? mystrlen2(++s) + 1 : 0;
- }
- int mystrlen3(char *s)
- {
- int len = 0;
- while (s[len]) len++;
- return len;
- }
- char* mystrcpy1(char *dest, char *s, int p, int k) {
- int lens = strlen(s);
- if (p > lens)
- return dest;
- if (p + k > lens) {
- k = lens - p;
- }
- if (p < 0) p = 0;
- if (k < 0) k = 0;
- int tmp = strlen(dest);
- char *tmp2 = new char[255];
- for (int i = 0; i < tmp+k; ++i)
- if (i<tmp)
- tmp2[i] = dest[i];
- else {
- tmp2[i] = s[p];
- ++p;
- }
- for (int i = 0; i <= tmp + k; ++i)
- if (i < tmp + k)
- dest[i] = tmp2[i];
- else
- dest[tmp+k] = 0;
- delete[] tmp2;
- return dest;
- }
- char* mystrcpy2(char *dest, char *s, int p, int k) {
- int lens = strlen(s);
- if (p > lens)
- return dest;
- if (p + k > lens) {
- k = lens - p;
- }
- if (p < 0) p = 0;
- if (k < 0) k = 0;
- int tmp = strlen(dest);
- for (int i = p; i < p + k; ++i, tmp++)
- dest[tmp] = s[i];
- dest[tmp] = 0;
- }
- char* mystrcpy3(char *dest, char *s, int p, int k) {
- int lens = strlen(s);
- if (p > lens)
- return dest;
- if (p + k > lens) {
- k = lens - p;
- }
- if (p < 0) p = 0;
- if (k < 0) k = 0;
- }
- void testdel()
- {
- char t[100];
- int p[] = { 3, 0, 3, 30, 3, 3, 1 };
- int k[] = { 2, 3, 3, 1, 10, 0, 1 };
- for (int i = 0; i < 7; i++) {
- strcpy_s(t, s);
- printf("Исходная строка: %s\n", t);
- strdel1(t, p[i], k[i]);
- printf("Полученная строка при p=%i, k=%i del1: %s\n", p[i], k[i], t);
- strcpy_s(t, s);
- strdel2(t, p[i], k[i]);
- printf("Полученная строка при p=%i, k=%i del2: %s\n", p[i], k[i], t);
- strcpy_s(t, s);
- strdel3(t, p[i], k[i]);
- printf("Полученная строка при p=%i, k=%i del3: %s\n", p[i], k[i], t);
- }
- }
- void testlen()
- {
- char t[] = "";
- printf("Тест обычной строки len 1. Кол-во символов: %i\n", mystrlen1(s));
- printf("Тест пустой строки len 1. Кол-во символов: %i\n", mystrlen1(t));
- printf("Тест обычной строки len 2. Кол-во символов: %i\n", mystrlen2(s));
- printf("Тест пустой строки len 2. Кол-во символов: %i\n", mystrlen2(t));
- printf("Тест обычной строки len 3. Кол-во символов: %i\n", mystrlen3(s));
- printf("Тест пустой строки len 3. Кол-во символов: %i\n", mystrlen3(t));
- }
- void testcpy() {
- int p[] = { 3, 0, 3, 30, 3, 3, 1 };
- int k[] = { 2, 3, 3, 1, 10, 0, 1 };
- char t[255]=" ";
- strcpy_s(t, dest);
- printf("Начальная строка dest: %s ; начальная строка s: %s \n", t, s);
- for (int i = 0; i < 7; i++) {
- strcpy_s(t, dest);
- mystrcpy2(t, s, p[i], k[i]);
- printf("Итоговая строка dest при k = %i; p = %i : %s;\n", k[i], p[i], t);
- }
- }
- void funcchs()
- {
- int tmp, chs;
- do {
- printf("Выберите функцию: \n1 - strdel; \n2 - strlen; \n3 - strcpy.\n");
- printf("Нажмите любую клавишу, чтобы выйти из программы.\n");
- cin >> tmp;
- chs = (int)tmp;
- switch (chs) {
- case 1:
- testdel(); break;
- case 2:
- testlen(); break;
- case 3:
- testcpy(); break;
- default:
- chs = 0;
- break;
- }
- } while (chs != 0);
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- char s[] = "012345";
- funcchs();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement