none
Помогите сделать ручной ввод одномерного массива. С++ RRS feed

  • Вопрос

  • int i = 0;
    int n;
    int mas[1000];
    int q = 0;
    CString rez = L"", m;

    void CDialog2::OnBnClickedButton1()
    {
    UpdateData(TRUE);
    CString m;
    mas[q] = p_mas;             // p_mas - Edit Control в который вводим масив.
    m.Format(L"%d", mas[q]);
    rez = rez + m + L" | ";
    q = q + 1;
    p_list.ResetContent();      // p_list - List tBox где показываем все элементы массива.
    p_list.AddString(rez);
    p_mas = 0;
    UpdateData(FALSE);
    }

    // Если задаю массив рандомно, то все работает без проблем. Если ввожу вручную, то в результате выдаёт неверный ответ. Помогите, умоляю!!!



    • Изменено Laibach 2 мая 2014 г. 13:59

Ответы

  • Ошибка в этой строке:

    for (int i = 0; i < p_mas; i++)

    Вы писали в первом сообщении, что p_mas - переменная, связанная с полем ввода текущего элемента массива, а здесь Вы используете ее как количество элементов. Количество у Вас хранится в переменной q.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Предложено в качестве ответа kosuke904 3 мая 2014 г. 10:43
    • Помечено в качестве ответа Laibach 3 мая 2014 г. 16:35

Все ответы

  • В чем неверный ответ? Массив у Вас заполняется (при условии, что p_mas типа int). Ну, переменная m объявлена дважды (на глобальном уровне и как локальная), но это в данном случае не важно. В чем ошибка, поясните.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

  •  Мне в задании нужно найти максимальный элемент массива. Я ввожу элементы, но мне в результате выдает не максимальный элемент, а элемент который я ввел самым первым.

    Например: 4, 7, 3, 10. В результате выдает  4.

    Но когда я задаю элементы массива рандомно, то все считает правильно.  

  • В таком случае покажите код поиска максимального элемента.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

  • void CDialog2::OnBnClickedRadio1()
    {

    UpdateData(TRUE);
    CString ttt, rez = L"", mass;
    p_list1.ResetContent();
    int minn = mas[0];
    int maxx = mas[0];
    for (int i = 0; i < p_mas; i++)
    {
    if (mas[i] > maxx)
    maxx = mas[i];
    }
    ttt.Format(L"%d", maxx);
    p_list1.AddString(ttt);
    UpdateData(FALSE);
    }

    • Изменено Laibach 3 мая 2014 г. 8:20
  • Ошибка в этой строке:

    for (int i = 0; i < p_mas; i++)

    Вы писали в первом сообщении, что p_mas - переменная, связанная с полем ввода текущего элемента массива, а здесь Вы используете ее как количество элементов. Количество у Вас хранится в переменной q.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Предложено в качестве ответа kosuke904 3 мая 2014 г. 10:43
    • Помечено в качестве ответа Laibach 3 мая 2014 г. 16:35
  • Да, всё теперь работает! спасибо огромное!