Sunteți pe pagina 1din 4

/*

PROGRAMA 1:
vectores con funciones

incluye funciones adicionales de intercambio

*/
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;

// define tama�o constante


#define TAM 30

// declara vector globalmente


int a[TAM];

// prototipos de funciones
void llenaVector();
void lista();
void capicuas();
void primos();
void estadistica();
void ordenAsc(int v[], int n);
int aleatorio(int vi, int vf);
int esCapicua(int n);
int esPrimo(int n);
double promedio();
double dstandar();
double varianza();
int menu();
void intercambiaPares();
int posicionPrimerPar();
int posicionUltimoPar();
void intercambia(int i,int j);
void intercambiaImPares();

void main()
{
int opcion;
do{
opcion = menu();
switch(opcion){
case 1:
llenaVector();
lista();
break;
case 2:
capicuas();break;
case 3:
primos(); break;
case 4:
estadistica();break;
case 5:
ordenAsc(a,TAM);
lista();
break;
case 6:
intercambiaPares();
break;
case 7:
intercambiaImPares();
break;

}
}while(opcion!=0);
}
// desarrollo de funciones
void llenaVector(){
srand(time(NULL));
for(int i=0; i<TAM; i++)
a[i] = aleatorio(100,999);
}
int aleatorio(int vi, int vf){
return rand() % (vf-vi+1) + vi;
}
void lista(){
printf("CONTENIDO DEL VECTOR\n");
for(int i=0; i<TAM; i++){
printf("a[%2d] = %5d\n",i,a[i]);
}
}
void capicuas(){
printf("Numeros capicuas encontrados\n");
int c=0;
for(int i=0; i<TAM; i++){
if(esCapicua(a[i])==1){
c++;
printf("a[%2d] = %5d\n",i,a[i]);
}
}
printf("Hay %3d capicuas en el vector\n",c);
}
int esCapicua(int n){
// n recibe un numero de 3 cifras
if(n/100 == n%10)
return 1; // si es
else
return 0; // no es
}
void primos(){
printf("Numeros primos encontrados\n");
int c=0;
for(int i=0; i<TAM; i++){
if(esPrimo(a[i])==1){
c++;
printf("a[%2d] = %5d\n",i,a[i]);
}
}
printf("Hay %3d primos en el vector\n",c);
}
int esPrimo(int n){
int cd=0;
for(int i=1; i<=n; i++){
if(n % i == 0)
cd++;
}
if(cd == 2)
return 1; // si es primo
else
return 0; // no es primo
}
void estadistica(){
printf("ESTADISTICAS\n");
printf("Promedio: %5.1f\n",promedio());
printf("Desviacion estandar: %5.1f\n",dstandar());
printf("Varianza: %5.1f\n",varianza());
}
double promedio(){
double suma=0;
for(int i=0; i<TAM; i++)
suma += a[i];

return suma/TAM;
}
double varianza(){
double prom=promedio();
double suma=0;
for(int i=0; i<TAM; i++)
suma += pow(a[i]-prom,2);

return suma/(TAM-1);
}
double dstandar(){
return sqrt(varianza());
}
void ordenAsc(int v[], int n){
for(int i=0; i<n-1; i++){
for(int j=i+1; j<n; j++){
if(v[i] > v[j]){
// intercambia
int aux=v[i];
v[i] = v[j];
v[j] = aux;
}
}
}
}
int menu(){
int op;
printf("MENU DE OPCIONES\n");
printf("[1] Genera\n");
printf("[2] Capicuas\n");
printf("[3] Primos\n");
printf("[4] Estadistica\n");
printf("[5] Orden ascendente\n");
printf("[6] Intercambia pares\n");
printf("[7] Intercambia impares\n");
printf("[0] Fin\n");
printf("OPCION: ");cin>>op;
return op;
}

void intercambiaPares(){
/*
intercambia primer par con ultimo par encontrados
*/
int ppp = posicionPrimerPar();
if(ppp == -1)
printf("No hay primer par\n");
else{
int pup = posicionUltimoPar();
if(pup == -1)
printf("No hay ultimo par\n");
else{
intercambia(ppp,pup);
lista();
}
}
}

int posicionPrimerPar(){
for(int i=0; i<TAM; i++){
if(a[i] % 2 == 0)
return i;
}
return -1; // no encontro primer par
}
int posicionUltimoPar(){
for(int i=TAM-1; i>=0; i--){
if(a[i] % 2 == 0)
return i;
}
return -1; // no encontro ultimo par
}

void intercambia(int i,int j){


int aux=a[i];
a[i] = a[j];
a[j] = aux;
}

void intercambiaImPares(){
/*
intercambia segundo impar con penultimo impar encontrados
*/

S-ar putea să vă placă și