Wczytywanie i wprowadzanie liczb do pliku

0

Mam plik z trzema liczbami całkowitymi. Mam w programie odczytać te liczby, podnieść je do kwadratu i zapisać w tym samym pliku.
Się dzisiaj z tym zadaniem namęczyłem, i niby już zrobiłem, ale niestety nie zapisuje mi liczb(kwadratów) do pliku. Ktoś mógł by pomóc i napisać dlaczego tak się dzieje i jak to naprawić?

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>

using namespace std;

int main()
{fstream plik;
plik.open("zad1.txt", ios::in | ios::out);

if(plik.good()==true)
{
  cout<<"Uzyskano dostep do pliku."<<endl;
  
        
               string l1, l2, l3;
               getline(plik,l1);
               getline(plik,l2);
               getline(plik,l3);
               cout << l1 <<", " <<l2 <<", " <<l3 <<endl;
               
               int a = atoi(l1.c_str());
               int b = atoi(l2.c_str());
               int c = atoi(l3.c_str());
               
               a*=a; b*=b; c*=c;
               plik <<b <<"," <<a <<"," <<c;
               
               
  plik.close();
}else cout<<"Blad dostepu do pliku."<<endl;

  system("PAUSE");	
  return 0;
}

Ogólnie pewnie dość siermiężnie to zrobiłem, co? Jakieś sugestie jak to łatwiej zrobić też mile widziane.

0
#include <iostream>
#include<fstream>
#include <vector>

using namespace std;

int main()
{
    fstream file("test", ios::in|ios::out);

    vector<int>tab;
    int x;
    while( file >> x )
        tab.push_back(x*x);

    vector<int>::iterator it = tab.begin();
    file.clear();
    for( ;it != tab.end(); ++it )
        file << *it << " ";

    file.close();
    return 0;
}
 
0

dzięki, dla mnie same nowości, ale w miarę rozumiem.
Tylko mam pytanie co robi polecenie file.clear();?

EDIT

Zrobiłem to na zwykłych tablicach i wstawianie danych do pliku nie działa... Może mi ktoś powiedzieć dlaczego?

 #include <iostream>
#include <fstream>

using namespace std;

int main()
{fstream plik;
plik.open("zad1.txt", ios::in | ios::out);

if(plik.good()==true)
{
  cout<<"Uzyskano dostep do pliku."<<endl;
  
               
               
               int tab[3];
               for (int i=0; i<3; i++)
               {        
                        plik >> tab[i];
                        cout << tab[i] <<endl;
                        tab[i]*=tab[i];
               }
               
               plik.clear();
               for (int i=0; i<3; i++)
               plik << tab[i] <<" ";
               
               
               
  plik.close();
}else cout<<"Blad dostepu do pliku."<<endl;

  system("PAUSE");	
  return 0;
}
 
0

Pozwolę sobie przedstawić swoją wersję programu ;)

#include <iostream>
#include <fstream>
using namespace std;
int main ()

{
    int liczba_1, liczba_2, liczba_3, kwadrat_liczby_1, kwadrat_liczby_2, kwadrat_liczby_3;
    
    ifstream odczyt;
    ofstream zapis;
    
    cout << "Liczby pobrane z pliku: ";
    
    odczyt.open("zad1.txt");
    if (odczyt.fail( ))
    cout << "<b\210\245d odczytu danych>\n";
    
    else
    {
    odczyt >> liczba_1 >> liczba_2 >> liczba_3;
    odczyt.close();
    
    cout << liczba_1 << " " << liczba_2 << " " << liczba_3 << endl;
    
    kwadrat_liczby_1 = liczba_1 * liczba_1;
    kwadrat_liczby_2 = liczba_2 * liczba_2;
    kwadrat_liczby_3 = liczba_3 * liczba_3;
    
    cout << "Liczby podniesione do kwadratu: " << kwadrat_liczby_1 << " " << kwadrat_liczby_2 << " " << kwadrat_liczby_3 << endl;
    
    zapis.open("zad1.txt");
    zapis << kwadrat_liczby_1 << " " << kwadrat_liczby_2 << " " << kwadrat_liczby_3;
    zapis.close();
    }
    
    system("pause");
    
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1