Scrieţi un program C/C++ care citeşte de la tastatură un text de cel mult 255 de caractere, dintre care cel puţin unul este o literă mică a alfabetului englez, şi afişează pe ecran pe o singură linie, despărţite prin câte un spaţiu, toate literele mici ale alfabetului englez care apar în text. Fiecare literă va fi afişată o singură dată, în ordinea primei ei apariţii în text.
Exemplu:
pentru textul: Calculati valoarea expresiei
Pe ecran se va afişa:
a l c u t i v o r e x p s
Răspunsuri la întrebare
Răspuns de
4
Salut!
Ai rezolvarea in C++ mai jos
#include <iostream>
#include <cstring>
using namespace std;
int f[26];
int main() {
char s[256];
cin.getline(s, 256);
for (int i = 0; i < strlen(s); ++i) {
if (islower(s[i]) && f[s[i] - 'a' + 1] == 0) {
cout << s[i] << " ";
f[s[i] - 'a' + 1]++;
}
}
return 0;
}
- Explicatie: Folosim un vector de frecventa pentru a retina frecventa unei litere.
De ce f[s[i] - 'a' + 1] ??
s[i] - 'a' = valoarea ascii a caracterului s[i] - caracterul a, daca lasam asa simplu vom avea alfabetul care incepe de la a = 0 si se termina la z = 25, asadar pentru simplitatea noastra ca oameni vom incepe de la s[i] - 'a' + 1 care va incepe cu a = 1 si se termina la z = 26
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Engleza,
9 ani în urmă
Matematică,
9 ani în urmă