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

Дан текстовый файл ( определить слово с наибольшим количеством букв и вставить его на начало и конец строки) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дискретное преобразование Фурье http://www.cyberforum.ru/cpp-beginners/thread859110.html
Добрый день! Общем задание (2 картинки). Я знаю, не сложно. Вот код, который я написал. #include <iostream> #include <cmath> #include <complex> #include <iomanip> using namespace std; const double PI = 3.14159265; void out_func_value (double f_arr,const int Ngurnal,const double T,const double delta);
C++ Класс триугольников Уважемые юзеры) Прошу помощи при написании проги: Нужно создать класс триугольников. Атрибуты задать на свое усмотрение. Зарание благодарен. http://www.cyberforum.ru/cpp-beginners/thread859085.html
C++ Нужно перепрыгнуть строку
Проблема такая, есть скрипт он должен открывать клиент игры, а за место этого он открывает браузер. #ifdef _KOR_WEBLAUNCHER_ #ifdef _GMTOOL_ if( lpCmdLine ) { FILE* fpLog = NULL; fpLog = fopen( "./ClientStartLog.txt", "a+" ); if( fpLog ) {
Найти среднее арифметическое элементов для каждой строки заданного двухмерного массива C++
Найти среднее арифметическое элементов для каждой строки заданного двухмерного массива. Значения элементов массива ввести с клавиатуры
C++ Написать программу формировании и вывода массива размером 3х6 http://www.cyberforum.ru/cpp-beginners/thread858992.html
Напишите программу формировании и вывода массива размером 3х6, каждые три последовательных элемента в строке которого составлены по следующему правилу: 1-й - равен квадрату суммы текущих индексов; 2-й - равен случайному числу; 3-й - равен полусумме двух предыдущих элементов
C++ выбор ответа В двухмерном массиве размером n x m хранятся результаты опроса n человек на m вопросов. Ответами на вопросы являются слова «Да», «Нет», «не знаю». Написать программу, указывающую для каждого вопроса проценты ответов «Да», «Нет», «не знаю». подробнее

Показать сообщение отдельно
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
09.05.2013, 13:01     Дан текстовый файл ( определить слово с наибольшим количеством букв и вставить его на начало и конец строки)
Конечно, название вашей функции порадовало.
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
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <iterator>
 
typedef std::istream_iterator<std::string> ii;
 
int main()
{
    std::string line;
 
    std::getline(std::cin, line);
 
    std::stringstream str(line);
    std::vector<std::string> v((ii(str)), ii());
 
    std::vector<std::string>::const_iterator max_word = v.begin();
    for (std::vector<std::string>::const_iterator curr_word = v.begin() + 1; curr_word != v.end(); ++curr_word )
    {
        if (max_word->size() < curr_word->size())
        {
            max_word = curr_word;
        }
    }
    std::string new_word = *max_word;
    new_word += ' ';
    new_word += line;
    new_word += ' ';
    new_word += *max_word;
    std::cout << new_word << std::endl;
}
Добавлено через 19 минут
Не заметил, что нужны файлы:
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
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <iterator>
 
typedef std::istream_iterator<std::string> ii;
 
int main()
{
    std::string file_in, file_out;
    std::cout << "Input: ";
    std::cin >> file_in;
    std::cout << "Output: ";
    std::cin >> file_out;
 
 
    std::ifstream in(file_in.c_str(), std::ios::in);
    std::ofstream out(file_out.c_str(), std::ios::out);
    if (!in || !out)
    {
        std::cerr << "couldn't open file(s) " << std::endl;
        return 1;
    }
 
    std::string line;
    while (std::getline(in, line))
    {
        if (line.size() > 0)
        {
            std::stringstream str(line);
            std::vector<std::string> v((ii(str)), ii());
 
            std::vector<std::string>::const_iterator max_word = v.begin();
            for (std::vector<std::string>::const_iterator curr_word = v.begin() + 1; curr_word != v.end(); ++curr_word )
            {
                if (max_word->size() < curr_word->size())
                {
                    max_word = curr_word;
                }
            }
            std::string new_word = *max_word;
            new_word += ' ';
            new_word += line;
            new_word += ' ';
            new_word += *max_word;
            out << new_word << std::endl;
        }
        else
        {
            out << "\n";
        }
    }
 
    in.close(); out.close();
}
Добавлено через 9 часов 44 минуты
ещё как вариант с аргументами из командной строки:
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
49
50
51
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <iterator>
#include <algorithm>
 
bool cmp(const std::string& left, const std::string& right)
{
    return left.size() < right.size();
}
 
typedef std::istream_iterator<std::string> ii;
 
int main(int argc, const char* argv[])
{
    std::ifstream in(argv[1], std::ios::in);
    std::ofstream out(argv[2], std::ios::out);
    if (!in || !out)
    {
        std::cerr << "couldn't open file(s) " << std::endl;
        return 1;
    }
 
    std::string line;
    while (std::getline(in, line))
    {
        if (line.size() > 0)
        {
            std::stringstream str(line);
            std::vector<std::string> v((ii(str)), ii());
 
            std::vector<std::string>::const_iterator max_word
                = std::max_element(v.begin(), v.end(), cmp);
 
            std::string new_word = *max_word;
            new_word += ' ';
            new_word += line;
            new_word += ' ';
            new_word += *max_word;
            out << new_word << std::endl;
        }
        else
        {
            out << "\n";
        }
    }
 
    in.close(); out.close();
}
 
Текущее время: 17:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru