elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Temas
Páginas: [1] 2 3 4
1  Programación / Programación C/C++ / fusionar dos vectores en: 16 Julio 2013, 20:37 pm
Hola, querría hacer un programa que fusione dos vectores. Es decir
si v1 = 1,2,3,4 y v2 = 5,6,7,8,9 imprima v = 1,5,2,6,3,7,4,8,9

Hice esté código pero no me ejecuta nada.
Si pudieras decirme que falta para que funcione os lo agradecería :)

Código
  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4.  
  5. vector<int>fusion(vector<int>v1,vector<int>v2){
  6. int i=0; int j; vector<int>v;
  7. if(v1.size()>v2.size()){
  8.         while(i<v2.size()){
  9.                          v.push_back(v1[i]);
  10.                          v.push_back(v2[i]);
  11.                            }      
  12.         j=v.size()/2;
  13.         while(i<v1.size()){
  14.                          v.push_back(v1[i]);  
  15.                            }        
  16.                             }
  17. else if(v1.size()<v2.size()){    
  18.      while(i<v1.size()){
  19.      v.push_back(v1[i]);
  20.      v.push_back(v2[i]);
  21.                            }      
  22.         j=v.size()/2;
  23.         while(i<v2.size()){
  24.                          v.push_back(v2[i]); }}
  25. else{
  26.       while(i<v1.size()){
  27.      v.push_back(v1[i]);
  28.      v.push_back(v2[i]);
  29.                            }}
  30.                             return v;   }
  31.  
  32.  
  33. int main(){ int n1,n2,e;
  34.    cout<<"introduzca el tamaño de v1"<<endl;
  35.    cin>>n1;
  36.    vector<int>v1(n1);
  37.    for(int i=0;i<n1;i++){
  38.            cout<<"el elemento"<<" "<<i<<endl;
  39.            cin>>e;
  40.            }
  41.  
  42.    cout<<"introduzca el tamaño de v2"<<endl;
  43.    cin>>n2;
  44.    vector<int>v2(n2);
  45.    for(int i=0;i<n2;i++){
  46.            cout<<"el elemento"<<" "<<i<<endl;
  47.            cin>>e;
  48.            }  
  49.    vector<int>u=fusion(v1,v2);
  50.    cout<<"[";
  51.    for(int i=0;i<u.size();i++){
  52.            cout<<u[i]<<endl;
  53.            }
  54.    cout<<"]"<<endl;  
  55.  
  56.    system ("pause");
  57.    return 0;}
2  Programación / Programación C/C++ / dar la vuelta elementos de una lista en: 10 Julio 2013, 19:21 pm
Hola,
quiero crear una acció que dada una lista, me de la vuelta
1,2,3,4,5 cambie a 5,4,3,2,1

Código
  1. void voltear(list<int> &l){
  2.  
  3. list<int>:: iterator it1=l.begin();
  4. list<int>:: iterator it2=l.end();
  5.  
  6. while(it1!=l.end()){
  7.  
  8. it2=l.insert(it2,*it1);
  9.  
  10. it1=l.erase(it1);
  11.  
  12.                   }
  13. }

Mi idea es coger el primer elemento y insertarlo al final de la lista. Como el it2 está en el final de lista, la inserción se aplicará al último elemento.
Luego eliminar el primer elemento de la lista con la función erase(it) y como la función elimina el elemento que apunta y luego pasa al siguiente entonces he prescindido del contador. Por qué sino se saltaría un elemento.
Pero no termino de plasmar correctamente la idea ya que la función no modifica la lista.

Gracias por cualquier aportación.
3  Programación / Programación C/C++ / ejercicio sencillo con PILAS en: 6 Julio 2013, 21:12 pm
Hola,

quiero hacer un programa, que me imprima por pantalla los elementos mayores de la pila respecto un entero dado.

No me muestra la pila, no se que debería rectificar.

¡Gracias por la ayuda!

Código
  1. #include<iostream>
  2. #include<queue>
  3. #include<stack>
  4. using namespace std;
  5.  
  6. stack<int>nueva(stack<int>&p, int x){
  7.    stack<int>p2;
  8.    while(!p.empty()){
  9.  
  10.    if(x>p.top()){
  11.             p2.push(p.top());    
  12.                  }
  13.    p.pop();
  14.                      }
  15.    return p2;
  16.    }
  17.  
  18. int main() {
  19.    int a,e;
  20.    stack<int>p1;
  21.    cout<<"element"<<endl;
  22.    cin>>a;
  23.  
  24.    cout<<"introduzca los elementos"<<endl;
  25.    cin>>e;
  26.    while(e!=0){
  27.                p1.push(e);
  28.                cin>>e;
  29.                }
  30.  
  31.  
  32.    cout<<endl;
  33.  
  34.    stack<int>p2=nueva(p1,a);
  35.  
  36.    cout<<"La pila final es"<<endl;
  37.    cout<<"[";
  38.    while(!p1.empty()){
  39.    cout<<p1.top()<<" ";
  40.    p1.pop();
  41.                      }
  42.    cout<<"]";
  43.  
  44.  
  45.  
  46.    system("pause");
  47.    return 0;
  48.    }
4  Programación / Programación C/C++ / suma de una cola en: 6 Julio 2013, 20:02 pm
Hola,

no entiendo porqué el programa no muestra la suma de una cola. 

Gracias :D

Código
  1. #include<iostream>
  2. #include<queue>
  3.  
  4. using namespace std;
  5.  
  6. int suma(queue<int>&c){
  7.    int s=0;
  8.    while(!c.empty()){
  9.    s=s+(c.front());
  10.    c.pop();
  11.                      }
  12.    return s;
  13.    }
  14.  
  15. int main() {
  16.    queue<int>c;
  17.    int e;
  18.    cout<<"introduzca los elementos"<<endl;
  19.    cin>>e;
  20.    while(e!=0){
  21.                c.push(e);
  22.                cin>>e;
  23.                }
  24.    cout<<"La cola es"<<endl;
  25.    cout<<"[";
  26.    while(!c.empty()){
  27.    cout<<c.front()<<" ";
  28.    c.pop();
  29.                      }
  30.    cout<<"]";
  31.    cout<<endl;
  32.    int s=suma(c);
  33.    cout<<"Y la suma es"<<"  "<<s<<endl;
  34.  
  35.  
  36.  
  37.  
  38.    system("pause");
  39.    return 0;
  40.    }
  41.  
5  Programación / Programación C/C++ / error estructura al compilar en: 2 Julio 2013, 01:51 am
Hola, he echo una ejercicio de estructuras que consiste en lo siguiente:
le introduces
el nombre, s si la competición es puntuable n en caso que no lo sea y los puntos correspondientes que ha generado dicha competición.

Quiero generar una lista que me muestre
el nombre, el total de pruebas realizadas, el total de pruebas puntuables (que será la suma de pruebas de tipo "s") y el total de puntos. Lógicamente podré introducir varias veces un mismo usuario y se irán acumulando los puntos y el número de competiciones.

He diseñado un programa para ello, pero me marca error al final de escribir los usuarios.

Código
  1. #include<iostream>
  2. #include<vector>
  3. #include<algorithm>
  4. using namespace std;
  5.  
  6. struct usuario{
  7.       string nombre;
  8.       char tipo_competicion; // s en caso que la competición sea puntable n en caso contrario
  9.       int puntos;
  10.  
  11.       };
  12.  
  13. struct ranking{
  14.       string nombre;
  15.       int total_pruebas;
  16.       int pruebas_puntuables;
  17.       int puntos;
  18.  
  19.       };
  20.  
  21. int donde_esta(string nombre,vector<ranking>&v){
  22.    for (int i = 0 ; i < v.size() ; i++){
  23.        if (v[i].nombre == nombre){return i;} }
  24.        ranking r;
  25.        r.nombre=nombre;
  26.        r.total_pruebas=0;
  27.        r.pruebas_puntuables=0;
  28.        r.puntos=0;
  29.        }
  30.  
  31. vector<ranking>classificacion(vector<usuario>p){
  32. vector<ranking>v;
  33. for(int i=0;i<p.size();i++){
  34.        int lugar=donde_esta(p[i].nombre,v);
  35.        v[lugar].total_pruebas=v[lugar].total_pruebas+1;
  36.        v[lugar].puntos=v[lugar].puntos+p[i].puntos;
  37.        if(p[i].tipo_competicion=='s'){
  38.                                       v[lugar].pruebas_puntuables=v[lugar].pruebas_puntuables+1;}
  39.  
  40.        else if(p[i].tipo_competicion=='n'){v[lugar].pruebas_puntuables=v[lugar].pruebas_puntuables+0;}
  41.        }
  42.        return v;
  43.        }
  44.  
  45. bool ordenar_pruebas(ranking c1, ranking c2){
  46.     if(c1.total_pruebas==c2.total_pruebas){
  47.     if(c1.puntos==c2.puntos){return c1.nombre<c2.nombre;}  
  48.                           else{return c1.puntos>c2.puntos;}}
  49.     else{return c1.total_pruebas>c2.total_pruebas;}            
  50.  
  51.     }          
  52.  
  53. bool ordenar_puntos(ranking c1, ranking c2){
  54.     if(c1.puntos==c2.puntos){return c1.nombre<c2.nombre; }  
  55.     else{return c1.puntos>c2.puntos;}
  56.     }                          
  57.  
  58. int main(){
  59.    int n;
  60.    cout<<"introduzca el numero de elementos de la estructura"<<endl;
  61.    cin>>n;
  62.    vector<usuario>p(n);
  63.  
  64. cout<<":::::::::::::::::::::::::::::::::::::::::::::::"<<endl;
  65. cout<<endl;
  66.  
  67. for(int i=0;i<n;i++){
  68.        cout<<"nombre >> competicion (s)-> PUNTUABLE, (n)-> NO PUNTUABLE >> puntos "<<endl;
  69.  
  70.        cin>>p[i].nombre;
  71.        cin>>p[i].tipo_competicion;
  72.        cin>>p[i].puntos;
  73.  
  74.        }
  75.  
  76. vector<ranking>v=classificacion(p);
  77.  
  78. cout << "-----------------------"<< endl;
  79.  
  80. sort(v.begin(),v.end(),ordenar_pruebas);
  81.  
  82. cout<<"LISTA"<<endl;
  83.  
  84. for(int i=0;i<v.size();i++){
  85.        cout<<v[i].nombre<<" "<<v[i].total_pruebas<<" "<<v[i].pruebas_puntuables<<" "<<v[i].puntos<<endl;
  86.        }
  87.  
  88.    system("pause");
  89.    return 0;
  90. }
  91.  
  92.  

Gracias por la ayuda :)
6  Programación / Programación C/C++ / devolver vector único en: 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
  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4.  
  5. void ordena_seleccion(vector<int>& v) {
  6.    for (int i = 0; i < v.size(); i++) {
  7.        int min = i;
  8.        for (int c = i + 1; c < v.size(); c++) {
  9.            if (v[min] > v[c]) min = c;
  10.        }
  11.        int aux = v[i];
  12.        v[i] = v[min];
  13.        v[min] = aux;
  14.    }
  15. }
  16.  
  17.  
  18. vector<int>unico(vector<int>&v){
  19. ordena_seleccion(v);
  20. int i=0;
  21. vector<int>p;
  22.  
  23. while(i<v.size()){
  24.        if(v[i]!=v[i+1]){
  25.        p.push_back(v[i]);
  26.        p.push_back(v[i+1]);
  27.        i=i+2;}
  28.        i++; }
  29.        return p;      }
  30.  
  31. int main(){
  32.      int n,e;
  33.    cout<<"introduzca el tamaño del vector "<<endl;
  34.    cin>>n;
  35.  
  36.    vector<int>v(n);
  37.    for(int i=0;i<n;i++){
  38.            cout<<"elemento"<<endl;
  39.            cin>>e;
  40.            v[i]=e;
  41.            }
  42.  
  43.    vector<int>p=unico(v);
  44.    cout<<endl;
  45.    cout<<"[";
  46.    for(int i=0;i<v.size();i++){
  47.            cout<<p[i]<<"  ";
  48.            }
  49.    cout<<"]"<<endl;
  50.    system("pause");
  51.    return 0;}
  52.  
7  Programación / Programación C/C++ / ordenar un vector en: 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
  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4.  
  5. int maxim(vector<int>&v){
  6.    int i=0,m;
  7.    while(i<v.size()){
  8.  
  9.    if(v[i]>=v[m]){ m=i;
  10.                  }
  11.                      i++;
  12.                      }
  13.    return m;
  14.    }
  15.  
  16. void intercambia(int &a,int &b){
  17.     int m=a;
  18.     a=b;
  19.     b=m;
  20.     }
  21. void ordena(vector<int>&v){
  22.     int m=maxim(v);
  23.     v[0]=m;
  24.     for(int i=1;i<v.size();i++){
  25.             if(v[i]<v[i+1]){
  26.             intercambia(v[i],v[i+1]);}
  27.             }
  28.  
  29.     }
  30.  
  31. int main(){
  32.     int n,e;
  33.     cout<<"introduzca el tamaño del vector"<<endl;
  34.     cin>>n;
  35.     vector<int>v(n);
  36.  
  37.     for(int i=0;i<n;i++){
  38.     cout<<"introduzca el elemento"<<" "<<i<<" del vector"<<endl;
  39.             cin>>e;
  40.             v[i]=e;
  41.             }
  42.    ordena(v);
  43.  
  44.    for(int i=0;i<v.size();i++){
  45.            cout<<v[i]<<endl;
  46.            }
  47.    system("pause");
  48.    return 0;}
  49.  
8  Programación / Programación C/C++ / ejercicio esperanza c++ en: 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 :)

Código:
#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;}
9  Programación / Programación C/C++ / invertir el orden de un vector en: 22 Junio 2013, 17:07 pm
Hola,
quiero hacer un programa que invierte un vector,

lo he echo pero no lo hace correctamente, ¿Qué errada hay? :S

¡Gracias!

Código:
#include<iostream>
#include<vector>
using namespace std;

    void reverse(vector<int>&A){
     int i=0;
     int last = A.size()-1;
     
    while(i<last){
             int z=A[i];
             A[i]=A[last];
             A[last]=z;
             i++;
             last=last-1;
             }   
         }
   
   
    int main(){
    int n,i,e;
    cout << endl << "Entra el numero de elementos del vector...";
    cin >> n;
    vector<int> v(n);
    for(i=1;i<=n;i++){
                     cout << "Entre el elemento " << i << " del vector...";
                     cin >> e;
                     v[i] = e;}
   
    reverse(v);
    for(i=1;i<n;i++){
    cout<<v[i]<<",";}
   
    system("pause");
    return 0;}
   
10  Programación / Programación C/C++ / pequeña duda sobre matriz simétrica c++ en: 18 Abril 2013, 18:05 pm
Hola,

he echo un programa donde dada una matriz devuelva "si" si es simétrica y "no" si no lo es. Pero solo me imprime por pantalla "no" cuando no lo es, y cuando si lo es no me imprime nada. ¿Qué debo rectificar para que me imprima por pantalla "si" cuando si lo es?

Código:
#include<iostream>
#include <cstdlib>
#include<vector>
#include<algorithm>
#include <iomanip>
using namespace std;
 
 
 bool Esdiagonal(vector<vector<int> >M){
  int i=0,j;
  bool p=true;
   while(i<M.size()-1 and p){
       j=i+1;
       while(j<M.size() and p){
                              if(M[i][j]!=M[j][i]){
                                                             p=false;
                                                             }
                             
              }
       
       }
       return p;

}


int main(){
    int m,n;
    cout<<"introduzca el numero de filas"<<endl;
    cin>>m;
    cout<<"introduzca el numero de columnas"<<endl;
    cin>>n;
    vector<vector<int> > matriz ( m, vector<int> ( n ) );
   
    int k = 0;
  for ( int i = 0; i < m; i++ ) {
    for ( int j = 0; j < n; j++ ){
      cout << "["<<i+1<<"]"<< "["<<j+1<<"]= ";/*activa esta y la siguiente para entrar a mano*/
      cin >>matriz[i][j];
      //matriz[i][j] = k++;/*y desactivas esta*/
    }
  }
 


  cout<<'\n';
  for ( int i = 0; i < n; i++ ) {
    for ( int j = 0; j < m; j++ )
      cout<< setw ( 3 ) << matriz[i][j] <<' ';
    cout<<'\n';
  }
  if(Esdiagonal(matriz)){cout<<"si"<<endl;}
  else{cout<<"no"<<endl;}
   // muestra(matriz,n,m);
   // transpon(matriz,n,m);
 
    system("pause");
    return 0;
  }
 

¡Gracias por la ayuda!
Páginas: [1] 2 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines