Pakeisti uždavinį. Padaryti, kad duomenis skaitytų iš failo
is200mgylio (+22)
Užduotis: Yra tam tikro ilgio lazdų rinkinių. Kiekvieną rinkinį sudaro 3 lazdos. Lazdų ilgiai a, b, ir c matuojami decimetrais (sveikaisiais skaičiais). Ar galima iš šių lazdų sudaryti trikampį? Jei galima, tai kokį: lygiakraštį, lygiašonį ar įvairiakraštį? Jeigu ne, reikia išvesti pranešimą, kad trikampio sudaryti negalima. Duota programa: #include <iostream> #include <iomanip> #include <fstream> using namespace std;
int main() { int a, b, c, i, n; ofstream fr ("rez.txt"); cout << "iveskite razdu rinkinius"; cin >> n; for (i=1; i<=n; i=i+1) cout << "iveskite triju lazdu" << i << "aji rinkini:"; cin >> a >> b >> c; fr << "Lazdos:" << setw(2) << fixed << a << "" << setw(2) << fixed << b << " " << setw(2) << fixed << c; if (( a + b > c)&& (a + c > b) && (b + c > a)) if (( a == b) && (b == c)) //ar lygiakrastis? fr << "-galima sudaryti lygiakrasti trikampi" << endl; else if ((a == b) || (b == c) || (a == c)) fr << "-galima sudaryti lygiasoni trikampi" << endl; else fr <<"-galima sudaryti ivairiakrasti trikampi"<< endl; else fr << "-trikampio sudaryti negalima" << endl; fr.close (); return 0; } Manęs prašo ją pakeisti taip, kad duomenis nuskaitytų iš dokumento. txt ir išvestu į dokumentą rezeltatai.txt , o ne į ekraną. Visaip bandžiau, bet man atrodo čia yra duotoje programoje klaida, nes niekaip nesigauna, kad pervesčiau. Aš perrašiau į tokią programą, bet ji neveikia: #include <iostream> #include <iomanip> #include <fstream> using namespace std;
int main() { int a, b, c, i, n; ifstream fd ("duomenys.txt"); fd >> n >> a >> b >> c; fd.close (); for (i=1; i<=n; i=i+1) fr << "Lazdos:" << a << endl; if (( a + b > c)&& (a + c > b) && (b + c > a)) if (( a == b) && (b == c)) fr << "galima sudaryti lygiakrasti trikampi" << endl; else if ((a == b) || (b == c) || (a == c)) fr << "galima sudaryti lygiasoni trikampi" << endl; else fr <<"galima sudaryti ivairiakrasti trikampi"<< endl; else fr << "trikampio sudaryti negalima" << endl; ofstream fr ("rez.txt"); return 0; }
EgEg (+339)
Labai netvarkingas kodas, patarciau rasyti tvarkingiau. ofstream fr ("rez.txt"); atidaro rezultatu faila, o pas tave programoje tu is pradziu bandai rasyti i rezultato faila, o tik paskui ji atidarai.
is200mgylio (+22)
ifstream yra failo nuskaitymas tai aš jį pradžioje rašau, o ofstream į failą įrašo. Meta klaidą šitoje eilėje: fd << "Lazdos:" << a << endl; Nesuprantu kažkas čia negerai.
EgEg (+339)
ifstream fd ("duomenys.txt");Atidaro faila duomenys.txt, i kuri tu programoje gali kreiptis naudodamas fd ir is kurio tu gali skaityti duomenis. ofstream fr ("rez.txt");Atidaro faila rez.txt, i kuri tu programoje gali kreiptis naudodamas fr ir i kuri tu gali rasyti duomenys.
Kadangi tu bandai rasyti duomenis i rez.txt faila jo neatidares todel tau ir meta klaida.
pakeista prieš 5 m
is200mgylio (+22)
Ar taip reikia pakeisti? Taip irgi meta klaidą. Man atrodo susipainiojau int main() { int a, b, c, i, n; ofstream fr ("rez.txt"); fr >> n >> a >> b >> c; fr.close (); for (i=1; i<=n; i=i+1) fr << "Lazdos:" << a << endl; if (( a + b > c)&& (a + c > b) && (b + c > a)) if (( a == b) && (b == c)) fr << "galima sudaryti lygiakrasti trikampi" << endl; else if ((a == b) || (b == c) || (a == c)) fr << "galima sudaryti lygiasoni trikampi" << endl; else fr <<"galima sudaryti ivairiakrasti trikampi"<< endl; else fr << "trikampio sudaryti negalima" << endl; ifstream fd ("duomenys.txt"); return 0; }
EgEg (+339)
ofstream atidaro faila, i kuri tu gali irasyti informacija, o ifstream is kurio gali skaityti. Tai is pradziu turi atidaryti duomenys.txt is jo nuskaityti tuos duomenis kuriu reikia, tada atidaryti rez.txt faila ir i ji irasyti tai ko reikia
pakeista prieš 5 m
is200mgylio (+22)
Apkeičiau dabar taip, bet meta klaidą. int a, b, c, i, n; ifstream fr ("duomenys.txt"); fr >> n >> a >> b >> c; fr.close (); for (i=1; i<=n; i=i+1) fd << "Lazdos:" << a << endl; if (( a + b > c)&& (a + c > b) && (b + c > a)) if (( a == b) && (b == c)) fd << "galima sudaryti lygiakrasti trikampi" << endl; else if ((a == b) || (b == c) || (a == c)) fd << "galima sudaryti lygiasoni trikampi" << endl; else fd <<"galima sudaryti ivairiakrasti trikampi"<< endl; else fd << "trikampio sudaryti negalima" << endl; ofstream fd ("rez.txt"); return 0; }
pakeista prieš 5 m
EgEg (+339)
Na vistiek pas tave tas pats, pirmiau i rezultatu faila tu irasineji o po to tik ji atidarai...
is200mgylio (+22)
Kaip taip gali būti jeigu juos apkeičiau... Gal galite tada parašyti pilnai kaip teisingai turi atrodyti ta programa?