Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- int ch_str(char* str, char ch);
- int sum_of_digits(char* str);
- int sum_of_decimal(char* str);
- char* reverse_str(char* str);
- char* reverse_substr(char* str, int a, int b);
- int str_len(char* str);
- int words_count(char* str);
- int longest_word(char* str);
- int shortest_word(char* str);
- void print_words(char* str);
- char* reverse_words(char* str);
- int main()
- {
- const int size = 50;
- char str[size] = "Alo!!!suka pidaras huly !? ne poluchaetsa!!!blya";
- //printf("%d\n", ch_str(str, 's'));
- //printf("%d\n", sum_of_digits(str));
- //printf("%s\n", reverse_substr(str, 2, 7));
- //printf("%d\n", sum_of_decimal(str));
- //printf("%d\n", shortest_word(str));
- //print_words(str);
- printf("%s\n", reverse_words(str));
- //printf("%s", str);
- }
- int ch_str(char* str, char ch) {
- int i = 0;
- while (str[i]) {
- if (str[i] == ch) {
- return i;
- }
- i++;
- }
- return -1;
- }
- int sum_of_digits(char* str) {
- int i = 0, j = 0;
- while (str[i]) {
- if (str[i] >= '0' && str[i] <= '9') {
- j = j+ (str[i] - '0');
- }
- i++;
- }
- return j;
- }
- int sum_of_decimal(char* str) {
- int i = 0, j = 0, k = 0;
- while (str[i]) {
- k = 0;
- while (str[i] >= '0' && str[i] <= '9') {
- k = k * 10 + (str[i] - '0');
- i++;
- }
- i++;
- j = j + k;
- }
- return j;
- }
- char* reverse_str(char* str) {
- int i = 0;
- char k;
- while(str[i] && i<(str_len(str)/2)){
- k = str[i];
- str[i] = str[str_len(str) - i - 1];
- str[str_len(str) - i - 1] = k;
- i++;
- }
- return str;
- }
- int str_len(char* str) {
- int i = 0;
- while (str[i]) {
- i++;
- }
- return i;
- }
- char* reverse_substr(char* str, int a, int b) {
- int i =0;
- char k;
- while (str[a+i]&& a+i<b-((b-a)/2)) {
- k = str[a+i];
- str[a + i] = str[b - i];
- str[b - i] = k;
- i++;
- }
- return str;
- }
- int words_count(char* str) {
- int i = 0;
- int num = 0;
- int flag = 1;
- char chek[] = "!&?\t\n '()&^;:`.,";
- while (str[i]) {
- if (ch_str(chek, str[i]) != -1) {
- if (flag == 0) {
- num++; flag = 1; i++;
- }
- else { i++; }
- }
- else {
- i++;
- flag = 0;
- }
- }
- if (flag == 0) num++;
- return num;
- }
- int longest_word(char* str) {
- int i = 0;
- int num = 0, max = 0;
- int flag = 1;
- char chek[] = "!&?\t\n '()&^;:`.,";
- while (str[i]) {
- if (ch_str(chek, str[i]) != -1) {
- if (flag == 0) {
- num=0; flag = 1; i++;
- }
- else { i++; }
- }
- else {
- num++;
- i++;
- flag = 0;
- }
- if (num > max) max = num;
- }
- return max;
- }
- int shortest_word(char* str) {
- int i = 0;
- int num = 0, min = str_len(str);
- int flag = 1;
- char chek[] = "!&?\t\n '()&^;:`.,";
- while (str[i]) {
- if (ch_str(chek, str[i]) != -1) {
- if (num != 0 && num < min) { min = num; }
- num = 0; i++;
- }
- else {
- num++;
- i++;
- flag = 0;
- }
- }
- if (flag == 1)min = 0;
- return min;
- }
- void print_words(char* str) {
- int i = 0, flag = 0;
- char chek[] = "!&?\t\n '()&^;:`.,";
- while (str[i]) {
- if (ch_str(chek, str[i]) == -1) {
- flag = 0;
- printf("%c", str[i]);
- i++;
- }
- else {
- if (flag == 0) { flag = 1; printf("\n"); i++; }
- else { i++; }
- }
- }
- }
- char* reverse_words(char* str) {
- int i = 0, flag = 1,s = 0, e = 0;
- char chek[] = "!&?\t\n '()&^;:`.,";
- while (str[i]) {
- if (ch_str(chek, str[i]) != -1) {
- i++;
- }
- else {
- s = i;
- while (str[i]) {
- if (ch_str(chek, str[i]) != -1) {
- e = i-1 ; str=reverse_substr(str, s, e); break;
- }
- i++;
- if (i == str_len(str)) { e = i - 1; str = reverse_substr(str, s, e ); }
- }
- }
- }
- return str;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement