Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2021, 18:26   #1
NIKITA555
 
Регистрация: 24.12.2020
Сообщений: 8
По умолчанию c++ как привязать промежуток к индексам i и j, чтобы посчитать количество элементов?

Помогите пожалуйста написать код!

Условие задачи:
В двумерном массиве A(N, M) найдите число элементов, лежащих в промежутке от C до D.

Код я почти написал:

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
setlocale(LC_ALL, "rus");
int n, m;
cout << "Введите количество столбцов и строк: " << endl;
cin >> n >> m;

//выделение памяти под массив
int** a = new int* [n];
for (int i = 0; i < n; i++)
{
a[i] = new int[m];
}

cout << "Введите элементы массива: " << endl;

//ввод элементов массива
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> a[i][j];
}
}

int c, d, count = 0;
cout << "Введите промежуток: " << endl;
cin >> c >> d;

...


return 0;
}

Вот только я не могу разобраться в том, как привязать промежуток к индексам i и j, чтобы посчитать количество элементов.

Последний раз редактировалось NIKITA555; 13.01.2021 в 18:32.
NIKITA555 вне форума Ответить с цитированием
Старый 13.01.2021, 19:04   #2
ichi
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 144
По умолчанию

Цитата:
Сообщение от NIKITA555 Посмотреть сообщение
В двумерном массиве A(N, M) найдите число элементов, лежащих в промежутке от C до D.
Что это за промежуток от C до D? Как он пересекается с двумерным массивом размером NxM?
Если у нас двумерный массив 4x4, то где расположен промежуток от C до D в этом массиве?
Например массив такой:

1234
5678
9012
3456
ichi вне форума Ответить с цитированием
Старый 13.01.2021, 19:19   #3
NIKITA555
 
Регистрация: 24.12.2020
Сообщений: 8
По умолчанию

ichi, в этой задаче само условие криво написано. Но я посидел, подумал, и кажется, здесь просят найти именно сумму элементов двумерного массива. От какого-то произвольного числа C до D.
NIKITA555 вне форума Ответить с цитированием
Старый 13.01.2021, 19:33   #4
ichi
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 144
По умолчанию

Я все равно не понимаю как это должно работать. Установим промежуток от 9 до 6. Массив будет такой:

1234
5678
9012
3456

Т.е. мы получим две суммы, первая 9+8+7+6, вторая 9+0+1+2+3+4+5+6. Так?
ichi вне форума Ответить с цитированием
Старый 13.01.2021, 20:28   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Мне кажется, что нужно посчитать количество элементов, значения которых лежат в заданном промежутке.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 13.01.2021, 23:46   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Цитата:
Мне кажется, что нужно посчитать количество элементов, значения которых лежат в заданном промежутке.
Почему кажется?
Условие так и звучит. Есть двухмерный массив со значениями. Есть два порога C и D.
Надо посчитать число элементов, значения которых попадают в этот интервал.
Вот только почему не определён тип данных?
Возможно, что условие задачи записано словами ТС, так, как это он понял при прочтении.
Вместе с тем, если он определяет массив типа int, то ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 14.01.2021, 03:10   #7
ichi
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 144
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Условие так и звучит. Есть двухмерный массив со значениями. Есть два порога C и D.
Надо посчитать число элементов, значения которых попадают в этот интервал.
Т.е., если взять частный случай, промежуток от 9 до 6 и массив такой:

1234
5678
9012
3456

То ответ будет, 4 и 8?
тут может быть множество вариантов ответа. Промежутков от 9 до 6 тут больше чем два, смотря как обходить элементы массива. Бред какой-то.

Последний раз редактировалось ichi; 14.01.2021 в 03:15.
ichi вне форума Ответить с цитированием
Старый 14.01.2021, 09:35   #8
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Цитата:
Т.е., если взять частный случай, промежуток от 9 до 6 и массив такой:

1234
5678
9012
3456
Не очень удачная запись примера, но всё же.
Код:
1 2 3 4
5 6 7 8
9 0 1 2
3 4 5 6
Если мы считаем, что это двухмерный массив со значениями до 10, то в заданный промежуток войдут числа: 6, 7, 8, 9, 6, включая и границы.
Ответ: 5 элементов имеют значения в промежутке [6, 9].

ТС неправильно сформулировал тему.
Он не до конца понял постановку задачи. Об индексах тут нет речи.

PS: Ранее о таких вопросах я уже писал, повторю.
ТС привёл задание так, как его понял, со своих слов, а не так, как оно было записано преподавателем.
1. Не сказано о типе данных
2. Не сказано о граничных значениях, включаются или нет.

Тема сформулирована так, как её видит ТС, но решение задачи в другой плоскости.

Если моё высказывание неверно, то пусть ТС выложит изображение или первичную копию задания.

PSS: Если его вообще интересует эта тема.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 14.01.2021, 10:15   #9
ichi
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 144
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Если мы считаем, что это двухмерный массив со значениями до 10, то в заданный промежуток войдут числа: 6, 7, 8, 9, 6, включая и границы.
Ответ: 5 элементов имеют значения в промежутке [6, 9].
Спасибо. Теперь понятно. Ну, тогда решить задачу становится просто.

Решение:
Код:
for (int i = 0; i < n; i++)
{
	for (int j = 0; j < m; j++)
	{
		if ((a[i][j]>=c) && (a[i][j]<=d)
		{
			count++;
		}
	}
}

Последний раз редактировалось ichi; 14.01.2021 в 10:18.
ichi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в эксель посчитать входит ли введеная дата в промежуток дат, с последующим выделением Будущийумник Помощь студентам 5 04.03.2018 13:33
Посчитать количество смен знака элементов (C) quewsome Помощь студентам 1 27.12.2017 18:25
посчитать количество нулевых элементов двух матриц с помощью функции. Паскаль gravitono Паскаль, Turbo Pascal, PascalABC.NET 2 18.04.2016 17:22
Составьте процедуру обнуляющую минимальное количество элементов так, чтобы сумма элементов столбца не превышала заданную KorsD Паскаль, Turbo Pascal, PascalABC.NET 3 16.01.2015 10:03