Quantcast

C rad sa fajlovima

?

Elita
Banovan
Poruka
15.015
naredba ili neka pomoc

kako da mi cita fajl po fajl iz direktorijuma?

znaci treba da dohvati fajl, da ga obradi i da dohvati sledeci, dok ne obradi sve

posto treba da zadajem ime fajla, ne mogu rucno, ima mnogo fajlova
 

?

Elita
Banovan
Poruka
15.015
?:
naredba ili neka pomoc

kako da mi cita fajl po fajl iz direktorijuma?

znaci treba da dohvati fajl, da ga obradi i da dohvati sledeci, dok ne obradi sve

posto treba da zadajem ime fajla, ne mogu rucno, ima mnogo fajlova
hehe isla sam na eli'te'se'cu'ri'ty i tamo mi na chatu rekli neshto to su neke fje

findfirst i findnext... iz dir.h ili dos.h neka od te fve biblioteke. izgleda da je to to

to je iygleda opaki sajt sto neko uopste trazi pomoc ovde a ne tamo

ja sam od celog fakulteta resila da pitam net mislim grize me to sada opet srljam u mrak ali niko me ne razume sta pricam samo vas nerviram a necete me citati
 

Lord British

Primećen član
Poruka
560
Ako odesh na taj isti sajt ([ES]), i u C++ forumu potrazhish postove na temu FindFirstFile i FindNextFile nacicesh funkciju postovanu pre par godina koja rekurzivno prolazi kroz foldere i vraca fajl po fajl.

I to je Windows funkcija, pusti dos.h i slichne metuzalem hedere
 

?

Elita
Banovan
Poruka
15.015
ja nemam pojma, ja sam jedino radila sa C u dosu. i skroz mi je sve to tesko da shvatim. ali jos uvek koristim dobrotu roditelja i nisam ostavila fakultet i koprcam se.
kako prolazi kao udje u direktorijum tj folder i dohvati fju, odradi, pa sledecu. ok to je to

treba da napravim recnik ali to bih pitala negde drugde.. htela sam kao listu.
e sad moglo bi recimo kao haoticna lista reci, a mozda moze i nekako po slovima, pa da imam neke pokazivace, ali cini mi se da je brze ako se pretrazuje ako su cele reci, samo ne znam da li je mnogo ako ima recimo 90.000 reci da li ce sve da stane? treba i da brojim reci i u kom fajlu ima koliko reci
u stvari ne znam jos sta hocu moram da razmislim pa da pitam. :I
nasla sam kao matrica a u stvari lista, to je valjd a"retka matrica"
 

?

Elita
Banovan
Poruka
15.015
znaci ovo:

REC1 -> Rec2 -> Rec3 -> .... -> x pa kad dodje nova rec stavljam je na kraj...

i iz svakog reda izlazi strelica na dole.. tu su podaci koliko se puta pojavljuje u kom tekstu

tj onda bi postojao i vrtikalni... ne znam da objasnim mrzi me ima u knjizi jednoj ta struktura

drugo je mozda ako bi islo slovo po slovo ali to mi deluje nesto jezivo.. ovako npr

P->e->r->a
->i->i->n->o

ok nemam pojma ali malo sam preskakala predmete...niko me nije bash uputio pa da znam a eto nisam se ni ja trudila
(od r da polazi)
ok morala bih da razmislim jos ali jos i da pitam.
 

codemaker

Iskusan
Banovan
Poruka
6.517
U momentu pomislih da bih ti mogao pomoci, ali sada shvatam jedino da te nista ne razumem. Sta si zapocela, cime (kakav je to C++ za Windows), pa hoces DOS pa Windows pa recnik pa juris fajlove.... (treba ti znanje rekurzije) i tako to sve zbrljekano
Mnogo si bre konfuzna...
 

juznivetar

Ističe se
Poruka
2.045
codemaker:
U momentu pomislih da bih ti mogao pomoci, ali sada shvatam jedino da te nista ne razumem. Sta si zapocela, cime (kakav je to C++ za Windows), pa hoces DOS pa Windows pa recnik pa juris fajlove.... (treba ti znanje rekurzije) i tako to sve zbrljekano
Mnogo si bre konfuzna...
E upravo ovo je glavni problem, niko nemoze da shvati, sta je ustvari problem.
Ah da c++ za windows ???
 

?

Elita
Banovan
Poruka
15.015
ne necu da radim tako :I

ma, treba mi neki C, imam jedan program da uradim, pa sam mislila da radim u C, mislimda mi C++ ne treba. e sad ja sam nekad radila (skolski nivo) u C Borland u dosu zadatke i uspevala sam. posto znam da svaki taj C ima svoje neke bube. mozda mi je Javabolja za to sto mi treba ali nisam s njom bas bliska nekad sam je ucila ali morala bih da se naviknem ponovo a ne trebaju mi objekti

treba da napravim recnik,znaci iz gomile fajlova da izvucem sve reci koje postoje,i onda da popisem koliko se koja rec pojavljuje u svakom recniku (treba inace program da "prepoznaje" nove fajlove na osnovu ovih ako je ovo nejasno objasnicu posle).

e ja nisam radila neke takve predmete gde se cupaju reci (to su valjda ti parseri, nisam polagala taj predmet), znam da postoje neki jflex i jlex ali nemam pojma sta to radi, a moguce da ni vi ne znate, pa nije bitno, to je nesto kada se prave prevodioci ali ja to sve ne znam pa i ovo da batalimo.

znaci ja sam mislila te reci da poredjam sve u niz, samo sto bi taj niz imao oko 100.000 reci !!! stringova.. bolje niz nego lista, deluje mi jednostavnije za rad. samo ako stane

i onda mi treba matrica za sve tekstove, npr ako se 4. rec pojavljuje 10 puta u tekstu 1 onda na mestu (1, 4) stoji 10.. samo bice mnogo nula.

e sad ako postoje neka mesta gde covek moze postati pametniji i znati kako ovo da uradi pametnije ... super. :I

i ojnda se tu jos nesto petlja, traze se neki parametri itd

znaci ja nemam pojma mozda je sramota sto uopste pisem ali kad sam vec tu....
 

?

Elita
Banovan
Poruka
15.015
pa imam neki c++ kao to je valjda visual studio
ne znam, to je c++ i radi u windowsu. na fkaultetu ima neki dev c++ tako se zove, taj je valjda dzaba program, ali mislim da je malo cudniji ne znam
 

?

Elita
Banovan
Poruka
15.015
jao bre nije vam jasno pa ste me srpski preskocili

znaci, znate li kako da napravim rechnik
da li ima neki nacin a da nije rec po rec..
ili gde da pitam. je l u C postoje neke f-je koje uporedjuju stringove?

npr "pera" i "perin" da mi vrati da nije isto.? valjda postoji ono ima string.h
ok

trebace i vama :evil:
 

juznivetar

Ističe se
Poruka
2.045
Evo kod:
Kod:
#include <iostream>
#include <string>

using namespace std;
int main()
{
char buffer[1000] = "", rijecE[20] = "", rijecS[20] = "", rijecP[20] = "";
FILE *File = NULL;
string a = "", b = "", c = "";
int broj = 0, j = 0, search = 0;
if(!(File = fopen("fajl.txt", "r")))
cout << "\nNemoze otvoriti fajl 'fajl.txt'.";
else
broj = fread(buffer, sizeof(char), 1000, File);
fclose(File);
while(rijecP != "izlaz")
{
	cout << "\nUpisite rijec za pretragu: ";
	cin.getline(rijecP, 20);
	a = rijecP;

for(int i = 0;i < broj+1; i++)
{
	if(buffer[i] == '\n')
	{
	search = 0;
	b = rijecS;
	j = 0;
	if(a == b)
		cout << "\nPrevod rijeci '" << rijecS << "': " << rijecE << "\n";
	char flush[20] = "";
	for(int k = 0; k < 20; k++)
	{
		rijecS[k] = flush[k];
		rijecE[k] = flush[k];
	}
	continue;
	}
	if(buffer[i] == '#')
	{
	search = 1;
	c = rijecE;
	j = 0;
	continue;
	}
	if(search == 0)
	rijecE[j] = buffer[i];
	if(search == 1)
	rijecS[j] = buffer[i];
j++;
}
}
}
U root programa kreiraj tekstualni fajl sledeceg imena i ekstenzije "fajl.txt" i u njega kopiraj sledeci tekst:
Kod:
zdravo#hello
svijet#world
pas#dog
ime#name
rodjendan#birthday
Dakle program je rijecnik sa engleskog na srpski, znaci sve rijeci koje zelis da dodas idi po sablonu kao sto je na primjeru gore prikazano, dakle (rijec na srpskom#rijec na engleskom)
 

Lord British

Primećen član
Poruka
560
Huh... bez uvrede, ali ako vec zhelish nekome da pomognesh probaj da to uradish korektnim kodom iz kog ce taj neko da nauchi, inache nemoj ni da pokushavash.
Koliko mi se chini, pitanje ima veze sa ETF-om, na tom fakultetu sa ovakvim kodiranjem padash bez pardona (narochito kod Krausa).
 

_Doctor_

Početnik
Poruka
34
Pa ovako, neshto sam iskopao shto bi moglo da ti pomogne, dodushe kod je pisan u jeziku JAVA ali avaj, bolje ishta nego nishta :) Inache kod je iz Laslove zbirke i neshto bi rekao da je to to...

Kod:
[COLOR=SeaGreen]
/*
  Ovo je ono shto tebi treba ako nishta drugo ono bar za ideju :) I kao shto vidish objekti su 
  ti preko potrebni :)
*/[/COLOR]

// Recnik.java - Klasa recnika.

import java.io.*;

public class Recnik implements Serializable {
  
  private static final long serialVersionUID = 1L; // Broj verzije klasa.
  private String imeDat;       // Ime datoteke za trajno uskladistavanje.
  private Rec prva;            // Prva rec u recniku.
  private boolean menjano;     // Da li je recnik u memoriji menjan?
  
  private Recnik (String ime) { imeDat = ime; } // Novi prazan recnik.
  
  public static Recnik otvori (String imeDat) { // Otvaranje recnika.
    try {
      ObjectInputStream dat = new ObjectInputStream (
                                new FileInputStream (imeDat));
      Recnik recnik = (Recnik)dat.readObject ();
      dat.close ();
      return recnik;
    } catch (FileNotFoundException g) { // - datoteka ne postoji,
      return new Recnik (imeDat);       //   stvara se prazan recnik.
    } catch (IOException g) {
      System.out.println (g); System.exit (1); return null;
    } catch (ClassNotFoundException g) {
      System.out.println (g); System.exit (1); return null;
    }
  }
  
  public Recnik snimi () {              // Snimanje recnika u datoteku.
    try {
      if (menjano) {
        ObjectOutputStream dat = new ObjectOutputStream (
                                   new FileOutputStream (imeDat));
        dat.writeObject (this);
        dat.close ();
        menjano = false;
      }
    } catch (IOException g) {
      System.out.println (g); System.exit (1);
    }
    return this;
  }
  
  public Recnik dodaj (String rec, String prevod) { // Dodavanje prevoda.
    Rec tek = prva, pret = null;
    while (tek!=null && rec.compareToIgnoreCase(tek.rec)>0)
      { pret = tek; tek = tek.sled; }
    if (tek!=null && rec.equalsIgnoreCase(tek.rec)) tek.dodaj (prevod);
      else new Rec (rec, prevod, pret);
    return this;
  }
  
  public Recnik brisi (String rec) {    // Briasnje reci sa svim prevodima.
    Rec tek = prva, pret = null;
    while (tek!=null && !rec.equalsIgnoreCase(tek.rec))
      { pret = tek; tek = tek.sled; }
    if (tek != null) {
      if (pret == null) prva = tek.sled; else pret.sled = tek.sled;
      menjano = true;
    }
    return this;
  }
  
  public Recnik brisi (String rec, String prevod) { // Brisanje jednog
    Rec tek = prva, pret = null;                    //   prevoda.
    while (tek!=null && !rec.equalsIgnoreCase(tek.rec))
      { pret = tek; tek = tek.sled; }
    if (tek != null) tek.brisi (prevod);
    return this;
  }
  
  public String[] prevodi (String rec) { // Dohvatanje svih prevoda reci.
    Rec tek = prva;
    while (tek!=null && !rec.equalsIgnoreCase(tek.rec)) tek = tek.sled;
    if (tek != null) return tek.prevodi (); else return null;
  }
  
  public String toString () {            // Tekstualni prikaz recnika.
    StringBuffer s = new StringBuffer ();
    for (Rec tek=prva; tek!=null; tek=tek.sled)
      s.append (tek).append ('\n');
    return s.toString ();
  }
  
  private class Rec implements Serializable {     // KLASA ZA JEDNU REC.
    
    String rec;           // Tekst reci.
    int brPrev;           // Broj prevoda.
    Prevod prvi;          // Prvi prevod.
    Rec sled;             // Sledeca rec u recniku.
    
    Rec (String rec, String prevod, Rec iza) { // Stvaranje nove reci.
      this.rec = rec; new Prevod (prevod, prvi);
      if (iza == null) { sled = prva; prva = this; }
        else { sled = iza.sled; iza.sled = this; }
    }
    
    Rec dodaj (String prevod) {                // Dodavanje novog prevoda.
      Prevod tek = prvi, pret = null;
      while (tek!= null && prevod.compareToIgnoreCase(tek.prevod)>0)
        { pret = tek; tek = tek.sled; }
      if (tek==null || !prevod.equalsIgnoreCase(tek.prevod))
        new Prevod (prevod, pret);
      return this;
    }

    Rec brisi (String prevod) {                // Brisanje datog prevoda.
      Prevod tek = prvi, pret = null;
      while (tek!= null && prevod.compareToIgnoreCase(tek.prevod)>0)
        { pret = tek; tek = tek.sled; }
      if (tek!=null && prevod.equalsIgnoreCase(tek.prevod)) {
        if (pret == null) prvi = tek.sled; else pret.sled = tek.sled; 
        brPrev--; menjano = true;
      }
      return this;
    }
    
    String[] prevodi () {                      // Dohvatanje svih prevoda.
      String[] rez = new String [brPrev];
      int i = 0;
      for (Prevod tek=prvi; tek!=null; tek=tek.sled) rez[i++] = tek.prevod;
      return rez;
    }
    
    public String toString () {    // Tekstualni prikaz reci sa prevodima.
      StringBuffer s = new StringBuffer ();
      s.append (rec).append (':');
      for (Prevod tek=prvi; tek!=null; tek=tek.sled) {
        s.append (' ').append (tek.prevod)
         .append (tek.sled!=null ? ',' : '.');
      }
      return s.toString ();
    }
    
    private class Prevod implements Serializable { // KLASA ZA JEDAN PREVOD.
    
      String prevod;                  // Tekst prevoda.
      Prevod sled;                    // Sledeci prevod.

      Prevod (String p, Prevod iza) { // Stvaranje novog prevoda.   
        prevod = p;
        if (iza == null) { sled = prvi; prvi = this; }
          else { sled = iza.sled; iza.sled = this; }
        brPrev++; menjano = true;
      }
    } // class Prevod
  } // class Rec
} // class Recnik

[COLOR=SeaGreen]/*
    I na kraju iprobaj kako ovo radi :)
*/[/COLOR]

// RecnikT.java - Ispitivanje klase recnika.

import usluge.Citaj;

public class RecnikT {
  public static void main (String[] varg) {
    Recnik r = Recnik.otvori ("RecnikT.dat");
    radi: while (true) {
      System.out.print ("\n1. Trazenje prevoda\n"      +
                          "2. Dodavanje prevoda\n"     +
                          "3. Brisanje prevoda\n"      +
                          "4. Brisanje svih prevoda\n" +
                          "5. Prikazivanje recnika\n"  +
                          "0. Zavrsetak rada\n\n"      +
                          "Vas izbor? "                  );
      String rec = "", prevod = ""; String[] prevodi = null;
      switch (Citaj.Char ()) {
        case '1': // Trazenje prevoda:
          while (true) {
            System.out.print ("Rec?       "); rec = Citaj.String ();
          if (rec.equals ("?")) break;
            System.out.print ("Prevodi:   "); 
            if ((prevodi = r.prevodi (rec)) != null)
              for (int i=0; i<prevodi.length;
                   System.out.print(prevodi[i++]+" "));
            System.out.println ();
          }
          break;
        case  '2': // Dodavanje prevoda:
          while (true) {
            System.out.print ("Rec?       ");   rec    = Citaj.String ();
          if (rec.equals ("?")) break;
            while (true) {
              System.out.print ("Prevod?    "); prevod = Citaj.String ();
            if (prevod.equals ("?")) break;
              r.dodaj (rec, prevod);
            }
          }
          break;
        case '3': // Brisanje prevoda:
          while (true) {
            System.out.print ("Rec?       ");   rec    = Citaj.String ();
          if (rec.equals ("?")) break;
            while (true) {
              System.out.print ("Prevod?    "); prevod = Citaj.String ();
            if (prevod.equals ("?")) break;
              r.brisi (rec, prevod);
            }
          }
          break;
        case '4': // Brisanje svih prevoda:
          while (true) {
            System.out.print ("Rec?       "); rec     = Citaj.String ();
          if (rec.equals ("?")) break;
            System.out.print ("Prevodi:   "); prevodi = r.prevodi (rec);
            if ((prevodi = r.prevodi (rec)) != null)
              for (int i = 0; i<prevodi.length;
                   System.out.print(prevodi[i++]+" "));
            System.out.println ();
            System.out.print ("Brisati?   ");
            if (Citaj.String ().equalsIgnoreCase ("da")) r.brisi (rec);
          }
          break;
        case '5': // Prikazivanje recnika:
          System.out.print ("\n" + r);
          break;
        case '0': // Kraj rada.
          break radi;
      }
      r.snimi ();
    }
  }
}
 

Prilozi

_Doctor_

Početnik
Poruka
34
Weeeee, upravo sam ti nashao primer i za C++ ali sa korishccenjem template-a.

Kod:
// recnik.h - Klasa recnika.

#ifndef _recnik_h_
#define _recnik_h_

#include <string>
#include <set>
#include <map>
#include <iostream>
using namespace std;

class Recnik {
  map<string,set<string> > niz;         // Sadrzaj recnika.
public:
  // Dodavanje prevoda reci.
  Recnik& dodaj (const string& rec, const string& prevod) {
    niz[rec].insert (prevod);
    return *this;
  }
  
  // Brisanje svih prevoda reci.
  Recnik& brisi (const string& rec) {
    niz.erase (rec);
    return *this;
  }
  
  // Brisanje jednog prevoda reci.
  Recnik& brisi (const string& rec, const string& prevod) {
    map<string,set<string> >::iterator i = niz.find (rec);
    if (i != niz.end()) i->second.erase (prevod);
    return *this;
  }
  
  // Dohvatanje svih prevoda reci.
  const set<string>* prevodi (const string& rec) const {
    map<string,set<string> >::const_iterator i = niz.find (rec);
    if (i != niz.end()) return &i->second;
      else              return 0;
  }
  
  // Pisanje svih prevoda reci.
  void pisiPrevode (ostream& dat, const string& rec) const;
  
  // Pisanje sadrzaja recnika.
  friend ostream& operator<< (ostream& dat, const Recnik& recnik);
};

#endif


// recnik.cpp - Metode i funkcije uz klasu recnika.

#include "recnik.h"

// Pisanje svih prevoda reci.
void Recnik::pisiPrevode (ostream& dat, const string& rec) const {
  map<string, set<string> >::const_iterator i = niz.find (rec);
  if (i != niz.end()) {
    for (set<string>::const_iterator j=i->second.begin();
         j!=i->second.end(); j++) {
      if (j != i->second.begin()) dat << ", ";
      dat << *j;
    }
  }
}

// Pisanje sadrzaja recnika.
ostream& operator<< (ostream& dat, const Recnik& recnik) {
  for (map<string,set<string> >::const_iterator i=recnik.niz.begin();
       i!=recnik.niz.end(); i++) {
    dat << i->first << ": ";
    for (set<string>::const_iterator j=i->second.begin();
         j!=i->second.end(); j++) {
      if (j != i->second.begin()) dat << ", ";
      dat << *j;
    }
    dat << '.' << endl;
  }
  return dat;
}

// recnikt.cpp - Ispitivanje klase recnika.

#include "recnik.h"
#include <fstream>
#include <string>
#include <cctype>
using namespace std;

int main () {
  Recnik r;
  string rec, prevod;
  ifstream ulaz ("recnikt.pod");
  while (ulaz >> rec >> prevod) r.dodaj (rec, prevod);
  cout << "Pocetni sadrzaj recnika:\n\n" << r;
  while (true) {
    cout << "\n1. Trazenje prevoda\n"
              "2. Dodavanje prevoda\n"
              "3. Brisanje prevoda\n"
              "4. Brisanje svih prevoda\n"
              "5. Prikazivanje recnika\n"
              "0. Zavrsetak rada\n\n"
              "Vas izbor? ";
    char izb; cin >> izb;
  if (izb == '0') break;
    switch (izb) {
    case '1': // Trazenje prevoda:
      cout << "Rec?       "; cin >> rec;
      cout << "Prevodi:   "; r.pisiPrevode (cout, rec); cout << endl;
      break;
    case '2': // Dodavanje prevoda:
      cout << "Rec?       "; cin >> rec;
      cout << "Prevod?    "; cin >> prevod;
      if (prevod != "?") r.dodaj (rec, prevod);
      break;
    case '3': // Brisanje prevoda:
      cout << "Rec?       "; cin >> rec;
      cout << "Prevod?    "; cin >> prevod;
      r.brisi (rec, prevod);
      break;
    case '4': // Brisanje svih prevoda:
      cout << "Rec?       "; cin >> rec;
      cout << "Prevodi:   "; r.pisiPrevode (cout, rec); cout << endl;
      cout << "Brisati?   ";
      { string odg; cin >> odg;
        if (toupper (odg[0] == 'D')) r.brisi (rec);
      }
      break;
    case '5': // Prikazivanje recnika:
      cout << endl << r;
      break;
    }
  }       
  return 0;
}
Nadam se da cce ti sve ovo pomocci da napravish svoj rechik. Okachio sam i gotove kodove da se ne cimash da kopirash sve ovo. Aj pozdrav i kada napravish svoj rechik okachi ga da vidimo kako radi. Pozdrav 8-)
 

Prilozi

juznivetar

Ističe se
Poruka
2.045
Lord British:
Huh... bez uvrede, ali ako vec zhelish nekome da pomognesh probaj da to uradish korektnim kodom iz kog ce taj neko da nauchi, inache nemoj ni da pokushavash.
Koliko mi se chini, pitanje ima veze sa ETF-om, na tom fakultetu sa ovakvim kodiranjem padash bez pardona (narochito kod Krausa).
To sam na brzaka odradio, a sto se tice faksa, 4. sam godina srednje, tako da nemam iskustva sto se toga tice ...
 

?

Elita
Banovan
Poruka
15.015
e ljudi mogu li ja to s bazama da radim, da lepo redjam te rechi, je l mnogo 90.000 redova u tabeli?

uf ok ja sam htela malo sama da provaljujem.... mada moram da znam u svakom slucaju...mada mozda cu tj sigurno cu pogledati :))

znaci 90.000 necega nije problem
 

Top