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

Rezolvare in C++
Se citesc de la tastatură elementele unui tablou unidimensional. Să se afişeze, în ordine
crescătoare, valorile introduse şi numărul lor de aparitii.

Răspunsuri la întrebare

Răspuns de VxF
1

Răspuns:

#include <iostream>

#include <sstream>

#include <vector>

#include <string>

#include <algorithm>

int main()

{

   std::vector<std::string> lista;

   std::string temporar;

   std::cout << "Lista (elemente separate cu spațiu): ";

   std::getline(std::cin, temporar);

   std::istringstream flux(temporar);

   while (flux >> temporar) {

       lista.push_back(temporar);

   }

   std::sort(lista.begin(), lista.end());

   for (int i = 0; i < lista.size(); i++) {

       int j = 0;

       while (lista[i] == lista[i + j]) {

           j++;

       }

       std::cout << lista[i] << " apare de " << j << " ori" << std::endl;

       i += j - 1;

   }

}

Explicație:

Am presupus că accentul e pe numărarea apariţiilor, așa că pentru sortare am folosit std::sort() din biblioteca de rutine algorithm.


inarh: Ce e cu acel std? Nu am lucrat așa la facultate
inarh: Se poate scrie altceva in loc de acel std?
VxF: E namespace-ul folosit de bibliotecile de rutine standard. Dacă la început de program pui using namespace std; atunci în continuare poţi să scrii doar cout << stdl; în loc de std::cout << std::stdl;
inarh: Momentan nu am lucrat cu using namespace std, lucrez cu bibliotecile stdio.h, stdlib.h, conio.h etc
VxF: Păi atunci sună a C, nu C++ cum ai specificat în titlu.
inarh: Scuze
inarh: Nu știam
Alte întrebări interesante