# PBinfo #847 – Cuvinte – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
Se dă un șir de caractere format din cuvinte, separate prin spații. Cuvintele conțin doar litere mici ale alfabetului englez. Afișați, în ordine lexicografică, cuvintele din șir și frecvența lor de apariție.

Date de intrare
Programul citește de la tastatură șirul dat.

Date de ieșire
Programul va afișa pe ecran câte un cuvânt pe o linie, apoi un spațiu, apoi numărul de apariții ale cuvântului.

Restricții și precizări

șirul dat va avea cel mult 255 de caractere  și va conține cel mult 100 de cuvinte
lungimea unui cuvânt este de cel mult 15 caractere

Exemplu:
Intrare

maria are doua pere si ana are doua mere 
Ieșire

ana 1
are 2
doua 2
maria 1
mere 1
pere 1
si 1

## Cod sursă C++

```cpp
#include <iostream>
#include <cstring>
using namespace std;
char s[2560];
char v[100][16] , * t;
int f[100] , x[100] , n;
int main()
{
	cin.getline(s , 2560);
	t = strtok(s , " ");
	while(t)
	{
		int poz = -1;
		for(int i = 0 ; i < n && poz == -1 ; i ++)
			if(strcmp(t , v[i]) == 0)
				poz = i;
		if(poz == -1)
		{
			strcpy(v[n] , t);
			f[n] = 1;
			x[n] = n;
			n ++;
		}
		else
			f[poz] ++;
		t = strtok(NULL , " ");
	}
	for(int i = 0 ; i < n ; i ++)
		for(int j = i + 1 ; j < n ; j ++)
			if(strcmp(v[x[i]] , v[x[j]]) > 0)
			{
				int aux = x[i] ;
				x[i]  =x[j];
				x[j] = aux;
			}
	for(int i = 0 ; i < n ; i ++)
		cout << v[x[i]] << " " << f[x[i]] << "\n";
	return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/847)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/847/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-847/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
