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

Чтение из файла, не используя getline - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Получить числа b1, ..., b20, где bi*– среднее арифметическое всех членов последовательности a1, ..., a20, кроме ai http://www.cyberforum.ru/cpp-beginners/thread684813.html
Помогите пожалуйста исправить программу или предложите свой вариант , задача: (Даны действительные числа a1, ..., a20. Получить числа b1, ..., b20, где bi*– среднее арифметическое всех членов последовательности a1, ..., a20, кроме ai (i=1, 2, ..., 20).) мой код: #include <iostream> #include <math.h>
C++ Копирование чисел из массива в массив большей размерности Допустим есть числа 01100 в массиве. Мне необходимо их скопировать в новый массив который в 3 раза больше по размеру таким образом чтобы каждое число с исходного массива утроилось т. е. получилось 000 111 111 000 000... Добавлено через 15 минут #pragma once #include <iostream> #include <time.h> using namespace std; int randombits(); http://www.cyberforum.ru/cpp-beginners/thread684803.html
Как корректно считать вектор boost::asio::streambuf на стороне клиента C++
Доброго времени суток! Назрел вопрос: Пишу в сокет с помощью boost::asio::buffer std::vector<double>. а вот как на стороне клиента считать этот вектор корректно? Пример из бустовской документации про передачу строки изучил.
C++ Исправить код для ввода и вывода матрицы
НАписал код для ввода и вывода матрицы. Выдает ошибку без лога. #include<iostream> #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<locale.h> #include<ctime> const int N=3; using namespace std; int main()
C++ Передача статического двумерного массива в функцию http://www.cyberforum.ru/cpp-beginners/thread684769.html
Добрый вечер. Вот один из способов передачи статической матрицы в ф-ию: void f(int arr) { ... } Подскажите, что на самом деле передаётся, т.е. чем явл. arr (если указателем, то на что?)? Спасибо.
C++ Обратная матрица Здравствуйте)Помогите пожалуйста разобраться, у меня программа не правильно считает обратную матрицу procedure Obr(n:Integer; var d:Matrix); var A:Matrix; i,j,h:Integer; begin SetLength(A, n + 1, n + 1); for i := 0 to n-1 do begin for j := 0 to n-1 do begin A:=StrToFloat(sgA.Cells); подробнее

Показать сообщение отдельно
Смирняга
68 / 13 / 1
Регистрация: 29.12.2010
Сообщений: 339
30.10.2012, 23:38     Чтение из файла, не используя getline
Вот ВЕСЬ код:

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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include <Windows.h>
using namespace std;
 
const double Tier1E = 0.059;//Tier 1: First 700 KWH used
const double Tier2E = 0.065;//Tier 2: Next 800 KWH used
const double Tier3E = 0.073;//Tier 3: Additional KWH over 1500 KWH
 
const double Tier1W = 0.0021;//Used less than 8,000 gallons
const double Tier2W = 0.0029;//Used at least 8,000 gallons, and less than 15,000 gallons
const double Tier3W = 0.004;//Used at least 15,000 gallons
 
 
const double fee = 4.81;//Residential units are charged a $4.81 service fee, and business units are charged a service fee that is twice the residential unit fee.
 
double count_energy(int cnt);
double count_water(int cnt);
int parse_cnte(string& s);
int parse_cntw( string& s );
void parse(double *output, string& s);
 
int main()
{
 
    ifstream sr("UTILITY.TXT");
    ofstream swu("UNITS.TXT");
    ofstream swc("CUSTOMERS.TXT");
 
 
    if ( !sr.is_open() )
    {               
        cerr<< "There is no file there!\n";
        Sleep(2000);
        return 0;
    }
    else
    {
 
        string s;//string
        string cust_code = "";//customer code
        char condition//Good or Past due
            , type;//residential or business
        double total_cost,//total cost of the customer 
            coste, //cost for electricity for unit
            costw, //cost for water for unit
            total_city = 0;//total cost of the city
        int cntw,//count of the water(galons)
            cnte;//count of the electricity(KWH)
        double realfee;//fee for each unit
        int count_screen = 0;//how much lines now in the screen
 
 
        
        while (getline(sr,s) )
        {
            if (count_screen == 0)
            {
                cout << "Customer\tUnits\tUtility\nCode    \tOwned\tCharges\n--------\t------\t-----------\n";
            }
            count_screen++;
 
            cust_code = s.substr(0, 8);
            condition = s[9];
            s.erase(0, 11);
            int cnt_units = 0;//count of the units for each customer
            total_cost = 0;
            while (s.length() > 0)
            {
                //
                type = s[0];
                s.erase(0, 2);
                cnte = parse_cnte(s);
                s.erase(0, s.find(' ') + 1);
 
                cntw = parse_cntw(s);
                if (s.find(' ') != string::npos)
                    s.erase(0, s.find(' ') + 1);
                else
                    s = "";
                coste = count_energy(cnte);
                costw = count_water(cntw);
                //
 
 
                if (type == 'R')
                    realfee = fee;
                else
                    realfee = fee * 2;
                swu << type <<  " " << fixed << setprecision(2) << ( costw + coste + realfee ) << '\n';
                total_cost +=  ( costw + coste + realfee );
                cnt_units++;
            }
            swc << cust_code << " " << fixed << setprecision(2) << total_cost << '\n';
 
            total_city += total_cost;
 
            cout   << cust_code << "\t   "  << cnt_units << "\t$    " << fixed << setprecision(2) << total_cost ;
            if(condition=='G')
            {
                cout   << "\n";
            }
            else
            {
                cout   << "\t\t"<<"**PAST DUE" <<"\n";
            }
            if (count_screen == 20)
            {
                Sleep(5000);
                system("cls");
                count_screen = 0;
            }
        }
        cout << "-----------------------------------\n";
        cout << "Total City Collected\t" << "$    "  << fixed << setprecision(2)<< total_city  << "\n";
        swc.close();
        swu.close();
        sr.close();
 
    }
 
 
    system("pause");
}
 
double count_energy(int cnt)
{
    double res = 0;//result of this function
    if (cnt <= 700)
    {
        res += cnt * Tier1E;
    }
    else if (cnt <= 800 + 700)
    {
        res += 700 * Tier1E + (cnt - 700) * Tier2E;
    }
    else
    {
        res += 700 * Tier1E + 800 * Tier2E + (cnt - 700 - 800) * Tier3E;
    }
    return res;
}
 
double count_water(int cnt)
{
    double res = 0;//result of this function
    if (cnt <= 8000)
    {
        res = cnt * Tier1W;
    }
    else if (cnt <= 15000)
    {
        res = cnt * Tier2W;
    }
    else
    {
        res = cnt * Tier3W;
    }
    return res;
}
 
int parse_cnte(string& s)
{
    return atoi(( s.substr(0, s.find(' ') + 1)).c_str());
}
 
int parse_cntw( string& s )
{
    if ( s.find(' ') != string::npos )
    {
        return atoi(( s.substr(0, s.find(' ') + 1)).c_str());
    }
    else
    {            
        return atoi( s.c_str());
    }
}

Исправить нужно пару строчек, так, чтобы заменить getline на что-нибудь своё. Преподаватель не разрешает использовать getline

Добавлено через 1 минуту
C++
1
 while (getline(sr,s) )
(58-я строчка)
Надо заменить на что-нибудь другое
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru