jak wczytać liczby z pliku bezpośrednio do tablicy.
Ostatnio zmodyfikowano 2017-09-20 23:01
Lentyl Temat założony przez niniejszego użytkownika |
jak wczytać liczby z pliku bezpośrednio do tablicy. » 2017-09-19 22:28:15 Witam rozwiązywałem jedną z prac domowych "Wczytywanie danych z pliku za pomocą operatora >>" i pomyślałem sobie że fajniej by było wczytać te zmienne z pliku od razu do tablicy Plik wyglądał by tak. Oczywiście mój kod nie działa nawet nie wiem czy można go w jakiś sposób zmodyfikować żeby miał jakąś wartość. Za wszystkie podpowiedzi serdecznie dziękuje 4 3 6 54 7 83 6 42 57 #include <iostream> #include <fstream> #include <cstdlib> using namespace std;
int main() { int tablica[ 20 ] = { 0 }; int a = 0; fstream plik; plik.open( "Dane do zadania.txt", ios::in ); if( !plik.good() ) cout << "Nie udalo sie odczytac pliku" << endl; exit( 0 ); while( plik.good() ) { plik >> tablica[ a++ ]; } plik.close(); for( int i = 0; i < a; i++ ) cout << tablica[ i ] << endl; return 0; } |
|
Kinexity |
» 2017-09-19 23:08:24 Jeżeli chcesz przechowywać liczby w pliku, to zdecydowanie polecam robić to przy pomocy zapisu binarnego - jest prościej niż ze strumieniami. |
|
mateczek |
» 2017-09-19 23:12:12 #include <iostream> #include <fstream> using namespace std;
int main() { int tablica[ 20 ] = { 0 }; fstream plik( "dane.txt" ); if( !plik ) { cout << "Nie udalo sie odczytac pliku" << endl; return 0; } int a = 0; while( plik >> tablica[ a++ ] ); for( int i = 0; i < a - 1; i++ ) { cout << tablica[ i ] << " "; } }
|
|
carlosmay |
» 2017-09-20 00:52:12 std::size_t a; for( a = 0; plik >> tablica[ a ] && a < 20; ++a );
|
|
maly7 |
» 2017-09-20 13:12:45 Lentyl, twój program działa dobrze, jedyny problem znajduje się tutaj: if( !plik.good() )
cout << "Nie udalo sie odczytac pliku" << endl;
exit( 0 );
Otóż instrukcja exit nie znajduje się w ifie, więc za każdym razem się wykonuje i program się zakańcza. Po prostu wstaw tam klamry i będzie ok. |
|
Lentyl Temat założony przez niniejszego użytkownika |
Sumowanie tablicy i przypisywanie wartości » 2017-09-20 21:43:46 Wczoraj zamieściłem kod związany z wczytaniem bezpośrednio liczb z pliku do tablicy za wszystkie odpowiedzi bardzo dziękuje. Tablice oczywiście później chciałem zsumować jednak jeżeli wyzeruje sumę wynik wychodzi poprawny 207 jeżeli jednak nie wynik jest niepoprawny 205 mniejszy o 2 Pytanie może infantylne a może przeoczyłem coś w kursie ale Stephen Prata także o tym nic nie wspomina w rozdziale o przypisywaniu wartości pytanie brzmi : Czym to jest spowodowane czy tak jak w przypadku tablicy są to śmieci typu przypadkowe liczby dlaczego zmienna której nie jest przypisana wartość nie posiada na samym wstępie wartości = 0; ? #include <iostream> #include <fstream> #include <cstdlib> using namespace std;
int main() { fstream plik; plik.open( "Dane do zadania.txt", ios::in ); if( !plik.good() ) { cout << "Nie udalo sie odczytac pliku" << endl; exit( 0 ); } int tablica[ 30 ] = { 0 }; int a = 0; while( plik.good() ) { plik >> tablica[ a++ ]; } plik.close(); int suma = 0; for( int i = 0; i < a; i++ ) { cout << tablica[ i ] << endl; suma += tablica[ i ]; } cout << " suma twojej tablicy to : " << endl; cout << suma << endl; cout << "Twoja 8 liczba to : " << tablica[ 7 ] << endl; return 0; } |
|
carlosmay |
» 2017-09-20 23:01:10 Zmienne statyczne inicjalizowane są wartościami zerowymi, natomiast zmienne lokalne nie są inicjalizowane i posiadają przypadkowe wartości. Tablice, jeśli nie są zainicjalizowane zeramie, zawsze zawierają przypadkowe wartości. Używanie niezainicjalizowanej zmiennej jest UB. |
|
« 1 » |