Удалить из строки все двойные символы - C (СИ) (75115)
Формулировка задачи:
Дана строка. Удалить из строки все двойные символы. Пример: “asddewwf” → “asdewf”.
Помогите пожалуйста разобраться в чем ошибка.
#include <stdio.h>
int main(int argc, char *argv[])
{ char s[255];
unsigned int i, n;
printf("Vvedite razmer stroki: "); scanf("%u", &n); n++;
printf("Vvedite stroky: \n"); //ввод массива
{for (i=0; i<n; i++) scanf("%c", &s[i]); }
for (i=1; i<n; i++)
{ while (s[i-1]==s[i]) {s[i]=s[i+1]; break;}}
//else continue;
for (i=0;i<n;i++) printf("%c", s[i]); //вывод ответа
printf("\n");
return 0;
}Решение задачи: «Удалить из строки все двойные символы»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
int main ()
{
int n, i, j, k, f;
char m[255];
clrscr();
printf("Vvedite razmer stroki\n");
scanf("%d", &n);
n=n+1;
printf("Vvedite stroky:\n");
for(i=0; i<n; i++)
{
scanf("%c", &m[i]);
}
printf("Do:\n");
for(i=0; i<n; i++)
printf("%c", m[i]);
f=0;
for(i=0; i<n; i++) {
for(j=i+1; j<n; j++) {
if(m[i]==m[j]) {
for(k=j; k<n; k++)
m[k]=m[k+1];
n--;
f=1;
}
}
}
if(f==1) {
printf("\nPosle:\n");
for(i=0; i<n; i++)
printf("%c ", m[i]);
}
getch();
}
Объяснение кода листинга программы
В этом коде удаляются все повторяющиеся символы из строки, введенной пользователем. Вот список действий, которые происходят в коде:
- Ввод размера строки от пользователя.
- Считывание строки от пользователя.
- Вывод строки на экран.
- Поиск повторяющихся символов в строке.
- Если повторяющиеся символы найдены, то они удаляются из строки.
- Вывод измененной строки на экран.
- Проверка, были ли удалены повторяющиеся символы.
- Если повторяющиеся символы были удалены, то выводится измененная строка.
- Получение от пользователя команды для завершения работы программы.