Ładny brzuch
Czesc mam nastepujacy problem chce zapisac do tablicy struktor dane z pliku ale nie wiem czemu nie wychodzi mi ten program ;/;/ robilem podobne i dzialaly a ten ;O nie chce wiec moze ktos z was mi pomoze ;/;/
w pliku plik.txt jest cos takiego
3 samolot 12 465 samolot2 12 345 samolot3 32 777
kod:
// Program liczacy czas lotu samolotow przy pomocy predkosci // odczytanej z pliku oraz zasiegu podanego przez czlowieka. // Nazwa samolotu, rozpietosc skrzydel (dane nie wymagane do obliczen) // oraz srednia predkosc sa zapisane w dynamicznej tablicy struktur. #include <iostream> #include <fstream> using namespace std; struct samolot { char nazwa[20]; double rozpietosc; double predkosc; }; int rozmiar(char *in) { int rozmiar; ifstream plik; plik.open(in); plik>>rozmiar; plik.close(); return rozmiar; } void pobierz(char *in,samolot *s,int n) { double pomin_rozmiar; ifstream plik; plik>>pomin_rozmiar; for(int i=0;i<n;++i) { plik>>s[i].nazwa; plik>>s[i].rozpietosc; plik>>s[i].predkosc; } plik.close(); } void wypisz(samolot *s,int n,double zasieg) { for(int i=0;i<n;++i) { cout<<"Nazwa :"<<s[i].nazwa<<endl; cout<<"Rozpietosc skrzydel :"<<s[i].rozpietosc<<endl; cout<<"Predkosc :"<<s[i].predkosc<<endl; cout<<"Przeleci "<<zasieg<<" w "<<zasieg/s[i].predkosc<<" h \n"; cout<<"- - - - - - - - - - - - - - -\n\n"; } } int main(int argc,char **argv) { argv[1] = "plik.txt"; double zasieg; int n = rozmiar(argv[1]); samolot *s = new samolot [n]; pobierz(argv[1],s,n); cout<<"Jaka odleglosc maja pokonac samoloty ?\n"; cin>>zasieg; wypisz(s,n,zasieg); cout<<"\n\n\n\n"; system("pause"); return 0; }
z gory dzieki wielki !! :rolleyes:
Uytkownik Chudyyy edytowa ten post 26 sierpie 2006, 13:33
Zapisuj dane do pliku w sposb binarny i nie bdziesz mia potem problemu z odczytem caej struktury do twojej tablicy struktur.
void pobierz(char *in,samolot *s,int n) { double pomin_rozmiar; ifstream plik; plik>>pomin_rozmiar; for(int i=0;i<n;++i) { plik>>s[i].nazwa; plik>>s[i].rozpietosc; plik>>s[i].predkosc; } plik.close(); }
Nie otwierasz pliku przy pobieraniu danych - zapomniales o plik.open()
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
w pliku plik.txt jest cos takiego
3 samolot 12 465 samolot2 12 345 samolot3 32 777
kod:
// Program liczacy czas lotu samolotow przy pomocy predkosci // odczytanej z pliku oraz zasiegu podanego przez czlowieka. // Nazwa samolotu, rozpietosc skrzydel (dane nie wymagane do obliczen) // oraz srednia predkosc sa zapisane w dynamicznej tablicy struktur. #include <iostream> #include <fstream> using namespace std; struct samolot { char nazwa[20]; double rozpietosc; double predkosc; }; int rozmiar(char *in) { int rozmiar; ifstream plik; plik.open(in); plik>>rozmiar; plik.close(); return rozmiar; } void pobierz(char *in,samolot *s,int n) { double pomin_rozmiar; ifstream plik; plik>>pomin_rozmiar; for(int i=0;i<n;++i) { plik>>s[i].nazwa; plik>>s[i].rozpietosc; plik>>s[i].predkosc; } plik.close(); } void wypisz(samolot *s,int n,double zasieg) { for(int i=0;i<n;++i) { cout<<"Nazwa :"<<s[i].nazwa<<endl; cout<<"Rozpietosc skrzydel :"<<s[i].rozpietosc<<endl; cout<<"Predkosc :"<<s[i].predkosc<<endl; cout<<"Przeleci "<<zasieg<<" w "<<zasieg/s[i].predkosc<<" h \n"; cout<<"- - - - - - - - - - - - - - -\n\n"; } } int main(int argc,char **argv) { argv[1] = "plik.txt"; double zasieg; int n = rozmiar(argv[1]); samolot *s = new samolot [n]; pobierz(argv[1],s,n); cout<<"Jaka odleglosc maja pokonac samoloty ?\n"; cin>>zasieg; wypisz(s,n,zasieg); cout<<"\n\n\n\n"; system("pause"); return 0; }
z gory dzieki wielki !! :rolleyes:
Uytkownik Chudyyy edytowa ten post 26 sierpie 2006, 13:33
Zapisuj dane do pliku w sposb binarny i nie bdziesz mia potem problemu z odczytem caej struktury do twojej tablicy struktur.
void pobierz(char *in,samolot *s,int n) { double pomin_rozmiar; ifstream plik; plik>>pomin_rozmiar; for(int i=0;i<n;++i) { plik>>s[i].nazwa; plik>>s[i].rozpietosc; plik>>s[i].predkosc; } plik.close(); }
Nie otwierasz pliku przy pobieraniu danych - zapomniales o plik.open()