Wyświetlanie tablicy dwuwymiarowej zadeklarowanej jako klasa
Ostatnio zmodyfikowano 2014-11-06 00:04
cynizm Temat założony przez niniejszego użytkownika |
Wyświetlanie tablicy dwuwymiarowej zadeklarowanej jako klasa » 2014-11-05 22:11:34 witam, mam pewien problem. Tworze klasę której obiekty mają składać się z tablicy dwuwymiarowej oraz informacji o rozmiarze tablicy (tablica[n][n]), dane są wczytywane z pliku. doszedłem do momentu gdy tablica wczytuje mi się z pliku, jednak nie mogę jej wyświetlić. oto kod: main.cpp #include "stdafx.h" #include "Komiwojazer.h"
int _tmain( int argc, _TCHAR * argv[] ) { Komiwojazer kom; kom.wczytaj(); kom.wyswietl_macierz(); getchar(); return 0; }
header klasy komiwojarzer #pragma once
class Komiwojazer { public: int rozmiar; int ** macierz; public: Komiwojazer( void ); ~Komiwojazer( void ); bool wczytaj(); void wyswietl_macierz(); };
plik cpp klasy #include "stdafx.h" #include "Komiwojazer.h" #include <fstream> #include <iostream>
using namespace std;
bool Komiwojazer::wczytaj() { int rozmiar; ifstream plik; plik.open( "plik.txt", ios::in ); if( !plik.good() ) { return false; } else { plik >> rozmiar; macierz = new int *[ rozmiar ]; for( int i = 0; i < rozmiar; ++i ) { macierz[ i ] = new int[ rozmiar ]; } int znak; while( !plik.eof() ) { for( int j = 0; j < rozmiar; j++ ) { for( int i = 0; i < rozmiar; i++ ) { plik >> znak; macierz[ i ][ j ] = znak; } } } cout << rozmiar; plik.close(); wyswietl_macierz(); return true; } }
void Komiwojazer::wyswietl_macierz() { for( int i = 0; i < rozmiar; i++ ) { for( int j = 0; j < rozmiar; j++ ) { cout << macierz[ i ][ j ]; } cout << endl; } }
Komiwojazer::Komiwojazer( void ) { }
Komiwojazer::~Komiwojazer( void ) { }
jakiś pomysł co robię źle? |
|
Monika90 |
» 2014-11-05 23:46:09 W funkcji wczytaj wczytujesz rozmiar do zmiennej lokalnej, a składowa rozmiar pozostaje niezainicjalizowana. I while( !plik.eof() ) { } - nie wiem po co ta pętla. |
|
cynizm Temat założony przez niniejszego użytkownika |
» 2014-11-05 23:58:32 faktycznie ta pętla nie jest potrzebna, po usunięciu nadal nie dziala wyswietlanie. niezainicjalizowana w sensie nie ma poczatkowej wartosci? czy ma to znaczenie skoro ostatecznie dostaje i tak wartosc przypisaną z pliku? plik zawiera informacje o rozmiarze macierzy w pierwszej linijce i w nastepnych wartosci macierzy, np: 5 - 1 4 3 5 6 4 - 1 7 8 1 3 7 - 1 9 5 5 8 9 - 1 3 6 1 5 3 - 1
|
|
Monika90 |
» 2014-11-06 00:02:11 No właśnie nie dostaje wartości, int rozmiar; w funkcji wczytaj(), a int rozmiar; w klasie to dwie różne zmienne. |
|
cynizm Temat założony przez niniejszego użytkownika |
» 2014-11-06 00:04:44 ok dzieki za pomoc, działa teraz bez zarzutu :) |
|
« 1 » |