1

Éste es el código que llevo hasta al momento, quisiera saber como determinar si la serie de números ingresada está en orden creciente o no. Me gustaría saber de que otras formas se podría resolver, sigo aprendiendo sobre este lenguaje.Gracias por su ayuda.

#include<iostream>

    using namespace std;

    int main(){
    int n,nu,i;

    cin>>n; //Primero ingreso el numero de datos que voy a introducir

    for(i=0; i<=n; i++){ //Posteriormente creo mi ciclo de acuerdo a n
        cin>>nu; 
    }
    if(){ //Dentro del parentesis la condicion, al cumplirse mostrara SI, de lo contrario....
    cout<<"SI"<<endl; }

    else (){
      cout<<"NO"<<endl; } //Imprimira no
    return 0;
    }
  • 2
    Puedes iterar por la lista de introducidos y mirar que el siguiente sea mayor que el anterior. si alguno no lo es, di `"no"`, en caso contrario `"si"`.O guarda todos los numeros y luego crea una copia pero ordenados ascendentemente. Si la lista de ordenados ascendentemente coincide con la lista y orden en que se introdujeron, `"si"`, si no coincide `"no"`. – lois6b Apr 26 '18 at 14:37

1 Answers1

4

Una serie de números será creciente si y sólo si el número presente es mayor al anterior:

N1 < N2 < ... < Nn

Para poder comprobar eso, deberás guardar el número anterior y el presente, la comparación será:

if (anterior < actual) {
    // seguir pidiendo números
}
else 
    std::cout << "La serie no es ascendente\n";

Propuesta.

Tu código podría parecerse a:

#include <iostream>
#include <limits>

int main() {

    int numeros, anterior = std::mumeric_limits<int>::min(), actual;

    // Primero ingreso el numero de datos que voy a introducir
    std::cin >> numeros;

    // Posteriormente creo mi ciclo de acuerdo a 'numeros'
    for (int i = 0; i < numeros; ++i) {
        std::cout << "Introduce el numero " << (i + 1) << ": ";
        std::cin >> actual;

        if (anterior > actual) {
            std::cout << "La serie no es ascendente\n";
            break;
        }

        anterior = actual;
    }

    return 0;
}

El valor obtenido mediante std::numeric_limits<int>::min es el mínimo valor almacenable en una variable de tipo int, usando eso como valor inicial de anterior te garantiza que en el primer ciclo anterior < actual se va a cumplir siempre (excepto si actual ya es el mínimo valor almacenable en una variable de tipo int).

Cosas a tener en cuenta.

  • Nombres auto-explicativos: En los años 80 y 90, teníamos que programar en pantallas de 80 caracteres de ancho y 25 líneas de alto, hacer que el código fuese escueto, conciso y apelotonado era una necesidad. Esos tiempos han quedado (por fortuna) atrás, así que evita las variables de un sólo carácter, los acrónimos y las abreviaturas.
  • No abuses de using namespace std: Lee este hilo para saber más al respecto.
  • Intenta no abusar de std::endl: Lee este hilo para saber más al respecto.
PaperBirdMaster
  • 44,474
  • 6
  • 44
  • 82