Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 634

 

Alguém tem um pedaço de código para um exemplo em que os elementos de um conjunto de cordas estão agrupados em ordem alfabética?

Obrigado de antemão.

 
Hobu:

Aqui

https://docs.mql4.com/ru/basis/operators/return

diz ele:

"Você pode devolver tipos simples, estruturas simples e ponteiros a objetos . O operador deretorno não pode retornar quaisquer matrizes, objetos de classe ou variáveis de tipos complexos de estrutura.

"

Isto se parece com o que é necessário?

São utilizados identificadores russos, portanto, parece um pouco incomum:

#property strict

/******************************************************************************/
struct ОфигеннаяСтруктура {
private:
  int значение;

public:
  ОфигеннаяСтруктура(int значение = 0): значение(значение) { }
  int выдатьЗначение() const { return значение; }
};

/******************************************************************************/
ОфигеннаяСтруктура Функа(int значение) {
  ОфигеннаяСтруктура местная(значение);

  return местная; // Возвращаем структуру из функции
}

/******************************************************************************/
void OnStart() {
  Print("Начинаем безобразничать...");

  ОфигеннаяСтруктура штукаРаз = Функа(5);

  Print("Значение штукиРаз = ", штукаРаз.выдатьЗначение());

  ОфигеннаяСтруктура штукаДва;

  Print("Значение штукиДва первое = ", штукаДва.выдатьЗначение());
  штукаДва = Функа(7);
  Print("Значение штукиДва второе = ", штукаДва.выдатьЗначение());

  Print("Заканчиваем безобразничать...");
}

O resultado da execução deste é o seguinte:

23:55:39 Script 1 EURUSDm,H1: loaded successfully
23:55:39 1 EURUSDm,H1: initialized
23:55:39 1 EURUSDm,H1: Начинаем безобразничать...
23:55:39 1 EURUSDm,H1: Значение штукиРаз = 5
23:55:39 1 EURUSDm,H1: Значение штукиДва первое = 0
23:55:39 1 EURUSDm,H1: Значение штукиДва второе = 7
23:55:39 1 EURUSDm,H1: Заканчиваем безобразничать...
23:55:39 1 EURUSDm,H1: uninit reason 0
23:55:39 Script 1 EURUSDm,H1: removed
O objeto thingRaz é inicializado com o objeto (estrutura) retornado da função Funk, e o objeto thingTwo é inicializado com o valor padrão, mas então um objeto (estrutura) é atribuído a ele, também retornado da função Funk.
 
simpleton:

Isto parece ser a coisa certa a fazer?

Foram utilizados identificadores russos, portanto, parece um pouco incomum:

O resultado da execução é o seguinte:

O objeto thingRaz é inicializado com o objeto (estrutura) retornado da função Funk, e o objeto thingTwo é inicializado com o valor padrão, mas então um objeto (estrutura), também retornado da função Funk, é atribuído a ele.

 

Por favor, você pode comentar em detalhes a maneira como o simples botão descreveu, cada linha incluindo a sintaxe? Ainda não entendo o que isso significa. Não necessariamente nos dedos, você também pode usar termos, mas linha por linha.

1)Então, a função Funk devolve um objeto e não algum valor medíocre, como fazem outras funções medíocres? Que tipo de besta é esta, por que é um objeto?

2) Podemos inicializar com um objeto retornado da função ou com um valor padrão? Ou seja, a função Funk, embora faça parte da mesma estrutura, não tem nada a ver com o objeto Coisa 2, ou eu estou entendendo algo errado? A propósito, é chamado de objeto, então a estrutura também tem um objeto? Achei que era mais simples do que isso. E outra pergunta, como exatamente uma estrutura pode ser copiada para outra, se são do mesmo tipo? Esta linha simples.

ОфигеннаяСтруктура штукаДва;

e há uma cópia notória? E não há necessidade de declarar a estrutura do Stuka 2 separadamente, e não é uma estrutura em absoluto, mas um objeto criado por uma estrutura?

De alguma forma não estou familiarizado com nenhuma linguagem de programação (mas não contra a aprendizagem) e, além disso, tenho uma idéia bastante vaga do OOP, portanto não se surpreenda se as perguntas forem estúpidas.

Oops, eu acabei de ver que os suportes estão fechados antes, ou seja, este Funka é descrito fora da estrutura, mas o que é exatamente em relação à estrutura Awesome?

 
Hobu:

Por favor, você pode comentar em detalhes a maneira como o simples botão descreveu, cada linha incluindo a sintaxe? Ainda não entendo o que isso significa. Não necessariamente nos dedos, você também pode usar termos, mas linha por linha.

1)Então, a função Funk devolve um objeto e não algum valor medíocre, como fazem outras funções medíocres? Que tipo de besta é esta, por que é um objeto?

2) Podemos inicializar com um objeto retornado da função ou com um valor padrão? Ou seja, a função Funk, embora faça parte da mesma estrutura, não tem nada a ver com o objeto Coisa 2, ou eu estou entendendo algo errado? A propósito, é chamado de objeto, então a estrutura também tem um objeto? Achei que era mais simples do que isso. E outra pergunta, como copiar exatamente uma estrutura para outra, se são do mesmo tipo? Esta linha simples.

E há a notória cópia? E você não precisa declarar a estrutura tipo 2 separadamente e não é uma estrutura de forma alguma, mas um objeto criado por uma estrutura?

De alguma forma não estou familiarizado com nenhuma linguagem de programação (mas não contra a aprendizagem) e, além disso, tenho uma idéia bastante vaga sobre o OOP, portanto não se surpreenda se as perguntas forem estúpidas.

Oops, eu acabei de ver que as travas estão fechadas antes, ou seja, esta função é descrita fora da estrutura, mas o que é exatamente em relação à estrutura Fantástica?

Algo assim, comparado com a mesma coisa, mas para uma variável de um dos tipos incorporados:
#property strict

/******************************************************************************/
struct ОфигеннаяСтруктура { // Заводим структуру
private: // Просто так извне к следующим элементам нельзя обратиться
  int значение; // Поле данных для хранения в структуре

public: // К следующим элементам можно просто так обратиться извне
  ОфигеннаяСтруктура(int значение = 0): значение(значение) { } // Конструктор: инициализирует поле значением переданного параметра; если параметр не передан, используется значение по умолчанию, равное 0
  int выдатьЗначение() const { return значение; } // Метод: возвращает значение поля, может вызываться для структур, переменные для которых объявленных как константные
};

/******************************************************************************/
ОфигеннаяСтруктура Функа1(int значение) { // Функция, возвращающая структуру
  ОфигеннаяСтруктура местная(значение); // Создание локальной переменной, в данном случае, судя по типу, это - структура

  // Если структура посложнее, чем в этом примере, то тут можно выполнить над ней какие-то дополнительные действия

  return местная; // Возвращаем структуру из функции
}

/******************************************************************************/
string Функа2(int значение) { // Функция, возвращающая один из встроенных типов
  string Таблица[] = {"Ноль", "Один", "Два"};

  /* Никакого особого смысла тут нет, просто имитация деятельности */
  return Таблица[значение % 3]; // Возвращаем строку из функции (остаток от деления параметра на три словами)
}

/******************************************************************************/
void OnStart() {
  Print("Начинаем безобразничать...");

  ОфигеннаяСтруктура штукаРаз = Функа1(5); // Заводим переменную (структуру) с одновременной инициализацией
  string строкаРаз = Функа2(5); // Заводим переменную (один из встроенных типов) также с инициализацией

  Print("Значение штукиРаз = ", штукаРаз.выдатьЗначение()); // Для получения значения поля структуры вызывается специально под это написанный метод
  Print("Значение строкиРаз = ", строкаРаз);

  ОфигеннаяСтруктура штукаДва; // Заводим переменную (структуру) без явной инициализации (конструктор получает в качестве значения параметра значение, указанное по умолчанию, и структура инициализируется им)
  string строкаДва; // Заводим переменную (один из встроенных типов) без инициализации (переменные типа string, объявленные таким образом, инициализируются пустой строкой)

  Print("Значение штукиДва первое = ", штукаДва.выдатьЗначение());
  Print("Значение строкиРаз первое = '", строкаРаз, "'");

  штукаДва = Функа1(7); // Присвоение переменной штукаДва типа структура значения типа структура, возвращённого функцией Функа1
  строкаДва = Функа2(7); // Присвоение переменной строкаДва одного из встроенных типов (строка) значения того же типа, возвращённого функцией Функа2

  Print("Значение штукиДва второе = ", штукаДва.выдатьЗначение());
  Print("Значение строкиРаз второе = '", строкаРаз, "'");

  Print("Заканчиваем безобразничать...");
}

O resultado da corrida é o seguinte:

21:16:29 Script 1 EURUSDm,H1: loaded successfully
21:16:29 1 EURUSDm,H1: initialized
21:16:29 1 EURUSDm,H1: Начинаем безобразничать...
21:16:29 1 EURUSDm,H1: Значение штукиРаз = 5
21:16:29 1 EURUSDm,H1: Значение строкиРаз = Два
21:16:29 1 EURUSDm,H1: Значение штукиДва первое = 0
21:16:29 1 EURUSDm,H1: Значение строкиРаз первое = ''
21:16:29 1 EURUSDm,H1: Значение штукиДва второе = 7
21:16:29 1 EURUSDm,H1: Значение строкиРаз второе = 'Один'
21:16:29 1 EURUSDm,H1: Заканчиваем безобразничать...
21:16:29 1 EURUSDm,H1: uninit reason 0
21:16:29 Script 1 EURUSDm,H1: removed

Funções devolvem objetos do tipo especificado na declaração. Por objetos aqui entendemos não apenas estruturas, mas também tipos embutidos.

Se o tipo do valor retornado para a função Funk1 for do tipo OffigenStructure, que é uma estrutura, significa que esta função retorna os valores das estruturas, e somente do tipo OffigenStructure. Faz isto porque e somente porque sua declaração/definição tem este tipo de retorno.

Você pode inicializá-lo com tal valor ou valores, assim como um dos construtores o faz. Você pode prescindir dos construtores, mas sua sintaxe de inicialização é um pouco diferente e eles têm suas próprias limitações.

Neste caso, o construtor toma um valor do tipo int, portanto, uma variável do tipo OxygenStructure deve ser inicializada com um valor do tipo int, ou outro tipo, mas implicitamente lançada para int.

Como o valor padrão é especificado para o parâmetro que o construtor aceita, não é necessário passar um valor para o construtor. O construtor será chamado de qualquer forma, mas será utilizado o parâmetro padrão.

Essa cadeia descomplicada é apenas uma declaração para uma variável do tipoStructure. Copiar estruturas do mesmo tipo umas nas outras é extremamente fácil, assim como "copiar" os valores de uma variável do tipo incorporada. Você precisa atribuir um valor de uma variável para a outra. Por exemplo, "thingRaz = thingTwo";". Execute-o você mesmo e imprima o valor que a variável shtuRaz se tornou após esta atribuição.

O Funk1 não tem nada a ver com estruturas do tipoOfgenericStructure, exceto que retorna valores desse tipo.

Você precisa de treinamento geral, você vai "afogar-se" sem ele. Eu não estou pronto para lhe dar conselhos.

Posso dar-lhe brevemente os seguintes conselhos a partir do que posso ver (o básico):

1. Os dados em um programa são armazenados em áreas de memória nomeadas, chamadas variáveis.

2. O tipo de variável define uma forma de interpretação dos dados armazenados e, na grande maioria dos casos, seu tamanho. A forma de interpretação implica um conjunto de operações que podem ser realizadas com os dados.

3. Os tipos incorporados e estruturados não são conceitualmente diferentes deste ponto de vista.

O ponto 2 é o mais importante e fundamental para entender. Em C++ e MQL, a noção de tipo é muito importante.

Em poucas palavras: um tipo é um "padrão" de dados, e uma variável é uma unidade desse padrão. Um gato ou um cãozinho é um "padrão", e gatos específicos como Murzyk ou cães como Sharik são unidades de gatos e cães. É o mesmo com tipos e variáveis.

 
Hobu:

Por favor, você pode comentar em detalhes a maneira como o simples botão descreveu, cada linha incluindo a sintaxe? Ainda não entendo o que isso significa. Não necessariamente nos dedos, você também pode usar termos, mas linha por linha.

1)Então, a função Funk devolve um objeto e não algum valor medíocre, como fazem outras funções medíocres? Que tipo de besta é esta, por que é um objeto?

2) Podemos inicializar com um objeto retornado da função ou com um valor padrão? Ou seja, a função Funk, embora faça parte da mesma estrutura, não tem nada a ver com o objeto Coisa 2, ou eu estou entendendo algo errado? A propósito, é chamado de objeto, então a estrutura também tem um objeto? Achei que era mais simples do que isso. E outra pergunta, como copiar exatamente uma estrutura para outra, se são do mesmo tipo? Esta linha simples.

e há uma cópia notória? E não há necessidade de declarar a estrutura do Stuka 2 separadamente, e não é uma estrutura em absoluto, mas um objeto criado por uma estrutura?

De alguma forma não estou familiarizado com nenhuma linguagem de programação (mas não contra a aprendizagem) e, além disso, tenho uma idéia bastante vaga do OOP, portanto não se surpreenda se as perguntas forem estúpidas.

Oops, acabei de ver que o aparelho está fechado antes, ou seja, este Funka está descrito fora da estrutura, mas o que é exatamente em relação à estrutura Awesome?


Tartu? Youoohoo...
 

Velhos, digam-me como calcular o número de células preenchidas em uma matriz bidimensional.

 for(int i=0;i<ObjectsTotal();i++) 
{
  mas[0][i]-количество заполненных ячеек?
  mas[1][i]-//-//-//-//-//-//-//-//-//-
}
 

Ajude-me com o código para exibir apenas uma figura na tabela - o nível de drenagem.

Aqui está nesta extensão bom https://www.mql5.com/ru/code/8873 é e assim é chamado o nível de ameixa, é exibido em vermelho, embora também o nível de margem é um tópico normal, mas pelo menos aquele para começar, caso contrário, a extensão é legal, mas há muitas coisas que eu não preciso, e eu não consigo entender como é obtido lá.

 
Top2n:

Velhos, digam-me como calcular o número de células preenchidas em uma matriz bidimensional.


ArrayRange
 
r772ra:

ArrayRange


Esta função retorna o número de células da matriz, não o número de células preenchidas.

Alguém pode me dizer como fazer unidimensional?))