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

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 Sergetec
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