Untitled

 avatar
unknown
plain_text
3 years ago
3.9 kB
3
Indexable
#include <iostream>
#include <conio.h>


using namespace std;

void linea() {
    cout << "--------------------------------------------------------------------\n";
}
void imprimir(int* secuencia, int n);
bool primo(int x);
bool primosconsecutivos(int* secuencia, int n);
bool capicuaalternos(int* secuencia, int n);
int invertir(int x);
void ordenarimpar(int* secuencia, int n);

int main()
{
    int n;
    char tecla;
    int cont = 0, contadorPrimosConsecutivos = 0, contCapicua = 0;
    srand(time(NULL));
    do
    {
        linea();
        cout << "\t\tSECUENCIA " << cont + 1 << endl;
        linea();
        n = 12 + rand() % (55 + 1 - 12);
        int* secuencia = new int[n];
        imprimir(secuencia, n);
        if (primosconsecutivos(secuencia, n) == true) {
            cout << "Hay 4 numeros no son primos consecutivos y se encuentran en orden descendente" << endl;
            contadorPrimosConsecutivos--;
        }
        cont++;
        if (capicuaalternos(secuencia, n) == true) {
            cout << "Hay un numero capicua conformado por los numeros ubicados en cinco posiciones alternas" << endl;
            contCapicua++;
        }
        ordenarimpar(secuencia, n);
        cout << endl;
        cout << "Si de desea finalizar el programa 'X', caso contrario pulsa cualquier tecla" << endl;
        cout << endl;
        tecla = _getch();
        tecla = toupper(tecla);
        delete[]secuencia;
    } while (tecla != 'X');
    cout << endl;
    linea();
    cout << "\t\tRESULTADOS:" << endl;
    linea();
    cout << "Secuencias procesadas: " << cont << endl;
    cout << "Secuencias procesadas con numeros no primos en orden descendente: " << contadorPrimosConsecutivos << endl;
        cout << "Secuencias con numeros capicuas de 5 posiciones alternas: " << contCapicua << endl;
    system("pause");
    return 0;
}
void imprimir(int* secuencia, int n) {
    for (int i = 0; i < n; i++)
    {
        secuencia[i] = 1 + rand() % (99 + 1 - 1);
        cout << "[" << secuencia[i] << "]";
    }
    cout << endl;
}
bool primo(int x) {
    int contadorDeDivisores = 0;
    for (int i = 1; i <= x; i++)
    {
        if (x % i == 0) {
            contadorDeDivisores++;
        }
    }
    if (contadorDeDivisores == 2)return true;
    else return false;
}
bool primosconsecutivos(int* secuencia, int n) {
    for (int i = 0; i < n - 3; i++)
    {
        if (primo(secuencia[i]) == true && primo(secuencia[i + 1]) == true && primo(secuencia[i + 2]) == true && primo(secuencia[i + 3]) == true &&
            secuencia[i] < secuencia[i + 1] && secuencia[i + 1] < secuencia[i + 2] && secuencia[i + 2] < secuencia[i + 3])return true;
    }
    return false;
}
bool capicuaalternos(int* secuencia, int n)
{
    return false;
}
bool capicuaalternas(int* secuencia, int n) {
    for (int i = 0; i < n - 6; i++)
    {
        if (invertir(secuencia[i]) == secuencia[i + 6] && invertir(secuencia[i + 2]) == secuencia[i + 4])return true;
    }
    return false;
}
int invertir(int x) {
    int invertido= 0;
    while (x > 0)
    {
        invertido = invertido * 10 + (x % 10);
        x = x / 10;
    }
    return invertido;
}
void ordenarimpar(int* secuencia, int n) {
    int aux;
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            if (secuencia[i] < secuencia[j] && i % 2 != 0 && j % 2 != 0) {
                aux = secuencia[i];
                secuencia[i] = secuencia[j];
                secuencia[j] = aux;
            }
        }
    }
    linea();
    cout << "\tArreglo Ordeando de forma descendente en posiciones impares" << endl;
    linea();
    for (int i = 0; i < n; i++)
    {
        cout << "[" << secuencia[i] << "]";
    }
    cout << endl;
}
Editor is loading...