Cod sursa(job #1849178)

Utilizator cosminnicaAruxandei Cosmin Andrei cosminnica Data 17 ianuarie 2017 09:18:40
Problema Text Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <stdio.h>
#include <stdlib.h>


int main()
{

    FILE *file=fopen("text.in", "r");
    fseek(file, 0L, SEEK_END);//poniter care masoara dimensiunea fisierului(nr de caractere)
    int dim=ftell(file);//returneaza valoarea pointerului (ultima pozitie scrisa in fisier = dimensiunea totala a caracterelor de citit)
    fseek(file, 0L, SEEK_SET);//mergem din nou la inceputul fisierului pentru a citi datele din el
    char *str=malloc(dim+1);//alocam dinamic pe heap memoria necesara citirii datelor din fisier
    fread(str, dim, 1, file);//citim din fisier caracterele
    unsigned int i=0, words=0,len=0;//unsigned pentru ca astea nu-s niciodata negative, si pt alt motiv.
    char in_word,was_word;//pt ca nu am nevoie mai mult de 1 byte de memorie pentru asta (de aia fol char)
    for(i=0;i<dim;++i)
    {
        (str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z')?(++len,in_word='1',was_word='1'):(in_word='0');
        (in_word=='0'&&was_word=='1')?(++words,was_word='0'):(words);//mi-e lene sa fac cu if.
    }//i know, I'm a moron
    free(str);//eliberam memoria alocata dinamic pe heap
    str=NULL;//golim datele
    fclose(file);
    FILE *fileo=fopen("text.out", "w");
    fprintf(fileo, "%\d",(int)len/words);
    fclose(fileo);
    return 0;
}