Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Se consideră două tablouri unidimensionale a şi b fiecare având numere naturale de
- maximum patru cifre, ordonate crescător. Tabloul a conţine n (1<n<100) numere pare, iar
- tabloul b conţine m (1<m<100) numere impare.
- a) Scrieţi un program C/C++ care citeşte de la tastatură valoarea lui n şi cele n elemente ale
- tabloului a, apoi valoarea lui m şi cele m elemente ale tabloului b după care scrie în fişierul
- BAC.TXT un număr maxim de elemente ale tablourilor date, numerele fiiind scrise în ordine
- crescătoare, separate prin câte un spaţiu, iar cele aflate pe poziţii consecutive fiind de
- paritate diferită. Programul va utiliza un algoritm eficient din punct de vedere al timpului de
- executare.
- Exemplu: pentru n=6, m=5 şi tablourile a=(2,4,8,10,14,16) şi b=(3,5,7,11,15 )
- fişierul BAC.TXT va avea următorul conţinut : 2 3 4 5 8 11 14 15 16 (6p.)
- b) Descrieţi succint, în limbaj natural, algoritmul pe baza căruia a fost scris programul de la
- punctul a), explicând în ce constă eficienţa metodei utilizate.
- #include <iostream>
- #include <cstring>
- #include <cmath>
- #include <fstream>
- using namespace std;
- ifstream f("date.in");
- int main()
- {
- int a[100],n,b[100],m;
- f>>n;
- for (int i=1; i<=n; i++)
- f>>a[i];
- f>>m;
- for (int i=1; i<=m; i++)
- f>>b[i];
- if (n < m)
- swap(n,m);
- int vec[1000];
- for (int i=1; i<=n; i++)
- vec[i]=a[i];
- int lim=n+m;
- for (int i=n+1; i<=lim; i++)
- vec[i]=b[i-n];
- int i,j;
- for (i=1; i<lim; i++)
- for (j=i+1; j<=lim; j++)
- if (vec[i] > vec[j])
- swap (vec[i],vec[j]);
- for (i=1; i<=lim; i++)
- if ((vec[i]%2) != (vec[i+1]%2))
- cout<<vec[i]<<" ";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement