Форум программистов, компьютерный форум 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, 10:19     Найти максимальную сумму 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
#include <string>
#include <sstream>
#include <fstream>
#include <iostream>
using namespace std;
 
//Думаю ясно что будет хранить данная стркутура
struct fData
{
    string digits;
    string symbols;
};
//Функция возвращает сумму цифр из поля digits
double SumDigitsInfData(fData ptr);
//Функция производит запись в поток ofstream три первіх значения из полей 
//string digits;
//string symbols;
bool Write3FirstFields(ofstream &ofs, fData ptr);
 
int main()
{
    bool bFlag = true;//Флаг успешного чтения
    string line;//Строка с даннми из файла
    int nPairs = 0;//Число пар строк
    fData * pList = NULL;//указатель на динамический массив структур fData
    double maxSum =  0;//Думаю тоже ясно - макс сумма первых 3-х цифр
    int iRowMaxSum= -1;//Будет хранить индекс стркои с макс суммой цифр
    int i;//Счётчик
    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;
            else
            {
                cout<<"\tPair # "<<i + 1<<endl;
                cout<<"Digits : "<<pList[i].digits<<endl;
                cout<<"Symbols: "<<pList[i].symbols<<endl;
            }
        }
        if(!bFlag)
            cout<<"During parsing file errors occured"<<endl;
        else
        {
            iRowMaxSum = 0;
            //Инициализируем maxSum суммой цифр первой строки
            maxSum = SumDigitsInfData(pList[iRowMaxSum]);
            for(i = 1; i < nPairs && bFlag; i++)
            {
                if(maxSum < SumDigitsInfData(pList[i]))
                {
                    iRowMaxSum = i;
                    maxSum = SumDigitsInfData(pList[i]);
                }
            }
            cout<<"Number of Pair 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;
            ofs.open("output.txt");
            if(!ofs.is_open())
                cout<<"Error creation output.txt"<<endl;
            else
            if(!Write3FirstFields(ofs, pList[iRowMaxSum]))
                cout<<"Error during write to file"<<endl;
            else
                cout<<"Writing OK"<<endl;
        }
        delete [] pList;//Чистка памяти
    }
    ifs.close();
    ofs.close();
    return 0;
}
 
double SumDigitsInfData(fData ptr)
{
    double val = 0;
    double sum = 0;
    stringstream ss(ptr.digits);
    for(int i = 0; i < 3 ; i++)
    {
        if((ss>>val))
            sum += val;
    }
    return sum;
}
 
bool Write3FirstFields(ofstream &ofs, fData ptr)
{
    int i;
    bool bFlag = true;
    double val = 0;
    char symbol= 0;
    stringstream ss;
    ss.str(ptr.digits);
    cout<<"\tWrite in file"<<endl;
    for(i = 0; i < 3 && bFlag; i++)
    {
        if(!(ss>>val))
            bFlag = false;
        else
        {
            cout<<val<<" ";
            ofs<<val<<" ";
        }
    }
    ofs<<endl;
    cout<<endl;
    ss.clear();//Сбросили флаг EOF
    ss.seekg(0,ios::beg);//Установили указатель вначало
    ss.str(ptr.symbols);
    for(i = 0; i < 3 && bFlag; i++)
    {
        if(!(ss>>symbol))
            bFlag = false;
        else     
        {
            cout<<symbol<<" ";
            ofs<<symbol<<" ";
        }
    }
    return bFlag;
}
input.txt
3
765 458 329 705 120 895
G H T P L M
297 486 910 110 370
G V T U O P
34.63 347.63 522.50 337.02 614.48 0.00
U Z L C S
output.txt
297 486 910
G V T
Миниатюры
Найти максимальную сумму 3 чисел в каждой строке файла  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru