1

Тема: Вернути nullptr із функції

Задача така: Створити функцію для роботи з дин двовимірним рваним масивом(рядки можуть  бути різної довжини): пошук заданого значення у масиві(повертати вказівник на перше входження шуканого чи nullptr, якщо не знайдено).
Я реалізувала її таким чинном:

Прихований текст
int * searchFirstEntryElement(int ** mas, int row, int elem)
{
    int *p = NULL;
    for (int i = 0; i < row; ++i)
    {
        int col = mas[i][0];
        int j = 1;
        while (mas[i][j] != elem && j <= col)
            ++j;
        if (j <= col)
        {
            p = &mas[i][j];
            return p;
        }
     }

    return p;
}
int main()
{
...
int find_element;
    cout << "Enter number wich you want find in the matrix: ";
    cin >> find_element;
    int first_entry_elements = *searchFirstEntryElement(numbers, rows, find_element);
    if (first_entry_elements != NULL)
        cout << "The first entry of the desired element: " << first_entry_elements << "\n";
    else
        cout << "The desired element is not found\n";
}

І, власне, сама проблема: якщо елемент знайдено, то працює нормально, а якщо - ні, то програма вилітає. В чому може бути причина?

2

Re: Вернути nullptr із функції

pika1989 написав:
while (mas[i][j] != elem && j <= col)

Переставте умови місцями - ви спершу перевіряєте значення, а потім - потрапляння в рядок.

Подякували: pika19891

3 Востаннє редагувалося Yola (08.10.2015 06:17:29)

Re: Вернути nullptr із функції

Якщо функція повертає nullptr, то у 25-му рядку ви намагаєтесь його розіменувати.

Подякували: koala, pika19892

4

Re: Вернути nullptr із функції

Дякую, вийшло. Зробила ось так:

 int find_element;
    cout << "Enter number wich you want find in the matrix: ";
    cin >> find_element;
    int *first_entry_elements = searchFirstEntryElement(numbers, rows, find_element);
    if (first_entry_elements != 0)
        cout << "The first entry of the desired element: " << *first_entry_elements << "\n";
    else
        cout << "The desired element is not found\n";