Cod sursa(job #1602350)

Utilizator TonisonIlle Antoniu Nicolae Tonison Data 16 februarie 2016 18:52:29
Problema Text Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.87 kb
#include <iostream>
#include <fstream>
#include <string>
#include <vector>

using namespace std;

ifstream f("text.in");
ofstream g("text.out");

short MAX;
string s;
vector<string> a;

void spatiere(short spatii, short maxim)
{
    spatii--;
    int splus=(MAX-maxim)/spatii;
    short rest=(MAX-maxim)%spatii;
    cout<<splus<<" "<<maxim<<" "<<spatii;
    for(int i=0; i<a.size(); i++)
    {
        g<<a[i]<<" ";
        if(i!=a.size()-1)
        for(int j=1; j<=splus; j++)
        {
            g<<" ";
        }
        if(rest>0)
        {
            g<<" ";
            rest--;
        }
    }
    g<<"\n";
}

int main()
{
    f>>MAX;
    getline(f,s);
    short c=0, maxim=0, spatii=0, sfpar=0;
    while (f >> s)
    {
        //cout<<s<<" ";

        c=s.length();

        if((s[c-1]=='.')||(s[c-1]=='?')||(s[c-1]=='!'))
        {
            sfpar=1;

        }

        maxim+=c;
        //cout<<s<<"\n";
        if(maxim<MAX)
        {
            a.push_back(s);
            spatii++;
            maxim++;
            if(sfpar==1)
            {
                for(int i=0; i<a.size(); i++)
                {
                    g<<a[i]<<" ";
                }
                g<<"\n";
                sfpar=0;
                maxim=0;
                spatii=0;
                a.clear();
            }

        }
        else
        {
            if(sfpar==1){
                maxim-=c+1;
                spatiere(spatii, maxim);
                g<<s<<"\n";
                maxim=0;
                spatii=0;
                a.clear();

            }
            else{
                maxim-=c+1;
                spatiere(spatii,maxim);
                maxim=c+1;
                a.clear();
                a.push_back(s);
                spatii=1;
            }
        }
    }
    return 0;
}