Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Алина Алина
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 5
1

В заданной матрице найти самый большой отрицательный элемент и самый маленький положительный и вывести их на экран

06.09.2018, 20:37. Просмотров 1687. Ответов 14

Помогите пожалуйста с заданиями)
Задание 1: Напишите программу, которая создает двухмерный массив и заполняет его по следующему принципу: пользователь вводит число (например, 3) первый элемент массива принимает значение этого числа, последующий элемент массива принимает значение этого числа умноженного на 2 (т.е. 6 для нашего примера), третий элемент массива предыдущий элемент умноженный на 2 (т.е. 6*2=12 для нашего примера). Созданный массив вывести на экран.
Задание 2: Создайте двухмерный массив. Заполните его случайными числами и покажите на экран. Найдите самый большой отрицательный элемент и самый маленький положительный – выведите их на экран

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2018, 20:37
Ответы с готовыми решениями:

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

Как переставить местами самый маленький и самый большой элементы массива?
1. Переставить местами маленький и самый большой элементы массива

Найти второй самый большой элемент массива и второй самый маленький элемент массива
Помогите пожалуйста: Найти второй самый большой элемент массива и второй самый маленький элемент...

Как в матрице от сортировать строку,чтобы самый маленький элемент был в 1
#include <iostream> #include <cmath> #include <math.h> #include <stdlib.h> using namespace...

Ввести элементы двумерного массива с клавы С++.Нужно вывести его на экран в виде таблицы, в конце каждой строки надо вывести самый большой элемент
Вот мой код : #include <iostream> #include <Windows.h> using namespace std; using std::cout;...

14
Verevkin
06.09.2018, 20:50
  #2

Не по теме:

А волшебное слово? :D

0
Алина Алина
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 5
06.09.2018, 20:57  [ТС] 3
Добавлено через 18 секунд
пожалуйста пожалуйста))
а вообще там есть волшебное слово)
0
Verevkin
06.09.2018, 21:06
  #4

Не по теме:

Цитата Сообщение от Алина Алина Посмотреть сообщение
а вообще там есть волшебное слово)
Да где? Не вижу! :D

Кликните здесь для просмотра всего текста
В заданной матрице найти самый большой отрицательный элемент и самый маленький положительный и вывести их на экран

0
Алина Алина
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 5
06.09.2018, 21:11  [ТС] 5
нифига себе благодарность))
0
shmkv
2147 / 450 / 64
Регистрация: 21.07.2015
Сообщений: 1,192
06.09.2018, 21:27 6
Цитата Сообщение от Алина Алина Посмотреть сообщение
Помогите пожалуйста с заданиями)
Я правильно понимаю, что имеется ввиду "сделайте за меня задания"?
0
Байт
Эксперт C
20667 / 13158 / 2772
Регистрация: 24.12.2010
Сообщений: 27,694
06.09.2018, 21:28 7
Лучший ответ Сообщение было отмечено Алина Алина как решение

Решение

Алина Алина, В вашем стартовом посте есть пара мелких нарушение правил.
4.4 Один вопрос - одна тема
4.7 Покажите хоть какие-то ваши собственные усилия.
С 4.4 пусть разбираются модераторы. А я попытаюсь набросать примерный псевдокод
C++
1
2
3
4
5
6
7
int a[3][4], k;
cin >> k;
for(int i=0; i<3; i++)
  for(int j=0; j<4; j++) {
    a[i][j] = k;
    k *= 2;
  }
1
Manowar
06.09.2018, 21:36
  #8

Не по теме:

Цитата Сообщение от Алина Алина Посмотреть сообщение
нифига себе благодарность
На пельмешки.

0
Алина Алина
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 5
06.09.2018, 22:52  [ТС] 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
#include <iostream>
#include <ctime>
using namespace std;
 
void main()
{
    int a[3][4];
 
    srand(time(0));
    for (int i = 0; i<3; i++)
        for (int j = 0; j<4; j++)
        {
            a[i][j] = rand()%10;
        }
    for (int i = 0; i < 3; i++)   //вывод массива
    {
        for (int j = 0; j < 4; j++)
        {
            cout << a[i][j] << endl;
        }
    }
    cout << endl;
 
    system("pause");
};
0
Алина Алина
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 5
06.09.2018, 22:55  [ТС] 10
С первым я уже справилась, а вот на втором застряла.
не могу сообразить как сделать положит и отриц элементы.
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
#include <iostream>
#include <ctime>
using namespace std;
 
void main()
{
    int a[3][4];
 
    srand(time(0));
    for (int i = 0; i<3; i++)
        for (int j = 0; j<4; j++)
        {
            a[i][j] = rand()%10;
        }
    for (int i = 0; i < 3; i++)   //вывод массива
    {
        for (int j = 0; j < 4; j++)
        {
            cout << a[i][j] << endl;
        }
    }
    cout << endl;
 
    system("pause");
};
0
Verevkin
2128 / 1120 / 285
Регистрация: 12.03.2015
Сообщений: 6,412
06.09.2018, 23:03 11
Цитата Сообщение от Алина Алина Посмотреть сообщение
не могу сообразить как сделать положит и отриц элементы.
C++
1
a[i][j] = 5 - rand() % 10; // -4 ... +5
0
mvngr
160 / 127 / 80
Регистрация: 15.04.2018
Сообщений: 512
07.09.2018, 00:32 12
p.s. Не тестировал, может не работать

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>
#include <ctime>
using namespace std;
 
void main()
{
    int a[3][4];
    int bigBeforeZero = 1, smallAfterZero = 1000000;
 
    srand(time(0));
    for (int i = 0; i<3; i++)
        for (int j = 0; j<4; j++)
        {
            a[i][j] = rand()%10;
            if(a[i][j] < 0 && a[i][j] < bigBeforeZero)
                bigBeforeZero = a[i][j];
            if(a[i][j] > 0 && a[i][j] < smallAfterZero)
                smallAfterZero = a[i][j];
        }
    for (int i = 0; i < 3; i++)   //вывод массива
    {
        for (int j = 0; j < 4; j++)
        {
            cout << a[i][j] << ' ';
        }
        cout << endl;
    }
    cout << bigBeforeZero << smallAfterZero << endl;
 
    system("pause");
};
0
JesD
27 / 16 / 12
Регистрация: 13.09.2017
Сообщений: 64
07.09.2018, 00:55 13
Лучший ответ Сообщение было отмечено Алина Алина как решение

Решение

Первый курс университета ? Обычно преподы там любят проверять частности, поэтому нужно для начала определить: а существует ли положительные или отрицательные элементы вообще ? Массив может быть заполнен например нулями, а ноль как известно - не положительное и не отрицательное число.

Так как ноль не является ни положительным ни отрицательным, то его можно использовать в качестве значения для начальной инициализации наших переменных:

C++
1
2
3
4
5
6
7
8
9
10
11
12
int minPlus  = 0; // минимальный положительный
int maxMinus = 0; // максимальный отрицательный
 
// Определяем, существуют ли положительные или отрицательные элементы в массиве
    for(int i = 0; i < 3; i++)
        for(int j = 0; j < 4; j++)
        {
            if(a[i][j] > 0)
                minPlus = a[i][j];
            if(a[i][j] < 0)
                maxMinus = a[i][j];
        }
Теперь можно находить нужные значения, дополнительно проверяя условие переменных minPlus и maxMinus на то, что они не равны нулю (т.е отрицательные или положительные значения вообще существуют):

C++
1
2
3
4
5
6
7
8
9
// Ищем нужные нам значения, если они конечно существуют
        for(int i = 0; i < 3; i++)
            for(int j = 0; j < 4; j++)
            {
                if(a[i][j] < minPlus && a[i][j] > 0 && minPlus != 0)
                    minPlus = a[i][j];
                if(a[i][j] > maxMinus && a[i][j] < 0 && maxMinus != 0)
                    maxMinus = a[i][j];
            }
Теперь выведем эти значения на экран, предварительно проверив, что они существуют (т.е их значение не ноль):

C++
1
2
3
4
5
6
7
8
9
10
11
 if(minPlus != 0)
        cout << endl << " Минимальный положительный элемент: " << minPlus << endl;
    else
        cout << endl << " Положительных элементов не существует в массиве!" << endl;
 
 
 
    if(maxMinus != 0)
        cout << endl << " Максимальный отрицательный элемент: " << maxMinus << endl;
    else
        cout << endl << " Отрицательных элемент не существует в массиве!" << endl;
Решение самое тривиальное. Можно было подумать и написать код и эффективнее, но обычно на начальных этапах изучения С++, преподаватели на это не обращают внимание. Главное что вы освоили концепцию массивов и синтаксис работы с ними.

Добавлено через 15 минут
Хотя проверки во втором цикле

C++
1
2
minPlus != 0
maxMinus != 0
Не нужны, не знаю, зачем я их добавил) Еще касательно вашего кода:

C++
1
a[i][j] = rand()%10;
Здесь массив будет заполняться только числами от 0 до 9. Отрицательных не будет вообще. Лучше заменить например на:

C++
1
a[i][j] = rand()%20 - 10+1;
Тогда будут числа от -10 до 10
1
Yetty
2152 / 1520 / 1061
Регистрация: 18.12.2017
Сообщений: 5,076
07.09.2018, 06:51 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 <iomanip>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n, m;
    cout <<"n="; cin >>n;
    cout <<"m="; cin >>m;
    
      double **a = new double*[n], min=0.0, max=0.0; 
    for (int i = 0; i < n; i++)
      a[i]=new double[m];
    
    for (int i = 0; i < n; i++)
    {
    for (int j = 0; j < m; j++)
    {
    a[i][j]=0.1*(rand()%199 - 99);  
    cout <<setw(4)<<a[i][j]<<" ";
    }
    cout << endl;
    }   
    
    for (int i = 0; i < n; i++) 
    for (int j = 0; j < m; j++)
        if (a[i][j] < 0) {max = a[i][j]; break;}
    
    for (int i = 0; i < n; i++) 
    for (int j = 0; j < m; j++)
        if (a[i][j] > 0) {min = a[i][j]; break;}
        
    for (int i = 0; i < n; i++)
    {
    for (int j = 0; j < m; j++)
    {   
    if (a[i][j] < 0 && a[i][j] > max) max = a[i][j];
    if (a[i][j] > 0 && a[i][j] < min) min = a[i][j];    
    }   
    } 
    
    cout <<"max_negative="<<max<<"\nmin_positive="<<min<<"\n";    
        
    for (int i = 0; i < n; i++)
    delete [] a[i];
    delete [] a;
 
system("pause");
return 0;
}
но нужно будет ещё добавить проверку на наличие в массиве положительных и отрицательных
0
sourcerer
07.09.2018, 06:52     В заданной матрице найти самый большой отрицательный элемент и самый маленький положительный и вывести их на экран
  #15
 Комментарий модератора 
Алина Алина, пожалуйста, прочитайте правила форума.
Особое внимание обратите на следующие пункты:
0
07.09.2018, 06:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2018, 06:52
Привет! Вот еще темы с ответами:

В каждом столбце матрицы найти самый маленький элемент
Дана матрица размером m*n, всё элементы которой разные. В каждом столбце найти самый маленький...

Найти самый большой элемент Массива
Помогите с заданием не как не могу сообразить С помощью датчика случайных чисел сформировать два...

Найти самый большой элемент матрицы по модулю и его индекс
дана квадратная матрица размером . найти самый большой элемент по модулю и его индекс.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru