[ _shame_ @ 13.09.2006. 11:03 ] @
Zadatak mi glasi ovako:

Data je datoteka "KORISNIK.DAT" sa slogom korisnika,koji ima sledeci izgled:
ime,prezime,godine starosti,oznaka pola(0-muski,1-zenski).
Napisati program u C++ koji ce uraditi sledece:
a)izlistati sve zenske korisnike,cija je starost izmedju 21-30 godina.
b)izracunati broj i prosecnu starost zenskih osoba i rezultate ispisati na ekran.
Ja cu videti sta znam tu uraditi,a svaka pomoc mi je dobra...unapred hvala!!
[ itf @ 13.09.2006. 11:11 ] @
I kako sad da se tebi pomogne kad ni tebi nije jasno što znaš, a što neznaš?
[ _shame_ @ 13.09.2006. 11:23 ] @
Pa trenutno nista ne znam,pa mi svaka pomoc dobro dodje.....ev ja znam ovo,a sad case2,case 3...neka bude a i b resenje...ako moze tako??
[ _shame_ @ 14.09.2006. 13:21 ] @
Dajte ljudi pomagajte.....
[ Pharos @ 20.09.2006. 01:59 ] @
Evo kod i sledeći put nemoj na PP :D
Trudio sam se da odradim školski i da ne komplikujem previše mada...
Školski bi bilo da ne koristiš vektore već povezane liste i da ne koristiš stringove već pokazivač na char.
Zašto? Da bi naučio kako rade :) Barem je nas Laslo Kraus tako terao.
E sad da objasnim princip:
Čim se nešto eksplicitno navodi da treba da se radi u cpp, to me odmah asocira na OOP.
Pošto iz txt datoteke uzimaš podatke za svaku osobu, bilo mi je logično da napravim jednu klasu osoba sa pomenutim atributima.
U programiranju šta god da radiš, prvo odradiš unos podataka pa tek onda obradu (naravno ako je to izvodljivo).
Prvo sam iščitao sve podatke iz fajla, uneo ih u listu (vektor) i onda sam radio obradu (tvoje pod a i b).
Kod izgleda ovako:
Code:

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;

#define M 0
#define Z 1

class Osoba
{
    string ime, prezime;
    int godine, pol;
    friend ostream& operator<< (ostream& d, const Osoba& o)
    {
        return d << o.ime << ' ' << o.prezime << ' '
            << o.godine << ' ' << o.pol;
    }
public:
    explicit Osoba(string i, string p, int g, int pp)
    {
        ime = i; prezime = p; godine = g; pol = pp;
    }
    string getIme()const { return ime; }
    string getPrez()const { return prezime; }
    int getGod()const { return godine; }
    int getPol()const { return pol; }
};

int main()
{
    ifstream fajl("KORISNIK.DAT");
    if(!fajl.is_open())
    { 
        cout << "Ne mogu da otvorim fajl KORISNIK.DAT\n\a"; 
        system("PAUSE"); return 1;
    }
    string ime, prez; int god, pol;
    vector <Osoba> o;
    while(!fajl.eof())
    {
    fajl >> ime >> prez >> god >> pol;
    o.push_back(Osoba(ime,prez,god,pol));
    }
    cout << "Zenske osobe od 21 - 30 god:\n" 
         << "----------------------------" << endl;
    for(unsigned int i=0; i<o.size(); i++)
        if(o[i].getGod()>=21&&o[i].getGod()<=30&&o[i].getPol()==Z)
            cout << o[i] << endl;
    cout  << "----------------------------\n\n\n";
    unsigned int br=0, zb=0;
    for(unsigned int i=0; i<o.size(); i++)
        if(o[i].getPol()==Z){ br++; zb+=o[i].getGod(); }
    cout << "Broj zenskih osoba: " << br << endl;
    cout << "Prosecna starost: " << (zb==0?0:(float)zb/br) << endl;
    system("PAUSE");
    return 0;
}

Uz izvorni kod ti šaljem i KORISNIK.DAT datoteku čiji sadržaj možeš da izmeniš.
Kod radi pod uslovom da su podaci u KORISNIK.DAT datoteci ispravni. Znači da ne bude recimo 's' na mestu godina neke osobe. Ako su podaci korumpirani, onda trebaš da izmeniš kod, a to ostavljam tebi.
Takođe vodi računa o tome kada menjaš fajl da na kraju datoteke ne sme da stoji prazan red inače desiće se "nešto", a po kodu bi trebao da vidiš šta to. Znači ako u datoteci imaš 12 osoba, onda moraš imati i 12 odgovarajućih redova i ni jedan više.
[ _shame_ @ 20.09.2006. 11:43 ] @
Hvala puno na pomoci!!!