Построение из двух строк третьей строки по определенному принципу - C (СИ)
Формулировка задачи:
На вход программе дается 2 строки, состоящие из букв английского алфавита. По следющим правилам строится третья строка, которая и будет результатом работы программы:
1)Берется первая строка, начинается прохождение строки с первого символа. Если буква согласная, то она просто переносится в строку результата, если же гласная, то тогда смотрится, сколько раз эта буква встречается в 1 и 2 строке. Если количество встреч данного символа меньше во второй строке, то в строку результата просто записывается эта буква, иначе она дважды записывается в строку результата.
2) Затем к строке результата приписывается вторая строка задом наперед.
3) Теперь берем вторую строку и работаем по похожему принципу, что и в первом пункте. Но гласные теперь просто переносятся в результат, а согласные, которые во второй строке встречаются реже - удалятся, иначе просто переносятся в единичном экземпляре.
Пример работы программы:
ТЕТРИС
ТЕОРЕМА
Результат: ТЕЕТРИСАМЕОЕ
P.S. Понимаю, что запутанное условие, но уже неделю не могу разобраться с этой штукой. Очень нужна помощь!Заранее спасибо.
Решение задачи: «Построение из двух строк третьей строки по определенному принципу»
textual
Листинг программы
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <locale.h>
int main()
{
int i = 0, j = 0,k = 0, l = 0, k1 = 0, k2 = 0, len1 = 0, len2 = 0, p1 = 0, p2 = 0, sim = 0;
char glas[] = "eyuioaqwrtpsdfghjklzxcvbnm";
//char sogl[] = "qwrtpsdfghjklzxcvbnm";
char str1[80] = { "\0" };
char str2[80] = { "\0" };
char str[80] = { "\0" };
int leng = strlen(glas), len = 0;
printf("Vvedite 2 stroki \n");
gets_s(str1);
gets_s(str2);
len1 = strlen(str1);
len2 = strlen(str2);
for (i = 0; i < len1; i++)
{
for (j = 0; j < leng; j++)
if (str1[i] == glas[j] && j < 6) {
sim = glas[j];
for (k = 0; k < len1; k++)
if (str1[k] == sim)
k1++;
for (l = 0; l < len2; l++)
if (str2[l] == sim)
k2++;
if (k1 > k2)
str[i] = sim;
else
str[i] = sim;
str[i + 1] == sim;
}
}
puts(str);
return(0);
}