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

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

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

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

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

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

В тексте найти и вывести слово наибольшей длины, в котором нет заданной буквы C++
Строки. Удалить слова наибольшей длины C++
C++ Преобразовать строку, вырезав каждый символ "*" и повторив каждый символ, отличный символ "*"
C++ Матрица. Найти номер ее ряда с наибольшей суммой элементов и вывести данный ее номер, а также значение наибольшей суммы
C++ В матрице размерностью MxN найти номер строки с наибольшей суммой элементов и вывести данный номер, а также значение наибольшей суммы
C++ Необходимо найти и записать в стек числа, в состав которых входит 1 символ "*"
C++ Нужно найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!"
Перевести с Pasсal на C++ (Найти палиндром наибольшей длины) C++
C++ Преобразовать строку, удалив каждый символ "*" и повторив каждый символ, отличный от "*"
C++ Найти в заданном одномерном символьном массиве нечётный палиндром наибольшей длины
Найти в файле целых чисел группу положительных элементов наибольшей длины C++
Определить слова наибольшей и наименьшей длины и величину длины. C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
}
Но можно лучше, тут кнешно говнокод (там где строки дополняются знаками).
qwer1234
13 / 13 / 3
Регистрация: 30.10.2012
Сообщений: 463
11.02.2014, 21:47  [ТС]     Необходимо найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!" #3
rrrFer, а можно как то сделать эту задачу с использованием функций?
rangerx
1924 / 1533 / 139
Регистрация: 31.05.2009
Сообщений: 2,896
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';
   }
}
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;
}
rangerx
1924 / 1533 / 139
Регистрация: 31.05.2009
Сообщений: 2,896
12.02.2014, 02:40     Необходимо найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!" #6
Цитата Сообщение от qwer1234 Посмотреть сообщение
а можно как то сделать эту задачу с использованием функций?
Как минимум, можно реализовать функцию поиска строки наибольшей длины, остальное зависит от того, как по заданию нужно хранить строки, char[] или std::string.
Yandex
Объявления
12.02.2014, 02:40     Необходимо найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!"
Ответ Создать тему
Опции темы

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