Определить количество слов, которые слева и справа читаются одинаково (палиндромов) во введенной строке - C (СИ)
Формулировка задачи:
В общем пытался написать задачу, в которой я ввожу строку и нужно определить количество слов, которые слева и справа читаются одинаково, при этом слова разделены пробелами. Самому сделать не получилось, где то нашёл пример, но проблема в том что мой компилятор (microsoft visual studio 2012) выдаёт ошибки в строке 27: strtok_s - функция не принимает 2 аргументов и слишком мало аргументов в вызове функции. Что это может быть?
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- # include <iostream>
- int check (char str[])
- {
- int i,k;
- k=strlen(str);
- for (i=0;i<k;i++)
- if (str[i]!=str[(k-1)-i]) return 0;
- return 1;
- }
- int main(void)
- {using namespace std;
- setlocale(LC_ALL, "Russian");
- char str[80];
- char* t;
- int y=0;
- printf("\n");
- printf("\n введите строку \n");
- gets_s(str);
- t=strtok_s(str," ");
- printf("\n");
- while (t != NULL) {
- if (check(t)==1) {
- printf("\n слова : %s",t);
- printf(" - палиндромы");
- y++;
- }
- else {
- printf("\n слова : %s",t); printf(" - не палиндромы ");
- }
- t = strtok (NULL, " ");
- }
- printf("\n\n количество палиндромов= %i",y);
- return 0;
- }
Решение задачи: «Определить количество слов, которые слева и справа читаются одинаково (палиндромов) во введенной строке»
textual
Листинг программы
- #include <stdio.h>
- #include <locale.h>
- #include <conio.h>
- #include <string.h>
- #include <windows.h>
- int check (char str[])
- {
- int i,k;
- k=strlen(str);
- for(i=0;i<k/2;i++)
- if (str[i]!=str[k-1-i])
- return 0;
- return 1;
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- char str[80];
- char* t;
- int y=0;
- printf("\n введите строку \n");
- gets_s(str);
- OemToChar(str,str);
- char *p;t=strtok_s(str," ",&p);
- printf("\n");
- while (t != NULL)
- {
- if (check(t))
- {
- printf("\n слово: %s - палиндром",t);
- y++;
- }else
- printf("\n слово: %s - не палиндром",t);
- t=strtok_s(NULL," ",&p);
- }
- printf("\n\n количество палиндромов= %i",y);
- _getch();
- return 0;
- }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы со строками и вводом/выводом
- Функция проверки палиндрома, принимает строку в качестве параметра и возвращает 1, если палиндром, иначе 0
- Ввод строки с помощью функции gets_s
- Приведение строки к типу OEM с помощью функции OemToChar
- Разделение строки на слова с помощью функции strtok_s, первое слово будет указано в переменной t
- Проверка каждого слова на палиндром с помощью функции check и вывод результата на экран
- При каждой итерации цикла переменная t будет указывать на следующее слово в строке
- В конце программы выводится количество найденных палиндромов с помощью переменной y
- Программа завершается с помощью функции _getch
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д