Написать программу, которая вводит слово, а потом выписывает буквы, которые повторились в слове - 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устанавливается равным единице. - В конце программы возвращается ноль, что означает успешный конец работы программы.