Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*задача №1. Произвести выравнивание по правому краю введенного текста, для чего к каждой строке применить функцию WIDE(str,k), которая равномерно вставляет пробелы между словами так, чтобы длина строки str стала равной k. (Величина k должна быть больше длины самой длинной строки текста.)
- задача №2. Напишите программу, определяющую, является ли введенная строка палиндромом. Палиндром – фраза, которая читается справа налево и слева направо одинаково без учета регистра букв и наличия пробелов. Например, строка Аргентина манит негра — является палиндромом.*/
- #pragma warning(disable:4018)
- #include <iostream>
- #include <Windows.h>
- #include <string.h>
- using namespace std;
- void string_packing(char *string, char *packed_string)
- {
- unsigned int i, k;
- for (i = 0, k = 0; i < strlen(string); i++)
- {
- if (string[i] != ' ')
- {
- packed_string[k] = string[i];
- k++;
- }
- }
- }
- bool string_polindrome(char *string)
- {
- bool flag = true;
- unsigned int i;
- for (i = 0; i < strlen(string) / 2; i++)
- if (string[i] != string[strlen(string) - i - 1])
- flag = false;
- return flag;
- }
- void WIDE(char *string, char *replace_string, int size)
- {
- unsigned int i, j, k;
- char space[1] = { ' ' };
- int space_counter = 0;
- int need_space;
- int counter = 0;
- int string_length = strlen(string);
- // Считаем пробелы
- for (i = 0; i < string_length; i++)
- {
- if (string[i] == ' ')
- space_counter++;
- }
- if (space_counter == 0) space_counter = 1;
- // На каждый пробел - ставим M пробелов
- need_space = (size - string_length) / space_counter + 1;
- for (i = 0, k = 0; i < string_length; i++)
- {
- if (string[i] != ' ')
- {
- replace_string[k] = string[i];
- k++;
- }
- else
- {
- for (j = 0; j < need_space; j++)
- {
- if (strlen(replace_string) < size)
- {
- replace_string[k]=' ';
- k++;
- }
- }
- }
- }
- replace_string[k] = '\0';
- }
- int main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- int k;
- bool flag;
- char string[80] = { 0 }, packed_string[80] = { 0 }, sec_string[80] = { 0 }, replace_string[80] = { 0 };
- cout << "Фраза: ";
- cin.getline(string, 80);
- string_packing(string, packed_string); // удаляем все разделители
- cout << packed_string << endl;
- flag = string_polindrome(packed_string);
- if (flag == true)
- cout << "Палиндром" << endl;
- else
- cout << "Не палиндром" << endl;
- cout << "Исходная строка: ";
- cin.getline(sec_string, 80);
- cout << "Выравнивание: ";
- cin >> k;
- WIDE(sec_string, replace_string, k);
- cout << replace_string << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement