4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
1

Для каждой строки матрицы найти номер первого отрицательного элемента, и записать данные в новый массив

19.11.2016, 19:52. Показов 2336. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан массив размером n*n, элементы которого целые числа.
Для каждой строки найти номер первого отрицательного элемента и записать
данные в новый массив.

Пытался решить сам, но столкнулся с проблемой (переменная не распознается, хоть я объявил и указал её). Надеюсь на вашу помощь.

UPD: я начинающий, поэтому прошу без сложных функций.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2016, 19:52
Ответы с готовыми решениями:

Для каждой строки найти номер первого отрицательного элемента и записать данные в новый массив
Решите пожалуйста. Завтра надо сдать. Для каждой строки найти номер первого отрицательного...

Для каждой строки матрицы найти индекс первого отрицательного элемента и записать данные в новый массив
Для каждой строки найти номер первого отрицательного элемента и записать данные в новый массив:...

Для каждой строки двумерного массивa найти номер первого отрицательного элемента и записать в новый массив
Дан массив размером nxn, элементы которого целые числа. Для каждой строки найти номер первого...

Для каждой строки ступенчатого массива найти номер первого отрицательного элемента
Дан массив размером n×n, элементы которого целые числа.Для каждой строки найти номер первого...

22
7538 / 6399 / 2918
Регистрация: 14.04.2014
Сообщений: 27,865
19.11.2016, 19:54 2
Программа где?
1
4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
19.11.2016, 19:59  [ТС] 3
Извиняюсь за забывчивость..

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
using namespace std;
 
int main()
{
    int n, m;
    cout << "n,m="; 
    cin >> n >> m;
    int *a = new int[2 * n];
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
        {
        cout << "a[" << i << "][" << j << "]=";
        cin >> a[i][j];
        }
 
    for (int i = 0; i < n; ++i)
    {
        if (a[i][j] < 0)
        {
            cout << a[i][j]; break;
        }
    }
    for (int i = 0; i < n; ++i)
    {
        cout << a[i][j];
    }
    system("pause");
    return 0;
}
0
7538 / 6399 / 2918
Регистрация: 14.04.2014
Сообщений: 27,865
19.11.2016, 20:46 4
Почему 2 * n, если в задании n * n, а в программе ещё и m откуда-то?
И индексация тогда будет a[i * m + j].
1
4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
19.11.2016, 20:49  [ТС] 5
Так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
using namespace std;
 
int main()
{
    int a[20][20];
    int n, m;
    cout << "n,m="; 
    cin >> n >> m;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
        {
        cout << "a[" << i << "][" << j << "]=";
        cin >> a[i][j];
        }
 
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
    {
        if (a[i][j] < 0)
        {
            cout << a[i][j] << "\n"; break;
        }
    }
    system("pause");
    return 0;
}
0
7538 / 6399 / 2918
Регистрация: 14.04.2014
Сообщений: 27,865
19.11.2016, 20:53 6
Ну можно и так, только n и m больше 20 не вводить.
А где сохранение в ещё один массив?
1
4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
19.11.2016, 20:56  [ТС] 7
А каким образом вводить больше 20, не подскажите?
И такой же вопрос насчет сохранения в ещё один массив.
0
7538 / 6399 / 2918
Регистрация: 14.04.2014
Сообщений: 27,865
19.11.2016, 20:58 8
Используй первый вариант с динамическим, только размер правильно указывай, но если задание не требует, оставь обычный массив.
1
4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
19.11.2016, 21:08  [ТС] 9
Вот с новым массивом, но только счётчик не правильно я сделал.. можете помочь?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
using namespace std;
 
int main()
{
    int a[20][20];
    int n, m;
    cout << "n,m="; 
    cin >> n >> m;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
        {
        cout << "a[" << i << "][" << j << "]=";
        cin >> a[i][j];
        }
 
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
            for (int k = 0; k < n; ++k)
                for (int l = 0; l < m; ++l)
    {
        if (a[i][j] < 0)
        {
            cout << "b[" << k << "][" << l << "]=" << a[i][j] << "\n"; break;
        }
    }
    system("pause");
    return 0;
}
Миниатюры
Для каждой строки матрицы найти номер первого отрицательного элемента, и записать данные в новый массив  
0
7538 / 6399 / 2918
Регистрация: 14.04.2014
Сообщений: 27,865
19.11.2016, 21:10 10
Для чего эти два лишних цикла с k и l? Что вообще сохранить-то нужно? Номера, сами элементы?
1
4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
19.11.2016, 21:14  [ТС] 11
Я пытался вывести на экран новые элементы массива, но не пойму, что с счётчиком не так.
0
4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
19.11.2016, 21:20  [ТС] 12
Вот.. мне счетчик надо новый задать...
Миниатюры
Для каждой строки матрицы найти номер первого отрицательного элемента, и записать данные в новый массив  
0
7538 / 6399 / 2918
Регистрация: 14.04.2014
Сообщений: 27,865
19.11.2016, 21:21 13
"Для каждой строки найти номер первого отрицательного элемента и записать
данные в новый массив" - это что значит? Что записать-то?
1
4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
19.11.2016, 21:24  [ТС] 14
Надо значение записать, то есть если дана строчка из элементов {1, 2, 3, -4, -5, 6}, то он должен выписать в новом массиве b[0][0]=-4, первое отрицательное число.. и так для каждой строчки
0
7538 / 6399 / 2918
Регистрация: 14.04.2014
Сообщений: 27,865
19.11.2016, 21:26 15
Новый массив будет одномерный тогда.
C++
1
2
3
4
5
        if (a[i][j] < 0)
        {
            cout << "b[" << k << "][" << l << "]=" << a[i][j] << "\n"; break;
            b[ii++] = a[i][j];
        }
ii обнулить перед циклами.
1
4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
19.11.2016, 21:31  [ТС] 16
Плохо понял..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
using namespace std;
 
int main()
{
    int a[20][20];
    int b[20];
    int n, m, ii=0;
    cout << "n,m="; 
    cin >> n >> m;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
        {
        cout << "a[" << i << "][" << j << "]=";
        cin >> a[i][j];
        }
    cout << endl;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
            for (int k = 0; k < n; ++k)
                for (int l = 0; l < m; ++l)
    {
        if (a[i][j] < 0)
        {
            cout << "b[" << k << "][" << l << "]=" << a[i][j] << "\n"; break;
            b[ii++] = a[i][j];
        }
    }
    system("pause");
    return 0;
}
Миниатюры
Для каждой строки матрицы найти номер первого отрицательного элемента, и записать данные в новый массив  
0
4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
19.11.2016, 21:31  [ТС] 17
Цитата Сообщение от nmcf Посмотреть сообщение
b[ii++]
Что это?
0
7538 / 6399 / 2918
Регистрация: 14.04.2014
Сообщений: 27,865
19.11.2016, 21:38 18
Циклы k и l убрать. И break в конец:
C++
1
2
3
4
5
6
7
8
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
        if (a[i][j] < 0)
        {
            cout << "b[" << k << "][" << l << "]=" << a[i][j] << "\n";
            b[ii++] = a[i][j];
            break;
        }
Цитата Сообщение от vladrrom Посмотреть сообщение
Что это?
Обращение к очередному элементу.
1
4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
19.11.2016, 21:44  [ТС] 19
Что с Вашим обращением, что без.. ответ один и тот же..
Мне необходим просто новый счетчик у нового массива..
То есть чтобы было :
b[0][0]=-1
b[1][0]=-6
b[2][0]= .. и т.д.
Миниатюры
Для каждой строки матрицы найти номер первого отрицательного элемента, и записать данные в новый массив   Для каждой строки матрицы найти номер первого отрицательного элемента, и записать данные в новый массив  
0
7538 / 6399 / 2918
Регистрация: 14.04.2014
Сообщений: 27,865
19.11.2016, 21:50 20
Отдельно вывод сделай.
C++
1
2
3
4
5
6
7
8
9
10
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
        if (a[i][j] < 0)
        {
            b[ii++] = a[i][j];
            break;
        }
 
    for (int i = 0; i < ii; ++i)
            cout << "b[" << i << "]=" << b[i] << "\n";
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2016, 21:50
Помогаю со студенческими работами здесь

Для каждой строки матрицы найти сумму элементов с номерами от к1 до к2 и записать данные в новый массив
Дан массив размером n*n, элементы которого-целые числа. Для каждой строки найти сумму элементов с...

Для каждой строки матрицы найти последний четный элемент и записать данные в новый массив
Дан массив размером n*n , элементы которого целые числа . Для каждой строки найти последний четный...

Для каждой строки матрицы подсчитать кол-во положительных элементов и записать данные в новый массив.
Помогите пожалуйста! Начал изучать Паскаль совсем недавно и некак не могу выполнить задание: Дан...

Для каждого столбца массива найти номер последнего нечетного элемента и записать данные в новый массив
1) Дан массив размером п*п, элементы которого целые числа. Для каждого столбца найти номер...

Для каждого столбца массива найти номер последнего нечетного элемента и записать данные в новый массив
Дан массив размером nxn, элементы которого целые числа. Для каждого столбца найти номер последнего...

Для каждой строки найти последний четный элемент и записать данные в новый массив
Подскажите пожалуйста, в чём ошибка. Нужно решить задачу используя ступенчатый массив. Для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru