fork download
  1. #include <iostream>
  2. #include <cstring> // Pentru strlen
  3.  
  4. using namespace std;
  5.  
  6. void lowerCase(char linie[]) {
  7. for (int i = 0; linie[i] != '\0'; ++i) {
  8. if (linie[i] >= 'A' && linie[i] <= 'Z') {
  9. linie[i] = linie[i] + ('a' - 'A');
  10. }
  11. }
  12. }
  13.  
  14. char findMostFrequentLowercase(char text[]) {
  15. int counts[26] = {0};
  16. for (int i = 0; text[i] != '\0'; ++i) {
  17. if (text[i] >= 'a' && text[i] <= 'z') {
  18. counts[text[i] - 'a']++;
  19. }
  20. }
  21.  
  22. char mostFrequentChar = 0;
  23. int maxCount = 0;
  24.  
  25. for (int i = 0; i < 26; ++i) {
  26. if (counts[i] > maxCount) {
  27. maxCount = counts[i];
  28. mostFrequentChar = 'a' + i;
  29. }
  30. }
  31.  
  32. return mostFrequentChar;
  33. }
  34.  
  35. int main() {
  36. char linie[257]; // 256 caractere + terminator null
  37. char allText[100000] = ""; // Presupunem un text total de maxim 100000 caractere
  38. int allTextLength = 0;
  39.  
  40. cout << "Introduceti textul (liniile se termina cu linie goala):\n";
  41. while (cin.getline(linie, 257)) {
  42. if (strlen(linie) == 0) {
  43. break;
  44. }
  45. lowerCase(linie);
  46. for (int i = 0; linie[i] != '\0'; ++i) {
  47. allText[allTextLength++] = linie[i];
  48. }
  49. }
  50. allText[allTextLength] = '\0'; // Adăugăm terminator null la textul total
  51.  
  52. char mostFrequent = findMostFrequentLowercase(allText);
  53.  
  54. if (mostFrequent) {
  55. cout << "Litera mica cea mai frecventa este: " << mostFrequent << endl;
  56. } else {
  57. cout << "Nu au fost gasite litere mici." << endl;
  58. }
  59.  
  60. return 0;
  61. }
Success #stdin #stdout 0s 5280KB
stdin
TEXT CU LITERE MARI
ALTA LINIE CU MAJUSCULE
SI INCA UNA
folosim getline(cin, line) în interiorul unei bucle while.
stdout
Introduceti textul (liniile se termina cu linie goala):
Litera mica cea mai frecventa este: i