Другие языки программирования и технологии
Программирование (Си) . Символьная строка.
Дана символьная строка, в которой слова перечислены через точку с запятой, а общая длина меньше или равна 80.Найти и напечатать все слова. которые представляют собой слово-палиндром.
#include <stdio.h>
#include <string.h>
#include <locale.h>
int palindrom(char*);
void parse(char*);
int main() {
char str[81] = "поворот; кабак; искра; довод; казак; мороз; заказ; приказ; наказ; доход; ротатор; дом; шалаш"; // пробелы следует удалить
parse(str);
getchar();
}
void parse(char* str) {
char* context = NULL;
char* token = strtok_s(str, ";", &context);
setlocale(LC_CTYPE, "Russian_Russia.1251");
while (token != NULL) {
if (palindrom(token)) puts(token);
token = strtok_s(NULL, ";", &context);
}
}
int palindrom(char* word) {
int i = 0, j = strlen(word) - 1;
do if (word[i] != word[j]) return 0; while (++i < --j);
return 1;
}
#include <string.h>
#include <locale.h>
int palindrom(char*);
void parse(char*);
int main() {
char str[81] = "поворот; кабак; искра; довод; казак; мороз; заказ; приказ; наказ; доход; ротатор; дом; шалаш"; // пробелы следует удалить
parse(str);
getchar();
}
void parse(char* str) {
char* context = NULL;
char* token = strtok_s(str, ";", &context);
setlocale(LC_CTYPE, "Russian_Russia.1251");
while (token != NULL) {
if (palindrom(token)) puts(token);
token = strtok_s(NULL, ";", &context);
}
}
int palindrom(char* word) {
int i = 0, j = strlen(word) - 1;
do if (word[i] != word[j]) return 0; while (++i < --j);
return 1;
}
#include <stdio.h>
#include <ctype.h>
const char* fpolyw(const char* s, const char** f, const char** l){
const char* p, *t;
while(*s) {
while(*s && ! isalpha(*s))
++s;
for(p = s; isalpha(*p); ++p);
t = p;
if((p - s) > 2){
*f = s;
*l = p;
for(--p; p > s; ++s, --p){
if(*p != *s)
break;
}
if(*p == *s)
return t;
}
s = t;
}
return NULL;
}
int main(void){
const char* p, *f, *l;
char s[80] = "ABCEEExEEECBA???the, bla ADA, WOW, adida, spam,kook";
p = &s[0];
while((p = fpolyw(p, &f, &l)) != NULL){
//fwrite(f, sizeof(char), (size_t)(l - f), stdout);
while(f != l)
putchar(*f++);
putchar('\n');
}
return 0;
}
Тест кода: http://ideone.com/9l91x6
#include <ctype.h>
const char* fpolyw(const char* s, const char** f, const char** l){
const char* p, *t;
while(*s) {
while(*s && ! isalpha(*s))
++s;
for(p = s; isalpha(*p); ++p);
t = p;
if((p - s) > 2){
*f = s;
*l = p;
for(--p; p > s; ++s, --p){
if(*p != *s)
break;
}
if(*p == *s)
return t;
}
s = t;
}
return NULL;
}
int main(void){
const char* p, *f, *l;
char s[80] = "ABCEEExEEECBA???the, bla ADA, WOW, adida, spam,kook";
p = &s[0];
while((p = fpolyw(p, &f, &l)) != NULL){
//fwrite(f, sizeof(char), (size_t)(l - f), stdout);
while(f != l)
putchar(*f++);
putchar('\n');
}
return 0;
}
Тест кода: http://ideone.com/9l91x6
Похожие вопросы
- Напишите программу для С++, которая заменяет в символьной строке все буквы a на буквы b, буквы A на буквы B ...
- Язык программирования Си
- Как в языке программирования СИ осуществлять вызов подпрограммы, которая находится в другом файле?
- Как на языке программирования си сделать, чтобы при вводе полного бреда программа не поломалась?
- Программирование. Си шарп, си ++
- Ребята, скажите где можно скачать язык программирования Си, без ++
- Помогите пожалуйста решить задачу по программированию (язык программирования СИ)
- Помогите пожалуйста найти ошибку в задаче (Язык программирования Си)
- Помогите с программированием СИ
- Помогите с программированием СИ