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

Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую. - C++

Восстановить пароль Регистрация
 
Alexandr-
0 / 0 / 0
Регистрация: 15.09.2012
Сообщений: 78
31.10.2013, 20:27     Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую. #1
Даны две строки. Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую.

В задании не могу сделать сортировку... Помогите с кодом кому не сложно...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
using namespace std;
int main () { int i,k=0;
char str1[200]; char str2[200];
cout<<"vvedite stroku 1"<<endl;
   cin.getline(str1, sizeof(str1));
cout<<"vvedite stroku 2"<<endl;
   cin.getline(str2, sizeof(str2)); //вводим 2 строки
 
cout<<"vivod 2 strok"<<endl;
  cout<<endl<<str1<<endl;
 cout<<str2<<endl; //вывод 2 строк
 
for (i=0;str1[i]!='\0';i++) k++;
cout<<"razmer 1 stroki: "<<k<<endl; //размер 1 строки
 
for(i=0;i<=k;i++)
cout<<str1[i]<<endl; //вывод букв 1 строки
 
cout<<"rabotaet";
system("pause");
return 0; }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2013, 20:27     Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую.
Посмотрите здесь:

C++ Напечатать в алфавитном порядке все буквы, которые входят в текст по одному разу
Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу C++
C++ Вывести на экран в алфавитном порядке все символы которые входят в массив по одному разу
C++ Напечатать в алфавитном порядке буквы,входящие в заданный текст по одному разу
в C++ Даны два слова.Вывести все общие буквы этих слов по одному разу. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
31.10.2013, 21:23     Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую. #2
Цитата Сообщение от Alexandr- Посмотреть сообщение
Даны две строки. Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую.
В задании не могу сделать сортировку... Помогите с кодом кому не сложно...
Держи
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
#include <string>
#include <iostream>
using namespace std;
 
int main()
{
    size_t i, j;
    string str1 = "ab125cdEfKOWg";
    string str2 = "rtydeb";
    string sout;
 
    cout<<"str1 : "<<str1<<endl;
    cout<<"str2 : "<<str2<<endl;
    for( i = 0; i < str1.length(); i++ )
    {
        if( isalpha(str1[i]) )//ñèìâîë ÿâëÿåòñÿ áóêâîé?
        if( islower(str1[i]) )//ñòðî÷Г*Г*Гї ëè ГЎГіГЄГўГ*
        if( str2.find(str1[i], 0) == string::npos )//Èùåì ñèìâîë Г*ГҐ âõîäÿùèé ГўГ® 2-ГіГѕ ñòðîêó
        if( sout.find(str1[i], 0) == string::npos )//ÂûõîäГ*Г*Гї ñòðîêГ* Г*ГҐ ñîäåðæèò ГіГЄГ*Г§Г*Г*Г*ûé ñèìâîë
            sout += str1[i];
    }
 
    //ÑîðòèðîâêГ*
    for( i = 0;     i < sout.length(); i++ )
    for( j = i + 1; j < sout.length(); j++ )
    {
        if( sout[i] < sout[j] )
            swap(sout[i], sout[j]);
    }
    cout<<"sout : "<<sout<<endl;
    cin.get();
    return 0;
}
Миниатюры
Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую.  
-=ЮрА=-
Заблокирован
Автор FAQ
31.10.2013, 21:24     Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую. #3
Проверка здесь
http://codepad.org/MHZN5Uyp
Output:
str1 : ab125cdEfKOWg
str2 : rtydeb
sout : gfca
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
01.11.2013, 02:18     Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую. #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <set>
#include <string>
#include <cctype>
#include <algorithm>
#include <iterator>
 
int main()
{
    const std::string str1 = "eniki beniki eli vareniki", str2 = "orange";
    const std::set<char> s1(str1.begin(), str1.end()), s2(str2.begin(), str2.end());
    std::copy_if(s1.rbegin(), s1.rend(), std::ostream_iterator<char>(std::cout),
        [&s2](const char x) { return islower(x) && s2.find(x) == s2.end(); });
}
Нет нужды проверять isalpha, islower это итак осуществит
Alexandr-
0 / 0 / 0
Регистрация: 15.09.2012
Сообщений: 78
01.11.2013, 22:43  [ТС]     Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую. #5
Объясните пожалуйста подробнее, что означает строка:
C++
1
if( sout.find(str1[i], 0) == string::npos )
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
01.11.2013, 22:49     Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую. #6
если в строке sount начиная с начала (поэтому 0) не содержится буква str1[i] (если не содержится, то функция string.find возвращает константу string::npos) то

Добавлено через 17 секунд
http://www.cplusplus.com/reference/string/string/find/
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2013, 23:00     Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую.
Еще ссылки по теме:

Дан текст из строчных латинских букв, за которым следует точка. Напечатать: б) все буквы, входящие в текст по одному разу; C++
Оставить первую половину текста без изменений, а вторую записать в обратном порядке C++
C++ Вывести на экран в алфавитном порядке все символы, которые входят в заданный массив по одному разу

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
01.11.2013, 23:00     Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую. #7
Alexandr-, если на пальцах, то find это strstr и strchr в одном флаконе.
Мнемокод
C++
1
2
3
4
5
6
7
8
9
char str[] = "some text";
if( strchr(str, 'p') )
{
     //ветвь find != string::npos
}
else
{
     //ветвь string::npos
}
Спецификация по данному методу http://www.cplusplus.com/reference/string/string/find/
Yandex
Объявления
01.11.2013, 23:00     Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую.
Ответ Создать тему
Опции темы

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