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

Ma poate ajuta cineva cu ce am gresit la aceasta problema? Iau doar 60 de puncte, sigur e ceva super simplu dar nu imi dau seama.

Cerinţa
Se dau două şiruri cu elemente numere naturale. Determinaţi câte dintre elementele primului şir sunt mai mari decât toate elementele celui de-al doilea şir.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii, reprezentând elementele primului şir. Apoi citeşte numărul m şi m numere naturale, separate prin spaţii, reprezentând elementele celui de-al doilea şir.

Date de ieşire
Programul afișează pe ecran numărul C, reprezentând numărul de elemente din primul şir care sunt mai mari decât toate elementele celui de-al doilea şir.

Restricţii şi precizări
1 ≤ n,m ≤ 100
elementele celor două şiruri sunt mai mici decât 10000

Exemplu
Date de intrare

5
7 8 10 1 9
6
1 3 6 2 7 3
Date de ieșire

3
Explicație
Valorile 8, 10 şi 9, din primul şir, sunt mai mari decât toate elementele celui de-al doilea şir.

================================SOLUTIA MEA
#include
using namespace std;

int main() {
int n, vn[101], m, vm[101]; int nr = 0;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> vn[i];

cin >> m;
for (int i = 1; i <= m; i++)
cin >> vm[i];

bool mai_mare = true;

for (int i = 1; i <= n; i++) {
mai_mare = true;
for (int j = 1; j <= n; j++) {
if (vn[i] <= vm[j])
mai_mare = false;
}
if (mai_mare==true)
nr++;
}
cout << nr;
}


andrei750238: Probabil eroare de copy-paste. In cele doua for-uri imbricate vad ca ai i

Răspunsuri la întrebare

Răspuns de andrei750238
56

#include <iostream>

using namespace std;

int main() {

   int n, vn[101], m, vm[101]; int nr = 0;

   

   //Citire date

   cin >> n;

   for (int i = 1; i <= n; i++)

   cin >> vn[i];

   cin >> m;

   for (int i = 1; i <= m; i++)

   cin >> vm[i];

   //Prelucrare

   bool mai_mare = true;

   

   for (int i = 1; i <= n; i++) {

       mai_mare = true;

       for (int j = 1; j <= m; j++)

           if (vn[i] <= vm[j]) mai_mare = false;

   if (mai_mare==true)nr++;

   }

   cout << nr;

}

Anexe:

andrei750238: Totusi solutia nu e cea mai eficienta. Puteai gasi maximul din al doilea sir si apoi comparai fiecare valoare din primul sir cu maximul gasit.
Dumbo15: Care a fost pana la urma greaseala la mine?
andrei750238: in loc de m ai pus tot n. Vezi in comentariul de la întrebare
Alte întrebări interesante