Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - indict

#11
Programación C/C++ / devolver vector único
30 Junio 2013, 17:06 PM
Hola de nuevo,

querría hacer una función que devolviera un vector con solo únicos elementos, es decir sin elementos repetidos. Para ello he creído ordenar primeramente el vector ya que así se puede trabajar de forma mas sencilla.  El programa me devuelve correctamente el vector con elementos no repetidos, lo único que al final del vector aparece una combinación de números que sobra, debida por algún error.

Si pudieras decirme si sería posible rectificar ese error. Gracias :).

Código (cpp) [Seleccionar]
#include<iostream>
#include<vector>
using namespace std;

void ordena_seleccion(vector<int>& v) {
    for (int i = 0; i < v.size(); i++) {
        int min = i;
        for (int c = i + 1; c < v.size(); c++) {
            if (v[min] > v[c]) min = c;
        }
        int aux = v[i];
        v[i] = v[min];
        v[min] = aux;
    }
}


vector<int>unico(vector<int>&v){
ordena_seleccion(v);
int i=0;
vector<int>p;

while(i<v.size()){
        if(v[i]!=v[i+1]){
        p.push_back(v[i]);
        p.push_back(v[i+1]);
        i=i+2;}
        i++; }
        return p;      }

int main(){
      int n,e;
    cout<<"introduzca el tamaño del vector "<<endl;
    cin>>n;
   
    vector<int>v(n);
    for(int i=0;i<n;i++){
            cout<<"elemento"<<endl;
            cin>>e;
            v[i]=e;
            }
   
    vector<int>p=unico(v);
    cout<<endl;
    cout<<"[";
    for(int i=0;i<v.size();i++){
            cout<<p[i]<<"  ";
            }
    cout<<"]"<<endl;
    system("pause");
    return 0;}
#12
Programación C/C++ / Re: ordenar un vector
30 Junio 2013, 14:20 PM
Lo encontré en wikipedia.

Gracias por la colaboración :D

Código (cpp) [Seleccionar]
void ordena_seleccion(vector<int>& v) {
    for (int i = 0; i < v.size(); ++i) {
        int min = i;
        for (int c = i + 1; c < v.size(); ++c) {
            if (v[min] > v[c]) min = c;
        }
        int aux = v[i];
        v[i] = v[min];
        v[min] = aux;
    }
}
#13
Programación C/C++ / Re: ordenar un vector
30 Junio 2013, 14:17 PM
Cita de: rir3760 en 30 Junio 2013, 03:26 AM
Mejor indícanos que algoritmo deseas implementar en tu programa.

El algoritmo de ordenamiento por selección.
#14
Programación C/C++ / ordenar un vector
29 Junio 2013, 22:43 PM
Hola, quiero ordenar un vector en orden creciente.

Para ello he creado una función que me devuelva el valor máximo del vector, así este elemento ya lo situó como el primer elemento del vector. Luego una acción para intercambiar los elementos en caso que un  elemento menor sea menor que un elemento mayor.

Gracias por la ayuda ;)

Código (cpp) [Seleccionar]
#include<iostream>
#include<vector>
using namespace std;

int maxim(vector<int>&v){
   int i=0,m;
   while(i<v.size()){
                     
   if(v[i]>=v[m]){ m=i;
                 }
                     i++;
                     }
   return m;
   }

void intercambia(int &a,int &b){
    int m=a;
    a=b;
    b=m;
    }
void ordena(vector<int>&v){
    int m=maxim(v);
    v[0]=m;
    for(int i=1;i<v.size();i++){
            if(v[i]<v[i+1]){
            intercambia(v[i],v[i+1]);}
            }
   
    }

int main(){
    int n,e;
    cout<<"introduzca el tamaño del vector"<<endl;
    cin>>n;
    vector<int>v(n);
   
    for(int i=0;i<n;i++){
    cout<<"introduzca el elemento"<<" "<<i<<" del vector"<<endl;
            cin>>e;
            v[i]=e;
            }
   ordena(v);
   
   for(int i=0;i<v.size();i++){
           cout<<v[i]<<endl;
           }
   system("pause");
   return 0;}
#15
con la suma de todos los los elementos del vector, es decir la suma de todos los e debe dar 1.

Gracias por toda la ayuda y aportaciones :)
#16
Código (cpp) [Seleccionar]
#include<iostream>
#include<vector>
using namespace std;


bool es_esperan(vector<double>v){
     double s=0;
     for(int i=0;i<v.size();i++){
             s=s+v[i];
             
             }
     if(s==1){return true;}
     else{return false;}
     }


int main(){int n;
double esperanza=0,e,s=0;
bool t;
    cout<<"introduzca el tamañp de los x_i"<<endl;
    cin>>n;
    vector<double>v(n);
   
    for(int i=0;i<n;i++){
            cout<<"introduzca el elemento"<<i<<endl;
            cin>>e;
            v[i]=e;
            }
    for(int i=0;i<n;i++){
           
            esperanza=esperanza+(i*v[i]);
            }
       t=es_esperan(v);     
    if(t){cout<<"La esperanza existe i es"<<" "<<esperanza<<endl;}
    else{cout<<"La esperanza no existe"<<endl;}
   

system("pause"); return 0;}
#17
La inicializo a 0 y sigue sin funcionar bien :/.
#18
Gracias por la ayuda :D

He pasado el vector como parámetro en la función booleana pero sigue sin funcionar.  :S

bool es_esperan(vector<double>v){
     double s=0;
     for(int i=0;i<v.size();i++){
             s=s+v[i];
             
             }
     if(s==1){return true;}
     else{return false;}
     }
#19
Programación C/C++ / ejercicio esperanza c++
25 Junio 2013, 19:09 PM
Hola,
quiero hacer un programa que le des una serie de elementos en tan por uno y calcule la esperanza. La esperanza será la suma de cada elemento introducido multiplicado por el valor del contador correspondiente.
Si la suma de valores introducidos no es igual a 1 se imprimirá por pantalla que no existe la esperanza en cambio si la suma de valores es igual a 1 se mostrará por pantalla que sí existe la esperanza y es ...

ejemplo: introduzco los elementos: 0.1 , 0.5 , 0.3, 0.1 la suma de estos 4 elementos es 1 luego si existe la esperanza.
Y será: 0.1 * 0 + 0.5 * 1 + 0.3 *2 + 0.1 * 3 = 1.4

Mi problema es que este mismo caso que he ejemplificado el programa me devuele que la esperanza no existe :SS

Si pudieras decirme donde está el fallo os lo agradeceria

Muchas gracias :)

#include<iostream>
#include<vector>
using namespace std;


bool es_esperan(double s){
    vector<double>v;
    for(int i=0;i<v.size();i++){
            s=s+v[i];
           
            }
    if(s==1){return true;}
    else{return false;}
    }


int main(){int n;
double esperanza,e,s=0;
bool t;
   cout<<"introduzca el tamañp de los x_i"<<endl;
   cin>>n;
   vector<double>v(n);
   
   for(int i=0;i<n;i++){
           cout<<"introduzca el elemento"<<i<<endl;
           cin>>e;
           v[i]=e;
           }
   for(int i=0;i<n;i++){
           
           esperanza=esperanza+(i*v[i]);
           }
      t=es_esperan(s);    
   if(t){cout<<"La esperanza existe i es"<<" "<<esperanza<<endl;}
   else{cout<<"La esperanza no existe"<<endl;}
 

system("pause"); return 0;}
#20
Ya encontré el fallo era con la inicialización de los contadores.
Gracias de todas maneras.