Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Проверить условие

Всем привет.

Как правильно проверить условие:

Условие вида: если чекбокс нажат и в комбокс текст равен = "F5", то выполнить условие

Вот кусок кода , но он не работает (
Код:

if RadioButton1.Checked=True and RadioButton7.Checked=True and ComboBox1.text='F5' then begin .... //код end;

Выдает ошибку unit1.pas(322,54) Error: Operator is not overloaded: "Boolean" and "untyped"

Как такое можно поправить, проверку if разбивал на несколько частей- все равно ошибка (((
Ответ:
Цитата:
Сообщение от Максим_maks
Спасибо, все оказалось на самом деле просто.
На самом деле это совсем не просто если не поймёте правила (последовательность) выполнения арифметических/логических операций.
Вопрос: Проверить условия совпадения и записать расчетные формулы для нахождения корня уравнения с заданной точностью

1) Проверить условия совпадения и записать расчетные формулы для нахождения корня уравнения с точностью ε = 10 -4.
2) Составить блок-схему алгоритма метода.
3) Выбрать начальное приближение к корню на заданном промежутке.
4) Составить программу решения задачи. требования:
а) Программа должна состоять не менее чем из 4-х функций:
с главной функции вызывается функция метода, в нее в качестве параметра передается указатель на третью функцию варианта -а или-б (для обеспечения гибкости вызова функции для вычислений конкретных алгебраических выражений - значений функции).
б) Все входные данные передавать в другие функции через список формальных параметров.
в) Функция, реализующая метод нахождения (уточнение) корня уравнения, должна иметь в списке параметров:
- Границы промежутка, где находится корень,
- Точность, с которой надо приблизиться к значению корня,
- Максимальное количество итераций,
- Указатель на функцию, которая будет осуществлять вычисления уравнения в точке,
- Количество итераций, что сделано для приближения к корню с заданной точностью.
г) Функция должна выбирать начальное приближение к корню на заданном промежутке.
5) В главной функции предусмотреть: приглашение и введение границ промежутка, значение точности приближения, максимального количества итераций; вызов функции уточнение значения корня, отображение результата. Также программно выполнить проверку, является найденное значение корнем уравнения (путем подстановки в уравнение). Если так, результаты на экран с соответствующим комментарием (с точностью 4 знака после точки), иначе - значение для анализа ситуации (с комментарием).
6) Программа сопровождается комментарием, который содержит в себе: Ф.И.О., шифр группы, условие задачи, примечания (если необходимо). Вспомогательные функции должны сопровождаться комментарием, который содержит в себе: объяснение назначения результата и аргументов функции, название их типов и распределение аргументов в входящие, исходящие и (или) вхиднивихидни (т.е. те, которые меняются).
7) тестирования провести на вариантах входной информации, которые предусматривают различные ситуации в границах ограничений в постановке задачи. Анализ результатов необходимо провести самостоятельно в демонстрации программы преподавателю и зафиксировать тесты в тетради с расчетами или ссылками на соответствующие текстовые файлы.



cos (x/2) – 2 * sin (1/x) + 1/x = 0
[ 1 ; 2.5 ]
половинного деления
приблизительный корень 2.3
1.8*x4-sin(10*x)=0
[0.25 ; 0.45]
половинного деления
приблизительный корень 0.3125

Добавлено через 13 минут
Пожалуйста,помогите!
Ответ: а, итерации как вписать?
Вопрос: Проверить условие ортогональности матрицы

Мальчики помогите пожалуйста выполнить задание , а то я в этом плохо понимаю ((( Нужно написать программу которая бы решала СЛАУ A(n,n)X=B(n), где матрица A и вектор B заданы. Для матрицы
C=XX^T проверить условие ортогональности: CC^T=E и C^TC=E, где E – единичная
матрица. Огромное спасибо всем кто откликнется
Ответ: Все уже сделано за нас
Вопрос: Проверить условие SQL запроса

Добрый вечер. Перестал работать запрос:
SQL
1
2
3
4
5
6
            echo $sql; // для проверки SQL запроса
            $res = $mysqli->query($sql);
            IF (!$res)
            {
                $errors[] = 'Произошла ошибка при формировании SQL запроса.';
            }
Он перестал работать, как только в $sql я добавил еще один insert into но в другую таблицу.
У меня не проходит проверку и постоянно выполняется условие !$res, при этом запрос, который я выводил через echo $sql работает! (проверено через phpadmin).
Что может быть? Грешу на неправильную проверку.
Ответ: darksector, ну да, все верно. Разбейте на два запроса и поочередно передайте их в php-функцию/метод.
Вопрос: Напечатать те слова, которые удовлетворяют условию: "каждая буква входит в него более двух раз"

Данная последовательность слов , напечатать те слова которые удовлетворяют условию: каждая буква входит в него более двух раз

Добавлено через 1 час 20 минут
???
Ответ: итак, как я вижу - разбивка предложения на слова не является проблемой, тогда пишем функцию проверки слова.

1. исходим из того, что каждый символ занимает 1 байт и в строке к символам можно обращаться через [] (для последних версий delphi это не работает!) и в словах только латиница:
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
program check_word;
 
//{$mode objfpc}{$H+}
 
uses
  Classes, sysutils;
 
//на входе получаем слово, если каждая буква слова имеет более 2-х вхождений - возвращаем True
//иначе False
function check_word(a: String): Boolean;
var
  len, i: integer;
  chars: array[ord('a')..ord('z')] of integer;
begin
 
  Result:= False;
  len:= Length(a);
 
  if len < 2 then exit;
 
  //инициализация массива вхождений
  for i:= low(chars) to high(chars) do
      chars[i]:= 0;
 
  a:= LowerCase(a);
  //заполняем массив вхождений каждой встреченной буквы
  for i:= low(a) to high(a) do
    inc(chars[ord(a[i])]);
  //проверим условия, если хоть одна буква имеет 1 вхождение, то условие не выполнено
  for i:= low(chars) to high(chars) do
    if chars[i] = 1 then Exit;
 
  //если дошли до сюда - значит слово то, что надо!
  Result:= true;
 
end;
 
var
  test1: string = 'ababababababafdfd'; // верное
  test2: string = 'a'; //не верное
  test3: string = 'aba'; //не верное
  test4: string = 'AbaBababababafdfdDDDD'; // верное
  test5: string = 'SSSSSS'; // верное
begin
  writeln('Expected TRUE, we have: ', check_word(test1));
  writeln('Expected FALSE, we have: ', check_word(test2));
  writeln('Expected FALSE, we have: ', check_word(test3));
  writeln('Expected TRUE, we have: ', check_word(test4));
  writeln('Expected TRUE, we have: ', check_word(test5));
  readln;
end.


Тут функция проверки слов и небольшой тест, что все работает.

Добавлено через 15 минут
ой не правильно прочитал задание. предыдущая программа проверят слова на вхождение каждой буквы 2 и более раз.

ниже проверка как в условии: "входит в него более двух раз"
тесты тоже подправлены:

Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
program check_word;
 
//{$mode objfpc}{$H+}
 
uses
  Classes, sysutils;
 
//на входе получаем слово, если каждая буква слова имеет более 2-х вхождений - возвращаем True
//иначе False
function check_word(a: String): Boolean;
var
  i: integer;
  chars: array[ord('a')..ord('z')] of integer;
begin
 
  Result:= False;
 
 
  if Length(a) < 3 then exit;
 
  //инициализация массива вхождений
  for i:= low(chars) to high(chars) do
      chars[i]:= 0;
 
  a:= LowerCase(a);
  //заполняем массив вхождений каждой встреченной буквы
  for i:= low(a) to high(a) do
    inc(chars[ord(a[i])]);
  //проверим условия, если хоть одна буква имеет мене 3 вхождений, то условие не выполнено
  for i:= low(chars) to high(chars) do
    if chars[i] in  [1, 2] then Exit;
 
  //если дошли до сюда - значит слово то, что надо!
  Result:= true;
 
end;
 
var
  test1: string = 'ababababababafdfdfd'; // верное
  test2: string = 'aabb'; //не верное
  test3: string = 'ababa'; //не верное
  test4: string = 'AbaBababababafdfdfDDDD'; // верное
  test5: string = 'SSSSSS'; // верное
begin
  writeln('Expected TRUE, we have: ', check_word(test1));
  writeln('Expected FALSE, we have: ', check_word(test2));
  writeln('Expected FALSE, we have: ', check_word(test3));
  writeln('Expected TRUE, we have: ', check_word(test4));
  writeln('Expected TRUE, we have: ', check_word(test5));
  readln;
end.
Вопрос: Условие проверки на квадрат

По mousemove рисую прямоугольник. Как мне сделать проверку на то, чтобы он рисовался только тогда, когда это квадрат? Т.е. идея такая-растягиваю область мышкой-она должна быть квадртаной. Насколько я знаю, Rect задается координатами описанной окружности(или вписанной, не помню), поэтому не знаю, как проверить стороны.

Код Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: integer);
begin
  c := True;
  x1 := x;
  y1 := y;
  x2 := x;
  y2 := y;
end;   
 
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: integer);
begin    
    if c then begin
  paintbox1.Canvas.pen.Mode := pmNotxor;
  paintbox1.canvas.brush.Color := clblue;
  paintbox1.canvas.FillRect(x1,y1,x2,y2);
  x2 := x;
  y2 := y;
  //if как вот здесь проверить условие квадрата?
  paintbox1.canvas.FillRect(x1,y1,x2,y2);
  end;    
end;
 
procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: integer);
begin     
c := False; 
paintbox1.canvas.FillRect(x1,y1,x2,y2);
end;   
Ответ: без этого тоже подойдет
Вопрос: Условия выбора не срабатывают

не правильно выполняется условия выбора. . . может перемудрил с условиями?

необходимо чтобы при нажатии кнопки проверило условие что нажат радиобаттон и заполнены edit1 и edit2(так же отличны от пустоты, потому что не может пустоту перевести в значение), только после этого выполняло решение.
Код Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
procedure TForm1.Button1Click(Sender: TObject);
var
    d, q, wo, o:real;
   begin
              //wo:=3.5 ;
  q:=StrToFloat(edit1.text);   // q:=12;  
  o:=StrToFloat(edit2.text);
 
 
 // if Edit1.Text='' then q:=0 ;
//if Edit1.Text='' then Showmessage('Введите данные Q!')
//else
  //If edit1.Text = '' Then
//ShowMessage('Введите даные');
 
 
 // если нажата радиокнопка то Wo берем из таблицы
if RadioButton1.Checked = True then wo:= StrToFloat(StringGrid1.Cells[1,1])
else
if RadioButton2.Checked = True then wo:= StrToFloat(StringGrid1.Cells[2,1])
else
if RadioButton3.Checked = True then wo:= StrToFloat(StringGrid1.Cells[3,1])
else
if RadioButton4.Checked = True then wo:= StrToFloat(StringGrid1.Cells[4,1])
else
if RadioButton5.Checked = True then wo:= StrToFloat(StringGrid1.Cells[5,1])
else
if RadioButton6.Checked = True then wo:= StrToFloat(StringGrid1.Cells[6,1]);
 
    //если не нажата ни одна радиокнопка заставляем выбрать
if not((RadioButton1.Checked)or
       (RadioButton2.Checked)or
       (RadioButton3.Checked)or
       (RadioButton4.Checked)or
       (RadioButton5.Checked)or
       (RadioButton6.Checked))
  then ShowMessage('Не выбран тип циклона!') ;
 
 
   //если не вписано Q то просим вписать
 //if Edit1.Text='' then Showmessage('Введите данные Q!')
//else
 
 
d:= (sqrt((4*q) / (Pi *wo))*100); //формула которая решается
                                              //при нажатии первой кнопки

еще если человек вводит неправильный ответ то все равно заполняет Label1.а должен только при правильном.
Код Delphi
1
2
3
4
5
6
7
8
9
10
if (o>d) then
Showmessage('перебор!')
else
if (o<d) then Showmessage('маловато!')
else
if (o=d) then Showmessage('правильно!') ;
label1.Caption := FloatToStr(d) ;  //почему то выводит результат в label1 всегда
                                    //а хотелось бы только при правильном.
 
end;

и как сделать округление до десятых
Код Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.Button3Click(Sender: TObject);
  var
    D, q, w :real;
    N : byte;
   begin
    edit4.text :=edit1.text;
  q:=StrToFloat(edit4.text);
 
  d:= StrToFloat(Label1.Caption);
  n:=StrToInt(edit3.Text);
 
 w:= 4*q / (Pi *N *d*d*100*100 );
label9.Caption := FloatToStr(w);  //выводит полностью а надо округлить
                                    //до десятых
 
                                    //это не работает
//label9.Caption := FloatToStrF(w, ffFixed, 5, 1);
 
 
end;
Ответ:
Код Delphi
1
2
3
4
5
6
else //если не нажат ни один то просим нажать
 begin
  ShowMessage('выберите тип!');
  exit
 end;
d:=(sqrt((4*q) / (Pi *wo))*100);  //идет решение.
вот почему не получалось!!! exit не было прописано...
Вопрос: Как реализовать такое условие?

Условие:
У нас есть апагрейд пак и предмет, после апгрейда предмету ставится переменная blockUp на true...

Мы проверяем апгрейд пак и предмет, на совершение реакции:
BlockUp и levelUp

Как проверить условие: если обе переменные != true?
Ответ:
Код Java(TM) 2 Platform Standard Edition 5.0
1
if (!(level == 1 && blockUp)) { 
Код Java(TM) 2 Platform Standard Edition 5.0
1
if (level != 1 || !blockUp) { 
Вопрос: Загрузка нескольких изображений. Условие

Привет! Как проверить условием на загрузку всех изображений, у меня почему-то срабатывает , если даже одно загружено - уже выводите else условие. Мне нужно чтобы например загружались только 10 изображений не больше не меньше, вот код с инета:
PHP
1
2
3
4
5
6
7
   for($i=0;$i<count($_FILES['file']['name']);$i++) {
      if(!is_uploaded_file($_FILES['file']['tmp_name'][$i])) {
         echo 'файл не загружен';
      } else {
         echo $_FILES['file']['name'][$i];
      }
   }
Ответ: Спасибо))
Вопрос: Вывод итогового сообщения

добрый день,

какими способами можно получить следующее:

есть несколько 5-20 булевых переменных, которые будут проверены
потом необходимо вывести их на экран что-то вроде: "условие № 1: обнаружено", "условие № 2: обнаружено", "условие № 3: не обнаружено"
причём в зависимости от "обнаружено/не обнаружено", нужно добавить "условие № 1: обнаружено! проверить условие № 1.1."
Если условие № 1 не обнаружено, то доп. проверку не производить.
Ответ: Булевы в массив, т.е. делаете массив с этими тру/фалс
Заготавливаете словарь с парами 1/тру и т.д., каждому ключу итем типа "условие № 1: обнаружено! проверить условие № 1.1." и т.д.
В коце цикл по массиву, получаете ключ - по ключу значение, можно его туда же назад в массив записать (если он типа вариант), ну и в финале джойном выгрузить всё в строку.