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

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ăspunsuri la întrebare

Răspuns de ionutg38
6
#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; }
Răspuns de express
7
#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;
}

Alte întrebări interesante