![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Помогите написать часть програмы! Нужно со списка ComboBox взять подряд каждого ученика и сравнить однажды с кем-то рендомно, кто лучше.
ПРимер: Иванов 10 8 Петров 9 7 Сидоров 11 11 Сравнить сперва Иванова первая оценка(10) с Сидоровым со второй оценкой(11). Потом Петрова первая оцека(9) с кем то со второй оценкой и т.д. Возможно ли такую прогу написать? Заранее благодарен. |
|
#2
|
||||
|
||||
|
Возможно.
![]() Код:
procedure TForm2.Button3Click(Sender: TObject);
var
I, J : Integer;
St : String;
begin
for I := 0 to Combobox1.Items.Count - 1 do
begin
St := ComboBox1.Items[i];
while True do
begin
J := Random(ComboBox1.Items.Count);
if J = I then
Continue
else
begin
St := St + ComboBox1.Items[J];
Break;
end;
end;
end;
end;![]() Последний раз редактировалось angvelem, 06.08.2011 в 21:56. |
|
#3
|
|||
|
|||
|
С текстового файла могу только первую оценку с первой сравнить, а как первую оценку со второй сравнить другого ученика? этого понятия неимею.... и как прыстыкувать рендомный выбор списка со значениями с текстового файла?
Последний раз редактировалось dinamo0, 06.08.2011 в 22:16. |
|
#4
|
||||
|
||||
|
Как хранятся записи?
|
|
#5
|
|||
|
|||
|
в текстовом файле:
Иванов-12-10 Петров-10-8 Сидоров-7-10 |
|
#6
|
||||
|
||||
|
Так, ещё раз. Что загружено в ComboBox, соответствует ли порядок загруженного с порядком в текстовом файле? Что точно хочется получить, по пунктам. Подкинь текстовый файл.
Последний раз редактировалось angvelem, 06.08.2011 в 23:02. |
|
#7
|
|||
|
|||
|
в СomboBoxe тот же список что и в текстовике. Нужно подряд каждого ученика сравнить только один раз с кемто с этого же списка(тоесть рендомно, а здесь повторения можна). Сравниваютя оценки первой колонки(для первого ученика) со второй оценкой другого ученика. Итог кто лучше, вывести диалоговым сообщением...
|
|
#8
|
||||
|
||||
|
Тут уже 3 оценки.
То есть, если я сравнил Алешину с Горбачевым, то нельзя эти фамилии больше использовать? ![]() |
|
#9
|
|||
|
|||
|
Алешину уже нет, но только это касается для первой оценкой. Когда цикл дойдет до Горбачевой(первая оценка), то ее можна сравнивать с Алешиной(вторая оценка). Мне главное первые две оценки. Там допишу по возможности. Может так понятливо будет : нужно первую оценку каждого ученика по списку подряд, сравнить со второй оценкой другого ученика с этого же списка. Вторая оценка у ученика которого рендом выбрал. Рендом может хоть 5 раз вибирать одного и того же ученика со второй оценкой.
|
|
#10
|
||||
|
||||
|
Ладно, всё равно туплю. Допишу выложу.
Вот, получи. Получилось тупо, но я не всё понял по заданию. Последний раз редактировалось angvelem, 07.08.2011 в 23:42. |
|
#11
|
|||
|
|||
|
Спасибо! Это оно на 90%. Таблица не нужна. Можна было проще диалоговым окном кто лучше: Алешина лучше за Горбачеву иначе Горбачева лучше Алешиной. Или в таблице добавить столбец кто лучше. Завтра разберусь...
Для меня тяжело додуматься как с текстовика выбирать нужные позиции Буду разбирать на твоем примере. |
|
#12
|
||||
|
||||
|
Загрузил в StringList, а затем построчно обрабатываешь. Можно использовать функции Pos или PosEx для поиска нужных "вхождений", в данном случае "-".
|
|
#13
|
|||
|
|||
|
снова нужна помощь, я застрял. Пытаюсь вставить для твоей проги диалоговые сообщения :
if Rec[i].Rate1>Rec[J].Rate2 then ShowMessage(Rec[i].Name +' имеет бал больше чем '+Rec[J].Name ) else if Rec[i].Rate1<Rec[J].Rate2 then ShowMessage(Rec[i].Name +' имеет бал меньше чем '+Rec[J].Name ) else ShowMessage(Rec[i].Name +' имеет бал равный '+Rec[J].Name ); и ничего хорошого. а может обойтись без сообщений и в таблицу вставь имя лучшего в каждой паре? |
|
#14
|
||||
|
||||
|
Можно, но смысл? Тогда будет неизвестно кто лучший в паре. Может добавить колонку для лучшего?
|
|
#15
|
|||
|
|||
|
сделай как лучше для тебя
|