Advertisement
Abelsor

VPL_S6_E5

Apr 12th, 2023
996
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.40 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. /*Función que carga un vector de N elementos con valores introducidos por teclado*/
  5. void cargarVector(int A[], int N){
  6.     int i;
  7.     for(i=0;i<N;i++) cin>>A[i];
  8. }
  9.  
  10. /*Función que muestra en pantalla los elementos de un vector de N elementos*/
  11. void imprimirVector(int A[], int N){
  12.     int i;
  13.     for(i=0;i<N;i++) cout<<A[i]<<" "; cout<<endl;
  14. }
  15.  
  16. /*Función que indica con verdadero si un elemento x está en un vector de N elementos, y
  17. falso en caso contrario.
  18. El entero "salto" indica el incremento en el proceso de recorrer el vector*/
  19. bool estaEnElVector(int A[], int N, int x, int salto){
  20.     int i;
  21.     for(i=0;i<N;i+=salto){
  22.         if(x==A[i]) return true; //x está en el vector (en la posición i)
  23.     }
  24.     return false; //ya que no se encontró x en el proceso de búsqueda
  25. }
  26.  
  27. /*Función que devuelve la cantidad de elementos distintos en un vector de N elementos*/
  28. int contarElementosDistintos(int A[], int N){
  29.     int elemDist=0; //contador con el nro de elementos distintos
  30.     int B[N]; //vector que almacenará los elementos distintos de A (como máximo, hay N distintos)
  31.     int i; //índice
  32.     for(i=0;i<N;i++){
  33.         if(!estaEnElVector(B,elemDist,A[i],1)) B[elemDist++] = A[i]; //si A[i] no estaba en B, lo agregamos
  34.     }
  35.     return elemDist;
  36. }
  37.  
  38. /*Función para obtener la lista L2 según las especificaciones del problema*/
  39. void obtenerListaL2(int L1[],int L2[],int N){
  40.     int elemDist=0; //contador con el nro de elementos distintos
  41.     int B[N];
  42.     int cont;
  43.    
  44.     for(int i=0;i<N;i++){
  45.         if(!estaEnElVector(B,elemDist,L1[i],1)) B[elemDist++] = L1[i];
  46.     }
  47.    
  48.     for(int i=0 ; i<2*elemDist ; i++){
  49.         if(i%2==0){
  50.             L2[i] = B[i/2];
  51.         }
  52.         else{
  53.             cont = 0;
  54.             for(int j=0 ; j<N ; j++){
  55.                     if(L2[i-1]==L1[j])
  56.                         cont++;
  57.             }
  58.             L2[i] = cont;
  59.         }
  60.     }
  61. }
  62.  
  63. int main(){
  64.     int N; //Numero de elementos de L1
  65.     cin>>N; //Cargamos N
  66.     int L1[N]; //Vector que almacenará la lista de entrada
  67.     cargarVector(L1,N); //Cargamos el vector
  68.     int M = contarElementosDistintos(L1, N); //M debe contener la cantidad de números distintos en L1
  69.     int L2[2*M]; //Vector que almacenará los números distintos con el nro de veces que aparecen en L1
  70.     obtenerListaL2(L1,L2,N); //Obtenemos la lista L2 según la descripción del problema
  71.     imprimirVector(L2,2*M); //Mostramos la lista L2
  72.     return 0;
  73. }
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement