Lekcja 19 Segmentation fault podczas ustalania rozmiaru tablicy ręcznie .
Ostatnio zmodyfikowano 2015-03-29 23:39
dzwiedziu Temat założony przez niniejszego użytkownika |
Lekcja 19 Segmentation fault podczas ustalania rozmiaru tablicy ręcznie . » 2015-03-29 23:20:19 witam wszystkich , to mój pierwszy post i niestety od razu z problemem . Tak jak w temacie , wiem że w zadaniu nie było nic o tablicy o zmiennym rozmiarze ale chciałem pójść trochę dalej . Błąd wyskakuje kiedy zainicjalizuje tablice o wielkości większej niż 9 . Przy tablicy o wielkości 9 wszystko działa prawidłowo niezależnie od wielkości elementów tablicy . Gdy na tym kodzie użyje tablicy o z góry ustalonym rozmiarze , nawet 999 ,nie ma żadnego problemu , nie mogę znaleźć żadnego rozwiązania mojego problemu . Z góry dziękuje za pomoc i przepraszam za dość haotyczny język . Poniżej kod : #include <iostream> #include <random>
int draw( int begin, int end ) { std::random_device random; std::mt19937 generator( random() ); std::uniform_int_distribution <> distribution( begin, end ); int a = distribution( generator ); return a; }
void initialize( unsigned int intarray[], int sizeofarray, int begin, int end ) { int a; int repeat = 0; do { a = draw( begin, end ); repeat++; intarray[ repeat ] = a; } while( repeat < sizeofarray ); }
float summing( unsigned int sumarray[], int sizeofarray ) { int index = 0; float sum = 0; do { index++; sum += sumarray[ index ]; } while( index < sizeofarray ); return sum; } void output( unsigned int outarray[], int sizeofarray ) { int i = 0; int pos = 0; do { i++; pos++; std::cout << i << ". " << outarray[ pos ] << std::endl; } while( pos < sizeofarray ); }
int main() { int begin; int end; int asize; unsigned int myarray[ asize ]; std::cout << " ------Witaj------" << std::endl; std::cout << "Podaj przedzial losowania : " << std::endl; std::cout << "Poczatek : "; std::cin >> begin; std::cout << "Koniec : "; std::cin >> end; std::cout << "Podaj rozmiar tablicy : "; std::cin >> asize; std::cout << " ------Zaczynamy------" << std::endl; std::cout << std::endl; initialize( myarray, asize, begin, end ); int asum = summing( myarray, asize ); output( myarray, asize ); std::cout << "Suma skladnikow tablicy = " << asum << std::endl; return 0; }
|
|
Quirinnos |
» 2015-03-29 23:26:44 Nigdzie nie widać, żebyś coś alokował dynamicznie ;) |
|
dzwiedziu Temat założony przez niniejszego użytkownika |
» 2015-03-29 23:28:56 Faktycznie źle opisałem problem poprawiam już , ale chodzi mi tutaj o ustalanie rozmiaru tablicy . Tak jak pisałem kiedy daje jej rozmiar większy niż 9 wywala mi błąd segmentation fault |
|
Quirinnos |
» 2015-03-29 23:30:40 Jeśli naprawiłeś problem, to kod powinien już działać. ;) |
|
dzwiedziu Temat założony przez niniejszego użytkownika |
» 2015-03-29 23:32:52 Niestety problemu nie naprawiłem a jedynie inaczej go opisałem , jestem troszkę zmęczony przez co komunikacja jest dla mnie lekko utrudniona . Żadne próby rozwiązania tego problemu na własną rękę nie działają |
|
Quirinnos |
» 2015-03-29 23:33:42 http://pl.wikibooks.org/wiki/C++/Zarz%C4%85dzanie_pami%C4%99ci%C4%85 Tak wygląda poprawna alokacja. |
|
dzwiedziu Temat założony przez niniejszego użytkownika |
» 2015-03-29 23:39:47 Dzięki wielkie problem rozwiązany :) Zamykam |
|
« 1 » |