👤

Cerinţa

Să se scrie un program care citește mai multe propoziții și determină propoziția cu cele mai multe cuvinte.
Date de intrare

Fișierul de intrare cuvmax.in conține pe prima linie un număr natural n, iar pe următoarele n linii câte o propoziție alcătuită din litere mici ale alfabetului englez și spații.
Date de ieşire

Fișierul de ieșire cuvmax.out va conține pe prima linie propoziția cu cele mai multe cuvinte.
Restricţii şi precizări

0 fiecare propoziție va conține cel mult 255 de caractere


Exemplu

cuvmax.in

4
somnoroase pasarele
pe la cuiburi se aduna
se ascund in ramurele
noapte buna noapte buna

cuvmax.out

pe la cuiburi se aduna


Răspuns :

#include <fstream> #include <cstring> using namespace std; ifstream fin("cuvmax.in"); ofstream fout("cuvmax.out"); int nrcuv(char * s){ int c = 0; if(s[0]!=' ') c++; for(int i=1 ; s[i] ; ++i) if(s[i]!=' ' && s[i-1]==' ') c++; return c; } int main(){ int n; char s[251], m[251]; fin >> n; fin.get(); fin.getline(m,251); for( ; n ; --n){ fin.getline(s,251); if(nrcuv(s) > nrcuv(m)) strcpy(m,s); } fout << m << endl; return 0; }
#include <bits/stdc++.h>
using namespace std;
int n,i,nr,nrmax;
char s[260], *p, sol[260], t[260];
int main()
{
    freopen("cuvmax.in", "r", stdin);
    freopen("cuvmax.out", "w", stdout);
    scanf("%d\n", &n);
    for(i = 1; i <= n; ++ i)
    {
        gets(s);
        memset(t, 0, sizeof(t));
        strcpy(t, s);
        p = strtok(t," ");
        nr = 1;
        while(p != NULL)
        {
            nr ++;
            p = strtok(NULL," ");
        }
        if(nr > nrmax)
        {
            nrmax = nr;
            strcpy(sol, s);
        }
    }
    printf("%s",sol);
    return 0;
}