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

problem przy tworzeniu automatycznie powiększającej się tablicy

Ostatnio zmodyfikowano 2013-10-30 16:52
Autor Wiadomość
lukkaszga
Temat założony przez niniejszego użytkownika
problem przy tworzeniu automatycznie powiększającej się tablicy
» 2013-10-30 15:54:01
Witam. Mam program, który otwiera wcześniej przygotowany plik z liczbami. Zczytuje każda linię i zamienia znak na liczbę umieszczając ją przy tym w tablicy. Chcę zrobić automatycznie powiększająca się tablicę. Początkowo ma ona rozmiar 5. Gdy ilość wczytanych liczb przekracza zakres tablicy dochodzi do powiększenia (przynajmniej teoretycznie - bo w tym miejscu program się wykrzacza). Program się kompiluje i uruchamia się, ale gdy dochodzi do momentu powiększenia tablicy wyskakuje w konsoli okno: Program ObsługaPliku.exe przestał działać. Gdzie jest problem?

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;
            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;
            }
            wczytaneLiczby[ i ] = liczba;
            i++;
            if( liczba % 2 == 0 )
                 ileParzystych++;
            else
                 ileNieparzystych++;
           
        } while( !plik.eof() );
       
        plik.close();
    } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;
   
    plik1 << "W pliku znajdowalo sie  " << ileLiczb << " liczb w tym:  " << ileParzystych << "  parzystych  i  " << ileNieparzystych << "   nieparzystych";
    plik1.close();
    getch();
    return( 0 );
}
[/i]
P-94852
pekfos
» 2013-10-30 16:10:39
C/C++
for( int j = 0; rozmiarTablicy; ++j ) nowaTablica[ j ] = wczytaneLiczby[ j ];

To pętla nieskończona.
P-94856
lukkaszga
Temat założony przez niniejszego użytkownika
» 2013-10-30 16:38:15
ok poprawiłem, dzięki, ale nadal jest problem. teraz program po wykonaniu 5 kroków i natrafieniu na tą pętlę zwyczjnie się zatrzymuje ale już przynajmniej nie wyskakuje błąd obsługi pliku
P-94863
pekfos
» 2013-10-30 16:39:19
Podaj kod.
P-94865
lukkaszga
Temat założony przez niniejszego użytkownika
» 2013-10-30 16:42:43
C/C++
for( int j = 0; j = rozmiarTablicy; ++j ) nowaTablica[ j ] = wczytaneLiczby[ j ];

P-94866
pekfos
» 2013-10-30 16:45:20
Jest gorzej niż było..
» Kurs C++ » Poziom 1Operacje porównania lekcja
P-94867
lukkaszga
Temat założony przez niniejszego użytkownika
» 2013-10-30 16:52:42
bosze widzisz i nie grzmisz. człowiek całe życie się uczy:) dzięki wielkie. pozdro. do zamknięcia
P-94868
« 1 »
  Strona 1 z 1