Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Stampanje tekstualne datoteke sa poravnavanima, ...

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Stampanje tekstualne datoteke sa poravnavanima, ...

[ Pregleda: 2357 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

prokuplje

Član broj: 139848
Poruke: 3
*.121.eunet.yu.



Profil

icon [Zadatak] Stampanje tekstualne datoteke sa poravnavanima, ...25.03.2007. u 11:48 - pre 208 meseci
MOlim nekog da mi resi problem zadatka.
Data je tekstualna datoteka pod imenom tekst.txt.Napisati C++ program koji stampa tekst datoteke ne ekran ali:
-poravnanje na levo vrsiti najobicnijim stampanjem od prve kolone ekrana;
-poravnanje na desnovrsiti tako da desna margina bude u onoj koloni u kojoj se zavrsava najduzi red originalnog teksta;
-redove koji su kraci od originalno najduzeg produzavati tako sto ce se izmedju reci ubacivati priblizno ravnomerno prazna mesta, onoliko njih koliko je potrebno da red dostigne duzinu najduzeg.

Verovatno sam prezahtevan ali patim se vec deset dana i ne mogu da uradim zadatak.MOlim nekog da mi ga ili uradi ili da mi bar da ideju. Ljudi spasavaj te. Hitno mi treba ovaj zadatak. Unapred i vecno zahvalan.

[Ovu poruku je menjao X Files dana 25.03.2007. u 15:51 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: [Zadatak] Stampanje tekstualne datoteke sa poravnavanima, ...25.03.2007. u 13:11 - pre 208 meseci
Po pravilima [ES] foruma brišu se sve teme u kojima autor traži da mu se uradi domaći zadatak,
a da prethodno ništa sam nije pokušao. Domaći zadaci su predviđeni za samostalan rad, a postioci
C/C++ foruma će svakako *pomoći* kada autor i sam pokaže svoje angažovanje i inicijativu.

S obzirom da ti je ovo prva tema, neću brisati ali ipak pošalji šta si pokušao, tj. dokle si stigao...

Hvala na razumevanju.

 
Odgovor na temu

SuPeR_MaSteR
Marko Stamenković

Član broj: 88590
Poruke: 115
*.inffo.net.



Profil

icon Re: [Zadatak] Stampanje tekstualne datoteke sa poravnavanima, ...25.03.2007. u 13:25 - pre 208 meseci
@prokuplje, jel u pitanju C program ili C++ program? ?
Posto si u postu naveo C a tema se nalazi u C++ forumu...
 
Odgovor na temu

prokuplje

Član broj: 139848
Poruke: 3
*.118.eunet.yu.



Profil

icon Re: [Zadatak] Stampanje tekstualne datoteke sa poravnavanima, ...25.03.2007. u 14:24 - pre 208 meseci
u pitanju je c++
 
Odgovor na temu

prokuplje

Član broj: 139848
Poruke: 3
*.118.eunet.yu.



Profil

icon Re: [Zadatak] Stampanje tekstualne datoteke sa poravnavanima, ...25.03.2007. u 14:26 - pre 208 meseci
Ovo je ono sto sam ja uradio.To je funkcija koja bi trebala da ispise na ekranu promenjen text.Medjutim bojim se da nisam poceo dobro i da je nemoguce tako uraditi.nadam se da ce mi neko reci kako da resim problem sa poravnanjem i dodavanjem praznina.
Code:

void edit(FILE    *dat, char *s, int duz)
{

    int a[30];
    unsigned ind,i, j, k, br, ind,kn,kon,max;
    char car;
    for(i=0;a<30;i++) a[i]=0;

    i=br=kn=0;
    do{
        car=fgetc(dat);
        if(car=='\n')  kn++;

       }while(car!=EOF);

       for(i=0;i<kn+1)
       {
     max=0;

       for(i=0;i<kn+1;i++)
       {
       car=fgetc(dat);

       if(car!='\n') ind++;
       if(car=='\n') a[i]=ind,ind=0;
    }

     }while(car!=EOF);


     for(j=0;j<kn+1;j++)
     {
          for(i=0;i<a[i];i++)
          {
        car=fgetc(dat);

        if(car==" ") r++;

          }  j++;

     }



       };
      }




[Ovu poruku je menjao X Files dana 25.03.2007. u 15:45 GMT+1]
 
Odgovor na temu

SuPeR_MaSteR
Marko Stamenković

Član broj: 88590
Poruke: 115
*.inffo.net.



Profil

icon Re: [Zadatak] Stampanje tekstualne datoteke sa poravnavanima, ...27.03.2007. u 02:13 - pre 208 meseci
Nisam analizirao tvoj kod..evo uradio sam nesto, nadam se da ce ti pomoci.

Moja ideja je da se:
1) Pronadje najduza linija koja ce nam sluziti kao margina.
2) Ostale linije se prilagodjavaju najduzoj liniji tako sto se izmedju reci ubacuje n razmaka, tako da se duzina svake linije svodi na duzinu najduze linije.
3) Broj n sam odredjivao po formuli:
n = (DuzinaNajveceLinije - DuzinaTrenutneLinije) / (BrojReci-1)
Ovaj nacin nije u potpunosti precizan jer kolicnik mora biti celobrojna vrednost.

Evo celokupnog koda:
Code:

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

int najduzaLinija();
void formatiraj(string& linija);
int maxLinija = 0;

int main()
{
    ofstream fout("izlaz.txt");
    ifstream fin("ulaz.txt");
    maxLinija = najduzaLinija();
    string linija;
    while (getline(fin, linija))
        if (linija.size() == maxLinija)
           fout << linija << endl;
        else
        {
            formatiraj(linija);
            fout << linija << endl;
        }
    fin.close(), fout.close();
}
int najduzaLinija()
{
    ifstream fin("ulaz1.txt");
    int maks = 0;
    string linija;
    while (getline(fin, linija))
        if (linija.size() > maks)
           maks = linija.size();
      fin.close();
    return maks;
}
void formatiraj(string& linija)
{
    int brRazmaka = 0, duzLinije = linija.size();
    for (int i = 0; i < duzLinije; i++)
       if (linija[i] == ' ')
          brRazmaka++;
    int brDodavanja = (maxLinija-duzLinije) / brRazmaka;
    duzLinije += brDodavanja * brRazmaka;
    for (int i = 0; i < duzLinije; i++)
       if (linija[i-1] != ' ' and linija[i] == ' ' and linija[i+1] != ' ')
          linija.insert(i, brDodavanja, ' ');
}


Zasad sam primetio 2 problema:
1) Ako se u ulaznom fajlu nalaze prazni redovi (jedan ili vise) program puca, to treba popraviti.
2) Problem predstavlja pozicioniranje u fajlu. Zapravo, posto je potrebno 2 puta proci kroz fajl (prvi put kad se pronalazi najduza linija a drugi put kad se cita sadrzaj fajla) - a u pitanju je sekvencijalna datoteka, treba posle prvog prolaska podesiti file pointer tako da pokazuje opet na pocetak fajla. Ja sam pokusao sa koriscenjem funkcije fseekg() ali nije uspelo (jer ona radi samo sa binarnim fajlovima?). Zatim sam zatvorio fajl posle prvog prolaska, pa ga ponovo otvorio pri drugom prolasku ali ni to nije dalo dobre rezultate (ne znam zasto?). Kao krajnje sigurno (ali lose) resenje, tekst koji treba formatirati podelio sam u dva fajla> ulaz1.txt i ulaz.txt i resio problem kao sto je i primenjeno u kodu....
Ovom prilikom bih zamolio iskusnije programere da pomognu kako da se vrsi pozicioniranje u tekstualnom fajlu.

S obzirom da je proslo 3 cuke, ocekujem vise bagova
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Stampanje tekstualne datoteke sa poravnavanima, ...

[ Pregleda: 2357 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.