Untitled
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...