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

Lekcja 19 Segmentation fault podczas ustalania rozmiaru tablicy ręcznie .

Ostatnio zmodyfikowano 2015-03-29 23:39
Autor Wiadomość
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 :
C/C++
#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;
}
P-129516
Quirinnos
» 2015-03-29 23:26:44
Nigdzie nie widać, żebyś coś alokował dynamicznie ;)
P-129517
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
P-129518
Quirinnos
» 2015-03-29 23:30:40
Jeśli naprawiłeś problem, to kod powinien już działać. ;)
P-129519
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ą
P-129520
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.
P-129521
dzwiedziu
Temat założony przez niniejszego użytkownika
» 2015-03-29 23:39:47
Dzięki wielkie problem rozwiązany :) Zamykam
P-129522
« 1 »
  Strona 1 z 1