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

Вывести все введенные строки. Отсортировать строки. Вывести самую длинную строку - C++

Восстановить пароль Регистрация
 
Sergey3096
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 35
04.02.2013, 23:43     Вывести все введенные строки. Отсортировать строки. Вывести самую длинную строку #1
Здравствуйте!!! Помогите пожалуйста, не могу разобраться с программой.
Ввести с клавиатуры строки, пока не будет введено 5 строк, которые не имеют подстрок "ав" и "12".
Вывести все введенные строки. Отсортировать строки. Вывести самую длинную строку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2013, 23:43     Вывести все введенные строки. Отсортировать строки. Вывести самую длинную строку
Посмотрите здесь:

6. Вводится 2 строки. Найти их самую длинную общую подстроку. C++
C++ В строку через пробел вводятся слова. Отсортировать введенные слова по алфавиту. Результат вывести в виде столбца.
C++ Вывести самую длинную последовательность букв, расположенных между двумя пробелами
C++ Открыть заданный текстовый файл, найти в нем и вывести на экран самую длинную строку
C++ Строки. Вывести на экран самую короткую группу из 0 и 1.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
05.02.2013, 00:24     Вывести все введенные строки. Отсортировать строки. Вывести самую длинную строку #2
Цитата Сообщение от Sergey3096 Посмотреть сообщение
Здравствуйте!!! Помогите пожалуйста, не могу разобраться с программой.
Ввести с клавиатуры строки, пока не будет введено 5 строк, которые не имеют подстрок "ав" и "12".
Вывести все введенные строки. Отсортировать строки. Вывести самую длинную строку.
отсортировать по длине? по алфавиту? собстна я написал для случая лексикографической сортировки (по алфавиту), если нужно по длине, то можно завести соответствующий предикат в sort

Добавлено через 15 минут
опс... решение забыл отписать

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
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
int main()
{
    int count=0;
    vector<string> sv;
    string maxs("");
    while (cin)
    {
        string s;
        getline(cin,s);
        sv.push_back(s);
        const string templ1("12"), templ2("ав");
        
        if (maxs.size()<s.size()) maxs=s;
        
        string::iterator it1,it2;
        it1=search(s.begin(),s.end(),templ1.begin(),templ1.end());
        it2=search(s.begin(),s.end(),templ2.begin(),templ2.end());
        if ((it1==s.end()) &&
         (it2==(s.end()))) ++count;
        if (count==5) break;
    }
    
    cout << endl;
    cout << "до сортировки "<< endl;
    for (vector<string>::iterator iter = sv.begin(); iter!=sv.end(); ++iter)
      cout << *iter <<endl;
    cout << endl;
      
    sort(sv.begin(),sv.end());
    
    cout << "после сортировки "<< endl;
    for (vector<string>::iterator iter = sv.begin(); iter!=sv.end(); ++iter)
      cout << *iter <<endl;
    
    cout << "самая длинная" << endl;
    cout << maxs << endl;
}
если нужно сортировать по длине строк, то поставьте предикат сравнивающий длину в sort(); и за одно будет можно выкинуть maxs как класс, т.к. тогда можно будет получить самую длиную строчку через sv[sv.size()]
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
05.02.2013, 00:31     Вывести все введенные строки. Отсортировать строки. Вывести самую длинную строку #3
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
#include <iostream>
#include <algorithm>
#include <string>
 
bool isGood(std::string inStr)
{
    if (inStr.find("ab") == std::string::npos && inStr.find("12") == std::string::npos)
        return true;
    return false;
}
 
int main()
{
    const int arrSize = 2;
    std::string strArr[arrSize];
    int counter = 0;
    while (counter < arrSize) {
        std::getline(std::cin, strArr[counter]);
        if (isGood(strArr[counter]))
            counter++;
    }
    for (counter ^= counter; counter < arrSize; counter++)
        std::cout << strArr[counter] << std::endl;
    std::sort(strArr, strArr + arrSize, [] (std::string maxLen, std::string next) -> bool {
        return maxLen.length() > next.length();
    });
    std::cout << "String: " << strArr[0] << " Length: " << strArr[0].length() << std::endl;
    return 0;
}
Sergey3096
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 35
05.02.2013, 01:36  [ТС]     Вывести все введенные строки. Отсортировать строки. Вывести самую длинную строку #4
Спасибо!
Sergey3096
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 35
05.02.2013, 01:36  [ТС]     Вывести все введенные строки. Отсортировать строки. Вывести самую длинную строку #5
Спасибо!
Sergey3096
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 35
14.02.2013, 16:39  [ТС]     Вывести все введенные строки. Отсортировать строки. Вывести самую длинную строку #6
не могу разобраться

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 <iostream>
#include <vector>
#include <algorithm>
#include<conio.h>
#include<iomanip>
#include<stdio.h>
using namespace std;
int main ()
{ setlocale(LC_CTYPE,"Russian");
    int count=0;
    vector<string> sv;
    string maxs("");
    while (cin)
    {
        string s;
        getline(cin,s);
        sv.push_back(s);
        const string templ1("12");
        const string templ2("av");
        if (maxs.size()<s.size()) maxs=s;
        
        string::iterator it1,it2;
        it1=search(s.begin(),s.end(),templ1.begin(),templ1.end());
        it2=search(s.begin(),s.end(),templ2.begin(),templ2.end());
        if ((it1==s.end()) &&
         (it2==(s.end()))) ++count;
        if (count==5) break;
    }
    
    cout << endl;
    cout << "до сортировки "<< endl;
    for (vector<string>::iterator iter = sv.begin(); iter!=sv.end(); ++iter)
      cout << *iter <<endl;
    cout << endl;
      
    sort(sv.begin(),sv.end());
    
    cout << "после сортировки"<< endl;
    for (vector<string>::iterator iter = sv.begin(); iter!=sv.end(); ++iter)
      cout << *iter <<endl;
    
    cout << "самая длиная" << endl;
    cout << maxs << endl;
 
 
getch();
return 0;
}
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
14.02.2013, 17:21     Вывести все введенные строки. Отсортировать строки. Вывести самую длинную строку #7
А вопрос то какой?
Sergey3096
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 35
14.02.2013, 17:24  [ТС]     Вывести все введенные строки. Отсортировать строки. Вывести самую длинную строку #8
мне надо каждую строку разобрать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2013, 18:21     Вывести все введенные строки. Отсортировать строки. Вывести самую длинную строку
Еще ссылки по теме:

C++ разбить строку в массиве по 3 символа, считать все комбинации, и вывести самую частую из них
Строки. Вывести на экран самую короткую группу из 0 и 1 C++
C++ Дано три строки. Определить самую длинную и короткую

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

Или воспользуйтесь поиском по форуму:
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
14.02.2013, 18:21     Вывести все введенные строки. Отсортировать строки. Вывести самую длинную строку #9
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
// Пример разбора строки на токены с использование функции strtok
 
#include <iostream>
#include <string>
#include <cstring>
#include <vector>
 
int main()
{
    std::string str;
    std::vector<std::string> words;
 
    std::getline(std::cin, str); // читаем строку
 
    // создаём массив для обработки (обычная строка std::string не поддерживает обработку)
    char* ci_str = new char[str.size()]; 
    strcpy(ci_str, str.c_str()); // копируем строку
 
    // парсируем на токены
    // *******************
    char* ptr = strtok(ci_str, " \n\b\t");
    words.push_back(ptr);
 
    ptr = strtok('\0', " \n\b\t"); // извлекаем следующий
    while (ptr) { // если токена нет (ptr = NULL) цикл заканчивается
        words.push_back(ptr); // записуем токен
        ptr = strtok('\0', " \n\b\t"); // извлекаем следующий
    }
 
    // отображаем результат
    for (std::vector<std::string>::size_type i = 0; i < words.size(); ++i)
        std::cout << words[i] << '\n';
 
    delete [] ci_str;
 
    return 0;
}
Yandex
Объявления
14.02.2013, 18:21     Вывести все введенные строки. Отсортировать строки. Вывести самую длинную строку
Ответ Создать тему
Опции темы

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