zielak123 Temat założony przez niniejszego użytkownika |
[C++] Zapisywanie tablicy do pliku testowego. » 2015-11-15 13:22:28 Dopiero zaczynam przygode z klasami. #include <iostream> #include <fstream> #include <string> #include <cstdlib>
using namespace std;
class Dane { public: int tab[ 10 ][ 10 ]; void czytaj_dane(); void zapisz_dane_do_pliku(); void czytaj_dane_z_pliku(); };
void Dane::czytaj_dane() { int tab[ 10 ][ 10 ] = { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 } }; } void Dane::zapisz_dane_do_pliku() { fstream plik; plik.open( "dane.txt", ios::out ); for( int i = 0; i < 10; i++ ) { for( int j = 0; j < 10; j++ ) { plik << tab[ i ][ j ] << " "; } } plik.close(); } void Dane::czytaj_dane_z_pliku() { string linia; fstream plik; cout << "\nWyswietlam dane z pliku: " << endl; plik.open( "dane.txt", ios::in ); if( plik.good() == true ) { while( !plik.eof() ) { getline( plik, linia ); cout << linia << endl; } plik.close(); } } int main() { Dane dane; dane.czytaj_dane(); dane.zapisz_dane_do_pliku(); dane.czytaj_dane_z_pliku(); return 0; }
Nie zapisuje prawidlowo do pliku dane.txt tablicy 10x10 ani nie wczytuje prawidlowo z pliku. Chce aby zapisalo oraz wczytalo i wyswietlilo tablice 10x10 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1
|
|
carlosmay |
» 2015-11-15 13:30:33 plik << tab[ i ][ j ] << " ";
jak wypisujesz do pliku dane operatorem wyjścia, możesz tak samo wpisywać do tablicy operatorem wejścia. |
|
zielak123 Temat założony przez niniejszego użytkownika |
» 2015-11-15 13:33:56 Niestety nic nie wpisuje do pliku i odczytuje pusty plik. |
|
carlosmay |
» 2015-11-15 15:18:03 int tab[ 10 ][ 10 ] = { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 } };
w ten sposób można zainicjalizować tylko nowo tworzoną tablicę, a tutaj nadpisujesz utworzoną już przez niejawny konstruktor, który utworzył obiekt 'dane'. Aby poprawnie wczytać dane do tablicy musisz wczytywać je kolejno do elementów, np. for( int i = 0; i < 10; i++ ) { for( int j = 0; j < 10; j++ ) { if( i == j ) tab[ i ][ j ] = 1; else tab[ i ][ j ] = 0; } }
To powinno działać. |
|
zielak123 Temat założony przez niniejszego użytkownika |
» 2015-11-15 17:13:49 Dzieki, teraz juz wyswietla, natomiast pozostaje kwestia przejscia do nastepnej lini po 10 znakach, bo w tej chwili wypisuje wszystko jednym ciagiem. @Edit Wszystko dziala. Wystarczylo dodac plik << endl; po zakonczeniu 2 petli w funkcji zapisu :) |
|
« 1 » |