Advertisement
icatalin

8.12.2016 problema vectori ordonare

Dec 8th, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.80 KB | None | 0 0
  1. Se consideră două tablouri unidimensionale a şi b fiecare având numere naturale de
  2. maximum patru cifre, ordonate crescător. Tabloul a conţine n (1<n<100) numere pare, iar
  3. tabloul b conţine m (1<m<100) numere impare.
  4. a) Scrieţi un program C/C++ care citeşte de la tastatură valoarea lui n şi cele n elemente ale
  5. tabloului a, apoi valoarea lui m şi cele m elemente ale tabloului b după care scrie în fişierul
  6. BAC.TXT un număr maxim de elemente ale tablourilor date, numerele fiiind scrise în ordine
  7. crescătoare, separate prin câte un spaţiu, iar cele aflate pe poziţii consecutive fiind de
  8. paritate diferită. Programul va utiliza un algoritm eficient din punct de vedere al timpului de
  9. executare.
  10. Exemplu: pentru n=6, m=5 şi tablourile a=(2,4,8,10,14,16) şi b=(3,5,7,11,15 )
  11. fişierul BAC.TXT va avea următorul conţinut : 2 3 4 5 8 11 14 15 16 (6p.)
  12. b) Descrieţi succint, în limbaj natural, algoritmul pe baza căruia a fost scris programul de la
  13. punctul a), explicând în ce constă eficienţa metodei utilizate.
  14.  
  15.  
  16.  
  17. #include <iostream>
  18. #include <cstring>
  19. #include <cmath>
  20. #include <fstream>
  21.  
  22.  
  23.  
  24. using namespace std;
  25.  
  26. ifstream f("date.in");
  27.  
  28.  
  29.  
  30. int main()
  31. {
  32.     int a[100],n,b[100],m;
  33.  
  34.     f>>n;
  35.     for (int i=1; i<=n; i++)
  36.         f>>a[i];
  37.  
  38.     f>>m;
  39.     for (int i=1; i<=m; i++)
  40.         f>>b[i];
  41.  
  42.     if (n < m)
  43.         swap(n,m);
  44.  
  45.         int vec[1000];
  46.  
  47.     for (int i=1; i<=n; i++)
  48.         vec[i]=a[i];
  49.  
  50.     int lim=n+m;
  51.  
  52.     for (int i=n+1; i<=lim; i++)
  53.         vec[i]=b[i-n];
  54.  
  55.  
  56.     int i,j;
  57.    
  58.    
  59.  
  60.     for (i=1; i<lim; i++)
  61.         for (j=i+1; j<=lim; j++)
  62.             if (vec[i] > vec[j])
  63.                 swap (vec[i],vec[j]);
  64.  
  65.     for (i=1; i<=lim; i++)
  66.         if ((vec[i]%2) != (vec[i+1]%2))
  67.         cout<<vec[i]<<" ";
  68.  
  69.     return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement