Untitled
unknown
plain_text
3 years ago
3.9 kB
10
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...