Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C++ - Błąd z alokacją pamięci.

ibefree 13 Mar 2013 00:19 1122 6
  • #1 13 Mar 2013 00:19
    ibefree
    Poziom 6  

    Witam,

    Mam takie zadanie:

    Na dysku jest plik, gdzie dane są zapisane w takim formacie np.

    5

    1 3 2 1 2

    7

    2 4 3 3 2 1 1

    gdzie, pierwsza liczba określa ilość liczb w pierwszym ciągu, następnie są liczby z tego ciągu, później liczba określająca ilość liczb w drugim ciągu i poniżej te liczby. Mam je odczytać z pliku, sprawdzić czy liczby w ciągu się powtarzają oraz dać na wyjście ile liczb się powtórzyło i je wypisać w kolejności takiej jak występowały powtórzenia np.

    3

    1

    3

    2

    Napisałem taki kod:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Program się kompiluje, ale podczas uruchomienia dostaję błąd alokacji pamięci, poza tym jak ustawić dobrze warunki w pętli sprawdzającej czy powtarzają się elementy w 1 i 2 ciągu pobranego z pliku (T_1 i T_2)?

    Z góry dzięki za pomoc i proszę o wyrozumiałość ponieważ dopiero startuje z nauką programowania.

    0 6
  • #2 13 Mar 2013 10:17
    Mardok2
    Poziom 14  

    A to nie jest tak, że z piku zczytujesz do strumienia potem do string stream i do piero możesz zrobić konwersje do typu całkowitego . Wiadomo alokujesz przez new dynamicznie wiec dopiero w programie wyskakuje błąd. :) Nie zagłebiałem sie w kod.

    0
  • #3 13 Mar 2013 11:43
    beluosus
    Poziom 25  

    Nie czytałem całości, ale od razu rzuca się w oczy:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    Wpisujesz do T_1[i] gdzie i == m - 1 (warunek i<=m-1). Oczywiście to jest o jeden indeks za daleko.

    0
  • #4 13 Mar 2013 14:12
    ibefree
    Poziom 6  

    Mardok2 możesz jaśniej? Jak mam to poprawnie zrobić aby działało?

    beluosus czyli w pętli for musi być do i<=m-2?

    Co z resztą błędów?

    0
  • #5 13 Mar 2013 15:54
    szelus
    Specjalista - Mikrokontrolery

    ibefree napisał:
    beluosus czyli w pętli for musi być do i<=m-2?

    A ile liczb chcesz wczytać i umieścić w tablicy? Jak alokujesz tablicę to podajesz jej rozmiar, a nie indeks ostatniego elementu.

    0
  • #6 13 Mar 2013 21:25
    ibefree
    Poziom 6  

    Wykonałem coś takiego, otwiera plik i analizuje poprawnie. Jak dodam funkcje zapisz do pliku do wywala błąd alokacji pamięci, jak to poprawić? Bardzo proszę o pomoc.

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0
  • #7 14 Mar 2013 17:13
    szelus
    Specjalista - Mikrokontrolery

    <offtop> masakra...</offtop>

    Ale jeżeli chodzi o błąd pamięci, to powiedz, dlaczego tak:

    Cytat:

    unsigned *ciag = odczytaj_porownaj(plik,lpowtorek);

    otworz(plik);
    odczytaj_porownaj(plik,lpowtorek);
    zapisz_wynik(lpowtorek,ciag);

    0
  Szukaj w 5mln produktów