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

Scrieţi un program C/C++ care citeşte de la tastatură o frază de maximum 255 de caractere (litere mari ale alfabetului englez şi spaţii), ale cărei cuvinte sunt despărţite prin câte un spaţiu şi afişează pe primul rând al ecranului numărul total al cuvintelor din frază, iar pe rândul următor de ecran, în ordine alfabetică, scrise o singură dată, consoanele care au apărut în frază (consoane sunt toate literele alfabetului englez, mai puţin A, E, I, O, U).Literele afişate sunt separate prin câte un spaţiu.
Exemplu: dacă se citeşte fraza LA BACALAUREAT SUBIECTELE AU FOST USOARE
se va afişa:
6
B C F L R S T


ArMyFoRHeLL: Ai facut subprograme?
ginomarian2: da

Răspunsuri la întrebare

Răspuns de ArMyFoRHeLL
5
#include <iostream>
#include <string.h>
using namespace std;
int nrCuv(char s[])
{
    int k=0;
    char *p;
    p=strtok(s," ");
    while(p)
    {
        k=k+1;
        p=strtok(NULL," ");
    }
    return k;
}
void afisCons(char s[])
{
    int v[26]={0},n=strlen(s);
    char voc[]="AEIOU ";
    for(int i=0;i<n;i++)
        if(!strchr(voc,s[i]))
            v[s[i]-65]++;
    for(int i=0;i<26;i++)
        if(v[i]>0)
            cout<<(unsigned char)(i+65)<<' ';
}
int main()
{
    char s1[256],s2[256];
    cin.get(s1,256);
    strcpy(s2,s1);
    cout<<nrCuv(s1)<<endl;
    strcpy(s1,s2);
    afisCons(s1);
    return 0;
}
Alte întrebări interesante