#include <iostream>
#include <string.h>
#include <windows.h>
using namespace std;
const int n = 10, m = 80;// Задание констант: n-размер массива,m-максимальное количество символов строки
// Функция ввода массива строк с клавиатуры.
int input_mas(char **mas, int n)
{
int k = 0; // Переменная для хранения текущего номера строки
char buf[m];
while (k<n) // Пока число веденных строк меньше возможного
{
cin.getline(buf, m);//Считываем строку из консоли в буферную переменную
OemToChar(buf, mas[k]);//Перевод в кодировку windows
if ((strcmp(mas[k], "") == 0)) break;// Если была введена пустая строка, выходим из цикла
k++;//Если строка была непустая, продолжаем и увеличиваем k
}
return k ; //иначе введена k+1 строка (т.к. отсчет с 0)
}
void print_mas(char **mas, int n)// Функция вывода массива строк
{
for (int i = 0; i<n; i++) // Распечатка в цикле строк массива
cout << mas[i] << endl;
}
//Функция проверки, что символ является знаком пуктуации
bool puncts(char ch)
{
char str[] = ".,!?;:-()";
if (strchr(str, ch)) return true;
else return false;
}
//Функция проверки, что символ является пробельным символом
bool spaces(char ch)
{
if (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\v' || ch == '\0') return true;
else return false;
}
//Изменение массива строк (обмен 1 и последней буквы в словах)
void swap_words(char **mas, int n)
{
int d = 0; // Переменная для хранения длины строки
bool inword;
char buf;
for (int i = 0; i<n; i++) // Пробег по строкам массива
{
d = strlen(mas[i]); // Вызов стандартной функции длины строки
inword = false;//Опускаем флаг – мы не в слове
int jbeg;//Переменная начала слова
for (int j = 0; j<d; j++)// Пробег по символам строки
{ //Если нашли букву
if (!puncts(mas[i][j]) && !spaces(mas[i][j]))
{
if (!inword) //Мы были не в слове
{
inword = true;//Поднимает флаг нахождения в слове
jbeg = j;//Запоминаем начало слова
}
}
}
}
}
void main() // Главная функция
{
setlocale(LC_ALL, "");
char **mas; // Динамический двумерный массив символов,т.е. массив указателей на строки
mas = new char *[n];// Выделение места в памяти под n указателей на начало строк
for (int i = 0; i<n; i++) mas[i] = new char[m];// Выделение места в памяти под m символов для каждой строки
cout << "Введите массив строк" << endl;
int k = input_mas(mas, n); //Вызов функции ввода массива строк
cout << "Введенный текст:" << endl;
print_mas(mas, k); // Вызов функции вывода массива строк
swap_words(mas, k); // Вызов функции изменения строк
cout << "Изменённый текст:" << endl;
print_mas(mas, k);
for (int i = 0; i<n; i++) delete[] mas[i];// освобождение памяти
delete[] mas;
system("pause");
}
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char s[10][80];
int z = 0;
cout << "Введите 10 строк до 80 символов на каждую: " << endl;
for (int i = 0; i < 10; i++)
{
cin.getline(s[i], 80);
}
for (int i = 0; i < 10; i++) {
z = strlen(s[i]); // Вызов стандартной функции длины строки
for (int j = 0; j < z; j++) // Пробег по символам строки
{
}
}
system("pause");
return 0;
}
if (s[i][j] != ' ' && (s[i][j + 1] == ' ' || s[i][j + 1] == '\0'))
#include <string.h>
#include <stdio.h>
char string[] = "A string\tof ,,tokens\nand some more tokens";
char seps[] = " ,\t\n";
char *token;
void main( void )
{
printf( "%s\n\nTokens:\n", string );
/* Establish string and get the first token: */
token = strtok( string, seps );
while( token != NULL )
{
/* While there are tokens in "string" */
printf( " %s\n", token );
/* Get next token: */
token = strtok( NULL, seps );
}
}
#include <iostream>
#include <Windows.h>
#include <сstring>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char s[10][80];
int z = 0;
cout << "Введите 10 строк до 80 символов на каждую: " << endl;
for (int i = 0; i < 10; i++)
{
cin.getline(s[i], 80);
}
char* s = strtok(s, " ,.-");
while (s != NULL)
{
cout << s << "n";
s = strtok(NULL, " ,.-");
}
system("pause");
return 0;
}
#include <iostream>
#include <Windows.h>
#include <string.h>
using namespace std;
bool isPalyndrom(char *str)
{
int len = strlen(str);
int half = len>>1;
int i;
for(i=0; i<half; i++, len--)
if (str[i] != str[len-1])
break;
return (i == half);
}
void FindPalyndrom(char *str)
{
char* s = strtok(str, " ,.-");
while (s != NULL)
{
if (isPalyndrom(s))
cout << s << endl;
s = strtok(NULL, " ,.-");
}
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char s[10][81];
int i, z = 0;
cout << "Введите 10 строк до 80 символов на каждую: " << endl;
for (i = 0; i < 10; i++)
cin.getline(s[i], 81);
cout << endl << "Палиндромы:" << endl;
for (i = 0; i < 10; i++)
FindPalyndrom(s[i]);
system("pause");
return 0;
}
void FindPalyndrom(char *str)
{
char* s1 = NULL;
char* s = strtok_s(str, " ,.-",&s1);
while (s != NULL)
{
if (isPalyndrom(s))
cout << s << endl;
s = strtok_s(NULL, " ,.-",&s1);
}
}
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.