Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 634

 

¿Alguien tiene un fragmento de código para un ejemplo en el que los elementos de una matriz de cadenas se agrupen en orden alfabético?

Gracias de antemano.

 
Hobu:

Aquí

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

dice:

" Puede devolver tipos simples, estructuras simples y punteros a objetos . El operadorreturn no puede devolver arrays, objetos de clase o variables de tipos de estructuras complejas.

"

¿Se parece esto a lo que se necesita?

Se utilizan identificadores rusos, por lo que parece un poco inusual:

#property strict

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

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

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

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

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

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

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

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

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

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

El resultado de la ejecución de éste es el siguiente:

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
El objeto thingRaz se inicializa con el objeto (estructura) devuelto por la función Funk, y el objeto thingTwo se inicializa con el valor por defecto, pero luego se le asigna un objeto (estructura), también devuelto por la función Funk.
 
simpleton:

¿Te parece que esto es lo correcto?

Se han utilizado identificadores rusos, por lo que parece un poco inusual:

El resultado de la ejecución es el siguiente:

El objeto thingRaz se inicializa con el objeto (estructura) devuelto por la función Funk, y el objeto thingTwo se inicializa con el valor por defecto, pero luego se le asigna un objeto (estructura), también devuelto por la función Funk.

 

Por favor, ¿podría comentar en detalle la forma en que ese simplón describió, cada línea incluyendo la sintaxis? Todavía no entiendo lo que significa. No necesariamente en los dedos, también puedes usar términos, pero línea por línea.

1)Entonces, ¿la función de Funk devuelve un objeto y no un valor mediocre, como hacen otras funciones mediocres? ¿Qué clase de bestia es ésta, por qué es un objeto?

2)¿Podemos inicializar con un objeto devuelto por la función o con un valor por defecto? Es decir, la función Funk, aunque forma parte de la misma estructura, no tiene nada que ver con el objeto Cosa 2, ¿o estoy entendiendo algo mal? Por cierto, se llama objeto, ¿entonces la estructura también tiene un objeto? Pensé que era más sencillo que eso. Y otra pregunta, ¿cómo se puede copiar exactamente una estructura en otra, si son del mismo tipo? Esta simple línea.

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

¿y hay una copia notoria? ¿Y no hay necesidad de declarar la estructura de Stuka 2 por separado, y no es una estructura en absoluto, sino un objeto creado por una estructura?

De alguna manera no estoy familiarizado con ningún lenguaje de programación (pero no estoy en contra de aprender) y además, tengo una idea bastante vaga de POO, así que no te sorprendas si las preguntas son estúpidas.

Uy, acabo de ver que los tirantes están cerrados antes, es decir, que este Funka se describe fuera de la estructura, pero ¿qué es exactamente en relación con la estructura Awesome?

 
Hobu:

Por favor, ¿podría comentar en detalle la forma en que ese simplón describió, cada línea incluyendo la sintaxis? Todavía no entiendo lo que significa. No necesariamente en los dedos, también puedes usar términos, pero línea por línea.

1)Entonces, ¿la función de Funk devuelve un objeto y no un valor mediocre, como hacen otras funciones mediocres? ¿Qué clase de bestia es ésta, por qué es un objeto?

2)¿Podemos inicializar con un objeto devuelto por la función o con un valor por defecto? Es decir, la función Funk, aunque forma parte de la misma estructura, no tiene nada que ver con el objeto Cosa 2, ¿o estoy entendiendo algo mal? Por cierto, se llama objeto, ¿entonces la estructura también tiene un objeto? Pensé que era más simple que eso. Y otra pregunta, ¿cómo copio exactamente una estructura a otra, si son del mismo tipo? Esta simple línea.

¿Y la notoria copia? ¿Y no tienes que declarar la estructura de tipo 2 por separado y no es una estructura en absoluto, sino un objeto creado por una estructura?

De alguna manera no estoy familiarizado con ningún lenguaje de programación (pero no estoy en contra de aprender) y además tengo una idea bastante vaga sobre POO, así que no te sorprendas si las preguntas son estúpidas.

Uy, acabo de ver que las llaves están cerradas antes, es decir, esta función se describe fuera de la estructura, pero ¿qué es exactamente en relación con la estructura Awesome?

Algo así, comparado con lo mismo, pero para una variable de uno de los 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("Заканчиваем безобразничать...");
}

El resultado de la ejecución es el siguiente:

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

Las funciones devuelven objetos del tipo especificado en la declaración. Por objetos se entiende aquí no sólo las estructuras, sino también los tipos incorporados.

Si el tipo del valor devuelto por la función Funk1 es del tipo OffigenStructure, que es una estructura, significa que esta función devuelve los valores de las estructuras, y sólo del tipo OffigenStructure. Lo hace porque y sólo porque su declaración/definición tiene este tipo de retorno.

Puedes inicializarlo con dicho valor o valores, al igual que uno de los constructores toma. Se puede prescindir de los constructores, pero su sintaxis de inicialización es un poco diferente y tienen sus propias limitaciones.

En este caso, el constructor toma un valor de tipo int, por lo que una variable de tipo OxygenStructure debe ser inicializada con un valor de tipo int, o de otro tipo, pero implícitamente fundido a int.

Como el valor por defecto se especifica para el parámetro que acepta el constructor, no es necesario pasar un valor al constructor. El constructor será llamado de todos modos, pero se utilizará el parámetro por defecto.

Esa cadena sin complicaciones es sólo una declaración para una variable de tipoEstructura. Copiar estructuras del mismo tipo entre sí es extremadamente fácil, igual que "copiar" los valores de una variable de tipo incorporado. Es necesario asignar un valor de una variable a la otra. Por ejemplo, "cosaRaz = cosaDos;". Ejecútelo usted mismo e imprima el valor en que se ha convertido la variable shtuRaz después de esta asignación.

Funk1 no tiene nada que ver con las estructuras de tipoOfgenericStructure excepto que devuelve valores de ese tipo.

Necesitas formación general, te "ahogarás" sin ella. No estoy preparado para darte consejos.

Puedo darte los siguientes consejos brevemente por lo que veo (lo básico):

1. Los datos de un programa se almacenan en áreas de memoria con nombre, llamadas variables.

2. el tipo de variable define una forma de interpretación de los datos almacenados y, en la gran mayoría de los casos, su tamaño. La forma de interpretación implica un conjunto de operaciones que se pueden realizar con los datos.

3. Los tipos incrustados y estructurados no son conceptualmente diferentes desde este punto de vista.

El punto 2 es el más importante y fundamental de entender. En C++ y MQL, la noción de tipo es muy importante.

En pocas palabras: un tipo es un "patrón" de datos, y una variable es una unidad de ese patrón. Un gato o un perrito es un "patrón", y los gatos específicos como Murzyk o los perros como Sharik son unidades de gatos y perros. Lo mismo ocurre con los tipos y las variables.

 
Hobu:

Por favor, ¿podría comentar en detalle la forma en que ese simplón describió, cada línea incluyendo la sintaxis? Todavía no entiendo lo que significa. No necesariamente en los dedos, también puedes usar términos, pero línea por línea.

1)Entonces, ¿la función de Funk devuelve un objeto y no un valor mediocre, como hacen otras funciones mediocres? ¿Qué clase de bestia es ésta, por qué es un objeto?

2)¿Podemos inicializar con un objeto devuelto por la función o con un valor por defecto? Es decir, la función Funk, aunque forma parte de la misma estructura, no tiene nada que ver con el objeto Cosa 2, ¿o estoy entendiendo algo mal? Por cierto, se llama objeto, ¿entonces la estructura también tiene un objeto? Pensé que era más simple que eso. Y otra pregunta, ¿cómo copio exactamente una estructura a otra, si son del mismo tipo? Esta simple línea.

¿y hay una copia notoria? ¿Y no hay necesidad de declarar la estructura de Stuka 2 por separado, y no es una estructura en absoluto, sino un objeto creado por una estructura?

De alguna manera no estoy familiarizado con ningún lenguaje de programación (pero no estoy en contra de aprender) y además, tengo una idea bastante vaga de POO, así que no te sorprendas si las preguntas son estúpidas.

Uy, acabo de ver que los corchetes están cerrados antes, es decir, este Funka se describe fuera de la estructura, pero ¿qué es exactamente en relación con la estructura Awesome?


¿Tartu? Youoohoo...
 

Señores, díganme cómo calcular el número de celdas llenas en una matriz bidimensional.

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

Por favor, ayúdame con el código para mostrar sólo un dígito en el gráfico - el nivel de pérdida.

Aquí está en esta extensión buena https://www.mql5.com/ru/code/8873 es y por lo que se llama el nivel de ciruela, se muestra en rojo, aunque también el nivel de margen es un tema normal, pero al menos que uno para empezar, de lo contrario, la extensión es genial, pero hay muchas cosas que no necesito, y no puedo entender cómo se obtiene allí.

 
Top2n:

Señores, díganme cómo calcular el número de celdas llenas en una matriz bidimensional.


ArrayRange
 
r772ra:

ArrayRange


Esta función devuelve el número de celdas de la matriz, no el número de celdas llenas.

¿Alguien puede decirme cómo se hace unidimensional))

Razón de la queja: