Sveiki, man reikia iš failo kas eilutę nuskaityti skaičius iki eilutės pabaigos ir juos priskirti int arba double, bet bėda ta, kad nelabai žinau kaip. Dabar esu parašęs maždaug tik pradžią, o ir nesu tikras ar ji tinkama tokiam veiksmui.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
double d,a,b,c;
string line;
ifstream file("Text.txt");
if(file.is_open())
{
file >> d;
cout << d;
ofstream file2("Result.txt");
while(getline(file,line))
{
cout << line << endl;
}
}
return 0;
}
Išspausdino viską berots teisingai. Duomenys yra :
(4-priskirti d)
(3-priskirti a) (24.5 59.0 71.7-priskirti b)
2 45 66.2
2 34.1 45.1
4 45.2 56.4 45.1 56.2
Reikia gauti 'b' sumą ir padalinti iš 'a'. Visi priskyrimai ir skaičiavimai turbūt atliekami cikle ? Dėkui už atsakymus :)
Bebras prieš 10 metų
Nelabai supratau kokia bėda. Tavo while ciklas turėtų perskaityti visą failą, eilutė po eilutės.
Ar nereikėtų uždaryti failų baigus juos naudoti?
Palmis prieš 10 metų
Taip, man nuskaito gerai, bet man reikia juos priskirt double d, a ir b. Kuriuos priskirti prie kurių esu parašęs. Failą tai lygtais pati programa gale uždaro, nors nežinau ar taip gerai yra palikti.
Bebras prieš 10 metų
O tau būtina skaityti su getline?
Nes galima skaityti ir taip:
Ifstream fr("failas.txt");
double a;
int b;
fr >> a;
fr >> b;
fr.close();
O failas.txt atrodytų taip:
4.5
4
Nelabai pamenu C++ bet man atrodo kad tai turėtų veikt.
Palmis prieš 10 metų
Reikia, kad juos rinktų iki eilutės galo. O ir while loop tam reikia lygtais naudot, kiek ieškojau pavyzdžių tam, tiek visur jį matau.
Bebras prieš 10 metų
Galbūt gali parodyti kokią čia užduotį bandai padaryti? Nes nemanau kad dar suvokiu ką bandai pasiekti :(
Palmis prieš 10 metų
Dėkui Yiin ir Bebras. Tik biški neaišku iš kur atsiranda atsakyme dar ir "0/4=0" ? Tas 4 turbūt atsiranda dar iš pačios pirmos eilutės, kurią buvau priskyręs "d" ?
Palmis prieš 10 metų
O ką būtų galima padaryti, jog jos išvis nerodytų ? 'd' pas mane yra prieš while, o 'a' tą pirmąją teksto eilutę prisilygina betkokiam skaičiui.
EDIT:: Biški ne taip buvau supratęs aš. Ta pati pirma eilutė yra dar vienas skaičius vidurkiui skaičiuoti. Man tik reikia panaikinti tą eilutę, kurią anksčiau paminėjau.
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <iomanip>
using namespace std;
int main()
{
int d,a,i=1;
double tmp,v=0;
string line;
ifstream file("Text.txt");
if(file.is_open())
{
file >> d;
ofstream file2("Result.txt");
while(getline(file,line))
{
istringstream ss(line);
ss>>a;
double b=0;
while(ss>>tmp)
{
b+=tmp;
}
cout << b << " / " << a << " = " << b/a << ";" << endl;
file2 << "Namo nr." << i++ << " butu plotu vidurkis:" << b/a << endl;
v+=b/a;
}
v/=d;
file2 << "Visu namu butu plotu vidurkis: " << v << endl;
cout << v << endl;
}
return 0;
}
