scrieți un program C++ care citește de la tastatura un număr natural n (0<n<100) și apoi n cuvinte de maxim 20 de caractere. (litere mici ale alfabetului englez). Să se afișeze în ordine alfabetică, pe o linie a ecranului, separate printr-un spațiu , cuvintele distincte citite.
De exemplu pentru n=6 și cuvintele rece trece cere rece cere rece se va afișa cere rece trece.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int n;
cin >> n;
char cuvinte[100][20];
for (int i = 0; i < n; i++)
{
char cuvant[20];
cin >> cuvant;
strcpy(cuvinte[i], cuvant);
}
int ordonate = 0;
while (ordonate == 0)
{
ordonate = 1;
for (int i = 0; i < (n - 1); i++)
{
if (cuvinte[i][0] > cuvinte[i + 1][0])
{
char aux[20];
strcpy(aux, cuvinte[i]);
strcpy(cuvinte[i], cuvinte[i + 1]);
strcpy(cuvinte[i + 1], aux);
ordonate = 0;
}
}
}
char cuvinteFolosite[100][20];
int indexCuvinteFolosite = 0;
for (int i = 0; i < n; i++)
{
int folosit = 0;
for (int j = 0; j < n; j++)
{
if (strcmp(cuvinteFolosite[j], cuvinte[i]) == 0)
{
folosit = 1;
}
}
if (folosit == 0)
{
cout << cuvinte[i] << " ";
strcpy(cuvinteFolosite[indexCuvinteFolosite], cuvinte[i]);
indexCuvinteFolosite++;
}
}
return 0;
}
Explicație:
Dupa ce am citit sirurile de caractere de la tastatura
Le ordonam in ordine crescatoare pe baza primului caracter folosind metoda bubblesort => ordonare aflabetica
dupa aceea parcurgem vectorul de cuvinte ordonat alfabetic si in acelas timp folosim un alt vector "cuvinteFolosite" pentru a tine cont de cuvintele care deja au fost afisare.
Daca cuvantul de pe pozitia "i" din vectorul "cuvinte" nu se afla in vectorul "cuvinteFolosite", il afisam pe ecran si il adaugam in vectorul "cuvinteFolosite"