Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56

Выбрать определенные числа массива

11.04.2013, 14:10. Показов 4030. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Есть двумерный массив, который я извлекаю из файла (нужен не весь файл).
Далее мне нужно использовать только те строки, в которых все числа входят в диапазон, заданный вручную программно. Т.е. если в одной из строк есть хотя бы одно число, не входящее в диапазон, то эту строку мы в дальнейшем не используем для вычислений. При этом сколько строк в массиве я заранее не знаю (высчитываю с помощью List->Count).
Подскажите, пожалуйста, каким образом это можно реализовать..
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.04.2013, 14:10
Ответы с готовыми решениями:

Как выбрать определенные числа из строки?
Дана переменная $d , значение которой = 1751700 . Как взять из этого значения все, начиная с 4 символа(то есть 1700)?

Выбрать в обратном порядке определенные значения из массива
Дано натуральное число n и целые числа a1,...an. Если в данной последовательности ни одно положительное число не расположено после...

Выбрать два числа b и c из массива таким образом, чтобы числа a,b,c могли быть длиннами сторон треугольника.
Пусть даны вещественное число a и массив вещественных чисел Q. Выбрать два числа b и c из массива таким образом, чтобы числа a,b,c могли...

7
 Аватар для Antiplayer
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
11.04.2013, 16:04
Покажи пример файла хотя бы. Как выглядит. Как разделены твои числа(мб цифры?). Так то просто, смотрим по разделителям между числами и каждое число проверяем на условие вхождения в твой заданный диапазон.
Без конкретного примера файла не могу написать пример программы, чтобы не тратить время впустую
0
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56
14.04.2013, 14:52  [ТС]
Antiplayer,
9 0 0 23 87 56 98 7 0 1 0
0 2 1 4 56 55 20 12 0 2 1
2 3 3 0 24 19 15 16 4 5 0
0 0 0 12 16 4 17 18 7 1 0
.....

- что-то в этом роде.
И, скажем, заданный диапазон: 0-70, в первой строке есть числа больше 70, следовательно, нужно исключить всю первую строку.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
14.04.2013, 15:13
C++
1
if (AnsiString.Pos("71")) return;
1
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56
15.04.2013, 13:34  [ТС]
LK, Спасибо. А если нужно начать не с "0", а, допустим, с "15"?
И еще, мне нужно количество строк. Просто счетчик в цикле завести (+1)?
0
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56
16.04.2013, 13:42  [ТС]
LK, не работает... либо я что-то не так делаю..
0
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56
19.04.2013, 09:02  [ТС]
Ну, подскажите, пожалуйста, кто-нибудь, какое еще решение можно применить к моей задаче.

Я попробовала исключить строки с ненужными числами с помощью меток, понимаю, прошлый век, но попыталась. Вроде написала все правильно, но, к сожалению, не работает... Программа работает со всеми строками...

Вот кусочек кода:
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
//проверка вхождения данных в заданный диапазон
        metka1:
        t=0;
        CNTT=0;
        for (i=0; i<CNT; i++)
        {
                //если в данной строке, проходя каждое число, хоть одно не входит в диапазон
                //то переходим к metka1, то есть, оставляя данную строки без изменений, преходим на следующую
                //а если все в порядке, и прошлись по всей строке, то идем к metka2
                for (j=0; j<201; j++)
                {
                        if ((f[i].a[j]<=t1)&&(f[i].a[j]>=t2))
                                goto metka1;
                        else if ((j==200)&&(f[i].a[j]>=t1)&&(f[i].a[j]<=t2))
                                goto metka2;
                }
                //CNTT - количество строк с числами подходящего диапазона;
                //записываем все нужные данные в новый двумерный массив
                metka2:
                CNTT+=1;
                for (j=0; j<201; j++)
                        A[t][j]=f[i].a[j];
                t++;
        }
Добавлено через 1 час 10 минут
Поняла, что 1-я метка у меня стоит не в том месте.
Переставила ее:

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
//проверка вхождения данных в заданный диапазон
        t=0;
        CNTT=0;
        for (i=0; i<CNT; i++)
        {
                //если в данной строке, проходя каждое число, хоть одно не входит в диапазон
                //то переходим к metka1, то есть, оставляя данную строки без изменений, преходим на следующую
                //а если все в порядке, и прошлись по всей строке, то идем к metka2
                for (j=0; j<201; j++)
                {
                        if ((f[i].a[j]<=t1)&&(f[i].a[j]>=t2))
                                goto metka1;
                        else if ((j==200)&&(f[i].a[j]>=t1)&&(f[i].a[j]<=t2))
                                goto metka2;
                }
                //CNTT - количество строк с числами подходящего диапазона;
                //записываем все нужные данные в новый двумерный массив
                metka2:
                CNTT+=1;
                for (j=0; j<201; j++)
                        A[t][j]=f[i].a[j];
                t++;
                metka1:
        }
Но все равно не работает....
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
19.04.2013, 09:03
скорее так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        t=0;
        CNTT=0;
        for (i=0; i<CNT; i++)
        {
                for (j=0; j<201; j++)
                {
                if ((f[i].a[j]<=t1)||(f[i].a[j]>=t2)) break; // прерываем цикл
                }
        if(j == 201) // т.е. если удалось дойти до конца цикла
            {
                    for (j=0; j<201; j++)
                        A[t][j]=f[i].a[j];
                    t++;
            }
        }
CNTT = t;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.04.2013, 09:03
Помогаю со студенческими работами здесь

Найти определенные строки (содержащие определенные слова) и сохранить найденные строки из массива в один файл
Имеется массив строк. Подскажите пожалуйста, как можно найти определенные строки (содержащие определенные слова) и сохранить найденные...

Выбрать определенные столбцы
Здравствуйте. Подскажите, пожалуйста. Вот у меня есть БД на SQL. Я ее подключаю в VS2012. А как мне теперь сделать так, чтобы, например,...

как выбрать определенные строки
Уважаемые форумчане, подскажите, плиз, начинающему... В одной таблице хранятся данные, один из столбиков привязан к дате. Как можно...

Выбрать из массива ближайшие числа
Есть массив 2,5,3,8,10. И входное число 3. -В этом случае нужно отобрать 3,2,5. Как это реализовать с LINQ?

Выбрать случайные числа из массива
Привет всем. Подскажите пожалуйста как выбрать определеное количество случайных чисели (8) которые будут всегда меняться например с этого...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru