Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Посимвольное сравнение строк


Автор: cuore 6.2.2013, 01:36
Нужно написать программу, которая проверяет, можно ли составить слово из введенных букв (и слово, и буквы вводятся с клавиатуры). Недостающие буквы вывести. 
Пытаюсь сравнивать посимвольно строку слОва и сроку букв. Если буква слОва не совпадает с буквой строки - то эту недостающую букву заносим в другую, третью строку недостающих букв. Вот как пишу:
Код

int main()
{
    char wrd[255], ltrs[255], str[255];
    // строка для слова, букв, для недостающих букв
    int wl = 0, lc = 0; 
    // длина строки слова, букв

    printf("enter word\n");
    gets(wrd);
    // получаем сроку слова

    printf("enter some letters\n");
    gets (ltrs);
    // получаем сроку букв

    wl = strlen(wrd);
    lc = strlen(ltrs);
    // получаем длины

    for(int i=0; i<=wl; i++)
    // идем по строке слОва
    {
        for(int j=0; j<=lc; j++)
    // идем по строке букв
        {
            if(wrd[i]!=ltrs[j])
            {
            str[i] += wrd[i];
            }
            // если буква не совпадает, заносим ее в другую строку
        }
    }
                
printf("%s", str);                    
// выводим

  getch();
   return 0;
} 

Но ничего не выходит. В чем ошибка? 

Автор: hawk3500 6.2.2013, 08:11
str[i] += wrd[i];
а зачем тут "+"с когда вы и так обращаетесь к конкретному элементу массива????

Автор: feodorv 6.2.2013, 08:53
Цитата(cuore @  6.2.2013,  02:36 Найти цитируемый пост)
            // если буква не совпадает, заносим ее в другую строку

Для другой строки нужно завести отдельный счетчик символов, находящихся в этой строке; инициализировать его нулём, а после сравнения в конец этой строки нужно добавить '\0'...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)