Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++] problem z wczytywaniem do tablicy

Ostatnio zmodyfikowano 2013-10-30 20:08
Autor Wiadomość
lukkaszga
Temat założony przez niniejszego użytkownika
[c++] problem z wczytywaniem do tablicy
» 2013-10-30 19:46:43
utworzyłem dynamiczną tablicę do której wczytuję liczby z pliku. tablica powiększa się , gdy liczba elementów przekracza rozmiar tablicy. problem pojawił się gdy wyświetlam elementy tablicy. okazuje się że wczytane liczby różnią się od tych zapisanych w pliku. proszę o pomoc
C/C++
#include <iostream>
#include <fstream>
#include <conio.h>
#include <cstdlib>
using namespace std;

int main()
{
    fstream plik;
    fstream plik1;
    int liczba, rozmiarTablicy = 5;
   
    int * wczytaneLiczby = new int[ rozmiarTablicy ];
   
    char znakRozdzialu = '   ';
    int ileLiczb = 0;
    int ileParzystych = 0;
    int ileNieparzystych = 0;
    plik1.open( "c:\\_LUKASZ\\_MOJE PROJEKTY\\Dane1.txt", ios::out );
    plik.open( "c:\\_LUKASZ\\_MOJE PROJEKTY\\liczby.txt", ios::in | ios::out );
    if( plik.good() )
    {
       
        string linia;
        int i = 0;
        cout << "W pliku znajduja sie:" << endl << endl;
       
        do
        {
            plik >> linia;
            liczba = atoi( linia.c_str() );
            ileLiczb++;
            cout << i + 1 << ".   " << liczba << endl;
            wczytaneLiczby[ i ] = liczba;
            i++;
            cout << "zapisana liczba do tablicy ---> " << wczytaneLiczby[ i ] << "   rozmiar tablicy wynosi: " << rozmiarTablicy << endl;
            if( ileLiczb >= rozmiarTablicy )
            {
                int nowyRozmiarTablicy = 2 * rozmiarTablicy;
                int * nowaTablica = new int[ nowyRozmiarTablicy ];
                for( int j = 0; j == rozmiarTablicy; ++j ) nowaTablica[ j ] = wczytaneLiczby[ j ];
               
                delete[] wczytaneLiczby;
                rozmiarTablicy = nowyRozmiarTablicy;
                wczytaneLiczby = nowaTablica;
               
               
            }
           
            if( liczba % 2 == 0 )
                 ileParzystych++;
            else
                 ileNieparzystych++;
           
        } while( !plik.eof() );
       
        plik.close();
       
    } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;
   
    //for (int k = 0; k == rozmiarTablicy; ++k)
    //       cout << wczytaneLiczby[k] << endl; 
    plik1 << "W pliku znajdowalo sie  " << ileLiczb << " liczb w tym:  " << ileParzystych << "  parzystych  i  " << ileNieparzystych << "   nieparzystych";
    plik1.close();
    getch();
    return( 0 );
}

link do printa z wyjścia programu na konsoli.
http://zapodaj.net/e599c128183d6.jpg.html
P-94884
pekfos
» 2013-10-30 19:48:49
C/C++
for( int j = 0; j == rozmiarTablicy; ++j ) nowaTablica[ j ] = wczytaneLiczby[ j ];

Warunek jest błędny.
P-94885
lukkaszga
Temat założony przez niniejszego użytkownika
» 2013-10-30 20:07:10
logicznie rozumowanie wydaje mi się dobre. w pętli kopiuję każdy element ze starej tablicy do nowej. usuwam starą tablicę. zwiększam ilość elementów jakie może przyjąć stara tablica i ponownie przypisuję wartości dwóch tablic. mogę prosić o podpowiedź na co konkretnie zwrócić uwagę?
P-94886
pekfos
» 2013-10-30 20:08:25
Na warunek..
P-94887
« 1 »
  Strona 1 z 1