1

Тема: Потрібна допомога

С++, Visual Studio
Виникла проблема у присвоюванні значення елументу масиву.

int func_for_massiv1()
{
    int massiv1[10];
    int g;
    cout << "Size of massiv " << sizeof massiv1 << endl;
    cout << "Please enter 10 for massiv " << endl;
    int a;
    for (int i = 0; i < 10; ++i)
    {
        cout << "Enter " << i << " element for massiv " << endl;
        for ( g = 0; g <= 9; g++)
        {
            cin >> a;
            massiv1[g] = a;
            cout << "Your element " << a << endl;
            break;
        }
    }

    for (g = 0; g <= 9; g++)
    {
        cout << " " << massiv1[a];
    }
   
    return g;
}

Виводе лише 10 значень -858993460.
Допоможіть будь ласка!

2

Re: Потрібна допомога

    for (g = 0; g <= 9; g++)
    {
        cout << " " << massiv1[a];
    }

В цьому циклі треба g-ті елементи виводити, а не a-ті.

Подякували: 0xDADA11C7, slusarj23, leofun013

3

Re: Потрібна допомога

Виникла проблема у присвоюванні значення елументу масиву.

Проблема в присвоюванні це коли записуєш щось у змінну, а програма з крешем вилітає, бо запис був у пам'ять констант(тьільки для читання), а тут жадної проблеми з присвоюванням нема. Ми не знаємо що саме воно має виводити, тому наступного разу цитуйте задання -- ми тут не ворожбити.

Подякували: slusarj23, leofun012

4

Re: Потрібна допомога

Ця функція має виводити ті елементи масиву, які введе користувач.
int func_for_massiv1()
{
    int massiv1[10];
    int g;
    cout << "Size of massiv " << sizeof massiv1 << endl;
    cout << "Please enter 10 for massiv " << endl;
    int a;
    for ( unsigned int i = 0; i < 10; ++i)
    {
        cout << "Enter " << i << " element for massiv " << endl;
        for ( g = 0; g <= 9; g++)
        {
            cin >> a;
            massiv1[g] = a;
            cout << "Your element " << a << endl;
            break;
        }
    }

    for (g = 0; g <= 9; g++)
    {
        cout << " " << massiv1[g];
    }
    cout << endl;
    return 0;
}

Наразі, виводе спочатку перший елемент, який був введений останнім і далі 9 значень -858993460.

5

Re: Потрібна допомога

    for ( unsigned int i = 0; i < 10; ++i)
    {
        cout << "Enter " << i << " element for massiv " << endl;
        for ( g = 0; g <= 9; g++)
        {
            cin >> a;
            massiv1[g] = a;
            cout << "Your element " << a << endl;
            break;
        }
    }

У вас тут два цикли - зовнішній і внутрішній. У внутрішньому циклі ви записуєте значення змінної в масив. Чому дорівнює g при першому і єдиному проходженні у внутрішньому циклу?

Подякували: LoganRoss, leofun01, slusarj23, 0xDADA11C74

6 Востаннє редагувалося LoganRoss (21.12.2017 12:52:12)

Re: Потрібна допомога

Наразі, виводе спочатку перший елемент, який був введений останнім і далі 9 значень -858993460.

Один цикл зайвий. У вас же одновимірний масив. І коли ви входите в внутрішній цикл, то записуєте дані в 0 елемент і виходите, потім знову заходите, знову записуєте в 0 елемент і виходите. І так 10 разів. По суті, ви 10 разів перезаписуєте перший елемент, а решта 9 значень неініціалізовані, тому при виводі ви отримуєте мусор.

Подякували: leofun01, slusarj232

7

Re: Потрібна допомога

Все вирішив проблему. Всим дякую!

Подякували: 0xDADA11C71

8

Re: Потрібна допомога

slusarj23 написав:

Все вирішив проблему. Всим дякую!

То поділіться з іншими, а то хтось нагуглить цю тему, але не зможе нею скористатися.