Программа: удаление всех повторяющийхся цифр (и букв в слове). С [в доработке]
Упражнялся вчера с С и решил что-нибудь более или менее полезное написать для работы со строками символами, с исп. stdio.
И вот такое получилось.
Принимает один аргумент:
Зачем может быть нужна?!
Когда тебе твоя девушка пишет все время вот так: «даааааа, вооооот» = ) (но пока удаляет только ASCII - цифры и лат. алфавит. Только из слов без кавычек) и вообще делает символы в слове уникальными, типа на входе «good», на выходе «god» или на входе «pool», на выходе «pol»
Тема отредактирована. См. комментарии ниже. Решение внизу
//This small prorgam removes all duplicated characters out of a word
//Программа удаляет все повторяющиеся символы из слова
//Author dcc0@yandex.ru 2018.
#include <stdio.h>
int main(int argc, char* argv[]) {
//here we check arguments//проверяем аргументы
if (argc < 2) {
printf("Argument must be a word:\n");
return 0;
}
int x, i, j;
//it calculates an array's length
//вычисляем длину слова и печатаем
for (x = 0; argv[1][x] != '\0'; x++);
printf ("Original length: %d\n", x);
x=x+1;
//here we search twins
//ищем одинаковых
for (i = 0; i != x; i++) {
j = i + 1;
while (j != x) {
if (argv[1][i] == argv[1][j]) {
argv[1][i] = '0';
}
j++;
}
}
j=0;
//Output
//Вывод
for (i = 0; i != x; i++) {
if (argv[1][i] != '0') {
printf ("%c", argv[1][i]);
j++;
}
}
printf ("\nNumber of uniqe symbols: %d\n", j-1);
}
P.S. Форматирование поправил. Лишний блок из кода убрал. Комментарии на русском есть. P.P.S Ну вот еще подсократилось. «Динамическое вычисление длины массива убрали. В принципе можно и вычисление x убрать.
P.P.P.S Теперь и такую строку вроде правильно обрабатывает: „teeest teeestt tteeessstt“ Original length: 25 est Number of uniqe symbols: 4 Осталось сделать транслит функцию.