Написать программу, которая вводит слово, а потом выписывает буквы, которые повторились в слове - C (СИ)
Формулировка задачи:
Помогите найти ошибку.
задача состоит в том,чтобы:
написать программу, которая вводит слово, а потом выписывает буквы, которые повторились в слове. Каждая из букв не должны быть выписана, более одного раза.
например: мама: м, а
мой вариант в С++
и мой вариант в С
#include <iostream> using namespace std; int main() { int a[256]; char s[80]; int i; for (i=0;i<=256;i++) a[i]=0; cin>>s; for (i=0;i<=strlen(s);i++) if (a[s[i]]==0){cout<<s[i]; a[s[i]]=1;} return 0; }
#include <stdio.h> #include <stdlib.h> int main() { int a[256]; char s[80]; int i; for (i=0;i<=256;i++) a[i]=0; scanf("%c",&s); for (i=0;i<=strlen(s);i++) if (a[s[i]]==0){ printf("%c",s[i]); a[s[i]]=1;} return 0; }
Решение задачи: «Написать программу, которая вводит слово, а потом выписывает буквы, которые повторились в слове»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int a[256]; char s[80]; int i; for (i = 0; i <= 255; ++i) a[i] = 0; scanf("%s",s); for (i = strlen(s); i >= 0; --i) if (a[(int)s[i]] == 0) { printf("%c",s[i]); a[(int)s[i]] = 1; } return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявлены две переменные: массив
a
размером 256 и строкаs
размером 80. - В начале программы все элементы массива
a
инициализируются нулями. - Затем пользователю предлагается ввести строку с помощью функции
scanf
. - Далее в цикле перебираются все символы введенной строке, начиная с последнего.
- Если текущий символ не был встречен ранее (его индекс в массиве
a
равен нулю), то он выводится на экран, а его индекс в массивеa
устанавливается равным единице. - В конце программы возвращается ноль, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д