eMatematikas Prisijunk Forumas Egzaminų užduotys ONLINE testai

Pakeisti uždavinį. Padaryti, kad duomenis skaitytų iš failo


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;
    }

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.

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.

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š 4 m

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;
    }

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š 4 m

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š 4 m

Na vistiek pas tave tas pats, pirmiau i rezultatu faila tu irasineji o po to tik ji atidarai...

Kaip taip gali būti jeigu juos apkeičiau... Gal galite tada parašyti pilnai kaip  teisingai turi atrodyti ta programa?

Rašyti pradžioje ofstream fr ("duomenys.txt"); ?

Nori sudalyvauti šioje temoje ir parašyti savo pranešimą? Prisijungti »