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š 9 metus
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š 9 metus
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š 9 metus
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š 9 metus
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š 9 metus
Galbūt gali parodyti kokią čia užduotį bandai padaryti? Nes nemanau kad dar suvokiu ką bandai pasiekti :(
Palmis prieš 9 metus
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š 9 metus
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;
}