Informatică, întrebare adresată de Nicolae02, 8 ani în urmă

Fişierul BAC.TXT conţine pe prima linie două numere naturale nenule n și m (n≤1000, m≤10000). A doua linie din fișier conține un șir a având n numere naturale, formate din cel mult trei cifre, în ordine strict crescătoare și separate prin câte un spaţiu. A treia linie din fișier conține un șir b având m numere naturale, formate din cel mult trei cifre și separate prin câte un spaţiu.
Scrieți un program C/C++ care citește valorile din fișierul BAC.TXT și afişează pe ecran, în ordine crescătoare și separate prin spațiu, numerele din șirul b ce ar putea fi inserate în șirul a, astfel încât a să rămână ordonat strict crescător sau afișează mesajul Nu exista numere care vor fi inserate, dacă niciun număr din șirul b nu poate fi inserat în șirul a cu proprietatea de mai sus.
De exemplu, dacă fişierul BAC.TXT are conţinutul următor,
6 7
5 14 25 80 100 150
5 3 90 14 35 3 35
pe ecran se va afișa 3 35 90.

Răspunsuri la întrebare

Răspuns de chetreanandrei
1

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

void sortare(int c[], int k){

int i, j;

int aux;

for (i = 0;i < k; i++)

 for (j = 0;j < k-1; j++)

    if (c[i] < c[j]){

     aux = c[i];

     c[i] = c[j];

     c[j] = aux;

   }

}

void eliminare(int c[], int &k){

int i, j;

int x;

for (i = 0;i < k; i++)

 for (j = i+1;j < k; j++)

  if (c[i] == c[j]){

   for (x = j;x < k; x++)

   c[x] = c[x+1];

   k--;    

  }

}

int main(){

ifstream fin("BAC.TXT");

int n, m;

int i, j;

int a[1000];

int b[1000];

int c[1000];

int k;

fin >> n >> m;

for (i = 0;i < n; i++)

 fin >> a[i];

for (j = 0;j < m; j++)

 fin >> b[j];

fin.close();  

cout << "Sirul a:\n";

for (i = 0;i < n; i++)

 cout <<  a[i] << ' ';

cout << endl << "Sirul b:\n";

for (j = 0;j < m; j++)

 cout <<  b[j] << ' ';

cout << endl;

for (j = 0;j < m; j++){

 int nr = b[j];

 for (i = 0;i < n; i++)

  if (nr > a[i] && nr < a[i+1]){

   c[k] = nr;

   k++;

  }

  if (nr < a[0]){

   c[k] = nr;

   k++;

  }

  if (nr > a[n-1]){

   c[k] = nr;

   k++;

  }

}

sortare(c,k);

eliminare(c,k);

if (k > 0){

 cout << "Elementele care pot fi inserare in sirul 'a' conform conditiilor specificate:\n";  

 for (i = 0;i < k; i++)

  cout << c[i] << ' ';

 cout << endl;

}

else  

 cout << "Nu sunt elemente care pot fi inserate in sirul 'a'\n";

return 0;

}

Explicație:

Alte întrebări interesante