Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: olvin en 18 Noviembre 2012, 18:35 pm



Título: ayuda por favor en c++
Publicado por: olvin en 18 Noviembre 2012, 18:35 pm
necesito ayuda con este ejercicio,,, yo lo hice pero me falta terminarlo,, y lo que me falta es encontrar los que estan en A y no en B y viceversa
si alguien me ayuda porfa lo necesito urgente;

abajo les dejo el problema; corranlo y ayudenme


#include <iostream>
#include <stdio.h>
//catedratica: Lic. Rosmery Corrales
//Examen de LENGUAJE 1;
//Alumno: Olvin Antonio Aguirre Ortez
//cuenta: 20111000091
//fecha: 01/11/2012
//objetivo: sacar los comunes de ambos vectores; ordenarlos eliminando los repetidos
//luego sacar los que estan en 'a' y no en 'b' y viceversa.
using namespace std;
int ordenados2(int a1[], int nuevo[], int tam);//aqui decalaramos una funcion para ordenar los dos vectores juntos y eliminar uno de los que se repiten
int ordenados(int a1[], int nuevo[], int tam);//aqui declaro que va a ver una funcion para ordenar cada vector por separado
//y eliminar los comunes de cada vector
int main(int argc, char *argv[]){
   int a[100]={0},b[100]={0},co[100]={0},comun[100]={0};
   int nuevoa[100]={0},nuevob[100]={0},nuevoc[100]={0};
   int l=0, max=0,c=0,i=0,j=0,m=0,indice=0;
   cout<<"INGRESE LA CANTIDAD DE ELEMENTOS A CONTENER CADA VECTOR"<<endl;
   cout<<"preferible no ingresar numeros repetidos en unn vecotor"<<endl;
   cout<<"======================================================="<<endl;
   cin>>l;
   cout<<""<<endl;
   cout<<"INGRESE LOS ELEMENTOS DEL VECTOR 'A'"<<endl;
   for(int i=0;i<l;i++){
      cin>>a;
   }
   max=ordenados(a,nuevoa,l);
   for(int i=0;i<max;i++){
      nuevoa;
   }
   nuevoa;
   cout<<""<<endl;
   cout<<"***************************************************"<<endl;
   cout<<""<<endl;
   cout<<"INGRESE LOS ELEMENTOS DEL VECTOR 'B'"<<endl;
   for(i=0;i<l;i++){
      cin>>b;   
   }
   max=ordenados(b,nuevob,l);
   for(i=0;i<max;i++){
   nuevob;
   }
   nuevob;
   cout<<""<<endl;
   
   for(i=0;i<max;i++){//yo ise un proceso de introducir los dos vectore en un solo arreglo
      c++;
      co[c]=nuevoa;
      c++;
      co[c]=nuevob;
      co;//arreglo con los dos vectores dentro de el
   }
   for(i=1;i<=max*2;i++){
      co;
      for(j=0;j<i;j++){
         if(co[j]==co)
            comun++;   
      }
   }
   cout<<""<<endl;
   cout<<"Los Comunes Del Vector 'A' y 'B' son: "<<endl;
   m=comun[0];
   for(i=1;i<max*2;i++){
      if(comun>m)
         m=comun;
      indice=i;
      for(indice=0;indice<comun;i++){
         cout<<""<<co<<endl;
      }
   }
   cout<<""<<endl;
   for(i=0;i<max*2;i++){
      co;
   }
   max=ordenados2(co,nuevoc,max*2);//llamamos a la funcion para ordenar los numeros y eliminar los repetidos
   cout<<"Dos vectores Ordenados Sin numeros Repetidos"<<endl;
   for(i=0;i<max;i++){
      cout<<", "<<nuevoc<<ends;//mandamos a imprimir los elementos de los dos vectores sin elementos repetidos   
   }
   cout<<""<<endl;
   cout<<""<<endl;
      for(int i=0;i<l;i++){
      a;
      }
   max=ordenados(a,nuevoa,l);
   for(int i=0;i<max;i++){
      nuevoa;
   }
   nuevoa;
   for(i=0;i<l;i++){
   b;   
   }
   max=ordenados(b,nuevob,l);
   for(i=0;i<max;i++){
   nuevob;
   }
   nuevob;
cout<<"Estan en A y no en B"<<endl;
   for(i=0;i<max;i++){
        cout<<","<<nuevoa<<ends;
}
      
   cout<<""<<endl;
   cout<<""<<endl;
   cout<<"Estan en 'B' y no en ,A,"<<endl;
   for(i=0;i<max;i++){
   cout<<","<<nuevob<<ends;
   }
   return 0;
}



int ordenados(int a1[], int nuevo[], int tam)//funcion para ordenar los numeros
{//y devolverlos sin los repetidos, este analiza vector por vector;
   int i, j,c = 0;
   int aux;
   bool repetido;//inicio una variable tipo logica de verdadero o falso
   
   for(i=0;i<tam-1;i++){//los ordenamos por el metodo burbuja
      for(j=0;j<tam-1;j++){
         if(a1[j]>a1[j+1]){
            aux=a1[j];
            a1[j]=a1[j+1];
            a1[j+1]=aux;
         }
      }
   }//aqui terminamos la ordenacion y en el siguiente proceso mandamos a eliminar los comunes
   for (i=0;i<tam;i++){//aqui eliminamos los comunes de cada vector
      for (j=0;j<c;j++){
         repetido = false;
         if (a1==nuevo[j]){
            repetido = true;
            break;
         }
      }
      if (!repetido){
         nuevo[c++] = a1;
      }
   }//aqui termina el proceso de eliminacion de repetidos
   
   return c;
}//aqui termina la funcion de eliminar los repetidos de cada vector
int ordenados2(int a1[], int nuevo[], int tam)//funcion para ordenar los numeros
{//y devolverlos sin los repetidos, este analiza vector por vector;
   int i, j,c = 0;
   int aux;
   bool repetido;//inicio una variable tipo logica de verdadero o falso
   
   for(i=0;i<tam;i++){//los ordenamos por el metodo burbuja
      for(j=0;j<tam;j++){
         if(a1[j]>a1[j+1]){
            aux=a1[j];
            a1[j]=a1[j+1];
            a1[j+1]=aux;
         }
      }
   }//aqui terminamos la ordenacion y en el siguiente proceso mandamos a eliminar los comunes
   for (i=0;i<=tam;i++){//aqui eliminamos los comunes de cada vector
      for (j=0;j<=c;j++){
         repetido = false;
         if (a1==nuevo[j]){
            repetido = true;
            break;
         }
      }
      if (!repetido){
         nuevo[c++] = a1;
      }
   }//aqui termina el proceso de eliminacion de repetidos
   
   return c;
}//aqui termina la funcion de eliminar los repetidos de cada vector


Título: Re: ayuda por favor en c++
Publicado por: bemone en 18 Noviembre 2012, 19:11 pm
Recorres los dos arrays anidando dos iteraciones y comparas cada elemento del primer vector con todos los del 2do vector. Los que no encuentre los almacenas en un 3er vector


Título: Re: ayuda por favor en c++
Publicado por: bemone en 21 Noviembre 2012, 22:46 pm
Aca tengo un code que hice que muestra los numeros que mas se repiten.
Fijate si lo podes adaptar.

Código
  1. #include <utility>
  2. #include <vector>
  3. #include <iostream>
  4. #include <string>
  5. #include <fstream>
  6. #include <algorithm>
  7.  
  8. using namespace std;
  9.  
  10. ifstream entrada;
  11. ofstream salida;
  12. unsigned int nLineas, nIterador, i, j;
  13.  
  14. bool ordenar(const pair<string, int>& i, const pair<string, int>& j);
  15.  
  16. int main()
  17. {
  18.    entrada.open("nombres.in");
  19.    entrada >> nLineas;
  20.    entrada >> nIterador;
  21.  
  22.    vector < pair <string, int> > vNombres (nLineas);
  23.    vector <string> vPrincipal (nLineas);
  24.  
  25.    for(i=0; i<nLineas; i++){
  26.        entrada >> vPrincipal[i];
  27.        vNombres[i].first = vPrincipal[i];
  28.    }
  29.  
  30.    for(i=0; i<vPrincipal.size(); i++)
  31.        for(j=0; j<vPrincipal.size(); j++)
  32.            if(vNombres[i].first == vPrincipal[j])
  33.                vNombres[i].second += 1;
  34.  
  35.    sort(vNombres.begin(), vNombres.end(), ordenar);
  36.  
  37.    salida.open("nombres.out");
  38.    j = 0;
  39.    for(i=0; i<nIterador; i++){
  40.        salida << vNombres[j].first <<" ";
  41.        salida << vNombres[j].second;
  42.        salida << endl;
  43.        j += vNombres[j].second;
  44.    }
  45.  
  46.    entrada.close();
  47.    salida.close();
  48.  
  49.    return 0;
  50. }
  51.  
  52. bool ordenar(const pair<string, int>& i, const pair<string, int>& j){
  53.    return j.second < i.second ? true : false;
  54. }
  55.  


Título: Re: ayuda por favor en c++
Publicado por: leosansan en 22 Noviembre 2012, 13:39 pm
necesito ayuda con este ejercicio,,, yo lo hice pero me falta terminarlo,, y lo que me falta es encontrar los que estan en A y no en B y viceversa
Citar
Te pongo un ejemplo con dos arrays a y b y elimino los de a que estan en b y los guardo en a1. Análogamente sería para los de b que no esten en a. Eso sí, supongo que no hay repetidos en los arrays, si no fuera así habría que eliminar los repe de a1 y b1:
Código
  1. #include <stdio.h>
  2. #define N   5
  3. int main()
  4. {
  5.    int i,j,k=0,a[N]={1,2,3,4,5},b[N]={3,4,5,6,7},a1[N],b1[N];
  6.    for (i=0;i<N;i++){
  7.        for (j=0;j<N;j++){
  8.        if (a[i]==b[j])
  9.               a[i]=0;
  10.        }
  11.    }
  12.    for (i=0;i<N;i++){
  13.        if (a[i]!=0){
  14.        printf ("%d  ",a[i]);
  15.        a1[k]=a[i];k++; /*<== guardo en nuevo array los de a no estan en b*/
  16.        }
  17.    }
  18.    puts ("\n");
  19.    for (i=0;i<k;i++)
  20.         printf ("%d  ",a1[i]);
  21.    return 0;
  22. }
Saluditos!.