Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 19
1

Необходимо вывести на экран все различные символы строки

07.03.2012, 20:49. Показов 4003. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста!
Написать программу, которая читает с клавиатуры строку символов. Необходимо вывести на экран все различные символы строки.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.03.2012, 20:49
Ответы с готовыми решениями:

Вывести на экран все различные слова из строки
Вывести на экран все различные слова из S, подсчитать количество всех слов и всех различных слов в...

Вывести на экран все различные буквы строки с использованием strchr
Как можно применить strchr для вывода всех различных букв строки? Вот сделал без этой функции, все...

Необходимо из строки символов вывести на экран символы с минимальным и максимальным кодами по таблице ASCII
Доброго времени суток. Помогите пожалуйста. Необходимо из строки символов вывести на экран символы...

Удалить все символы из строки, и вывести строку на экран
необходимо удалить все символы из строки, и вывести строку на экран Будет ли работать? ...

13
12 / 14 / 2
Регистрация: 03.08.2011
Сообщений: 213
07.03.2012, 21:18 2
это cin.getline(buf , 256) ???
0
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 19
07.03.2012, 21:31  [ТС] 3
да...
0
Программист
33 / 33 / 8
Регистрация: 08.07.2011
Сообщений: 190
Записей в блоге: 1
07.03.2012, 21:39 4
Вариантов куча, вот один зубодробительный
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <algorithm>  
#include <iostream>  
#include <string>
#include <set>
using namespace std; 
 
void main() 
{
    string str;
    getline(cin, str);
    set<char> res_str;
    for_each(str.begin(), str.end(), [&] (char i)->bool {res_str.insert(i); return 1;});
    for_each(res_str.begin(), res_str.end(), [&] (char i)->bool {cout << i; return 1;});
    cout << endl;
    system("pause");
}
1
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 19
07.03.2012, 21:47  [ТС] 5
а если не cin.getline(buf , 256)?
0
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
07.03.2012, 21:51 6
То можно использовать scanf - про него читай в MSDN. А можно вообще посимвольно читать в цикле функцией getchar пока не будет нажат Enter

Добавлено через 1 минуту
Еще можно использовать функцию gets, либо... да еще кучу вариантов придумывать можно. Берется просто самый удобный и все. предложенный выше самый оптимальный.
1
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
07.03.2012, 22:50 7
Цитата Сообщение от tatianlv Посмотреть сообщение
Необходимо вывести на экран все различные символы строки.
http://www.cplusplus.com/refer... hm/unique/
1
Программист
33 / 33 / 8
Регистрация: 08.07.2011
Сообщений: 190
Записей в блоге: 1
07.03.2012, 23:38 8
Слона то и проглядел, нужно ведь на C было решить...
Вот почти сишный вариант:
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
39
40
41
42
43
44
45
46
47
48
#include <cstdio>
#include <cstring>
#include <malloc.h>
#include <conio.h> // не из сишного стандарта, нужна для getch()
 
unsigned answ_str_len(1); // длина пустой строки уникальных символов
 
// Функция собирает коллекцию уникальных символов
char check_char(char*& char_vec, char push_ch)          // char*& - допустимо ли в Си?
{
    char answ = -1;
 
    if (char_vec == NULL) 
    {
        char_vec = (char*) malloc(sizeof(char) * answ_str_len);
        char_vec[0] = '\0';
    }
 
    for (unsigned i(0); i < answ_str_len; ++i)
    {
        if (push_ch == char_vec[i])
        {
            return answ;
        }
    }
    ++answ_str_len;
    char_vec = (char*)realloc(char_vec, sizeof(char) * (answ_str_len));
    char_vec[answ_str_len - 2] = push_ch;
    char_vec[answ_str_len - 1] = '\0';
    answ = push_ch;
    return answ;
}
 
int main() 
{
    char *str(NULL), *answ_str(NULL);
 
    str = (char*) calloc(1024, sizeof(char));
 
    printf("Input your string: ");
    gets(str);
 
    for (unsigned k(0); k < strlen(str); ++k)
        if(str[k] != ' ') check_char(answ_str, str[k]); 
 
    printf("\nAnswer string = %s\n", answ_str);
    getch(); // для остановки программы перед выходом
}
1
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 19
08.03.2012, 01:24  [ТС] 9
спасибо большое!
0
Фрилансер
Эксперт С++
5845 / 1226 / 499
Регистрация: 23.11.2010
Сообщений: 3,375
Записей в блоге: 1
08.03.2012, 12:26 10
Лучший ответ Сообщение было отмечено как решение

Решение

Учитесь


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <set>
 
int main()
{
    std::string Str = "hello, this is my input string";
  //  std::getline(std::cin, Str);
    std::set <char> Set(Str.begin(), Str.end());
    for(char i: Set)
        std::cout<<i<<" ";
    return 0;
}
http://liveworkspace.org/code/... 4e41b34e7e
0
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 19
08.03.2012, 14:27  [ТС] 11
Цитата Сообщение от Dekio Посмотреть сообщение
for(char i: Set)
Здесь мне выдаёт ошибку error C2143: syntax error : missing ',' before ':'
когда исправляешь, то всё равно не работает
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
08.03.2012, 14:28 12
tatianlv, это новый стандарт, который не поддерживается Вашим компилятором. Либо исправляйте(здесь легко убрать), либо обновите компилятор.
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
08.03.2012, 20:18 13
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <string.h>
 
int main(void)
{
   char* p;
   char s[256] = "";
 
   printf("string: ");
   scanf("%255[^\n]", s);    
 
   for(p = s; *p; ++p)               
      if(!strchr(p + 1, *p))                         
     printf("%c ", *p);   
 
   putchar('\n');
 
   return 0;
}
1
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 19
08.03.2012, 23:37  [ТС] 14
спасибо большое!!!!!!!!!!!вы мне очень сильно помогли!
0
08.03.2012, 23:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2012, 23:37
Помогаю со студенческими работами здесь

Вывести на экран все символы строки кроме букв
дана строка вывести на экран символы кроме букв

Строки. Вывести на экран все символы, расположенные внутри скобок
Дана строка символов, среди которых есть одна открывающаяся и одна закрывающаяся скобка. Вывести на...

Строки. Вывести на экран все символы, расположенные внутри скобок
дана строка символов,среди которых есть одна открывающаяся и одна закрывающаяся скобка.вывести на...

Вывести на экран все символы цифр заданного текстовой строки
Вывести на экран все символы цифр заданного текстовой строки. Вот мой код к этой программе...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru