Форум программистов, компьютерный форум CyberForum.ru

Найти символ строки - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
san4elllo
1 / 1 / 0
Регистрация: 08.11.2009
Сообщений: 36
24.01.2011, 20:12     Найти символ строки #1
Помогите пожалуйста выполнить задание

В С++ требуется Найти символ строки который встречается в строке только один раз. То есть, если в Edit ввести '33n222ab' то программа должна выдать символы n,a,b. Если в строке нет символа повоторяющегося только один раз, вывести соответствующее сообщение.

Заранее спасибо))))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2011, 20:12     Найти символ строки
Посмотрите здесь:

Найти слово, один и тот же символ в котором встречается максимальное число раз (в рамках всей строки) C++
Найти слово, один и тот же символ в котором встречается максимальное число раз (в рамках всей строки). C++
Создать функцию, которая на вход получает строку символов и один символ, функция печатает те слова строки, в которых встречается этот символ. C++
Найти символ первой строки, который первым не совпал с одним из символов второй строки. Вывести слово, в которое входит этот символ C++
Разработать алгоритм и программу для разбиения текста на строки (как признак конца строки в тексте использовать символ @) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
24.01.2011, 20:20     Найти символ строки #2
san4elllo, с радостью поможем. В чём проблема?
san4elllo
1 / 1 / 0
Регистрация: 08.11.2009
Сообщений: 36
24.01.2011, 20:23  [ТС]     Найти символ строки #3
Проблема в том, что я совсем не знаю с чего начать, как правильно составить цикл
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
24.01.2011, 20:30     Найти символ строки #4
C++
1
2
3
4
5
6
7
8
9
10
for(int i = 0; i < str.length(); ++i)
{
   key = true;
   for(int j = 0; j < str.length(); ++j)
       if(i != j && str[i] == str[j])
          key = false;
 
   if(key)
      std::cout << str[i] << ',';
}
JULIK-
18 / 18 / 2
Регистрация: 24.01.2011
Сообщений: 120
24.01.2011, 20:35     Найти символ строки #5
вот держите
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "stdafx.h"     
#include <iostream>     
#include <conio.h>      
#include <math.h>       
#include <windows.h>    
using namespace std;    
const int b=20;
void main()
{
 
     SetConsoleCP(1251);                  // Подключение русского языка
     SetConsoleOutputCP(1251);
char a[b],c[b];
int i,flag=0;
for(i=0;i<b;i++)
{
    a[i]=_getche();
if(a[i]==13)
break;
}
for(i=0;i<b;i++)
{
    c[i]=a[i];
}
int j;
cout<<"\n";
for(j=0;j<b;j++)
{
for(i=0;i<b;i++)
{
    if(a[i]==c[j] && i!=j)
    flag=1;
}if(flag!=1)
cout<<c[j];
flag=0;
}
getch();                
}
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
24.01.2011, 20:39     Найти символ строки #6
Или так
C++
1
2
3
4
5
std::for_each(str.begin(), str.end(), [](char a_)
{
   if(std::count(str.begin(), str.end(), a_) == 1)
      std::cout << a_ << ',';
});
san4elllo
1 / 1 / 0
Регистрация: 08.11.2009
Сообщений: 36
24.01.2011, 20:50  [ТС]     Найти символ строки #7
asics,

C++
1
2
3
4
5
6
7
8
9
for(int i = 0; i < str.length(); ++i)
{
   key = true;
   for(int j = 0; j < str.length(); ++j)
       if(i != j && str[i] == str[j])
          key = false;
 
   if(key)
      std::cout << str[i] << ',';
Я так понимаю это на консоли написано? Объясните пожалуйста что такое key = true
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
24.01.2011, 20:55     Найти символ строки #8
Цитата Сообщение от san4elllo Посмотреть сообщение
Объясните пожалуйста что такое key = true
См. тут.
san4elllo
1 / 1 / 0
Регистрация: 08.11.2009
Сообщений: 36
24.01.2011, 21:12  [ТС]     Найти символ строки #9
А нельзя ли както это написать попроще? Применимо к обыкновенному edit, без консолей и премудростей?))) Иначе у препода будут глаза по пять рублей на код моей программы....
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
24.01.2011, 21:30     Найти символ строки #10
san4elllo, помогу, если сначала напишешь свой вариант.
JULIK-
18 / 18 / 2
Регистрация: 24.01.2011
Сообщений: 120
24.01.2011, 21:51     Найти символ строки #11
san4elllo, ну я же вам написал, по моему всё просто

Добавлено через 5 минут
san4elllo, а чем вас не устраивает мой вариант?
Rusl_v
 Аватар для Rusl_v
13 / 12 / 1
Регистрация: 22.12.2010
Сообщений: 67
24.01.2011, 21:52     Найти символ строки #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "stdafx.h"
#include <iostream>
#include <cstdio>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    const int n=100;
    char str[n],*p,*r;
    r=str;
    p=str;
    cout<<"Введите строку:";
    gets(str);
    for(int x=0;*p;x++){
        if(p==r) r++;
        while(*p!=*r&&*r||p==r){
            r++;
        }
        if (!*r) cout<<*p;
        p++;
        r=str;
    }
    system("pause");
    return 0;
}
Вроде работает но потести чуток,если нужны будут комменты к коду могу дать.
Облегчил как мог
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
24.01.2011, 21:57     Найти символ строки #13
JULIK-, Rusl_v, ваши варианты плохи тем, что совершенно нечитаемы.
Rusl_v
 Аватар для Rusl_v
13 / 12 / 1
Регистрация: 22.12.2010
Сообщений: 67
24.01.2011, 22:00     Найти символ строки #14
Цитата Сообщение от volovzi Посмотреть сообщение
JULIK-, Rusl_v, ваши варианты плохи тем, что совершенно нечитаемы.
Всё ясно написано,если ты учил Си++ то ты должен разобраться с такими простыми условиями!
Ща выложу комменты к коду
P.S.Зато уложился всего в 18 строчек
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
24.01.2011, 22:03     Найти символ строки #15
Rusl_v, Да никто и не говорот, что код сложный или его кто-то не понимает, просто он не логичный.
san4elllo
1 / 1 / 0
Регистрация: 08.11.2009
Сообщений: 36
24.01.2011, 22:05  [ТС]     Найти символ строки #16
Вот мой вариант.. нерабочий к сожалению

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString str=Edit1->Text;
int i,j,c;
c=0;
for (i=1; i<=str.Length();i++)
c=0;
for (j=1; i<=str.Length();j++)
{
 if ((str[i]=str[j]) && (i!=j))
 c=c+1;
if (c=0)
str=str[i];
}
}
Rusl_v
 Аватар для Rusl_v
13 / 12 / 1
Регистрация: 22.12.2010
Сообщений: 67
24.01.2011, 22:11     Найти символ строки #17
Цитата Сообщение от asics Посмотреть сообщение
Rusl_v, Да никто и не говорот, что код сложный или его кто-то не понимает, просто он не логичный.
Ща попытаюсь упростить,если получиться)

Добавлено через 4 минуты
Цитата Сообщение от volovzi Посмотреть сообщение
JULIK-, Rusl_v, ваши варианты плохи тем, что совершенно нечитаемы.
Напиши пожалуйста свой простой вариант,только если можно не через лямбду.Я бы с удовольствием посмотрел на упрощённый логический вариант,т.к. я учусь ещё
JULIK-
18 / 18 / 2
Регистрация: 24.01.2011
Сообщений: 120
24.01.2011, 22:15     Найти символ строки #18
Rusl_v, та я сам только на 2 семестре 1 курса =) но мне кажется всё довольно просто и примитивно меня только смущает while(*p!=*r&&*r||p==r) с таким условием можно запутаться =)
Rusl_v
 Аватар для Rusl_v
13 / 12 / 1
Регистрация: 22.12.2010
Сообщений: 67
24.01.2011, 22:19     Найти символ строки #19
Цитата Сообщение от JULIK- Посмотреть сообщение
Rusl_v, та я сам только на 2 семестре 1 курса =) но мне кажется всё довольно просто и примитивно меня только смущает while(*p!=*r&&*r||p==r) с таким условием можно запутаться =)
*p!=*r - выполняеться условие пока символы не равны
и
*r - выполняеться условие пока указатель не указывает на конец строки
или
p==r - выполняеться условие если адреса равны,т.е. p[0] всегда будет равно r[0]...
Как бэ вот так))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2011, 22:21     Найти символ строки
Еще ссылки по теме:

найти символ перехода строки C++
C++ Нужно найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!"
Вывести строки, в которых символ «*» встречается не менее 2 раз и заменить символ «*» на символ «_» C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
san4elllo
1 / 1 / 0
Регистрация: 08.11.2009
Сообщений: 36
24.01.2011, 22:21  [ТС]     Найти символ строки #20
Парни не отвлекайтесь))) Сделайте плиз что нибудь в стиле

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString str=Edit1->Text;
int i,j,c;
c=0;
for (i=1; i<=str.Length();i++)
c=0;
for (j=1; i<=str.Length();j++)
{
 if ((str[i]=str[j]) && (i!=j))
 c=c+1;
if (c=0)
str=str[i];
}
}
Но только чтобы работалооо...((((
Yandex
Объявления
24.01.2011, 22:21     Найти символ строки
Ответ Создать тему
Опции темы

Текущее время: 18:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru