ayuda por favor en c++

Iniciado por olvin, 18 Noviembre 2012, 18:35 PM

0 Miembros y 1 Visitante están viendo este tema.

olvin

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

bemone

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
Odio los tipos de variable de Windows.

bemone

Aca tengo un code que hice que muestra los numeros que mas se repiten.
Fijate si lo podes adaptar.

Código (cpp) [Seleccionar]
#include <utility>
#include <vector>
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>

using namespace std;

ifstream entrada;
ofstream salida;
unsigned int nLineas, nIterador, i, j;

bool ordenar(const pair<string, int>& i, const pair<string, int>& j);

int main()
{
    entrada.open("nombres.in");
    entrada >> nLineas;
    entrada >> nIterador;

    vector < pair <string, int> > vNombres (nLineas);
    vector <string> vPrincipal (nLineas);

    for(i=0; i<nLineas; i++){
        entrada >> vPrincipal[i];
        vNombres[i].first = vPrincipal[i];
    }

    for(i=0; i<vPrincipal.size(); i++)
        for(j=0; j<vPrincipal.size(); j++)
            if(vNombres[i].first == vPrincipal[j])
                vNombres[i].second += 1;

    sort(vNombres.begin(), vNombres.end(), ordenar);

    salida.open("nombres.out");
    j = 0;
    for(i=0; i<nIterador; i++){
        salida << vNombres[j].first <<" ";
        salida << vNombres[j].second;
        salida << endl;
        j += vNombres[j].second;
    }

    entrada.close();
    salida.close();

    return 0;
}

bool ordenar(const pair<string, int>& i, const pair<string, int>& j){
    return j.second < i.second ? true : false;
}
Odio los tipos de variable de Windows.

leosansan

Cita de: 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
CitarTe 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 (cpp) [Seleccionar]
#include <stdio.h>
#define N   5
int main()
{
    int i,j,k=0,a[N]={1,2,3,4,5},b[N]={3,4,5,6,7},a1[N],b1[N];
    for (i=0;i<N;i++){
        for (j=0;j<N;j++){
        if (a[i]==b[j])
               a[i]=0;
        }
    }
    for (i=0;i<N;i++){
        if (a[i]!=0){
        printf ("%d  ",a[i]);
        a1[k]=a[i];k++; /*<== guardo en nuevo array los de a no estan en b*/
        }
    }
    puts ("\n");
    for (i=0;i<k;i++)
         printf ("%d  ",a1[i]);
    return 0;
}

Saluditos!.