Удалить из строки все буквы, равные последней букве предложения - C (СИ)

Узнай цену своей работы

Формулировка задачи:

надо что бы он прочитав последнею букву в предложение удалял все такие же буквы в самом предложение кроме нее самой!
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    char str[50];
    gets(str);
    int i,j;
    char tmp=str[strlen(str)-1];
    for (i=0;i<strlen(str);i++){
        if((str[i]==tmp)){
            for(j=i;j<strlen(str)-1;j++){
                str[j]=str[j+1];
            }
            str[strlen(str)-1]=NULL;
        }
    }
    printf("%s",str);

           return 0;
}

Решение задачи: «Удалить из строки все буквы, равные последней букве предложения»

textual
Листинг программы
size_t len = strlen(str);
size_t i, j;
for (i=0, j=0; str[j]; j++)
    if (str[j] != tmp)
        str[i++] = str[j]
str[i++] = tmp;
str[i] = 0;

Объяснение кода листинга программы

  1. В первой строке определяется функция strlen, которая вычисляет длину строки str.
  2. Затем в циклах for перебираются символы строки str.
  3. Внутри циклов проверяется, равен ли текущий символ последнему символу строки tmp.
  4. Если символы не равны, то текущий символ добавляется в новую строку str с индексом i.
  5. После каждой итерации i увеличивается на 1.
  6. В конце str добавляется последний символ tmp.
  7. Наконец, str заканчивается нулевым символом.

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы