Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <string>
- using namespace std;
- int str_len(char *s){
- int k = 0;
- while (s[k++]);
- return --k;
- }
- int atoi(char *s) { // задание 1
- int mn = 1;
- int ans = 0;
- for (int i = str_len(s) - 1; i >= 0; i--) {
- if (s[i] >= '0' && s[i] <= '9') {
- ans += (s[i] - '0') * mn;
- mn *= 10;
- }
- else return -1;
- }
- return ans;
- }
- void init(char *&s) { // воодит строку до нажатия Enter
- rewind(stdin);
- s = (char*)malloc(sizeof(char));
- s[0] = getchar();
- int i = 0;
- while (s[i] != '\n') {
- i++;
- s = (char*)realloc(s, (i + 1) * sizeof(char));
- s[i] = getchar();
- }
- s[i] = '\0';
- }
- void push_d(char *s, int l, int r) {
- for (int i = l; i < str_len(s) - (r - l) - 2; i++) {
- s[i] = s[i + (r - l) + 2];
- }
- s[str_len(s) - (r - l) - 2] = '\0';
- }
- void deleteword(char *s, int number) { // задание 2
- int n = 0;
- int i = 0;
- int l;
- int r;
- while (s[i]) {
- while (s[i] == ' ') i++;
- l = i;
- while (s[i] && s[i] != ' ')i++;
- r = i - 1;
- n++;
- if (n == number) {
- push_d(s, l, r);
- break;
- }
- }
- }
- void deletesymbol(char *s, char c) { // задание 3
- for (int i = 0; i < str_len(s); i++) {
- if (s[i] == c) {
- for (int j = i; j < str_len(s) - 1; j++) {
- s[j] = s[j + 1];
- }
- s[str_len(s) - 1] = '\0';
- i--;
- }
- }
- }
- void reverser(char *s, int l, int r) {
- int j = 0;
- for ( int i = l; i <= (l + r) / 2; i++) {
- swap(s[i], s[r - j]);
- j++;
- }
- }
- void swapper(char *s, int n1, int n2) { // задаиние 4
- if (n2 < n1) {
- swap(n1, n2);
- }
- int n = 0;
- int i = 0;
- int l,l1,l2;
- int r,r1,r2;
- while (s[i]) {
- while (s[i] == ' ') i++;
- l = i;
- while (s[i] && s[i] != ' ')i++;
- r = i - 1;
- n++;
- if (n == n1) {
- r1 = r;
- l1 = l;
- }
- if (n == n2) {
- r2 = r;
- l2 = l;
- }
- }
- reverser(s, l1, r2);
- r1 = l1;
- while (s[r1] && s[r1] != ' ') r1++;
- r1--;
- reverser(s, l1, r1);
- l2 = r2;
- while (s[l2] && s[l2] != ' ') l2--;
- l2++;
- reverser(s, l2, r2);
- reverser(s, r1 + 1, l2 - 1);
- }
- void inputer(char *s, char *inp, int number) { // задание 5
- int n = 0;
- int i = 0;
- int l;
- int r;
- while (s[i]) {
- while (s[i] == ' ') i++;
- l = i;
- while (s[i] && s[i] != ' ')i++;
- r = i - 1;
- n++;
- if (n == number) {
- s = (char *)realloc(s,(str_len(s) + str_len(inp) + 1) * sizeof(char));
- s[str_len(s) + str_len(inp) + 1] = '\0';
- s[str_len(s)] = '%';
- for (int i = str_len(s)-1; i > r; i--) {
- s[i] = s[i - str_len(inp) - 1];
- }
- s[r + 1] = ' ';
- for (int i = r + 2; i < r + 2 + str_len(inp); i++) {
- s[i] = inp[i - r - 2];
- }
- }
- }
- }
- int main()
- {
- char *s = (char *)malloc(sizeof(char));
- char *inp = (char *)malloc(sizeof(char));
- free(s);
- free(inp);
- init(s);
- init(inp);
- //int a = atoi(s);
- //deleteword(s, 1);
- //deletesymbol(s, 'a');
- //swapper(s, 1, 2);
- //inputer(s, inp, 2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement