Для каждой буквы первого слова определить, входит ли оно во второе слово - C (СИ)
Формулировка задачи:
Программа почти готова, но есть небольшой косяк в условии , прошу помощи. Проблема видна на картинке.
Суть задачи:
Даны два слова. Для каждой буквы первого слова определить, входит ли оно во второе слово. Повторяющиеся буквы первого слова не рассматривать. Например, если заданные слова
процессор
иинформация
, то для букв первого из них ответом должен быть: НЕТ ДА ДА ДА НЕТ НЕТ#include <math.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
#define R " .,;:\t\n"
int main()
{
char str[256];
char str1[256];
int n,k,p = 0,i,j;
gets(str);
gets(str1);
for(i=0;i<strlen(str);i++)
{
n = 0;
for(k=0;k<i;k++)
if(str[i] == str[k])
p++;
if(p==0)
{
for(j=0;j<strlen(str1);j++)
if(str[i] == str1[j])
n++;
}
if(!n)
printf("No ");
else
printf("Yes ");
}
getch();
return 0;
}Решение задачи: «Для каждой буквы первого слова определить, входит ли оно во второе слово»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[]) {
char first[256];
char second[256];
int i, j, end;
scanf("%255s", first);
scanf("%255s", second);
end = strlen(first);
for (i = end - 1; 0 < i; --i) {
for (j = i - 1; (0 <= j) && (first[i] != first[j]); --j) {
;
}
if (j < 0) {
break;
}
else {
end--;
}
}
for (i = 0; i < end; ++i) {
for (j = i - 1; (0 <= j) && (first[i] != first[j]); --j) {
;
}
if ((j < 0) && strchr(second, first[i])) {
printf("yes ");
}
else {
printf("no ");
}
}
return 0;
}
Объяснение кода листинга программы
В этом коде осуществляется сравнение каждой буквы первого слова (предполагая, что это строка, сохраненная в переменной first) со всеми последующими буквами этого же слова (сохраненного в переменной second). Если буква из первого слова присутствует во втором слове, то выводится yes, в противном случае выводится no.