Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
tatianlv
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 19
#1

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

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

Помогите, пожалуйста!
Написать программу, которая читает с клавиатуры строку символов. Необходимо вывести на экран все различные символы строки.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2012, 20:49
Ответы с готовыми решениями:

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

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

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

Вывести на экран в первой строке нечетные символы, во второй четные символы исходной строки
Помогите написать 3 программы. (на С или С++) 1. Вывести на экран в первой...

Цикл: Вывести на экран все различные элементы набора данных по возрастанию
Дано целое число N и набор из N целых чисел, упорядоченный по возрастанию....

13
Drum and C++
12 / 14 / 2
Регистрация: 03.08.2011
Сообщений: 213
07.03.2012, 21:18 #2
это cin.getline(buf , 256) ???
0
tatianlv
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 19
07.03.2012, 21:31  [ТС] #3
да...
0
Whiteha
Программист
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
tatianlv
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 19
07.03.2012, 21:47  [ТС] #5
а если не cin.getline(buf , 256)?
0
darkknight2008
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
07.03.2012, 21:51 #6
То можно использовать scanf - про него читай в MSDN. А можно вообще посимвольно читать в цикле функцией getchar пока не будет нажат Enter

Добавлено через 1 минуту
Еще можно использовать функцию gets, либо... да еще кучу вариантов придумывать можно. Берется просто самый удобный и все. предложенный выше самый оптимальный.
1
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
07.03.2012, 22:50 #7
Цитата Сообщение от tatianlv Посмотреть сообщение
Необходимо вывести на экран все различные символы строки.
http://www.cplusplus.com/reference/algorithm/unique/
1
Whiteha
Программист
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
tatianlv
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 19
08.03.2012, 01:24  [ТС] #9
спасибо большое!
0
Dekio
Фрилансер
Эксперт С++
5838 / 1219 / 499
Регистрация: 23.11.2010
Сообщений: 3,377
Записей в блоге: 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/508fe1a774c0c7f10d977f4e41b34e7e
0
tatianlv
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
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
08.03.2012, 14:28 #12
tatianlv, это новый стандарт, который не поддерживается Вашим компилятором. Либо исправляйте(здесь легко убрать), либо обновите компилятор.
0
rangerx
1941 / 1550 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
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
tatianlv
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 19
08.03.2012, 23:37  [ТС] #14
спасибо большое!!!!!!!!!!!вы мне очень сильно помогли!
0
08.03.2012, 23:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2012, 23:37

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

Вывести на экран все символы, расположенные внутри скобок
Прошу помочь решить задачки!:(очень нужно (Билет №22) Дана строка, среди...

Двоичные файлы.Дано предложение.Создать файл и вывести в него все символы этого предложения,отличные от знаков препинания.Вывести содержимое на экран.
плллиииз =)


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru