Fişierele bac1.txt și bac2.txt conţin numere naturale din intervalul [1,105]: fișierul bac1.txt conține pe prima linie un număr n1, iar pe a doua linie un șir de n1 numere, iar fișierul bac2.txt conține pe prima linie un număr n2, iar pe a doua linie un șir de n2 numere. Numerele aflate pe aceeași linie a unui fișier sunt ordonate crescător și sunt separate prin câte un spațiu.
Se cere să se afișeze pe ecran, în ordine crescătoare, separate prin câte un spațiu, numerele divizibile cu 5 care se găsesc doar în unul dintre șirurile aflate în cele două fișiere. Dacă nu există niciun astfel de număr, se afișează pe ecran mesajul nu exista. Proiectați un algoritm eficient din punctul de vedere al memoriei utilizate şi al timpului de executare.
Exemplu: dacă fişierul bac1.txt conţine numerele
7
1 2 3 4 7 20 60
iar fişierul bac2.txt conţine numerele
9
3 5 7 8 9 10 12 20 24
pe ecran se afișează, în această ordine, numerele 5 10 60.
Răspunsuri la întrebare
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ifstream a("bac1.txt");
ifstream b("bac2.txt");
int xa,xb,ia=1,ib=1,na,nb;
a >> na >> xa;
b >> nb >> xb;
while(ia <= na && ib <= nb){
if(xa==xb){
a >> xa;
b >> xb;
ia++;
ib++;
}
if(xa<xb){
if(xa%5==0) cout << xa << " ";
a >> xa;
ia++;
}
if(xb<xa){
if(xb%5==0) cout << xb << " ";
b >> xb;
ib++;
}
}
while(ia <= na){
a >> xa;
ia++;
if(xa%5==0) cout << xa << " ";
}
while(ib <= nb){
b >> xb;
ib++;
if(xb%5==0) cout << xb << " ";
}
}