C/C++
Строки в си, задача
Дана последовательность символов, состоящая из слов. Назовем слово особым, если в него в любых сочетаниях входят четыре различные буквы. Вывести на экран все особые слова или сообщение «Нет», если особых слов нет.
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#define SIZE_LINE 256
_Bool quatro(char* word) {
char box[4] = { 0 };
int i;
int size;
if (word == NULL) return false;
size = strlen(word);
if (size < 4) return false;
box[0] = word[0];
int k = 0;
for (i = 1; i < size; ++i) {
int j = 0;
_Bool flag = true;
while (box[j] && j < 4) {
if (box[j] == word[i]) {
flag = false;
break;
}
++j;
}
if (flag) {
box[++k] = word[i];
if (k == 3) return true;
}
}
return false;
}
int main(void) {
char line[SIZE_LINE];
char* token = NULL;
char* next_token = NULL;
system("chcp 1251 > nul");
printf("Введите строку: ");
fgets(line, SIZE_LINE, stdin);
line[strlen(line) - 1] = 0;
token = strtok_s(line, " ", &next_token);
if (quatro(token)) {
puts(token);
}
while (token != NULL) {
token = strtok_s(NULL, " ", &next_token);
if (quatro(token)) {
puts(token);
}
}
system("pause > nul");
return 0;
}
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#define SIZE_LINE 256
_Bool quatro(char* word) {
char box[4] = { 0 };
int i;
int size;
if (word == NULL) return false;
size = strlen(word);
if (size < 4) return false;
box[0] = word[0];
int k = 0;
for (i = 1; i < size; ++i) {
int j = 0;
_Bool flag = true;
while (box[j] && j < 4) {
if (box[j] == word[i]) {
flag = false;
break;
}
++j;
}
if (flag) {
box[++k] = word[i];
if (k == 3) return true;
}
}
return false;
}
int main(void) {
char line[SIZE_LINE];
char* token = NULL;
char* next_token = NULL;
system("chcp 1251 > nul");
printf("Введите строку: ");
fgets(line, SIZE_LINE, stdin);
line[strlen(line) - 1] = 0;
token = strtok_s(line, " ", &next_token);
if (quatro(token)) {
puts(token);
}
while (token != NULL) {
token = strtok_s(NULL, " ", &next_token);
if (quatro(token)) {
puts(token);
}
}
system("pause > nul");
return 0;
}
Хорошая тема)
Сразу предлагаю "особые" слова,
в которых есть 4 разных буквы:
"Яибу", "Xyeю", "Жoпa", "Baxye", "Xyли", "Eптa"...
Сразу предлагаю "особые" слова,
в которых есть 4 разных буквы:
"Яибу", "Xyeю", "Жoпa", "Baxye", "Xyли", "Eптa"...
Вызывайте полицию из Отдела по борьбе с наркотиками.
Вашего препода торкнуло и никак не отпускает ;)
Вашего препода торкнуло и никак не отпускает ;)
А что так мало "разных букв"?
Пусть будут "особые слова"
из 190 различных букв языка
племени островов Папуа-Новой Гвинеи))))
Пусть будут "особые слова"
из 190 различных букв языка
племени островов Папуа-Новой Гвинеи))))
Болат Сумьянов

Похожие вопросы
- Задача на строки в Си
- Нужно не выводить пробел в конце строки. язык си (Андрей, даже ваш вариант сайт считает не рабочим... )
- Структуры и строки в си
- Строки в СИ
- Помогите с решением задачи на языке СИ
- Решить задачу на языке СИ
- Переход на следующую строку при считывании данных из файла в Си
- Помогите с задачей на языке СИ
- Написать программу на языке Си, которая решит эту задачу:
- Помогите пожалуйста решить задачу на Си