Alguien puede explicarme cómo funciona este bucle ( Línea 9 en el código a continuación ), y también si puede mostrarme un ejemplo simple con esto puede ser muy útil, gracias de todos modos!

1 #include <iostream>
2 #include <cstdlib>
3 
4 using namespace std;

5 int main(){
6     int n, a , b , ma=0,mb=1000000001;
7     cin >> n ;
8     cin >> a;
9     for( n--; n ; --n ){
10         cin >> b;
11         if(abs(a-b) < abs(ma-mb))
12             ma=a , mb=b;
13         else
14             if(abs(a-b) == abs(ma-mb) && ma+mb > a+b)
15                 ma=a , mb=b;
16         a = b;
17     }
18     cout << ma << " " << mb;
19     return 0;
20 }
0
Gabriel 28 may. 2020 a las 21:54

3 respuestas

La mejor respuesta

Este código huele mucho. Si le das a n el valor 10, da

9 (primera vez en el bucle, ejecuciones n--) cada dos iteraciones ejecuta --n hasta cuando n! = 0 (que es la condición n

0
Andrea Pollini 28 may. 2020 a las 19:00

Un bucle for funciona de la siguiente manera:

Se ejecuta un cierto número de veces. Significamos esto con una condición. Tiene un inicio y un incremento:

for (start ; condition ; increment )
{
// loop body
}

Para los bucles y todos los bucles son muy útiles cuando desea realizar tareas repetitivas.

Digamos que quieres hacer un juego y este juego tendrá 3 rondas. Cada una de esas rondas se puede implementar como una iteración de un bucle for. Se verá así:

for(int round = 0; round < 3; ++round) {
// game round logic
}

En el bucle anterior, comenzamos en 0. Una vez que llegamos a 3, ya habríamos ejecutado el bucle for 3 veces. Después de que se ejecute cada iteración del ciclo for ++ ++, esto incrementa la variable ronda en 1. Podemos incrementarlo en un valor diferente haciendo: round + = 2 o round * = 2 etc.

Espero que esto te ayude. Por favor, hágame saber cómo puedo aclarar esto más.

0
bhristov 28 may. 2020 a las 19:01

Un ciclo for es simplemente otra forma de escribir un ciclo while. Así que esto:

for( n--; n ; --n ){
    ...
}

Es la misma que esta:

n--;
while(n) {
    ...
    --n;
}

Lo cual, en este caso específico, es más fácil de leer. Primero disminuye n, luego realiza el ciclo, decrementando n nuevamente al final de cada ciclo, hasta que ese decremento hace que n se evalúe a false convirtiéndose en {{X4 }}.

1
Mooing Duck 28 may. 2020 a las 19:04