Страница 1 из 1
Задача со строками!
Добавлено: 20 мар 2009, 09:14
qwerty2009
Дана строка символов. Подсчитать, сколько различных символов встречаются в ней. Вывести их на экран.
Не могу никак разобраться....
Код: Выделить всё
void main()
{
const int n=20;
setlocale(LC_ALL,""); // отображение русских букв
int count;//Длина строки
char strok[n];
cout<<"Введите строку"<<endl;
cin>>strok;
count=strlen(strok);
char temp=strok[0];
int qw=0; //Количество разных символов
for(int index=0; index<count;index++)
{
if (strok[index]<>temp)
{
qw=qw+1;
cout<<strok[index];
}
}
cout<<endl;
cout<<"Количество символов = "<<count<<endl;
_getch();
}
Re: Задача со строками!
Добавлено: 20 мар 2009, 09:33
Naeel Maqsudov
Код: Выделить всё
cout<<"Введите строку"<<endl;
cin>>strok;
for(int i1=0; i1<strlen(strok)-1;i1++)
{
for(int i2=i1+1; i2<strlen(strok);i2++)
{
if (strok[i1]== strok[i2]) {
//тут надо удалить символ strok[i2]
//не знаю как это на C++
}
}
}
//терепрь в строке не осталось повторяющихся символов
//и длина строки - это и есть искоамое значение
Re: Задача со строками!
Добавлено: 20 мар 2009, 12:30
qwerty2009
Спасибо, сделал вот так:
Код: Выделить всё
void main()
{
const int n=20;
setlocale(LC_ALL,""); // отображение русских букв
char strok[n];
char temp[n]="";
int y=0; //Количество не повторяющихся символов
cout<<"Введите строку"<<endl;
cin>>strok;
for(int i = 0; i < strlen(strok); i++) //Обходим наш массив
{
bool f=false; //нету такого символа
for(int h=0; h<y; h++) //обходим вспомогательный массив
{
if(strok[i] == temp[h]) f=true; // у нас есть такой
};
//если нет такого символа то добавляем его.
if (f==false)
{
temp[y]=strok[i];
y++;
};
};
cout<<endl;
cout<<temp<<endl;
cout<<"Количество не повторяющихся символов = "<<y<<endl;
_getch();
}
************
подскажите как теперь сделать тоже самое используя указатели???
************
Re: Задача со строками!
Добавлено: 21 мар 2009, 07:26
Albor
Смотри выделенный фрагмент в твоём коде.
qwerty2009 писал(а):Код: Выделить всё
void main()
{
...........
//если нет такого символа то добавляем его.
if (f==false)
{
[B]*(temp+y)= *(strok+i);[/B]// остальное аналогично
y++;
};
};
...................
}
Требует дороботки
Добавлено: 25 мар 2009, 00:07
Zazeek
Доброго времени суток.
Не доходит куда втулить...
В общем начнём с задания
Задание:
В заданной стоке заменить каждую запятую - точкой и пробелом. А каждую точку - запятой.
первая часть сделана =>
Код: Выделить всё
{
String S=Edit1->Text,SS="";
int i=1;
while(i<S.Length())
{if(S[i]==',')SS=SS+". ";
else SS=SS+S[i];
i++;}
Edit2->Text=SS;
}
Это как Вы поняли замена запятой на точку с пробелом
Собственно сам вопрос: каким образом втулить туда вторую часть задачи? Знаю что нужен еще один "if" Но помогите всунуть его.
Заранее благодарен.
Re: Задача со строками!
Добавлено: 07 апр 2009, 10:48
qwerty2009
решил, спасибо
Код: Выделить всё
void main()
{
setlocale(LC_ALL,""); // отображение русских букв
string s1;
getline(cin, s1);
cout<<endl<<endl;
int dl_str;
dl_str=s1.length(); //Длина строки
for (int i=0; i<dl_str;i++)
{
for (int j=dl_str-1; j>i ;j--)
{
if(s1[i]==s1[j])
{
s1=s1.erase(j,1);
dl_str=s1.length();
}
}
}
dl_str=s1.length();
cout<<endl;
cout<<s1<<endl;
cout<<"Количество не повторяющихся символов = "<<dl_str<<endl;
_getch();
}