Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.12.2023, 18:43
Discoeggplant Discoeggplant вне форума
Прохожий
 
Регистрация: 27.11.2023
Сообщения: 1
Версия Delphi: Rad studio
Репутация: 10
По умолчанию Добавить 3 переменные в которых бы хранились 3 значения переменной l

у меня есть код программы, реализующей тест на определение темперамента. в ходе программы она считает баллы полученные от пользователя путем нажатия кнопок да и нет, записывает в список pts. также у нас есть список ключей, в которых 3 части разделенные знаком =: в первой название шкалы оценивания, во второй номера вопросов на которые если пользователь отвечает да, то получает балл, в третьей части то же самое но для вопросов с ответом нет. все это записано в 3 строки - 3 параметра оценивания(шкалы). функция ots(i) возвращает 3 строки, как и переменная l в которой записано количество баллов по каждой шкале, то есть 3 строки, 3 разных числа баллов, которые получаются в ходе цикла. и мне необходимо сделать ,чтобы вот это самое количество баллов хранилось еще в разных переменных, разделить как то эти 3 числа, чтобы они не выводились поочереди(например если в showmessage загнать l, то мне последовательно выдается 3 числа, но мне нужно чтобы хотя бы в одну строку 3 числа были, а лучше вообще отдельно ) для того, чтобы в дальнейшем прописать условия для выдачи пользователю не только количество баллов отдельно по критериям(шкалам), но и сам тип, зависящий от количества баллов по первой, по второй и третьей шкале(в списке ключа первая, вторая и третья строки соответственно)
Код:
function TForm1.ots(vs: integer): string;
var
str,c,p,o,v: string;
    
    

nsm   : array[0..3] of string; // Хранилище лексем строки ключа
// 0 - Название шкалы
// 1 - перечень вопросов с ответом "Да"
// 2 - -//-              с ответом "Нет"
// 3 - множитель "Грубо"
aaa : array[0..2] of integer;

i,l,b,g,y : integer;
flg :boolean;
begin
str:= kvs.Strings[vs];  // Строка ключа
l:= 0;
b:=0;
flg:= true;

for i:=1 to Length(str) do
begin
if str[i] = '=' then  // пойман разделитель
begin
inc(l);
//inc(b); // Заполнить следующую лексему
flg:= false;
end;
if flg then nsm[l] := nsm[l] + str[i];
if not flg then flg:= true;
end;

// Проверка ответов "Да"
str:= nsm[1] + ' ' + nsm[2]; // перечень заданий с критерием ключа
v:= '';
flg:= true;
l:= 0; // счётчик ответов подходящих по критерию ключа (набранных баллов)
for i:=1 to Length(str) do  //считываем номер задания для проверки
begin
if str[i] = ' ' then flg:= false;
if flg then v:= v + str[i];
if not flg then  // если номер есть
begin
flg:= true;
// и на него был дан ответ "Да", то увеличиваем счетчик баллов на единицу
if StrToIntDef(pts.Strings[StrToInt(v)-1], 0) = 1 then
inc(l);
v:='';  // Подготовка к следующей итерации цикла
end;
if (i=length(str)) and (v <> '') then // достигнут конец строки
if StrToIntDef(pts.Strings[StrToInt(v)-1], 0) = 1 then
inc(l); // окончательная проверка
//inc(b);
end;

str:= nsm[2]; //  Проверка ответов "Нет", тоже самое
if length(str) > 0 then  // Если есть номера для проверки
begin
v:='';
flg:= true;
for i:=1 to Length(str) do
begin
if str[i] = ' ' then flg:= false;
if flg then v:= v + str[i];
if not flg then
begin
flg:= true;
if StrToIntDef(pts.Strings[StrToInt(v)-1], 0) = 2 then inc(l);
v:= '';
end;
if (i = length(str)) and (v <> '') then
if StrToIntDef(pts.Strings[StrToInt(v)-1], 0) = 2 then inc(l);
end;
end;
l:= l * StrToIntDef(nsm[3], 0); // умножаем набранные баллы на множитель

if l > 0 then Result:= nsm[0] + ' - баллов: ' + IntToStr(l) else
Result:= nsm[0] + ' - баллов: нет';
end;



end.
Вложения
Тип файла: zip Unit1.zip (1,013.5 Кбайт, 2 просмотров)

Последний раз редактировалось Discoeggplant, 20.12.2023 в 18:47.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:01.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter