:: Visual Foxpro, Foxpro for DOS
Найти строку в таблице
alexzima

Сообщений: 147
Дата регистрации: 10.07.2006
Всем привет!

Задача: есть таблица table1.
В ней 14 полей все имеют тип Logical.
В данной таблице 5000 записей.

Нужно найти запись с наибольшим значением
на Да/Нет из всех возможных комбинаций, неважно Ложь это или Истина.
Ratings: 0 negative/0 positive
Re: Найти строку в таблице
Владимир Максимов

Сообщений: 14063
Откуда: Москва
Дата регистрации: 02.09.2000
alexzima
Нужно найти запись с наибольшим значением
на Да/Нет из всех возможных комбинаций, неважно Ложь это или Истина.

Как определяется это самое "значение", чтобы потом среди них отобрать "наибольшее"?

Обычно считают, что "Да" = 1, а "Нет" = 0. Соответственно, и "значение" - это сумма чисел, определенных из всех 14 полей. Но у Вас фраза построена таким образом, что непонятно, каким образом это самое "значение" рассчитывается



Исправлено 1 раз(а). Последнее : Владимир Максимов, 24.11.22 10:53
Ratings: 0 negative/0 positive
Re: Найти строку в таблице
alexzima

Сообщений: 147
Дата регистрации: 10.07.2006
Каждая строка это комбинация 1 или 0 в любой последовательности. Она может быть
00000000110011 и 11100010011100, т. е. любой из возможных из 1 и 0.
Найти нужно строку, которая имеет самое большое кол-во комбинаций из 1 и 0, неважно 0 это или 1.
Ratings: 0 negative/0 positive
Re: Найти строку в таблице
Владимир Максимов

Сообщений: 14063
Откуда: Москва
Дата регистрации: 02.09.2000
Другими словами, вопрос в том, как определить количество уникальных комбинаций для фиксированного количества нулей и единиц?

Я бы решал задачу "в лоб"

14 единиц - это десятичное число 16 383. Делаем табличку на все эти значения (начиная со значения 0) с полями: число, количество единиц в двоичном представлении этого числа

Дальше остается просто подсчитать количество строк в этой таблице для одинакового количества единиц. Можно из этой выборки еще одну табличку сделать.

Собственно, все. По Вашей таблице для каждой строки определяется количество единиц, смотрите, сколько чисел можно записать этим количеством единиц для 14 бит и дальше определяется max/min. Для простоты, я бы сделал дополнительное поле в Вашей таблице, где сразу записывал количество комбинаций для записи. И выборку по этому полю.
Ratings: 0 negative/1 positive
Re: Найти строку в таблице
alexzima

Сообщений: 147
Дата регистрации: 10.07.2006
Будет ли это справедливо если
00011100000000 не равно 10010000000001?

Т. е. в первой строке три 1 и во второй три 1, но это разные варианты.
Ratings: 0 negative/0 positive
Re: Найти строку в таблице
Владимир Максимов

Сообщений: 14063
Откуда: Москва
Дата регистрации: 02.09.2000
alexzima
Будет ли это справедливо если
00011100000000 не равно 10010000000001?

Т. е. в первой строке три 1 и во второй три 1, но это разные варианты.

Вам лучше знать. Я Вас и спрашивал про критерии подсчета. Что именно Вы вкладываете в понятие "уникальная комбинация"? Как именно эта самая "комбинация" формируется?

Из приведенного примера непонятно, в чем проблема? Ну да, в обоих случаях по три единицы. Т.е. количество комбинаций будет одинаково. И в чем проблема? Их надо как-то по разному считать? Как?
Ratings: 0 negative/0 positive
Re: Найти строку в таблице
alexzima

Сообщений: 147
Дата регистрации: 10.07.2006
Ок. Спасибо, Владимир!
Вопрос закрыт.
Ratings: 0 negative/0 positive
Re: Найти строку в таблице
akvvohinc

Сообщений: 4001
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
Каждая строка это комбинация 1 или 0
Цитата:
Найти нужно строку, которая имеет самое большое кол-во комбинаций из 1 и 0
Смешная постановка задачи
1) строка - это одна комбинация
2) найти строку, имеющую самое большое количество комбинаций.
Ratings: 0 negative/0 positive
Re: Найти строку в таблице
alexzima

Сообщений: 147
Дата регистрации: 10.07.2006
Строк (записей) в файле 5000

Имелось ввиду найти строку из 5000
Ratings: 0 negative/0 positive
Re: Найти строку в таблице
akvvohinc

Сообщений: 4001
Откуда: Москва
Дата регистрации: 11.11.2008
Я не о количестве строк таблицы, а о том, как строка, представляющая собой одну комбинацию, может одновременно иметь какое-то другое - большее или меньшее - количество комбинаций. Ведь найти надо строку, имеющую самое большое количество комбинаций.

Но согласно пункту 1, строка - это одна комбинация, то есть все 5000 строк имеют ровно одну комбинацию.
Так что ответ очевиден - любая строка имеет самое большое количество комбинаций в количестве одна.
Ratings: 0 negative/3 positive
Re: Найти строку в таблице
of63

Сообщений: 24629
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> Нужно найти запись с наибольшим значением

значением какого-то поля по фильтром (GROUP в логичиском поле). мтк ТС не совсем Прост )
Ratings: 0 negative/0 positive
Re: Найти строку в таблице
akvvohinc

Сообщений: 4001
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
значением какого-то поля по фильтром (GROUP в логичиском поле). мтк ТС не совсем Прост )
Вероятнее всего, собственно порядок нулей и единиц в записи значения не имеет - важно лишь их количество.
А под комбинацией ТС понимает порядок этого количества нулей и единиц в пронумерованных от 1 до 14 полях записи.

Скажем, если в 13 полях записи находятся 0, а в 1 поле - 1, то эта запись может иметь 14 возможных (уникальных) комбинаций:
10000000000000
01000000000000
00100000000000
...
00000000000001

Если же в в 12 полях записи находятся 0, а в 2 полях - 1, то эта запись будет иметь гораздо больше возможных (уникальных) комбинаций (91).
И так далее.
Понятно, что максимальное количество таких комбинаций получится при 7 нулях и 7 единицах (3432, если я не ошибся).

То есть это не что иное, как количество сочетаний из 14 по X (где X - число от 0 до 14).
Соответственно, и результат вычисляется по известной формуле для числа сочетаний.

Но это лишь мои догадки, в чём суть данного задания.



Исправлено 3 раз(а). Последнее : akvvohinc, 25.11.22 20:54
Ratings: 0 negative/0 positive
Re: Найти строку в таблице
of63

Сообщений: 24629
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
[quote alexzima]Всем привет!

Задача: есть таблица table1.
В ней 14 полей все имеют тип Logical.
В данной таблице 5000 записей.

Нужно найти запись с наибольшим значением
на Да/Нет из всех возможных комбинаций, неважно Ложь это или Истина.[/quote]



Нужно найти запись с наибольшим значением
на Да/Нет из всех возможных комбинаций, неважно Ложь это или Истина.[/quote]

Задача не очень "физичная"

"" - , неважно Ложь это или Истина.
это прибавляет ********а

се имеют тип Logical.
ужно найти запись с наибольшим значением



Исправлено 1 раз(а). Последнее : of63, 25.11.22 20:38
Ratings: 0 negative/0 positive
Re: Найти строку в таблице
sphinx
Автор

Сообщений: 30760
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Есть еще ISBLANK()


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 16 (Гостей: 16)

© 2000-2023 Fox Club 
Яндекс.Метрика