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ú

Temas - 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
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;
    }
#4
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;
    }
#5
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 :)
#6
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;}
#7
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;}
#8
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;}
#9
Hola,
quiero hacer un programa que invierte un vector,

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

¡Gracias!

#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
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?

#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!
#11
Programación C/C++ / duda matrices c++
15 Abril 2013, 18:03 PM
Hola,

Dada una matriz de notas, donde las filas son el nº de alumnos y las columnas el nº de asignaturas , para calcular la nota media por alumno se haría:


vector<vector<double> >notas(n, vector<double>(m));
for(int i=0; i<n; i++){
double suma=0;
for (int j=0; j<m; j++){
suma=suma+notas[i][j];
}

}


Ahora bien, para calcular la nota media por asignaturas, he pensado de hacerlo de dos maneras, me gustaría que me dijerais si está bien de las dos maneras...


vector<vector<double> >notas(n, vector<double>(m));
for(int i=0; i<m; i++){
double suma=0;
for (int j=0; j<n; j++){
suma=suma+notas[i][j];
}

}


o
con solo cambiar los subíndices ya basta.

vector<vector<double> >notas(n, vector<double>(m));
for(int i=0; i<n; i++){
double suma=0;
for (int j=0; j<m; j++){
suma=suma+notas[j][i];
}

}


Gracias de antemano :)
#12
Hola, tengo la especificación de una aplicación práctica pero no se como implementar una acción concreta.

class Data {
int dia, mes, año;
public:
Data (int d, int m, int a);
// Pre: {1<=d<=31 i 1<=m<=12 i a>=1900}
// Post: {Construye una data a partir del día d, mes m y año a}

int Dia ();

int Mes ();

int Año ();    }

class Empleado {
int dni;
string nom; // nombre completo del empleado
string dept; //nombre del departamento al cual pertenece
Data naci; // data de nacimiento
int sueldo, trienios; // sueldo que cobra y nombre de los trienios

public:
Empleado (int d, string n, Data dn, int s, string dp, int t);
// Pre: {d>0 i s>0 i t>=0}
// Post: {Construye un empleado con DNI d, nombre n, data de nacimiento dn,
saldo s i trienios t}
int Dni ();
string Nombre ();
Data Nacimiento ();
int Sueldo ();
// Pre: {Ninguna}
string Departament ();
// Pre: {Ninguna}
// Post: {Devuelve el departamento del empleado}
int Trienios ();
void ModificarSueldo (int s);
// Pre: {s>0}
// Post: {Substituye el sueldo que tenia el empleado por el sueldo nuevo s}
void ModificaTrienios (int t);
// Pre: {t>=0}
// Post: {Substituye el nombre de trienios que tenia el empleado por
el nuevo nombre t}
}

class Departamento {
string nombre;
int gefe; // dni del empleado que es el gefe del departamento
public:
Departamento (string n, int c);
// Pre: {d>0}
// Post: {Construye el departamento con nombre n y con DNI del gefe d}

string NombreDepartamento ();

int GefeDepartamento ();}

class Empresa {

vector<Empleat> empls;
vector<Departament> depts;

public;

Empresa (vector<Empleat> &emp, vector<Departamernt> &dep);
}
}


Quiero crear una acción void accion (Empresa & emp) que duplique el sueldo de los empleados nacidos antes del 1971, incremente el número de trienios en uno de los empleados nacido el 20 de febrero y que incremente el sueldo en una tercer parte ( + 1/3) a todos los empleados que son gefes de algún departamento.


¡Gracias por vuestra ayuda!
#13
Programación C/C++ / ejercicio bucle while
19 Marzo 2013, 14:22 PM
Hola,
tengo unas cuestiones en resolver el siguiente ejercicio.

I. Desarrollar un programa que lea una lista de enteros menores de 1000 que
acabará cuando se den las tres condiciones siguientes:
1) Se han encontrado al menos 5 múltiplos de 3 o de 7.
2) El número mayor es al menos 10 veces más grande que el número menor.
3) El promedio de los números pares supera al de los impares.

II. Cuando las tres condiciones se den y se termine la lectura de la lista de enteros se deberá:
• Escribir en pantalla y en orden descendente todos los números múltiplos de 5 entre el número
mayor y el menor.
• Escribir en pantalla la lista de todos los números impares mayores del promedio y menores
del mayor de la siguiente manera: En el primer renglón el primer número, en el segundo
reglón dos, el segundo y tercero, y así sucesivamente.
• Decir si existe algún divisor común de los números mayor y menor. Si existe decir cuál.


¿Cómo cuento el valor mayor y menor de una lista sin usar vectores?

En II, que debo hacer poner en el mismo bucle while al final las tres condiciones con and y cout.

#include<iostream>
using namespace std;


int main(){
    int i=0,s=0,p;
   
    while(i<1000){
   
    if((i%3==0)>=5){return 0;} //apartado 1
    else if((i%3==0)>=5){return 0;}
   
   //apartado 2 ?
   
    else if(if(i%2==0)){{p=p+1;}//apartado 3
   
    else{s=s+1;}
    return 0;}
             
                i++; }
   
    system("PAUSE");
    return 0;}



Gracias por la ayuda :)
#14
Hola,
Tengo que realizar un programa el cual 2 dada un carácter leído desde teclado devolver su lugar en el alfabeto (a=1, z=26) independientemente si es mayúscula o minúscula. Si no es letra devolver el valor 0 ó si es un espacio en blanco devolver el valor -1.

Mi problema está que no me quedan caracteres para utilizar, ya que si utilizo 'ñ' (que no está en el alfabeto) me da un error del tipo stray '\347' creo que es debido a que char no puede guardar el valor en la letra 'ñ'.

Aquí hasta donde he llegado:
Citar#include<iostream>
using namespace std;
int main(){
char ñ,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z;
cin>>ñ;
if(ñ=='a' or ñ=='A'){cout<<"1"<<endl;}
else if(ñ=='b' or ñ=='B'){cout<<"2"<<endl;}
else if(ñ=='c' or ñ=='C'){cout<<"3"<<endl;}
else if(ñ=='d' or ñ=='D'){cout<<"4"<<endl;}
else if(ñ=='e' or ñ=='E'){cout<<"5"<<endl;}
else if(ñ=='f' or ñ=='F'){cout<<"6"<<endl;}
else if(ñ=='g' or ñ=='G'){cout<<"7"<<endl;}
else if(ñ=='h' or ñ=='H'){cout<<"8"<<endl;}
else if(ñ=='i' or ñ=='I'){cout<<"9"<<endl;}
else if(ñ=='j' or ñ=='J'){cout<<"10"<<endl;}
else if(ñ=='k' or ñ=='K'){cout<<"11"<<endl;}
else if(ñ=='l' or ñ=='L'){cout<<"12"<<endl;}
else if(ñ=='m' or ñ=='M'){cout<<"13"<<endl;}
else if(ñ=='n' or ñ=='N'){cout<<"14"<<endl;}
else if(ñ=='o' or ñ=='O'){cout<<"15"<<endl;}
else if(ñ=='p' or ñ=='P'){cout<<"16"<<endl;}
else if(ñ=='q' or ñ=='Q'){cout<<"17"<<endl;}
else if(ñ=='r' or ñ=='R'){cout<<"18"<<endl;}
else if(ñ=='s' or ñ=='S'){cout<<"19"<<endl;}
else if(ñ=='t' or ñ=='T'){cout<<"20"<<endl;}
else if(ñ=='u' or ñ=='U'){cout<<"21"<<endl;}
else if(ñ=='v' or ñ=='V'){cout<<"22"<<endl;}
else if(ñ=='w' or ñ=='W'){cout<<"23"<<endl;}
else if(ñ=='x' or ñ=='X'){cout<<"24"<<endl;}
else if(ñ=='y' or ñ=='Y'){cout<<"25"<<endl;}
else if(ñ=='z' or ñ=='Z'){cout<<"26"<<endl;}



}

Gracias
#15
Programación C/C++ / transponer matriz c++
23 Febrero 2013, 13:12 PM
Hola,
necesitaría ayuda en como transponer una matriz, donde yo doy los elementos.
Creo que faltaría otra función para escribir los elementos de la matriz.

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

typedef vector<int>matriz;
vector<matriz>M(int m,matriz(int n));



void muestra(matriz M, int n, int m){
     for(int i=0;i<m;i++){cout<<"[";
          for(int j=0;j<n;j++){cout<<M[i][j]<<endl;
                 
                  }
                  cout<<"]"<<endl;
           }
     }
     
void transpon(matriz M){
     for(int i=0;i<matriz.size()-1;i++){
             for(int j=i+1;j<matriz.size();j++){
                     int aux=M[i][j];
                     M[i][j]=M[j][i];
                     M[j][i]=aux;
                     }
             }
     }
     
int main(){int M,m,n;
    cout<<"introduzca el numero de filas"<<endl;
    cin>>m;
    cout<<"introduzca el numero de columnas"<<endl;
    cin>>n;
   
    muestra(M,n,m);
    transpon(M);
   
    system("pause");
    return 0;}



¡Gracias por la ayuda! :)
#16
Hola,
Como harías el siguiente programa,
supongamos que tenemos dos vectores x, e y. Y queremos encontrar la observación con diferencia mayor.

Es decir, encontrar el valor (x,y) que hace máxima la diferencia.
(x-x[i], y-y[i]), este valor es una coordenada que tiene la misma posición para x e y.

int valor(vector<int>&x, vector<int>&y, int N)

for(int i=0;i<N;i++){
for(int j=i-1;j>=0;j++){

if(x-x[i])>(x-x[j]){return i;}}}

#17
Hola,

como harías una función que devuelva los números no repetidos,

v= 1 , 2 , 3 , 3 , 7 , 8 , 7 devuelva 1 , 2 , 3 , 7 , 8

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



vector <int> vector_unico (vector <int>& v){
int i=0;
int j=v.size()-1;
int s=0;
while(i<j){
           if(v[i++]!=v[j--]){s=s+v[i];}
           
           }return s;}

int main(){
    int n,i,e;
    cout<<" muestre el tamaño ";
    cin>>n;
    vector<int>v(n);
    for(i=0;i<n;i++){
                     cout<<" el elemento "<<i<<" ... ";
                     cin>>e;
                     v[i]=e;}
    cout<<vector_unico(v)<<endl;
   
system ("pause");
return 0;}


Lo que intento es recorrer todo el vector con dos contadores y que acumule los valores que están repetidos más de una vez.
#18
El siguiente programa me muestra la posición que ocupa el primer valor del vector que es divisible por un entero dado, ¿qué debería modificar para que no me mostrara solamente la primera posición sino todas?

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


bool divisor(vector<int>v,int m){
int i;
    bool encontrado=false;
    while(i<v.size() and not encontrado){
    if(v[i]%m==0){encontrado=true;}
    else{i++;}}
    return i;}
   
   
int main (){
   
    int n,i=0,e,m;
    cout<<endl<<"Entre el divisor...";
    cin>>m;
    cout << endl << "Entre el número de elementos del vector...";
    cin >> n;
    vector<int> v(n);
    for(i=0;i<n;i++){
                     cout << "Entre el elemento " << i << " del vector...";
                     cin >> e;
                     v[i] = e;}
    cout << endl;
   
    cout<<divisor(v,m)<<endl;
    cout<<endl;
    system("pause");
    return 0;}


¡¡Gracias!!
#19
Hola, hago un programa que consiste en comparar un vector con un número, (función booleana). No se que sucede pero me devuelve siempre el valor "true". Si el elemento está en el vector me devuelve "true" y si no está también.  :(

#include<iostream>
#include<vector>
using namespace std;
bool todosiguales(vector<int>v,int e){
                                    int i;
                                    for(i=0;i<v.size();i++){if(v[i]!=e){return false;}}
                                    return true;}

int main(){
    int n, m, e,i;
    cout<<"introduzca el tamaño del vector"<<endl;
    cin>>n;
    vector<int>v(n);
    for(i=0;i<v.size();i++){
                            cout<<"introduzca los elementos del vector"<<endl;
                            cin>>v[i];
                            v[i]=e;
                            }
    cout<<"introduzca el elemento a comparar"<<endl;
    cin>>m;
   
    if(todosiguales(v,m)){cout<<"es identico el vector respecto el elemento"<<endl;}
    else{cout<<"el vector es distinto respecto el elemento"<<endl;}
    system ("pause");
    return 0;
    }


¡Gracias por la ayuda!
#20
Programación C/C++ / calcular moda c++
22 Enero 2013, 17:52 PM
Hola,

podrías decirme que debo corregir en mi programa para que me calcule la moda de un vector dado,

La moda es el elemento que más veces se repite en el vector.

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

int main(){

int edad,personas,i,j,aux,suma_edad;
int moda,frecuencia,frecuencia_moda;
cout<<"introduzca el numero de personas"<<endl;
cin>>personas;

vector<int>v(personas);
for(i=0;i<v.size();i++){
                        cout<<"introduzca las edades"<<endl;
                        cin>>edad;
                        v[i]=edad;
                       
                        }
//moda

for(i=0;i<personas-1;i++)
for(j=0;j<personas-i;j++)

if(edad[j]>edad[j+1]){
                      aux=edad[j];
                      edad[j]=edad[j+1];
                      edad[j+1]=aux;}
frecuencia=0;
frecuencia_moda=0;
moda=-1;

for(i=0;i<personas-1;i++)
if(edad[i]==edad[i+1])
                       if(++frecuencia>frecuencia_moda){
                                                        frecuencia_moda=frecuencia;
                                                        moda=edad[i];}
                       else frecuencia=0;

system("PAUSE");
return 0;
}
                     


Gracias por la ayuda :)
#21
Querría hacer una función que dada un número n de países me ordene por países,  ejemplo:

españa 120
francia 70
españa 50
perú  100
francia 80


me ordene por españa 120, españa 50, francia 70, francia 80, perú 100

Gracias

#inlcude<iostream>
#include<vector>
#include<algorithm>

using namespace std;

struct pais{
       string nom;
       int q;};
       
int main(){
int n;
cin>>n;
vector<pais>v(n);
int i=0;
while(i<n){
           cin>>v[i].nom;
           cin>>v[i].q;
           i=i+1;}     
       
sort(v.begin(),v.end(),ordena_nom);







vector<pais>total();

total.push_back(v[0]);

int main(){

int i=1;

while(i<v.size()){
                 
                  if (v[i].nom==v[i-1].nom){
                  totals[total.size()-1].quantitat=total[total.size()-1].quantitat + v[i].quantitat;}
                  else {p.nom=v[i].nom;
                  p.q=v[i].q;
                  total.push_back(p);}
#22
Programación C/C++ / mediana en c++
3 Enero 2013, 12:09 PM
Hola
querría hacer un programa que dado un vector me calculara la mediana.
Si el tamaño del vector es impar la mediana es el valor (N+1)/2.
Si el tamaño del vector es par la mediana será el promedio de el término que ocupa el lugar N/2 con el término que ocupa el lugar (N/2)+1; es decir (N/2+((N/2)+1))/2

He intentado hacerlo, si pudierais corregir me. 

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

double mediana(vector<int>v, double me){
      int i;
     
       for(i=0;i<v.size();i++){
       if (v.size()%2==0){
                        me=v[i]/2;}
       else {me=(v[i]/2+(v[i+1]))/2;}}
       return me;
       }

int main(){
   
    int n,i,e;
    cout << endl << "Entra el número de elementos del vector...";
    cin >> n;
    vector<int> v(n);
    for(i=1;i<n;i++){
                     cout << "Entra el elemento " << i << " del vector...";
                     cin >> e;
                     v[i] = e;}
    cout <<mediana(v)<<endl;


system ("pause");
return 0;
}
#23
Es un programa que dice que se indique si hay al menos un elemento negativo al vector, el programa que he echo pongo lo que ponga me sale que si hay valor negativo, si cambio el true por el false me imprime que no hay ningún valor negativo, no sé donde está el fallo :(

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

bool parell(vector<int>v){
  int i;
  for(i=0;i<v.size();i++){
if(v[i]%2==0){return false;}}
    return true;}



int main(){
   int i,n,e;
    cout<<"mida";
    cin>>n;
    vector<int>v(n);
    for(i=0;i+1<n;i++){
                     cout<<"lelement"<<i<<"..";
                     cin>>e;
                     v[i]=e;}
    cout<<"lultim element del vector es 0"<<endl;
    v.push_back(0);
   
    if (parell(v)){cout<<"conte almenys un nombre parell";}
    else {cout<<"no conte cap nombre parell";}
   
   
   
    system("pause");
    return 0;}
#24
Programación C/C++ / vector simetrico (palíndromo)
11 Diciembre 2012, 20:13 PM
Crear un programa que dada una secuencia diga si es palíndromo,

palíndromo es secuencia simétrica, ejemplos: 1122, 12321, 1551, ...

Mi duda está en que si el vector no es palíndromo me imprime que no lo es , pero si SÍ lo es no imprime que lo sea.

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

bool palindromo(vector<int>v){
    int i=0, j=v.size()-1;
    while(i<j){
        if(v[i]!=v[j]){return false;}}
    return true;}
       

int main(){
    int n,e,i;
    cout<<"mida";
    cin>>n;
    vector<int>v(n);
    for (i=0;i<n;i++){
        cout<<" l'element "<<i<<" ... ";
        cin>>e;
        v[i]=e;}
   
    if (palindromo(v)){cout<<"el vector es simetrico"<<endl;}
    else {cout<<"el vector no es simetrico"<<endl;}
   
    system("pause");
    return 0;}


¡Gracias por la ayuda!
#25
Hola, podrían corregir me el fallo,

Dado un vector acabado en 0, calcular cuantos valores negativos posee el vector.

He echo esto:

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

double entero_negativo(vector<int>v, double b){
      int i,s=0;
       v[i-1]==0;
       for (i=0;i<v.size();i=i+1){
           if (v[i]<0){s=s+1;}}
       return s;}
   
int main(){
   
    int n,i,e,negativo;
    cout<<"introduzca el tamaño"<<endl;
    cin>>n;
    vector<int>v(n);
    for (i=0;i<n;i=i+1){
        v[i-1]=0;
        cout<< "Introduzca el elemento " << i << " del vector: ";
        cin>>e;
        v[i]==e;}
    negativo=entero_negativo(v,e);
    if(negativo>=0){cout<<"no hay"<<negativo<<"elementos en el vector"<<endl;}

    else if (negativo<0){cout<<"hay negativos"<<negativo<<"en el vector"<<endl;}

    system("pause");
    return 0;}



Gracias por la ayuda :))
#26
Programación C/C++ / calcular producto escalar
11 Diciembre 2012, 09:01 AM
Calcular producto escalar  de dos vectores dados.

¿Qué debo rectificar para que me funcione?

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

double producto_escalar(vector<double>v1,vector<double>v2){
     int i, s=0;
     for(i=0;i<v1.size and i<v2.size ();i=i+1){
               s=s+v1[i]*v2[i];      }
     return s;}
                       
                       


int main(){
    int i, k, e,n,s=0;
    vector<int>v1;
    vector<int>v2;
    cout<<"introduzca el tamaño del vector 1"<<endl;
    cin>>n;
    for(i=0;i<n;i=i+1){
                       cout<<"este es el elemento"<<i<<"...";
                       cin>>e;
                       v1[i]=e;}
    cout<<"introduzca el tamaño del vector 2"<<endl;
    cin>>n;
    for(i=0;i<n;i=i+1){
                       cout<<"este es el elemento"<<i<<"...";
                       cin>>e;
                       v2[i]=e;}
   
producto_escalar (s=s+v1[i]*v2[i];  ){
cout<<"el producto escalar es"<<s<<endl;}

system ("pause");
return 0;

}
#27
Programación C/C++ / unión de dos conjuntos
6 Diciembre 2012, 19:02 PM
Hola,
podríais ayudarme a terminar este ejercicio. Es sobre calcular la unión de dos conjuntos. Ejemplo, A={3,2,5,7} y B={0,1,2,3}
Unión A y B = {0,1,2,3,5,7}

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

void leer_conjunto (vector<int>&c){
     int n,i=0;
     cin>>n;
     while (i<n){
           cin>>c[i];
           i=i+1;}
           
int main (){
    vector<int> A;
    vector<int> B;
    vector <int> resultado;
    leer.conjunto (A);
    leer.conjunto (B);
#28
Programación C/C++ / ejercicio de vectores
4 Diciembre 2012, 17:51 PM
Dados una lista y un entero, escriba una función  que calcule cuántas
veces aparece el entero dado en la lista. Haced dos versiones, una
suponiendo que la lista no está a ordenada y otra suponiendo que lo
está.

Podríais decirme si es correcto el que he echo.

#include "utils.h"


     
int f60(vector<int>&v, int e){
                     int i=0;
                     int s=0;
                     while(i<v.size()){
                                       if(v[i]==e){
                                                   s=s+1;
                                                   }
                                                   i=i+1;  }                                                                                                               
return s; }

int main(){
    int n;
    cin >> n;
    vector<int>v(n);
    leer_vector(v);
    escribir_vector(v);

    int e;
   cin >> e;

    f60(v,e);
    cout << f60(v,e);
   
system ("PAUSE");
return 0;
    }


Gracias y un saludo
#29
Programación C/C++ / ayuda con vectores c++
8 Noviembre 2012, 19:16 PM
Hola,
quiero que dada una secuencia de números se imprima por pantalla.

Hice lo siguiente, (no puedo usar el bucle for)

Si pudieras corregir me la errada.

#include<iostream>
#include<vector>
using namespace std;
vector<int>leer_seq_i(){
int n;
vector <int> resultado;

while(cin>>n && n!=-1){
             resultado.push_back(n);
             cin>>n;
}
return resultado;
}

int main(){
    vector<int> v=leer_seq_i();
    int i=0;
    while(i<v.size()){
                      cout<<v[i]<<endl;
                      ++i;}

system ("PAUSE");
return 0;
}


Gracias por la ayuda :)
#30
Hola, quiero calcular la media aritmética con el bucle while y usando un centinela.

No me calcula bien el promedio, si pudierais decirme que fallo hay.

#include<iostream>
using namespace std;
int main(){
double suma,n;
int contador=0;
cin>>n;
while(n!=-1){
            suma=suma+n;
            contador=contador+1;
            cin>>n;}
            cout<<suma/contador<<endl;
           

system("PAUSE");
return 0;
}


Un saludo
#31
Crear un programa que a partir de un valor entero mayor que 1 y un valor real x calcule la suma de los n primeros términos de la siguiente sucesión:

1, (x/2), (x^2/4),(x^3/8), (x^4/16)...(x^n/2^n)

PD:No puedo utilizar funciones de la biblioteca matemática como "pow".

Gracias por vuestra ayuda ;)
#32
Dado un numero n entero mostrar por pantalla los residuos de dicho número. He echo el programa lo único que no se como decirle al programa para que me muestre todos  los residuos y no solo el último. Si pudieras corregirme ;)

#include<iostream>
using namespace std;

int main() {
    int n, contador;
    cin>>n;
    while(contador>0){
                  contador=n/10;
                  n=n%10;
                  cout<<n%10<<endl;}
    system ("PAUSE");
    return 0;
}
#33
Escribir un programa que muestre todos los números de tres cifras tales
que la suma de las centenas más las decenas sea igual a las unidades.

Como primer condición dado un número abc natural es que
while (abc>=100 && abc<=999)

abc==(a+b=c)

No se que debería poner más para obtener la sucesión.

Gracias por la ayuda
#34
Hola, quiero hacer un programa que al introducirle un número natural n, calcule sus números menores hasta el 1.  Ej de 7, 6,5,4,3,2,1

He echo lo siguiente pero solo me calcula el primer n-1 y sigue infinitamente,

#include<iostream>
using namespace std;

int main(){
    int n,i=0;
    cin>>n;
    while (i<n){
        i=n-1;
       
        cout<<i<<endl;} 
   
system ("PAUSE");
return 0;
}


Gracias por la ayuda :D
#35
Hola,
quiero crear un programa que yo dé un número n y calcule la suma de sus cifras.

Manualmente lo que debería hacer el programa es: Ej. el número 423

Dividiría el 423 entre 10, 423/10= 42 (Divisor) y 3 (Residuo), 42/10= 4(Divisor) y 2 (Residuo) y 4/10= 0 (Divisor) y 1 (Residuo), entonces en el programa se debería sumar todos los residuos es decir 3+2+1 y sumarle el último numerador 4 y restarle el último residuo 1.

((3+2+1)+(4))-1=9 Da el número de cifras de n.

Yo he echo esto, pero no me calcula exactamente lo que quiero, si me pudierais corregir estaría muy agradecido.  :rolleyes:

#include<iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    int suma=0;
    while(n>0)
    {
              suma=(n%10);
              suma=(n%10)+n-1;
              n=n/10;}
    cout<<suma<<endl;
system ("PAUSE");
return 0;
}