С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
qwer1234
13 / 13 / 3
Регистрация: 30.10.2012
Сообщений: 463
#1

Необходимо найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!" - C++

11.02.2014, 19:25. Просмотров 418. Ответов 5
Метки нет (Все метки)

Вводится массив строк символов. Необходимо найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!"
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2014, 19:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Необходимо найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!" (C++):

Нужно найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!" - C++
Вводится массив строк символов. Необходимо найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки,...

Найти в заданном одномерном символьном массиве нечётный палиндром наибольшей длины - C++
Дан одномерный символьный массив. Найти в нем нечетный палиндром наибольшей длины. Любой элемент массива может быть центром палиндрома....

В матрице размерностью MxN найти номер строки с наибольшей суммой элементов и вывести данный номер, а также значение наибольшей суммы - C++
Данная матрица размерности M x N. Найти номер ее строки с наибольшей суммой элементов и вывести данный номер, а также значение наибольшей...

Строки. Удалить слова наибольшей длины - C++
В строке удалить слова наибольшей длины. Оставшиеся слова записать через пробел. След-но пользователь должен сам вводить эти слова, а...

Перевести с Pasсal на C++ (Найти палиндром наибольшей длины) - C++
uses crt; var st, buf, max : string; function isPalind(st:string):boolean; var i:integer; begin isPalind := true; ...

Необходимо найти и записать в стек числа, в состав которых входит 1 символ "*" - C++
Необходимо написать алгоритм поиска в строке чисел. Условие: дан набор символов - строка произвольного размера. "Слова" в строке разделены...

5
rrrFer
Заблокирован
11.02.2014, 20:57 #2
Вот так ищешь строку наибольшей длины:
C++
1
2
tmp = *std::max_element(strings.begin(), strings.end(), 
        [](const std::string &a, const std::string &b) { return a.length() < b.length(); });
Вот так дополняешь строки до наибольшей длины восклицательными знаками:
C++
1
2
std::for_each(strings.begin(), strings.end(), 
        [=](std::string &a) { a += std::string(tmp.length() - a.length(), '!'); });
Добавлено через 2 минуты
Держи код целиком:
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 <vector>
#include <string>
#include <algorithm>
#include <iostream>
int main() {
    std::vector<std::string> strings;
    std::string tmp;
    
    strings.push_back("asd");
    strings.push_back("asghdd");
    strings.push_back("123");
    
    tmp = *std::max_element(strings.begin(), strings.end(), 
        [](const std::string &a, const std::string &b) { return a.length() < b.length(); });
        
    std::cout << tmp << std::endl;
    
    std::for_each(strings.begin(), strings.end(), 
        [=](std::string &a) { a += std::string(tmp.length() - a.length(), '!'); });
    
    for (auto t : strings) 
        std::cout << t << std::endl;
}
Но можно лучше, тут кнешно говнокод (там где строки дополняются знаками).
1
qwer1234
13 / 13 / 3
Регистрация: 30.10.2012
Сообщений: 463
11.02.2014, 21:47  [ТС] #3
rrrFer, а можно как то сделать эту задачу с использованием функций?
0
rangerx
1937 / 1546 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
11.02.2014, 22: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
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
 
using namespace std;
 
int main()
{   
   vector<string> v;
   for(string s; getline(cin, s);)
      v.push_back(s);
 
   auto n = max_element(begin(v), end(v),
      [](const string& a, const string& b){ return a.size() < b.size(); })->size();
 
   cout << '\n';
   for(auto& s : v)
   {
      auto m = s.size();
      if(n > m) s.append(n - m, '!');
      cout << s << '\n';
   }
}
1
rrrFer
Заблокирован
11.02.2014, 22:23 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от qwer1234 Посмотреть сообщение
rrrFer, а можно как то сделать эту задачу с использованием функций?
Можно: (не проверял).
Код
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>

bool less(const std::string &a, const std::string &b) { return a.length() < b.length(); } // функция

int main() {
    std::vector<std::string> strings;
    std::string tmp;
    
    strings.push_back("asd");
    strings.push_back("asghdd");
    strings.push_back("123");
    
    tmp = *std::max_element(strings.begin(), strings.end(), less);
        
    std::cout << tmp << std::endl;
    
    std::for_each(strings.begin(), strings.end(), 
        [=](std::string &a) { a += std::string(tmp.length() - a.length(), '!'); });
    
    for (auto t : strings) 
        std::cout << t << std::endl;
}
1
rangerx
1937 / 1546 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
12.02.2014, 02:40 #6
Цитата Сообщение от qwer1234 Посмотреть сообщение
а можно как то сделать эту задачу с использованием функций?
Как минимум, можно реализовать функцию поиска строки наибольшей длины, остальное зависит от того, как по заданию нужно хранить строки, char[] или std::string.
0
12.02.2014, 02:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2014, 02:40
Привет! Вот еще темы с ответами:

Матрица. Найти номер ее ряда с наибольшей суммой элементов и вывести данный ее номер, а также значение наибольшей суммы - C++
Дана матрица размерности M x N. Найти номер ее ряда з найбольшою суммой элементов и вивести даный ее номер а также значение ...

Преобразовать строку, вырезав каждый символ "*" и повторив каждый символ, отличный символ "*" - C++
Здравствуйте,уважаемые форумчане!Помогите пожалуйста с написанием программ-а то завтра сдать уже надо... Препод ставит такие требования: ...

Найти в файле целых чисел группу положительных элементов наибольшей длины - C++
помогите пожалуйста , зарание благодарен !!!Создать двоичный файл и записать в него n целых чисел. Найти в нем группу положительных...

В тексте найти и вывести слово наибольшей длины, в котором нет заданной буквы - C++
Помогите пожалуйста. Дуб дубом, а завтра сдавать надо. Надо на писать на простом си, желательно с парой комментариев(


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

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

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