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

Всем привет.

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

Условие вида: если чекбокс нажат и в комбокс текст равен = "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];
      }
   }
Ответ: Спасибо))
Вопрос: Как проверить dateTimePicker чтобы на сегодняшний день дата была на 10 лет больше?

Нужно проверить условие чтобы дата из dateTimePicker была на 10 лет больше установленной. Например, пользователь выбирает свою дату рождения из dateTimePicker и ему должно быть минимум 10 лет.
C#
1
if (dateTimePicker1.Value < DateTime.Now) MessageBox.Show("Вам меньше 10 лет");
Ответ: Kirey1488, вот ещё вариант:
C#
1
2
3
4
5
6
var zeroTime = new DateTime(1, 1, 1);
var olddate = dateTimePicker1.Value;
var curdate = DateTime.Now.ToLocalTime();
var span = curdate - olddate;
var years = (zeroTime + span).Year - 1;
if ( years < 10) MessageBox.Show("Вам меньше 10 лет");
Алгоритм взял из