Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
6 / 6 / 7
Регистрация: 24.09.2016
Сообщений: 63

Найти первый отрицательный элемент в каждой строке матрицы

03.02.2018, 21:26. Показов 6221. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан двухмерный массив целых чисел.В каждой его строке найти :
а) первый отрицательный элемент(принять, что отрицательные элементы есть в каждой строке);
б) последний четный элемент(принять, что четные элементы есть в каждой строке).
 Комментарий модератора 
П.5.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
const int str = 5, col = 5, size = 5;
    int arr[str][col], arr1[str][col] = { 0 }, number = 0;
    for (int i = 0; i < str; i++)
        for (int j = 0; j < col; j++)
            arr[i][j] = rand() % 100 - 50;
    for (int i = 0; i < str; i++)
    {
        for (int j = 0; j < col; j++)
            cout << arr[i][j] << '\t';
        cout << endl;
    }
    cout << endl;
    //а) первый отрицательный элемент
    for (int i = 0; i < str; i++)
        for (int j = 0; j < col; j++)
        {
            if (arr[i][j] < 0)
            {
                number = arr[i][j];
                arr1[0][j] = number;
                cout << arr1[0][j] << ' ';
                break;
            }
        }
    cout << endl;
Проверьте правильно ли я написан код и помогите написать второй. Я понимаю как найти четный элемент, только не понимаю как найти последний четный

Добавлено через 14 минут
Все, решил, кому нужно
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <ctime>
using namespace std;
const int n = 5;
void main()
{
    setlocale(LC_ALL, "RUS");
    srand(time(NULL));
    /*1. Дан двухмерный массив целых чисел.В каждой его строке найти :
    а) первый отрицательный элемент(принять, что отрицательные
    элементы есть в каждой строке);
    б) последний четный элемент(принять, что четные элементы есть в
    каждой строке).
    Обе задачи решить с использованием дополнительного одномерного массива*/
    int arr[n][n], arr1[n], number = 0;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            arr[i][j] = rand() % 100 - 50;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            cout << arr[i][j] << '\t';
        cout << endl;
    }
    cout << endl;
    //а) первый отрицательный элемент
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
        {
            if (arr[i][j] < 0)
            {
                number = arr[i][j];
                arr1[i] = number;
                cout << arr1[i] << ' ';
                break;
            }
        }
    cout << endl;
 
    //б) последний четный элемент
    for (int i = 0; i < n; i++)
        for (int j = n - 1; j > 0; j--)
        {
            if (arr[i][j] % 2 == 0)
            {
                number = arr[i][j];
                arr1[i] = number;
                cout << arr1[i] << ' ';
                break;
            }
        }
    cout << endl;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.02.2018, 21:26
Ответы с готовыми решениями:

Массив: Найти первый отрицательный элемент в каждой строке и последний четный элемент в каждом столбце.
Дан двумерный массив двухбайтовых знаковых целочисленных элементов 5*8. Полагаем,что в каждой строке хотя бы 1 элемент отрицательный,а в...

Нужно вывести первый отрицательный элемент каждой строки матрицы, если таких нету - 0 (в чем ошибка?)
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; using namespace std; int _tmain(int argc, _TCHAR* argv) { const int n = 4; const...

Найти первый отрицательный элемент матрицы
Найти первый отрицательный элемент в матрице y и сформировать матрицу x, элементы которой получаются из соответствующих элементов матрицы Y...

4
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
03.02.2018, 21:33
В целом всё верно было, но я позволил себе немного изменить ваш код. В частности заменил массивы на динамические и вывод матрицы впихнул в один цикл с заполнением
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
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <ctime>
 
int main()
{
    srand(time(NULL));
    int str, col;
    std::cout << "Rows, Cols = "; std::cin >> str >> col;
    int **arr = new int*[str], *arr1 = new int[str], *arr2 = new int[str];
    for (int i = 0; i < str; i++) {
        arr[i] = new int[col];
        for (int j = 0; j < col; j++) {
            arr[i][j] = rand() % 100 - 50;
            std::cout << arr[i][j] << '\t';
        }
        std::cout << std::endl;
    }
    std::cout << std::endl;
    //а) первый отрицательный элемент
    for (int i = 0; i < str; i++)
        for (int j = 0; j < col; j++)
            if (arr[i][j] < 0) {
                arr1[i] = arr[i][j];
                std::cout << arr1[i] << ' ';
                break;
            }
    std::cout << "\n\n";
    //б) последний чётный
    for (int i = 0; i < str; i++)
        for (int j = col - 1; j >= 0; j--)
            if (arr[i][j] % 2 == 0) {
                arr2[i] = arr[i][j];
                std::cout << arr2[i] << ' ';
                break;
            }
    for (int i = 0; i < str; i++)
        delete[] arr[i];
    delete[] arr; delete[] arr1; delete[] arr2;
    system("pause");
}
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.02.2018, 22:59
Hitoku, скажите, а эти 3 блока можно объединить ?
и ещё вопрос - обе задачи - возможно отдельные программы нужны ?
1
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
03.02.2018, 23:49
Лучший ответ Сообщение было отмечено pain1262 как решение

Решение

Цитата Сообщение от Yetty Посмотреть сообщение
а эти 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
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <algorithm>
#include <ctime>
 
void PrintArr(int *a, int n) {
    for (int i = 0; i < n; i++)
        std::cout << a[i] << " ";
    std::cout << "\n";
}
 
int main()
{
    srand(time(NULL));
    int str = 5, col = 5, size = 5;
    bool otr = false;
    std::cout << "Rows, Cols = "; std::cin >> str >> col;
    int **arr = new int*[str], *arr1 = new int[str], *arr2 = new int[str];
    for (int i = 0; i < str; i++) {
        arr[i] = new int[col];
        otr = false;
        for (int j = 0; j < col; j++) {
            arr[i][j] = rand() % 100 - 50;
            std::cout << arr[i][j] << '\t';
            if (!otr && arr[i][j] < 0) { otr = !otr; arr1[i] = arr[i][j]; }
        }
        for (int j = col - 1; j >= 0; j--)
            if (arr[i][j] % 2 == 0) {
                arr2[i] = arr[i][j];
                break;
            }
        std::cout << std::endl;
    }
    std::cout << std::endl;
    PrintArr(arr1, str);
    PrintArr(arr2, str);
    for (int i = 0; i < str; i++)
        delete[] arr[i];
    delete[] arr;
    delete[] arr1;
    delete[] arr2;
    system("pause");
}
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
04.02.2018, 01:12
Лучший ответ Сообщение было отмечено pain1262 как решение

Решение

Hitoku, я Вас не узнаю. 26-30 del и в норм цикле до последнего чётного

Добавлено через 26 минут
и предложенное заполнение не гарантирует наличия хотя бы одного отрицательного и чётного в строке

Добавлено через 37 минут
pain1262, исходя из Вашего условия я бы делал двумя задачами

если нужные элементы не найдены выводится 0

а)

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
32
33
34
35
36
37
38
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    srand(time(0));
    int i, j, n, m;
    cout <<"Enter n: "; cin >>n;
    cout <<"Enter m: "; cin >>m;
    
    int **a = new int* [n]; 
      for (i = 0; i < n; i++)
        a[i] = new int [m]; 
        
    int *b = new int [n];
 
    b[n]={0};      
        
    for (i = 0; i < n; i++)
    {   
        int c=0;
        for (j = 0; j <m; j++)
        {
            a[i][j] = rand() % 100 - 50;
            cout << setw(3)<< a[i][j] <<" ";            
            if (c==0 && a[i][j] < 0) b[i]=a[i][j];
            if (a[i][j] < 0) c++;                         
        }        
        cout <<"     "<< setw(3)<<b[i]<<endl;
    }    
    for (int i = 0; i < n; i++)
    delete [] a[i];
    delete [] a;
    delete [] b;    
system("pause");
return 0;
}
б)

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
32
33
34
35
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    srand(time(0));
    int i, j, n, m;
    cout <<"Enter n: "; cin >>n;
    cout <<"Enter m: "; cin >>m;
    
    int **a = new int* [n]; 
     for (i = 0; i < n; i++)
        a[i] = new int [m]; 
        
    int *b = new int [n];
    b[n]={0};      
        
    for (i = 0; i < n; i++)
    {           
        for (j = 0; j <m; j++)
        {
            a[i][j] = rand() % 100 - 50;
            cout << setw(3)<< a[i][j] <<" ";            
            if (a[i][j]%2 == 0) b[i]=a[i][j];                                    
        }        
        cout <<"     "<< setw(3)<<b[i]<<endl;
    }    
    for (int i = 0; i < n; i++)
    delete [] a[i];
    delete [] a;
    delete [] b;    
system("pause");
return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.02.2018, 01:12
Помогаю со студенческими работами здесь

В каждой строке матрицы определить последний отрицательный элемент и его индексы
Вот то, что я набросал, а дальше у меня дело не продвигается. #include&lt;iostream&gt; #include&lt;windows.h&gt; #include&lt;time.h&gt; ...

В каждой строке матрицы определить последний отрицательный элемент и его индексы - C++
Вот то, что я набросал, а дальше у меня дело не продвигается. #include&lt;iostream&gt; #include&lt;windows.h&gt; #include&lt;time.h&gt; ...

В каждой строке матрицы найти первый отрицательный элемент
4)Дан двумерный массив целых чисел. В каждой строке найти первый отрицательный элемент.

Найти в каждой строке матрицы первый отрицательный элемент
Заданы две матрицы А(6,6) и В(6,6). Для матрицы, которая отвечает заданному условию (1) выполните преобразования (2) в соответствии с...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru