Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <Windows.h>
- #include <iostream>
- using namespace std;
- int strlen1(char *s) {
- int n = 0;
- while (s[n] != '\0')
- n++;
- return n;
- }
- int strlen2(char *s) {
- int n;
- for (n = 0; *s; ++s)
- n++;
- return n;
- }
- int strlen3(char *s) {
- int n = 0;
- for (int i = 0;; i++) {
- if (s[i] != '\0')
- n++;
- else break;
- }
- return n;
- }
- int strlen4(char *s) {
- int n = 0;
- char *s1 = s;
- begin:
- if (*s1) {
- n++;
- *s1++;
- goto begin;
- }
- return n;
- }
- char* strcpy1(char *dest, char *s, int p, int k) {
- int N = strlen1(s);
- if (k < 1 || p > N)
- return dest;
- if (p + k > N)
- k = N - p;
- for (int i = 0; i < k; i++, p++) {
- dest[i] = s[p];
- }
- return dest;
- }
- char* strcpy2(char *dest, char *s, int p, int k) {
- int N = strlen1(s);
- if (k < 1 || p > N)
- return dest;
- if (p + k > N)
- k = N - p;
- int i = 0;
- p++;
- while (k != 0 && dest != '\0') {
- *(dest + i) = *(s + p - 1);
- i++;
- p++;
- k--;
- }
- return dest;
- }
- char* strcpy3(char *dest, char *s, int p, int k) {
- int N = strlen1(s);
- if (k < 1 || p > N)
- return dest;
- if (p + k > N)
- k = N - p;
- int j = 0;
- while (p <= N && k != 0) {
- dest[j] = s[p];
- p++;
- k--;
- j++;
- }
- return dest;
- }
- char* strcpy4(char *dest, char *s, int p, int k) {
- int N = strlen1(s);
- if (k < 1 || p > N)
- return dest;
- if (p + k > N)
- k = N - p;
- for (int i = 0; s[i] != 0; i++) {
- if (i < k) {
- dest[i] = s[p];
- p++;
- }
- }
- return dest;
- }
- int strcmp1(char *s1, char *s2) {
- for (int i = 0; i < strlen1(s1); i++) {
- if (s1[i] < s2[i])
- return -1;
- if (s1[i] > s2[i])
- return 1;
- }
- if (strlen1(s2) > strlen1(s1)) {
- return -1;
- }
- else {
- return 0;
- }
- }
- int strcmp2(char *s1, char *s2) {
- int i = 0;
- while (s1[i] || s2[i]) {
- if (s1[i] < s2[i])
- return -1;
- if (s1[i] > s2[i])
- return 1;
- i++;
- }
- return 0;
- }
- int strcmp3(char *s1, char *s2) {
- while (*s1 && *s2) {
- if (*s1 < *s2)
- return -1;
- if (*s1 > *s2)
- return 1;
- *s1++; *s2++;
- }
- if (strlen1(s2) == strlen1(s1)) {
- return 0;
- }
- else {
- if (strlen1(s2) > strlen1(s1)) {
- return -1;
- }
- else
- return 1;
- }
- }
- int strcmp4(char *s1, char *s2) {
- int N = strlen1(s1);
- int i = 0;
- begin:
- if (i < N) {
- if (s1[i] < s2[i])
- return -1;
- if (s1[i] > s2[i])
- return 1;
- i++;
- goto begin;
- }
- return s2[i] ? -1 : 0;
- }
- char* strcat1(char *dest, char *s) {
- char *n = dest;
- while (*dest)
- dest++;
- while (*dest++ = *s++)
- ;
- *dest = '\0';
- return n;
- }
- char *strcat2(char *dest, char *s) {
- int i = 0;
- while (dest[i])
- i++;
- for (int j = 0; j < strlen1(s); j++) {
- dest[i] = s[j];
- i++;
- }
- dest[i] = '\0';
- return dest;
- }
- char *strcat3(char *dest, char *s) {
- int i = strlen1(dest), j = 0;
- begin:
- if (j < strlen1(s)) {
- dest[i] = s[j];
- i++;
- j++;
- goto begin;
- }
- dest[i] = '\0';
- return dest;
- }
- char *strcat4(char *dest, char *s) {
- int i, j;
- int N = 0;
- for (i = 0; dest[i]; i++)
- N++;
- for (i = 0; s[i]; i++)
- N++;
- char* n = new char[N + 1];
- for (i = 0, j = 0; dest[i]; i++, j++)
- n[j] = dest[i];
- for (i = 0; s[i]; i++, j++)
- n[j] = s[i];
- n[j] = '\0';
- return n;
- }
- char* strins1(char *sub, char *s, int p) {
- int N = strlen1(sub) + strlen1(s);
- if (p > strlen1(s))
- p = strlen1(s);
- if (p < 0)
- p = 0;
- char* n = new char[N + 1];
- int i;
- for(i = 0; i <= p - 1; i++)
- n[i] = s[i];
- for (int j = 0; j < strlen1(sub); j++, i++)
- n[i] = sub[j];
- for (int k = p; k < strlen1(s); k++, i++)
- n[i] = s[k];
- n[i] = '\0';
- return n;
- }
- char* strins2(char *sub, char *s, int p) {
- int N = strlen1(sub) + strlen1(s);
- if (p > strlen1(s))
- p = strlen1(s);
- if (p < 0)
- p = 0;
- char* n = new char[N + 1];
- int j = 0;
- while (s[j] != 0) {
- n[j] = s[j];
- j++;
- }
- n[j] = '\0';
- int i = p, k = 0;
- begin1:
- int m = strlen1(n);
- begin2:
- n[m + 1] = n[m];
- m--;
- if (m >= i)
- goto begin2;
- n[i] = sub[k];
- i++, k++;
- if (i < strlen1(sub) + p)
- goto begin1;
- return n;
- }
- char* strins3(char *sub, char *s, int p) {
- int N = strlen1(sub) + strlen1(s);
- if (p > strlen1(s))
- p = strlen1(s);
- if (p < 0)
- p = 0;
- char* n = new char[N + 1];
- int i = 0, k = 0, t = p;
- while (i <= p - 1) {
- n[i] = s[i];
- i++;
- }
- while (k < strlen1(sub)) {
- n[i] = sub[k];
- k++; i++;
- }
- while(t < strlen1(s)) {
- n[i] = s[t];
- t++; i++;
- }
- n[i] = '\0';
- return n;
- }
- char* strins4(char *sub, char *s, int p) {
- int N = strlen1(sub) + strlen1(s);
- if (p > strlen1(s))
- p = strlen1(s);
- if (p < 0)
- p = 0;
- char* n = new char[N + 1];
- int j = 0;
- while (s[j] != 0) {
- n[j] = s[j];
- j++;
- }
- n[j] = '\0';
- for (int i = p, k = 0; i < strlen1(sub) + p; i++, k++) {
- for (int m = strlen1(n); m >= i; m--)
- *(n + m + 1) = *(n + m);
- *(n + i) = *(sub + k);
- }
- return n;
- }
- char* strdel1(char *s, int p, int k) {
- if (p + k > strlen1(s))
- k = strlen1(s) - p;
- int i, j;
- for (i = p; i < p + k; i++)
- s[i] = s[i + k];
- for (j = i; j <= strlen1(s) - k; j++)
- s[j] = s[j + k];
- return s;
- }
- char* strdel2(char *s, int p, int k) {
- if (p + k > strlen1(s))
- k = strlen1(s) - p;
- int i = p;
- while (i <= strlen1(s) - k) {
- s[i] = s[i + k];
- i++;
- }
- return s;
- }
- char* strdel3(char *s, int p, int k) {
- if (p + k > strlen1(s))
- k = strlen1(s) - p;
- for (int i = p; i <= strlen1(s) - k; i++) {
- *(s + i) = *(s + i + k);
- }
- return s;
- }
- char* strdel4(char *s, int p, int k) {
- if (p + k > strlen1(s))
- k = strlen1(s) - p;
- begin:
- if (p <= strlen1(s) - k) {
- s[p] = s[p + k];
- p++;
- goto begin;
- }
- return s;
- }
- void teststrlen(char*s) {
- printf("strlen1('%s')= %d\n", s, strlen1(s));
- printf("strlen2('%s')= %d\n", s, strlen2(s));
- printf("strlen3('%s')= %d\n", s, strlen3(s));
- printf("strlen4('%s')= %d\n", s, strlen4(s));
- printf("\n");
- }
- void teststrcpy(char *dest, char *s, int p, int k) {
- printf("strcpy1('%s','%s', %d, %d)= ", dest, s, p, k);
- printf("'%s'\n", strcpy1(dest, s, p, k));
- for (int i = strlen1(dest) - 1; i >= 0; i--)
- dest[i] = 0;
- printf("strcpy2('%s','%s', %d, %d)= ", dest, s, p, k);
- printf("'%s'\n", strcpy2(dest, s, p, k));
- for (int i = strlen1(dest) - 1; i >= 0; i--)
- dest[i] = 0;
- printf("strcpy3('%s','%s', %d, %d)= ", dest, s, p, k);
- printf("'%s'\n", strcpy3(dest, s, p, k));
- for (int i = strlen1(dest) - 1; i >= 0; i--)
- dest[i] = 0;
- printf("strcpy4('%s','%s', %d, %d)= ", dest, s, p, k);
- printf("'%s'\n", strcpy4(dest, s, p, k));
- printf("\n");
- }
- void teststrcmp(char *s1, char *s2) {
- printf("strcmp1('%s','%s')= %d\n", s1, s2, strcmp1(s1, s2));
- printf("strcmp2('%s','%s')= %d\n", s1, s2, strcmp2(s1, s2));
- printf("strcmp3('%s','%s')= %d\n", s1, s2, strcmp3(s1, s2));
- printf("strcmp4('%s','%s')= %d\n", s1, s2, strcmp4(s1, s2));
- printf("\n");
- }
- void teststrcat(char *dest, char *s) {
- int n = strlen1(dest);
- printf("strcat1('%s','%s')= ", dest, s);
- printf("'%s'\n", strcat1(dest, s));
- for (int i = n + strlen1(s); i >= n; i--)
- dest[i] = 0;
- printf("strcat2('%s','%s')= ", dest, s);
- printf("'%s'\n", strcat2(dest, s));
- for (int i = n + strlen1(s); i >= n; i--)
- dest[i] = 0;
- printf("strcat3('%s','%s')= ", dest, s);
- printf("'%s'\n", strcat3(dest, s));
- for (int i = n + strlen1(s); i >= n; i--)
- dest[i] = 0;
- printf("strcat4('%s','%s')= ", dest, s);
- printf("'%s'\n", strcat4(dest, s));
- for (int i = n + strlen1(s); i >= n; i--)
- dest[i] = 0;
- printf("\n");
- }
- void teststrins(char *sub, char *s, int p) {
- printf("strins1('%s','%s', %d)= ", sub, s, p);
- printf("'%s'\n", strins1(sub, s, p));
- printf("strins2('%s','%s', %d)= ", sub, s, p);
- printf("'%s'\n", strins2(sub, s, p));
- printf("strins3('%s','%s', %d)= ", sub, s, p);
- printf("'%s'\n", strins3(sub, s, p));
- printf("strins4('%s','%s', %d)= ", sub, s, p);
- printf("'%s'\n", strins4(sub, s, p));
- printf("\n");
- }
- void teststrdel(char *s, int p, int k) {
- char s1[100]{ 0 }; int i = 0;
- while (s[i]) {
- s1[i] = s[i];
- i++;
- }
- i = 0;
- printf("strdel1('%s', %d, %d)= ", s1, p, k);
- printf("'%s'\n", strdel1(s1, p, k));
- while (s[i]) {
- s1[i] = s[i];
- i++;
- }
- i = 0;
- printf("strdel2('%s', %d, %d)= ", s1, p, k);
- printf("'%s'\n", strdel2(s1, p, k));
- while (s[i]) {
- s1[i] = s[i];
- i++;
- }
- i = 0;
- printf("strdel3('%s', %d, %d)= ", s1, p, k);
- printf("'%s'\n", strdel3(s1, p, k));
- while (s[i]) {
- s1[i] = s[i];
- i++;
- }
- printf("strdel4('%s', %d, %d)= ", s1, p, k);
- printf("'%s'\n", strdel4(s1, p, k));
- printf("\n");
- }
- int main()
- {
- setlocale(LC_ALL, "");
- int answer;
- begin:
- system("cls");
- printf("Выберите функцию:\n1.strlen\n2.strcpy\n3.strcmp\n4.strcat\n5.strins\n6.strdel\n");
- scanf_s("%d", &answer);
- switch (answer) {
- case 1: {
- system("cls");
- printf("Тесты для функции strlen:\n");
- char s1[] = "hello";
- teststrlen(s1);
- char s2[] = "456";
- teststrlen(s2);
- char s3[] = "";
- teststrlen(s3);
- char s4[] = "World123";
- teststrlen(s4);
- system("pause");
- goto begin;
- }
- case 2: {
- system("cls");
- printf("Тесты для функции strcpy:\n");
- int p, k;
- char s1[] = "Hello";
- char dest1[50] = "";
- p = 1;
- k = 3;
- teststrcpy(dest1, s1, p, k);
- char s2[] = "123456";
- char dest2[50] = "";
- p = 3;
- k = 1;
- teststrcpy(dest2, s2, p, k);
- char s3[] = "rabbit";
- char dest3[50] = "";
- p = 10;
- k = 4;
- teststrcpy(dest3, s3, p, k);
- char s4[] = "x123cut97";
- char dest4[50] = "";
- p = 2;
- k = 5;
- teststrcpy(dest4, s4, p, k);
- system("pause");
- goto begin;
- }
- case 3: {
- system("cls");
- printf("Тесты для функции strcmp:\n");
- char s1[] = "Abc", s2[] = "Abc";
- teststrcmp(s1, s2);
- char s3[] = "help", s4[] = "help1";
- teststrcmp(s3, s4);
- char s5[] = "mother", s6[] = "mothEr";
- teststrcmp(s5, s6);
- char s7[] = "01234", s8[] = "01334";
- teststrcmp(s7, s8);
- system("pause");
- goto begin;
- }
- case 4: {
- system("cls");
- printf("Тесты для функции strcat:\n");
- char dest1[50] = "Hello ";
- char s1[] = "world";
- teststrcat(dest1, s1);
- char dest2[50] = "123";
- char s2[] = "456";
- teststrcat(dest2, s2);
- char dest3[50] = "Str";
- char s3[] = "cat";
- teststrcat(dest3, s3);
- char dest4[50] = "100 - 23 = ";
- char s4[] = "77";
- teststrcat(dest4, s4);
- system("pause");
- goto begin;
- }
- case 5: {
- system("cls");
- printf("Тесты для функции strins:\n");
- int p;
- char s1[] = "012345-6";
- char sub[] = "abc";
- p = 6;
- teststrins(sub, s1, p);
- char s2[] = "0123456";
- p = 0;
- teststrins(sub, s2, p);
- char s3[] = "0123456";
- p = 4;
- teststrins(sub, s3, p);
- char s4[] = "0123456";
- p = 12;
- teststrins(sub, s4, p);
- system("pause");
- goto begin;
- }
- case 6: {
- system("cls");
- printf("Тесты для функции strdel:\n");
- int p, k;
- char s1[] = "0123456";
- p = 1;
- k = 2;
- teststrdel(s1, p, k);
- char s2[] = "Машина";
- p = 0;
- k = 2;
- teststrdel(s2, p, k);
- char s3[] = "str-1234del";
- p = 3;
- k = 5;
- teststrdel(s3, p, k);
- char s4[] = "workout478";
- p = 4;
- k = 15;
- teststrdel(s4, p, k);
- system("pause");
- goto begin;
- }
- }
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement