//Ejercicios 1 y 3
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
//Funciones pregunta 1
vector <double> Llenado(int n, double a){
double x_i;
vector <double> v;
x_i = a*exp(-1 * a);
for(int i = 0; i<n; i++){
v.push_back(x_i);
x_i = a * exp(-1 * v[i]); //Utiliza el número anterior calculado para la formula recursiva
}
return v;
}
void estadisticas(vector <double> &x, double &media, double &var){
media = 0; var = 0;
int n = int(x.size());
for(int i = 0; i<x.size(); i++){
media += x[i] / n;
}
for(int i = 0; i<x.size(); i++){
var += pow(x[i] - media, 2) / n;
}
}
//Funciones y clase pregunta 3
class ecuacion{
private:
int a;
int b;
int c;
public:
ecuacion();
ecuacion(int a1, int a2, int a3);
void EncontrarSol(int k);
bool EsSolucion(int x1, int y1);
friend ostream &operator<< (ostream &co, ecuacion &eq);
friend istream &operator>> (istream &in, ecuacion &eq);
};
ecuacion::ecuacion(){ //Constructor
a = 0; b = 0; c = 0;
}
ecuacion::ecuacion(int a1, int a2, int a3){ //Constructor extendido con valores dados por el usuario
a = a1; b = a2; c = a3;
}
void ecuacion::EncontrarSol(int k){
cout<<"La/s solucion/es de la ecuacion es/son: "<<endl;
for(int i = -1 * abs(k); i<=abs(k); i++){
for(int j = -1 * abs(k); j<=abs(k); j++){
if(EsSolucion(i,j)){
cout<<"("<<i<<","<<j<<")";
cout<<endl;
}
}
}
}
bool ecuacion::EsSolucion(int x1, int y1){
int sol = a * x1 + b * y1;
if(sol == c){
return true;
}else{
return false;
}
}
// Sobrecarga de operadores
ostream &operator<< (ostream &co, ecuacion &eq){
co<<eq.a<<"x ";
if(eq.b >= 0){
cout<<"+ "<<eq.b<<"y = "<<eq.c;
}else{
cout<<eq.b<<"y = "<<eq.c;
}
return co;
}
istream &operator>> (istream &in, ecuacion &eq){
cout<<"Ingrese los valores para las constrantes: "<<endl;
cout<<"a: "; in>>eq.a;
cout<<"b: "; in>>eq.b;
cout<<"c: "; in>>eq.c;
return in;
}
int main(){
int n;
cout<<"\t\t\tEXAMEN FINAL"<<endl;
cout<<"\nIngrese el ejercicio que desea visualizar (1 o 3): "; cin>>n;
switch(n){
case 1:{
int n;
vector <double> v;
double a;
cout<<"\nIngrese el valor de n: "; cin>>n;
cout<<"Ingrese el valor de alpha: "; cin>>a;
v = Llenado(n,a);
cout<<"\nEl vector generado es: "<<endl<<endl;
for(int i = 0; i<v.size(); i++){
cout<<v[i]<<"\t";
}
double media, var;
estadisticas(v,media,var);
cout<<"\n\nLa media de los datos es: "<<media<<endl;
cout<<"La varianza de los datos es: "<<var<<endl;
break;
}
case 3: {
ecuacion eq;
int k;
cout<<"\nIngrese la ecuacion: "<<endl; cin>>eq;
cout<<"La ecuacion ingresada es "<<eq<<endl;
cout<<"\nIngrese el valor de k: "; cin>>k;
eq.EncontrarSol(k);
break;
}
default:{
cout<<"\nEjercicio no valido o no lo hice :).";
break;
}
}
return 0;
}