Cavalheiros, sejam finalmente criativos! O objetivo não é usar este programa para encontrar pi, mas para decifrar como o programa o fez. Leia o assunto: "...problemas de treinamento do cérebro...". Este programa é da série "Diversão com C". Há um concurso para compor os algoritmos C mais obscuros e misteriosos. Você tem o código fonte e o resultado, mas você precisa descobrir o princípio de operação. O algoritmo em si é a tarefa a ser resolvida. Precisa ser "rachado". Isto exige que você "quebre" seu cérebro.
O laço é executado desde que a expressão b - c seja avaliada como verdadeira. O que é verdade em C? Qualquer coisa que não seja zero, ao que parece. Assim, o loop aumentando b de zero e a matriz de enchimento f[] é executada até b igual a c, ou seja, até 2800. Array f[] é preenchido com os mesmos números 10000/5 = 2000.
Цикл выполняется до тех пор, пока b - c = true. Что такое true в Си? Кажись, любой не нуль. Значит, цикл увеличения b от нуля и заполнения массива f[] выполняется до тех пор, пока b не сравняется с с, т.е. до 2800. Массив f[] заполняется одинаковыми числами 10000/5 = 2000.
Em geral, sem ofensa aos desenvolvedores da MQL, mas o número de funções matemáticas https://docs.mql4.com/ru/math
é vergonhosamente pequeno em minha opinião, como é em VB. E as definições de algumas delas, como MathFloor, são obscuras.
-
Assumindo a função MathMax, há apenas 2 argumentos. E se eu precisar de 10 ou 20, em que é que isso se transforma?
Isto é o que parece em VB com meu módulo:
-
x=max(x1...x20) 'encontra o valor máximo de 20 variáveis;
x=max(x1, y, z, p) 'encontra o valor máximo de 4 variáveis;
А вобще, какой то грек сказал что Pi=66/21
O grego deve ter dito 22/7 (o mesmo que 66/21).
Mais preciso seria 355/113 (a precisão é 3*10^(-7) ).
A próxima melhor fração já é 103993/ 33102 (precisão na ordem de 6*10^(-10) ).
2 Richie: Bem, você tinha que terminar o VB também. Então, por que você está indo atrás do Metacquotes?
Pegue uma piada
Humor
Mischek, somos ex-pós-graduados, estamos resolvendo problemas do 8º ano, não do 11º :)
Pobres crianças.
Aí está, eu suspeitava que era um problema...
Ok, vamos ver.
Vamos lidar com a primeira etapa,
O laço é executado desde que a expressão b - c seja avaliada como verdadeira. O que é verdade em C? Qualquer coisa que não seja zero, ao que parece. Assim, o loop aumentando b de zero e a matriz de enchimento f[] é executada até b igual a c, ou seja, até 2800. Array f[] é preenchido com os mesmos números 10000/5 = 2000.
Não há muito errado até agora?
Só há uma maneira de calcular pi de qualquer maneira, e o resto é uma mashka com uma saia diferente, ou parte de uma mashka :)
Ну вот, подозревал ведь, что это задачка...
ОК, смотрим.
Разбираемся с первым циклом,
Цикл выполняется до тех пор, пока b - c = true. Что такое true в Си? Кажись, любой не нуль. Значит, цикл увеличения b от нуля и заполнения массива f[] выполняется до тех пор, пока b не сравняется с с, т.е. до 2800. Массив f[] заполняется одинаковыми числами 10000/5 = 2000.
Пока не сильно ошибся?
Vamos fazer uma rachadura.
Até agora, tudo bem. Vamos continuar observando.
Mas, mais adiante, não está claro. A condição d=0 no primeiro cabeçalho (laço externo) está me incomodando de alguma forma. Isso é sempre verdade?
Em seguida, um loop aninhado. Nós a reescrevemos: