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

se citeste un numar natural n (n<=1000), apoi un sir de n numere naturale cuprinse intre 1 si 100. se citeste de asemenea un numar natural k. sa se afiseze elementele care apar exact de k ori in sir. de exemplu, pentru n=10, a=(4,2,8,4,2,88,4,5,1) si k=3, se vor afisa 4, 8(numai aceste numere apar de exact de 3 ori).

Răspunsuri la întrebare

Răspuns de andrei750238
0

#include <iostream>

using namespace std;

int main() {

int n, v[100], i, k, ap=0;

cout << "Introduceti numarul de elemente din vector : ";

cin >> n;

//Citire

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

 cout << "\nV[" << i << "] = ";

 cin >> v[i];

}

//Citire k :

cout << "Introduceti k : ";

cin >> k;

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

 if (v[i] >= 0) {

  ap = 1;

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

   if (v[i] == v[j] && v[j] >= 0) {

    ap++;

    v[j] = -1;

   }

  }

   

  if (ap == k) cout << v[i] << ", ";

 }

 

}

}

Anexe:

andrei750238: Testat in VS. Ai document cpp atasat.
Programul e destul de complex si mi-a luat ceva trial and error. Doresti sa ti-l explic ?
arcq123: salutare, te rog.
andrei750238: Rezolvarea mea se bazează pe faptul că șirul are doar numere pozitive ( naturale ). Dublurile/celelalte apariții sunt atribuite -1, astfel putând fi ignorate.
andrei750238: Se ia primul element din vector. Se caută în vector daca alte aparitii ( for j... ). Numărul de apariții e contorizat in ap și "dublura" primește valoarea -1. Se trece la poziția următoare și se verifică dacă numarul e mai mare că 0 ( nu e -1 ). Se repeta același lucru de mai sus până la sfârșitul vectorului.
arcq123: multumesc frumos.
Alte întrebări interesante