Определить количество слов, которые слева и справа читаются одинаково (палиндромов) во введенной строке - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д