xrtwo Temat założony przez niniejszego użytkownika |
Operacje na pliku, wektor. » 2011-03-28 12:00:44 Mam przykładowy plik: 5.1, 3.5, 1.4, 0.2, honda 4.9, 3.0, 1.4, 0.2, honda 6.4, 3.2, 4.5, 1.5, mazda 6.9, 3.1, 4.9, 1.5, mazda 6.2, 3.4, 5.4, 2.3, nissan 5.9, 3.0, 5.1, 1.8, nissan
Muszę pobrać z niego kazda kolumne gdzie sa liczby (do pozniejszych dzialan na nich) i z pierwszą kolumna sobie poradzilem ale nie wiem jak dostac sie tylko do drugiej kolumny. #include <iostream> #include <fstream> #include <vector> #include <string>
using namespace std;
int main() { double liczba; ifstream plik; vector < double > wektor; plik.open( "C:\\Qt\\qtcreator-2.0.1\\test.data", ios::in ); if( plik.is_open() == false ) { cerr << "Nie mozna otworzyc pliku." << endl; return 1; } cout << "Plik otwarty." << endl; while( plik.good() ) { plik >> liczba; string linia; getline( plik, linia ); wektor.push_back( liczba ); } for( int i = 0; i < wektor.size() - 1; i++ ) { cout << "Wektor nr " << i << ": " << wektor[ i ] << '\n'; } cout << wektor[ 0 ] + wektor[ 1 ]; plik.close(); return 0; }
|
|
DejaVu |
» 2011-03-28 14:40:41 plik >> liczba1; plik >> liczba2; plik >> liczba3; plik >> liczba4; getline( plik, linia );
|
|
xrtwo Temat założony przez niniejszego użytkownika |
» 2011-03-28 16:27:55 Nadal nie działa, program kompiluje sie ale wypisuje tylko pierwsza pozycje wektora dla liczba1. #include <iostream> #include <fstream> #include <vector> #include <string>
using namespace std;
int main() { double liczba1, liczba2, liczba3, liczba4; ifstream plik; vector < double > wektor; plik.open( "C:\\Qt\\qtcreator-2.0.1\\test.data", ios::in ); if( plik.is_open() == false ) { cerr << "Nie mozna otworzyc pliku." << endl; return 1; } cout << "Plik otwarty." << endl; while( plik.good() ) { plik >> liczba1; plik >> liczba2; plik >> liczba3; plik >> liczba4; string linia; getline( plik, linia ); wektor.push_back( liczba1 ); } for( int i = 0; i < wektor.size() - 1; i++ ) { cout << "Wektor nr " << i << ": " << wektor[ i ] << '\n'; } cout << wektor[ 0 ] + wektor[ 1 ]; plik.close(); return 0; }
|
|
malan |
» 2011-03-28 16:44:17 Przecież do vectora dodajesz jedną liczbę - wektor.push_back( liczba ); Poza tym, ja bym Ci radził zrobić do tego strukturę: struct Car { double num1, double num2, double num3, double num4, std::string str };
int main() { std::vector < Car > cars; double num1, double num2, double num3, double num4, std::string str; while( file >> num1 >> num2 >> num3 >> num4 >> str; ) { cars.push_back( Car( num1, num2, num3, num4, str ) ); } } Proponuję również usunąć te przecinki pomiędzy poszczególnymi liczbami, czyli: 5.1 3.5 1.4 0.2 honda |
|
DejaVu |
» 2011-03-28 16:48:57 char znak; plik >> liczba1 >> znak; plik >> liczba2 >> znak; plik >> liczba3 >> znak; plik >> liczba4 >> znak; getline( plik, linia ); |
|
malan |
» 2011-03-28 16:54:32 @DejaVu: Tak też można, ale po co robić sobie dodatkową robotę? ;) Przecież w tej sytuacji ważne jest, żeby to komputer dane zrozumiał, a nie człowiek ;p. |
|
xrtwo Temat założony przez niniejszego użytkownika |
» 2011-03-28 17:04:36 @malan ale ja rowniez chcialbym zrozumiec ;p
@DejaVu Dziala, dziekuje. Tylko nie rozumiem w jakim celu została zastosowana ta dodatkowa zmienna?
Juz kumam chodzi o ten przecinek ;p |
|
« 1 » |