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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Насютка
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 36
#1

Из предложения напечатать те символы, которые встречаются в нем ровно один раз - C++

04.03.2014, 21:32. Просмотров 696. Ответов 6
Метки нет (Все метки)

Из заданного предложения выбрать и напечатать те символы, которые встречаются в
нем ровно один раз (в том порядке, как они встречаются в тексте).

обеспечить ввод с клавиатуры исходного текста, строки или последовательности
символов, которые должны присваиваться в качестве значения символьного массива;
исключить использование встроенных подпрограмм, предназначенные для работы
со строками, за исключением подпрограммы strlen, которая определяет текущую длину
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2014, 21:32     Из предложения напечатать те символы, которые встречаются в нем ровно один раз
Посмотрите здесь:
C++ Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно один раз
Вывести только те слова сообщения, которые встречаются в нем ровно один раз C++
Вывести только те слова сообщения, которые встречаются в нем ровно один раз C++
C++ Из заданного текста выбрать те символы, которые встречаются в нём ровно один раз
Напечатать все слова , которые встречаются в исходной строке ровно один раз C++
C++ Выбрать из файла те символы, которые встречаются в нем только один раз
Нужно из строки символов удалить символы которые встречаются в нем только один раз C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,186
Завершенные тесты: 1
04.03.2014, 21:43     Из предложения напечатать те символы, которые встречаются в нем ровно один раз #2
C++
1
2
3
4
5
6
7
8
int freq[256]={0};
char str[256];
cin>>str;
for(int i=0;str[i];i++)
    freq[str[i]]++;// считаем к-во одинаковых символов
for(int i=0;i<256;i++)
    if(freq[i]==1) // если символ один
     cout<<(char)i;
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
04.03.2014, 22:35     Из предложения напечатать те символы, которые встречаются в нем ровно один раз #3
zss, Умный код, снимаю шляпу, но Вы бы прокоменнтировали бы его для ТС. Понять его сложно например если его спросить почему со строкой в 100 символов все можно написать так:
C++
1
2
int freq[256]={0};
char str[100];
но ни в кое случае не так:
C++
1
2
int freq[100]={0};
char str[100];
Хотя первые как минимум 32 символа пропустить можно, вряд ли пробел за символ можно считать...
Насютка
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 36
05.03.2014, 12:19  [ТС]     Из предложения напечатать те символы, которые встречаются в нем ровно один раз #4
У меня получилось так

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
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <locale.h>
const int N=100;
void input(char a[N])
{
    int i;
    char s;
    printf_s("Введите текст, оканчивающийся точкой.\n");
    for (i=0;(s=getchar())!='.';i++) a[i]=s;
    a[i]='\0';
}
void sravn(char a[N],char b[N])
{   
    int k,l=0;
    unsigned int i,j;
    for(i=0;i<(strlen(a));i++) 
    {
        k=0;
        for (j=0;j<strlen(a);j++) if (a[j]==a[i]) k++;
        if (k==1) {b[l]=a[i];l++;}
    }
    b[l]='\0';
}
void output(char b[N])
{
    unsigned int i;
    printf_s("\nСимволы, встречающиеся в тексте ровно один раз через пробел:\n");
    for (i=0;i<strlen(b);i++) printf_s("%c ",b[i]);
}
void main()
{
    char tx[N],fin[N];
 
    setlocale(LC_CTYPE, "Russian"); 
    input(tx);
    sravn(tx,fin);
    output(fin);
    _getch();
}
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
05.03.2014, 13:30     Из предложения напечатать те символы, которые встречаются в нем ровно один раз #5
Что то алгоритм сравнения ваш не пойму
Насютка
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 36
14.03.2014, 13:53  [ТС]     Из предложения напечатать те символы, которые встречаются в нем ровно один раз #6
zss, ваша программа слишком сложная и непонятная для меня, т.к. я еще многого не изучила
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2014, 10:25     Из предложения напечатать те символы, которые встречаются в нем ровно один раз
Еще ссылки по теме:
Выбрать из текста только те символы, которые встречаются в нем только один раз C++
Дан файл, содержащий текст на русском языке. Выбрать из него те символы, которые встречаются в нем только один раз, в том порядке, в котором они в C++
Из заданной символьной строки выбрать те символы, которые встречаются в ней только один раз, в том порядке, в котором они встречаются в тексте C++
Поменять знаки тех элементов массива, которые встречаются в нем один раз C++
Оставить в строке только те символы, которые встречаются один раз C++

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,186
Завершенные тесты: 1
15.03.2014, 10:25     Из предложения напечатать те символы, которые встречаются в нем ровно один раз #7
Цитата Сообщение от Насютка Посмотреть сообщение
ваша программа слишком сложная и непонятная для меня, т.к. я еще многого не изучила
Наоборот, проще некуда.
Надо только понять вот это:
C++
1
freq[str[i]]++;// считаем к-во одинаковых символов
str[i] - это не только i-я буква, но и ее код, если считать, что str[i] - это целое число.
поэтому, мы увеличиваем на 1 элемент массива freq с номером, равным коду символа.
В конце цикла в массиве окажутся числа, равные количеству встретившихся букв
с соответствующим кодом.
Останется только найти, где значения freq[i] равны единице.
Yandex
Объявления
15.03.2014, 10:25     Из предложения напечатать те символы, которые встречаются в нем ровно один раз
Ответ Создать тему
Опции темы

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