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

Найти максимальную сумму 3 чисел в каждой строке файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перечислить дни, на которые приходится пятница 13-го числа http://www.cyberforum.ru/cpp-beginners/thread666733.html
компилятор усиленно ругается на vector есть и другие мелкие ошибки.. не могу разобраться,объясните.. *Перечислить дни, на которые приходится пятница 13-го числа в заданном диапазоне лет из интервала 1901-2099 г.г.*/ #include "stdafx.h" #include <cstdlib> #include <iostream>
C++ Написать защиту от ввода чисел с плавающей точкой, отрицательных чисел и символов Привет всем! Вот пишу программу, преподаватель сказал чтобы написал защиту от ввода чисел с плавающей точкой, отрицательных, символов. В общем нужны по условию задачи только натуральные числа. Как это осуществить? Вот моя защита от отр. чисел: cin >> a; while (1) { if (a>0) {cout <<"vvedite granicy b\n";break;} else {cout << "Ne naturalnoe chislo\n" << "Povtorite vvod\n";... http://www.cyberforum.ru/cpp-beginners/thread666723.html
вывод массива gdi+ C++
как вывести (нарисовать) на экран цифры, которые в цикле увеличиваются, т.е. сначала вывести 10, потом 20, 30 и т.д. , есть ли для этого какая то функция? Среда разработки Visual Studio 2008
C++ Найти все пары дружественных чисел, не превосходящих заданного натурального числа N
Два натуральных числа называются дружественными, если каждое из них равно сумме всех делителей другого, кроме самого этого числа. Найти все пары дружественных чисел, не превосходящих заданного натурального числа N.
C++ MFC книги http://www.cyberforum.ru/cpp-beginners/thread666695.html
Доброго времени суток. Посоветуйте какие-нибудь хорошие книги по MFC для новичка. И лучше всего, чтобы их можно было бы скачать) Т.к. на mfc у нас отведено всего 2 недели (такая уж система образования), естественно я не собираюсь ничего покупать:) Благодарю.
C++ Работа с реестром Доброго времени суток. Читаю в MSDN про работу с реестром и, собственно, начал с компиляции примера кода, по этому адресу. // QueryKey - Enumerates the subkeys of key and its associated values. // hKey - Key whose subkeys and values are to be enumerated. #include <windows.h> #include <stdio.h> #include <tchar.h> #define MAX_KEY_LENGTH 255 #define MAX_VALUE_NAME 16383 подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
09.10.2012, 13:35     Найти максимальную сумму 3 чисел в каждой строке файла
maSt, с учётом всех нападок в мой адрес выше, я решил сделать код ещё лаконичней
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include <string>
#include <vector>
#include <sstream>
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
 
//ÄóìГ*Гѕ ГїГ±Г*Г® Г·ГІГ® áóäåò õðГ*Г*ГЁГІГј Г¤Г*Г*Г*Г*Гї ñòðêóòóðГ*
struct fData
{
    string digits;
    string symbols;
};
//ÔóГ*êöèÿ âîçâðГ*Г№Г*ГҐГІ ñóììó öèôð ГЁГ§ ïîëÿ digits
double SumDigitsInfData(fData ptr, vector<double> &values, vector<char> &symbols);
 
int main()
{
    bool bFlag = true;//ÔëГ*ГЈ ГіГ±ГЇГҐГёГ*îãî Г·ГІГҐГ*ГЁГї
    string line;//ÑòðîêГ* Г± Г¤Г*Г*Г*ìè ГЁГ§ ГґГ*éëГ*
    
    fData * pList = NULL;//ГіГЄГ*Г§Г*òåëü Г*Г* äèГ*Г*ìè÷åñêèé Г¬Г*Г±Г±ГЁГў ñòðóêòóð fData
    int iRowMaxSum= -1;//Áóäåò õðГ*Г*ГЁГІГј ГЁГ*äåêñ ñòðêîè Г± Г¬Г*ГЄГ± ñóììîé öèôð
    int i;//Ñ÷¸ò÷èê
    int nPairs = 0;//×èñëî ГЇГ*Г° ñòðîê
    
    double maxSum = 0;
    vector<double> RowValues;//âåêòîð äëÿ Г§Г*Г*Г·ГҐГ*ГЁГ© ñòðîêè digits
    vector  <char> RowSymbols;//âåêòîð äëÿ ñèìâîëîâ ñòðîêè
    ofstream ofs;//ÓêГ*Г§Г*òåëü Г*Г* ïîòîê Г§Г*ГЇГЁГ±ГЁ ìû ïðîèГ*èöèГ*ëèçèðóåì ГҐГЈГ® ïîçæå
    ifstream ifs("input.txt");
    if(!ifs.is_open())
        cout<<"Error open input.txt"<<endl;
    else
    if(!(ifs>>nPairs))
        cout<<"Incorrect file format"<<endl;
    else
    if(!(pList = new fData[nPairs]))
        cout<<"Allocation memory error"<<endl;
    else
    {
        ifs.get();
        for(i = 0; i < nPairs && !ifs.eof() && bFlag; i++)
        {
            if(!getline(ifs,pList[i].digits)) //Ïðîáóåì Г±Г·ГЁГІГ*ГІГј ñòðîêó öèôð
                bFlag = false;
            else
            if(!getline(ifs,pList[i].symbols))//Ïðîáóåì Г±Г·ГЁГІГ*ГІГј ñòðîêó ñèìâîëîâ
                bFlag = false;
        }
        if(!bFlag)
            cout<<"During parsing file errors occured"<<endl;
        else
        {
            iRowMaxSum = 0;
            //Г€Г*èöèГ*ëèçèðóåì maxSum ñóììîé öèôð ïåðâîé ñòðîêè
            ofs.open("output.txt");
            if(!ofs.is_open())
                cout<<"Error creation output.txt"<<endl;
            else
            {
                for(i = 0; i < nPairs && bFlag; i++)
                {
                    if(SumDigitsInfData(pList[iRowMaxSum], RowValues, RowSymbols) < SumDigitsInfData(pList[i],RowValues, RowSymbols))
                        iRowMaxSum = i;
                    
                    cout<<"\tROW # "<<i + 1<<endl;
                    cout<<"ALLDigits : "<<pList[i].digits<<endl;
                    cout<<"ALLSymbols: "<<pList[i].symbols<<endl;
                    cout<<"Sum    : "<<SumDigitsInfData(pList[i], RowValues, RowSymbols)<<endl;
                    cout<<"Numbers: "<<RowValues[0] <<" + "<<RowValues[1] <<" + "<<RowValues[2]<<endl;
                    cout<<"Symbols: "<<RowSymbols[0]<<" + "<<RowSymbols[1]<<" + "<<RowSymbols[2]<<endl;
                    //ГЏГЁГёГҐГ¬ Гў ГґГ*éë
                    ofs<<"\tROW # "<<i + 1<<endl;
                    ofs<<"ALLDigits : "<<pList[i].digits<<endl;
                    ofs<<"ALLSymbols: "<<pList[i].symbols<<endl;
                    ofs<<"Sum    : "<<SumDigitsInfData(pList[i], RowValues, RowSymbols)<<endl;
                    ofs<<"Numbers: "<<RowValues[0] <<" + "<<RowValues[1] <<" + "<<RowValues[2]<<endl;
                    ofs<<"Symbols: "<<RowSymbols[0]<<" + "<<RowSymbols[1]<<" + "<<RowSymbols[2]<<endl;
                }
                maxSum = SumDigitsInfData(pList[iRowMaxSum], RowValues, RowSymbols);
                cout<<"\tPair with max sum 1-st digits : "<<iRowMaxSum + 1<<endl;
                cout<<"Digits : "<<pList[iRowMaxSum].digits<<endl;
                cout<<"Symbols: "<<pList[iRowMaxSum].symbols<<endl;
                cout<<"Sum    : "<<maxSum<<endl;
                cout<<"Numbers: "<<RowValues[0]<<" + "<<RowValues[1]<<" + "<<RowValues[2]<<endl;
                cout<<"Symbols:  "<<RowSymbols[0]<<" + "<<RowSymbols[1]<<" + "<<RowSymbols[2]<<endl;
 
                //ГЏГЁГёГҐГ¬ Гў ГґГ*éë
                ofs<<"Number of Pair with max sum 1-st digits : "<<iRowMaxSum + 1<<endl;
                ofs<<"Digits : "<<pList[iRowMaxSum].digits<<endl;
                ofs<<"Symbols: "<<pList[iRowMaxSum].symbols<<endl;
                ofs<<"Sum    : "<<maxSum<<endl;
                ofs<<"Numbers: "<<RowValues[0]<<" + "<<RowValues[1]<<" + "<<RowValues[2]<<endl;
                ofs<<"Symbols: "<<RowSymbols[0]<<" + "<<RowSymbols[1]<<" + "<<RowSymbols[2]<<endl;
            }
        }
        delete [] pList;//Г—ГЁГ±ГІГЄГ* ГЇГ*ìÿòè
    }
    ifs.close();
    ofs.close();
    return 0;
}
 
bool bComp(pair<double, char> left, pair<double, char> right)
{
    return left.first > right.first;
}
 
double SumDigitsInfData(fData ptr, vector<double> &values, vector<char> &symbols)
{
    stringstream ss;
    ss.str(ptr.digits);
    char  symbol = 0; 
    double value = 0;
    int i = 0;
    vector< pair<double, char> > pData;
    for(i = 0; !ss.eof(); i++)
    {
        if(ss>>value)
            pData.push_back(make_pair(value, ' '));
    }
    ss.clear();
    ss.seekg(0,ios::beg);
    ss.str(ptr.symbols);
    for(i = 0; i < values.size(); i++)
    {
        if(ss>>symbol)
            pData[i].second = symbol;
    }
     values.clear();
    symbols.clear();
    sort(pData.begin(), pData.end(), bComp);
    for(i = 0; i < pData.size(); i++)
    {
         values.push_back(pData[i].first);
        symbols.push_back(pData[i].second);
    }
    pData.clear();
    return values[0] + values[1] + values[2];
}
Миниатюры
Найти максимальную сумму 3 чисел в каждой строке файла  
 
Текущее время: 08:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru