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

#1
Programación C/C++ / fusionar dos vectores
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 (cpp) [Seleccionar]
#include<iostream>
#include<vector>
using namespace std;

vector<int>fusion(vector<int>v1,vector<int>v2){
int i=0; int j; vector<int>v;
if(v1.size()>v2.size()){
         while(i<v2.size()){
                          v.push_back(v1[i]);
                          v.push_back(v2[i]);
                            }     
         j=v.size()/2;
         while(i<v1.size()){
                          v.push_back(v1[i]); 
                            }       
                             }
else if(v1.size()<v2.size()){     
      while(i<v1.size()){
      v.push_back(v1[i]);
      v.push_back(v2[i]);
                            }     
         j=v.size()/2;
         while(i<v2.size()){
                          v.push_back(v2[i]); }}
else{
       while(i<v1.size()){
      v.push_back(v1[i]);
      v.push_back(v2[i]);
                            }}
                             return v;   }


int main(){ int n1,n2,e;
    cout<<"introduzca el tamaño de v1"<<endl;
    cin>>n1;
    vector<int>v1(n1);
    for(int i=0;i<n1;i++){
            cout<<"el elemento"<<" "<<i<<endl;
            cin>>e;
            }
   
    cout<<"introduzca el tamaño de v2"<<endl;
    cin>>n2;
    vector<int>v2(n2);
    for(int i=0;i<n2;i++){
            cout<<"el elemento"<<" "<<i<<endl;
            cin>>e;
            } 
    vector<int>u=fusion(v1,v2);
    cout<<"[";
    for(int i=0;i<u.size();i++){
            cout<<u[i]<<endl;
            }
    cout<<"]"<<endl; 
   
    system ("pause");
    return 0;}
#2
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 (cpp) [Seleccionar]
void voltear(list<int> &l){

list<int>:: iterator it1=l.begin();
list<int>:: iterator it2=l.end();

while(it1!=l.end()){

it2=l.insert(it2,*it1);

it1=l.erase(it1);
   
                  }
}


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
muchas gracias rir3760 por los consejos  ;D
#4
Programación C/C++ / Re: suma de una cola
6 Julio 2013, 21:18 PM
¡¡Gracias!! :DD
#5
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 (cpp) [Seleccionar]
#include<iostream>
#include<queue>
#include<stack>
using namespace std;

stack<int>nueva(stack<int>&p, int x){
    stack<int>p2;
    while(!p.empty()){

    if(x>p.top()){
             p2.push(p.top());     
                  }
    p.pop();
                      }
    return p2;
    }

int main() {
    int a,e;
    stack<int>p1;
    cout<<"element"<<endl;
    cin>>a;
   
    cout<<"introduzca los elementos"<<endl;
    cin>>e;
    while(e!=0){
                p1.push(e);
                cin>>e;
                }

   
    cout<<endl;
   
    stack<int>p2=nueva(p1,a);
   
    cout<<"La pila final es"<<endl;
    cout<<"[";
    while(!p1.empty()){
    cout<<p1.top()<<" ";
    p1.pop();
                      }
    cout<<"]";
   
   
   
    system("pause");
    return 0;
    }
#6
Programación C/C++ / Re: suma de una cola
6 Julio 2013, 20:46 PM
Gracias satu no había caído :D
Lo único que ahora si me muestra la suma pero no la cola.

Código (cpp) [Seleccionar]
#include<iostream>
#include<queue>

using namespace std;

int suma(queue<int>&c){
   int s=0;
   while(!c.empty()){
   s=s+(c.front());
   c.pop();
                     }
   return s;
   }

int main() {
   queue<int>c;
   int e;
   cout<<"introduzca los elementos"<<endl;
   cin>>e;
   while(e!=0){
               c.push(e);
               cin>>e;
               }
   
   
   
   int s=suma(c);
   cout<<"Y la suma es"<<"  "<<s<<endl;
   cout<<endl;
   
   cout<<"La cola es"<<endl;
   cout<<"[";
   while(!c.empty()){
   cout<<c.front()<<" ";
   c.pop();
   cout<<"]";
                     }



   system("pause");
   return 0;
   }
#7
Programación C/C++ / suma de una cola
6 Julio 2013, 20:02 PM
Hola,

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

Gracias :D

Código (cpp) [Seleccionar]
#include<iostream>
#include<queue>

using namespace std;

int suma(queue<int>&c){
    int s=0;
    while(!c.empty()){
    s=s+(c.front());
    c.pop();
                      }
    return s;
    }

int main() {
    queue<int>c;
    int e;
    cout<<"introduzca los elementos"<<endl;
    cin>>e;
    while(e!=0){
                c.push(e);
                cin>>e;
                }
    cout<<"La cola es"<<endl;
    cout<<"[";
    while(!c.empty()){
    cout<<c.front()<<" ";
    c.pop();
                      }
    cout<<"]";
    cout<<endl;
    int s=suma(c);
    cout<<"Y la suma es"<<"  "<<s<<endl;
   
   
   
   
    system("pause");
    return 0;
    }
#8
Gracias por este amplio tutorial y por la explicación de todas las pautas que debo formalizar.
Ahora iré asimilando toda esta nueva información.

Un saludo :D
#9
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 (cpp) [Seleccionar]
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

struct usuario{
      string nombre;
      char tipo_competicion; // s en caso que la competición sea puntable n en caso contrario
      int puntos;
     
      };
     
struct ranking{
      string nombre;
      int total_pruebas;
      int pruebas_puntuables;
      int puntos;
     
      };
     
int donde_esta(string nombre,vector<ranking>&v){
   for (int i = 0 ; i < v.size() ; i++){
       if (v[i].nombre == nombre){return i;} }
       ranking r;
       r.nombre=nombre;
       r.total_pruebas=0;
       r.pruebas_puntuables=0;
       r.puntos=0;
       }
       
vector<ranking>classificacion(vector<usuario>p){
vector<ranking>v;
for(int i=0;i<p.size();i++){
       int lugar=donde_esta(p[i].nombre,v);
       v[lugar].total_pruebas=v[lugar].total_pruebas+1;
       v[lugar].puntos=v[lugar].puntos+p[i].puntos;
       if(p[i].tipo_competicion=='s'){
                                      v[lugar].pruebas_puntuables=v[lugar].pruebas_puntuables+1;}
                                     
       else if(p[i].tipo_competicion=='n'){v[lugar].pruebas_puntuables=v[lugar].pruebas_puntuables+0;}
       }
       return v;
       }
               
bool ordenar_pruebas(ranking c1, ranking c2){
    if(c1.total_pruebas==c2.total_pruebas){
    if(c1.puntos==c2.puntos){return c1.nombre<c2.nombre;}  
                          else{return c1.puntos>c2.puntos;}}
    else{return c1.total_pruebas>c2.total_pruebas;}            
                                         
    }          
   
bool ordenar_puntos(ranking c1, ranking c2){
    if(c1.puntos==c2.puntos){return c1.nombre<c2.nombre; }  
    else{return c1.puntos>c2.puntos;}
    }                          
                                               
int main(){
   int n;
   cout<<"introduzca el numero de elementos de la estructura"<<endl;
   cin>>n;
   vector<usuario>p(n);
   
cout<<":::::::::::::::::::::::::::::::::::::::::::::::"<<endl;
cout<<endl;

for(int i=0;i<n;i++){
       cout<<"nombre >> competicion (s)-> PUNTUABLE, (n)-> NO PUNTUABLE >> puntos "<<endl;
       
       cin>>p[i].nombre;
       cin>>p[i].tipo_competicion;
       cin>>p[i].puntos;
       
       }
       
vector<ranking>v=classificacion(p);

cout << "-----------------------"<< endl;

sort(v.begin(),v.end(),ordenar_pruebas);

cout<<"LISTA"<<endl;

for(int i=0;i<v.size();i++){
       cout<<v[i].nombre<<" "<<v[i].total_pruebas<<" "<<v[i].pruebas_puntuables<<" "<<v[i].puntos<<endl;
       }
   
   system("pause");
   return 0;
}
   
   


Gracias por la ayuda :)
#10
Gracias rir3760 y satu por todas vuestras aportaciones y ayudas ¡sois increibles! :D