Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 046 Text : Mai 01, 2015, 22:11:22
Salut!
Ma puteti ajuta va rog? Nu stiu de ce primesc WA la 3 teste (printre care si primul)
Ideea mea este relativ simpla, citesc caracter cu caracter, daca gasesc o litera si inainte era simbol am gasit un cuvant nou, daca nu, creste doar nr de litere.

Codul este urmatorul
Cod:
#include <fstream>
#include <string.h>
using namespace std;
ifstream f ("text.in");
ofstream g ("text.out");
int main(){
    char x; int ok = 0, lungime = 0, cuvinte = 0;
    while (f >> noskipws >> x){
        if (!isalpha(x)){
            ok = 1;
        }
        else if (isalpha(x)){
            lungime++;
            if (ok){
                cuvinte++;
                ok = 0;

            }
        }
    }
    if (cuvinte > 0)
        g << lungime/cuvinte;
    else g << "0";
    f.close();
    g.close();

}
Multumesc Smile .

LE: Acum ca ma gandesc, cred ca problema e  ca textul poate fi  pe mai multe linii si programul meu se opreste la primul rand. In acest sens problema poate fi rezolvata cu stream si citit caracter cu caracter, sau trebuie cu get sa memorez toate caracterele intr-un char[] ?
2  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 484 Numere 5 : Aprilie 30, 2015, 14:55:55
Mersi de sugestie cu bitsetul.

Daca lipseste doar un numar programul il afiseaza de 2 ori. Trebuia afisat doar o singura data? In enunt nu specifica.
3  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 484 Numere 5 : Aprilie 30, 2015, 12:55:41
Cod:
#include <iostream>
#include <fstream>
using namespace std;
ifstream  f("numere5.in");
ofstream  g ("numere5.out");
    bool x[500001];
    int i, el, maxx, minn = 0, n, j;

int main(){
    f >> n;
    for (i = 1; i <= n; i++){
        for (j = 1; j <= n; j++){
            f >> el;
            if (el <= 500000){
                x[el]=1;
             }
        }
    }
    if(n*n < 500000){
        for (i = 1; i <= n*n; i++){
            if (x[i] == 0 && minn == 0)
                minn = i;
            else if (x[i] == 0)
                maxx = i;
        }
    }
    else {
        for (i = 1; i <= 500000; i++){
            if (x[i] == 0 && minn == 0)
                minn = i;
            else if (x[i] == 0)
                maxx = i;
        }
    }
    g << minn << " " << maxx;
    f.close();
    g.close();

return 0;
}

Nu inteleg de ce la unele imi da incorect, la altele MLE.
Am incercat si fara sa folosesc vector, doar calculand suma elementelor de pe matrice, daca stiu cate nr imi lipsesc, ca sunt consecutive etc pot sa le aflu, dar la ultimele teste dadea WA.
Eu ma dau batut, habar n-am unde gresesc.
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines