Informatică, întrebare adresată de morcov64, 9 ani în urmă

AJUTOR!!!
Cerinţa
Să se scrie un program care citește un șir de caractere și afișează litera mică cel mai des întâlnită în șir.

Date de intrare
Programul citește de la tastatură o un șir de cel mult 255 caractere.

Date de ieşire
Programul afișează pe ecran litera mică cel mai des întâlnită în șir.

Restricţii şi precizări
șirul conține litere mari și mici ale alfabetului englez, cifre și spații
dacă șirul conține mai multe litere cu număr maxim de apariții, se va fișa prima în ordine alfabetică

Exemplu
Intrare

In 12 mergem la munte
Ieșire

e
Explicație
Litera e apare în șir de 3 ori. Tot de 3 ori apare și litera m, dar e este prima în ordine alfabetică.
In C++ va rog

Răspunsuri la întrebare

Răspuns de ArMyFoRHeLL
5
#include <iostream>
#include <string.h>
using namespace std;

int main()
{
    char s[256];
    int v[30]={0},i,maxim=-1;
    cin.get(s,256);
    for(i=0;i<strlen(s);i++)
    {
        if(s[i]>='a' && s[i]<='z');
        v[(unsigned int)s[i]-97]++;
    }

    for(i=0;i<27;i++)
    {
        if(v[i]>maxim)
        maxim=v[i];
    }
    for(i=0;i<27;i++)
    {
        if(v[i]==maxim)
        {
        cout<<(unsigned char)(i+97);
        break;
        }
    }
    return 0;
}



stassahul: Wow, frumos :)
stassahul: Dar il puteai face mai eficient daca initalizai un char de ex: char r. Unde e maxim=v[i] pui virgula si scrii r=i; (maxim=v[i], r=i). Dupa care nici nu iti trebuie ultimul for si doar afisezi r-ul (cout << r;), dar deja cum este :)
ArMyFoRHeLL: Corect,dar dupaia trebuia sa afisez maximul in ordinea lexicografica,in felul asta mi-l dadea pe ultimul maxim
ArMyFoRHeLL: In cazul :In 12 mergem la munte mi-l afisa pe m daca faceam cum ai spus tu,dar maximul corect se afla cu ultimul for facut de mine.
stassahul: Iti afiseaza 'e', l-am verificat pe pbinfo
stassahul: Daca reusesti : https://pastebin.com/p33saz6y
stassahul: In orice caz, e buna rezolvarea :)
ArMyFoRHeLL: Buna ideea ta.
Alte întrebări interesante