Jel zna itko kako da citam iz textualne datoteke ali od odredjenog djela, npr od 7 znaka ili od 7 reda (tj. linije). Znam kako napraviti da cita od pocetka ali meni treba od odredjenog dijela. ANy help?
Programiranje u C++-u - pitanja i odgovori
- poruka: 7.285
- |
- čitano: 1.701.424
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
- +/- sve poruke
- ravni prikaz
- starije poruke gore
Jel zna itko kako da citam iz textualne datoteke ali od odredjenog djela, npr od 7 znaka ili od 7 reda (tj. linije). Znam kako napraviti da cita od pocetka ali meni treba od odredjenog dijela. ANy help?
Jel zna itko kako da citam iz textualne datoteke ali od odredjenog djela, npr od 7 znaka ili od 7 reda (tj. linije). Znam kako napraviti da cita od pocetka ali meni treba od odredjenog dijela. ANy help?
Nije mi to bas pomoglo. Tamo pise kako upisati i promjeniti nesto u datoteci, ne vidim nigdje ista da ima veze s ispisima na ekran. Jer trebao bih od jednog djela pocet ispisivat na ekran.
Jel zna itko kako da citam iz textualne datoteke ali od odredjenog djela, npr od 7 znaka ili od 7 reda (tj. linije). Znam kako napraviti da cita od pocetka ali meni treba od odredjenog dijela. ANy help?
Nije mi to bas pomoglo. Tamo pise kako upisati i promjeniti nesto u datoteci, ne vidim nigdje ista da ima veze s ispisima na ekran. Jer trebao bih od jednog djela pocet ispisivat na ekran.
Pa kako ti nije pomoglo? Dao ti je funkciju kojom se pozicioniraš na neko mjesto unutar datotoke. I još vidiš da je dan primjer za zapisivanje u datoteku. Što je tebi tako teško bilo poklikati malo s lijeve strane na linkove koji bi mogli sugerirati kako se čita iz datoteke? Recimo fgetc ili fread?
Otkad sam na ovom bug forumu, svi su nesto nadrkani, i u ama bas svakoj diskusiji svi su neki bahati. Gle te ljudi ako neamte ke za rec, nemojte opce rec. Nemojte mi odgovarati na taj nacin da se iskaljujete jer to nema smisla. zaboga i ovaj forum.
Otkad sam na ovom bug forumu, svi su nesto nadrkani, i u ama bas svakoj diskusiji svi su neki bahati. Gle te ljudi ako neamte ke za rec, nemojte opce rec. Nemojte mi odgovarati na taj nacin da se iskaljujete jer to nema smisla. zaboga i ovaj forum.
Pogledaj malo i drugu stranu. Čovjek ti hoće pomoći i uputi te u pravom smjeru, ali ne - ti hoćeš sve na pladnju! Dakle, iz tuđe perspektive ti si tu ljenjivac koji će pucati pitanja i svi ostali će samo rafalno odgovarati. Zar su ti forumaši sluge? Uvijek će se naći ljudi koji su ti spremni pomoći, ali nemoj to iskorištavati. Ti si postavio pitanje ovdje i očekuje se da ćeš se upravo i ti najviše angažirati oko toga da iznađeš odgovor. Dakle, i ti moraš malo zasukati rukave. Ne razumijem kako se ti misliš baviti programiranjem ako ne znaš ili se nisi voljan primiti malo istraživanja. To je nešto što morašnaučiti i nemoj druge nazivati nadrkanima zato što si ti lijen ili nevoljan napraviti ono što se od jednog (budućeg) programera i očekuje.
OffTopic :
Inaće ljenost je odlika vrsnih programera, ali opet put do toga je isprepleten :
mukotrpnim učenjem ,
desocijalizacijom,
pucanjem živaca,
izraženom egocentričnošću i niskom tolerancijom,
neispavanim noćima,
tjeranjem zmaja ,
sf filmovima,
perfekcionizmom,
etc...
you name it.....
OffTopic :
Inaće ljenost je odlika vrsnih programera, ali opet put do toga je isprepleten :
mukotrpnim učenjem ,
desocijalizacijom,
pucanjem živaca,
izraženom egocentričnošću i niskom tolerancijom,
neispavanim noćima,
tjeranjem zmaja ,
sf filmovima,
perfekcionizmom,
etc...
you name it.....
Zaboravio si "nadrkanost".
Interesantno je sto ce sad svi svoje mudre izreke tu napisat. A ja i dalje necu uspjet napravit ono sto sam htio. Naime niti namjeravam biti programer (kako neki ovdje odmah zakljucuju i drze mi lekcije kako ce moj zivot izgledati itd itd.) a niti se ne namjeravm svadjati (jer sam tek nov u c++ i nemogu se tako sjajno snaci u svemu tome kako ostali neki mogu, a niti neznam puno naredbi). Ali glavno da cu ja sad biti popljuvan i odrzat ce mi se lekcija. U redu je. potrazit cu sam nekako na googlu ili gdje se snadjem. Hvala anyway.
Interesantno je sto ce sad svi svoje mudre izreke tu napisat. A ja i dalje necu uspjet napravit ono sto sam htio. Naime niti namjeravam biti programer (kako neki ovdje odmah zakljucuju i drze mi lekcije kako ce moj zivot izgledati itd itd.) a niti se ne namjeravm svadjati (jer sam tek nov u c++ i nemogu se tako sjajno snaci u svemu tome kako ostali neki mogu, a niti neznam puno naredbi). Ali glavno da cu ja sad biti popljuvan i odrzat ce mi se lekcija. U redu je. potrazit cu sam nekako na googlu ili gdje se snadjem. Hvala anyway.
Pa u c++ i nemaš puno naredbi c++ je programski jezik a ne command promt os, sve ti je manje više stvar prakse.
Inaće kreni od osnovnih početaka, znaći
tipovi podataka,
petlje,
uvjeti,
potprogrami,
struktuire,
klase,
objekti
zatim kreni na složenije algoritme vezane za neku temu , tj. konkretnu problematiku.
Interesantno je sto ce sad svi svoje mudre izreke tu napisat. A ja i dalje necu uspjet napravit ono sto sam htio. Naime niti namjeravam biti programer (kako neki ovdje odmah zakljucuju i drze mi lekcije kako ce moj zivot izgledati itd itd.) a niti se ne namjeravm svadjati (jer sam tek nov u c++ i nemogu se tako sjajno snaci u svemu tome kako ostali neki mogu, a niti neznam puno naredbi). Ali glavno da cu ja sad biti popljuvan i odrzat ce mi se lekcija. U redu je. potrazit cu sam nekako na googlu ili gdje se snadjem. Hvala anyway.
Umjesto da tu offtopičariš, već si davno mogao pogledati ono što sam ti napisao - čak i za jednu od tih funkcija je dan primjer gdje se koristi fseek. I onda se pitaš zašto pljujemo po tvojim porukama? Fak ju. Idi guglaj.
Pristojnost na forumu izvanredna.
Pristojnost na forumu izvanredna.
A sad je bilo dosta off-topičarenja.
Interesantno je sto ce sad svi svoje mudre izreke tu napisat. A ja i dalje necu uspjet napravit ono sto sam htio. Naime niti namjeravam biti programer (kako neki ovdje odmah zakljucuju i drze mi lekcije kako ce moj zivot izgledati itd itd.) a niti se ne namjeravm svadjati (jer sam tek nov u c++ i nemogu se tako sjajno snaci u svemu tome kako ostali neki mogu, a niti neznam puno naredbi). Ali glavno da cu ja sad biti popljuvan i odrzat ce mi se lekcija. U redu je. potrazit cu sam nekako na googlu ili gdje se snadjem. Hvala anyway.
Umjesto da tu offtopičariš, već si davno mogao pogledati ono što sam ti napisao - čak i za jednu od tih funkcija je dan primjer gdje se koristi fseek.
Inače, uočio sam i još jednu funkciju s lijeve strane - fgets - slično kao i fgetc, samo što učita cijeli string od trenutne pozicije u datoteci. Dakle, postupak se svodi na postavljanje na neku poziciju u datoteci s fseek i onda čitanje sadržaja iz datoteke - bilo fgetc ako hoćeš loviti znak po znak ili fgets ako hoćeš pročitati string.
Jel zna itko kako da citam iz textualne datoteke ali od odredjenog djela, npr od 7 znaka ili od 7 reda (tj. linije). Znam kako napraviti da cita od pocetka ali meni treba od odredjenog dijela. ANy help?
Nije mi to bas pomoglo. Tamo pise kako upisati i promjeniti nesto u datoteci, ne vidim nigdje ista da ima veze s ispisima na ekran. Jer trebao bih od jednog djela pocet ispisivat na ekran.
Pa kako ti nije pomoglo? Dao ti je funkciju kojom se pozicioniraš na neko mjesto unutar datotoke. I još vidiš da je dan primjer za zapisivanje u datoteku. Što je tebi tako teško bilo poklikati malo s lijeve strane na linkove koji bi mogli sugerirati kako se čita iz datoteke? Recimo fgetc ili fread?
P da, neznaš čitati i pisati u dadoteku, a hoćeš više, ajde prvo nauči fread i fwrite pa onda idi na fseek.
Uzmi neku knjigu na EX-YU jezicima, možda Demistificirani C++ od Štribara, ili C++ Analiza i Primjena od Kovačevića.
Baš si i ti @clone našao napasti rusta - dečka koji je još najviše spreman pomoći.
Dao ti je pravi link u kojem sve piše:
// fseek sample
#include <stdio.h>
int main ()
{
FILE * pFile;
char mystring[100];
pFile = fopen ( "example.txt" , "w" ); // otvaraš datoteku "example.txt" u modu za pisanje
fputs ( "This is an apple." , pFile ); // u tu datoteku upisuješ tekst "This is an apple."
fseek ( pFile , 9 , SEEK_SET ); // sa funkcijom fseek pomičeš "kursor" na 9. poziciju (sa početka)
fputs ( " sam" , pFile ); // upisuješ u tu datoteku riječ "sam"
fclose ( pFile ); // zatvaraš datoteku tj. stream
pFile = fopen ("example.txt", "r"); // ponovno otvaraš istu datoteku u modu za čitanje
fseek(pFile, 8, SEEK_SET); // sa funkcijom fseek pomičeš "kursor" na 8. poziciju (sa početka)
fgets(mystring, 100, pFile); // u string koji si gore alocirao upisuješ sadržaj iz datoteke počevši od 8. pozicije
fclose(pFile); // zatvaraš datoteku tj. stream
puts(mystring); // ispisuješ sadržaj stringa na konzolu - (kao što vidiš piše "a sample" - novi string od 8. pozicije)
return 0; // sada u datoteci piše: "This is a sample" jer si od 9. pozicije umetnuo riječ "sam"
}
Ajmo jedan brzi tečaj o datotekama...
Postoje dva tipa:
a) Formatirane (sljedne) - npr. tekstualne
b) Neformatirane (direktne) - binarni sadržaj
Kao što i sam naziv kaže, formatirane (sljedne) datoteke su one kod kojih se čita podatak po podatak (slijedom) gdje svaki od podataka može biti različite veličine, dok kod neformatiranih (direktnih) datoteka se može direktno pristupiti bilo kojem podatku u datoteci jer su svi iste duljine pa se lako može izračunati gdje u datoteci neki podatak (blok) počinje i gdje završava. Stoga se koriste sljedeće funkcije:
Formatirane: fprintf, fscanf
Neformatirane: fwrite, fread, fseek
ili opcionalno možete koristiti ekvivalente s ifstream i fstream klasama u c++u.
U primjeru na linku se vidi kako fseek se koristi u kombinaciji s formatiranom (sljednom) datotekom, no ovo je izniman slučaj a ne pravilo jer 1 znak (char) je jednako 1 byte. Zato je moguće s fseek pozicionirati se na određeni byte (znak) u datoteci. No prava upotreba fseek-a se vidi tek u neformatiranim datotekama gdje se treba pozicionirati na početak nekog zapisa u datoteci. Npr.
struct Blok{
int a;
char b;
float c;
}pom;
....
//pozicioniraj se na početak n-tog zapisa u datoteci
fseek(f, (n-1)*sizeof(Blok), SEEK_SET);
// pročitaj n-ti zapis
fread(&pom, (long)sizeof(Blok), 1, f);
Sad pišem napamet pa ako sam nešto fulao provjerite u compileru.
No, ako je riječ o formatiranoj datoteci trebalo bi sljedom čitati podatak po podatak. I zato je možda najbolje nešto ovako:
za i = 1 do broj_redaka
čitaj_redak_datoteke(redak)
ispisi(redak, 10, 20) // ispiši od 10. - 20. znaka
Primjere za sve je moguće naći na netu.
Baš si i ti @clone našao napasti rusta - dečka koji je još najviše spreman pomoći.
Dao ti je pravi link u kojem sve piše:
* fseek example */ #include <stdio.h> int main () { FILE * pFile; pFile = fopen ( "example.txt" , "w" ); // otvaraš datoteku "example.txt" u modu za pisanje fputs ( "This is an apple." , pFile ); // u tu datoteku upisuješ tekst "This is an apple." fseek ( pFile , 9 , SEEK_SET ); // sa funkcijom fseek pomičeš "kursor" na 9. poziciju fputs ( " sam" , pFile ); // upisuješ u tu datoteku riječ "sam" fclose ( pFile ); // zatvaraš datoteku tj. stream return 0; }
OMG
ništa strašno - ispravio sam krivo formatiranje
Nije mi to bas pomoglo. Tamo pise kako upisati i promjeniti nesto u datoteci, ne vidim nigdje ista da ima veze s ispisima na ekran. Jer trebao bih od jednog djela pocet ispisivat na ekran.
Zato sto ono ni nema nikakve veze s ispisima na ekran. Valjda znas i sam ispisivati. Onaj primjer samo pokazuje kako koristiti funkciju fseek.
fseek odnosno file seek sluzi za manipulaciju tvoje pozicije u datoteci. Kada tek otvoris datoteku pozicija je 0 (odnosno nalazis se na prvom bajtu datoteke). Da bi skakao naprijed i natrag po datoteci koristis fseek.
postoje tri razlicite lokacije sa kojih fseek moze raditi pomak u datoteci:
- od pocetka datoteke (SEEK_SET)
- od tvoje trenutne pozicije u datoteci (SEEK_CUR)
- od kraja datoteke (SEEK_END)
Radi jednostavnosti zadrzi se zasada na SEEK_SET (pomak od pocetka datoteke).
Dakle argumenti za fseek su slijedeci
- prvi argument je file handle (ono sto dobijes od funkcije fopen)
- drugi argument je pomak izrazen u bajtovima
- treci argument je lokacija od koje se vrsi pomak, moze biti SEEK_SET, SEEK_CUR, SEEK_END. Radi jednostavnosti koristi SEEK_SET
Da bi se pomaknuo na cetvrti bajt u datoteci, koristis fseek na ovaj nacin:
fseek(fh, 4, SEEK_SET);
Da bi ti to stvarno sjelo savjetujem ti da isprobavas, koristi razlicite vrijednosti u fseek funkciji pa vidi sto se dogada kada pokusas citati iz datoteke.
Ljudi fala ali moderator me upozorio da ne pisem ovdje. Samo da znate. A sto se tice ovoga, nasao sam ja to. I uspio sam napraviti uspmoc jednog kolege koji je taman dosao online.
Ljudi fala ali moderator me upozorio da ne pisem ovdje. Samo da znate. A sto se tice ovoga, nasao sam ja to. I uspio sam napraviti uspmoc jednog kolege koji je taman dosao online.
Koji moderator te to upozorio? Citiraj konkretno upozorenje.
ok, nije da me baš briga - ali sad kužim zašto su svi "nadrkani" - na konkretnu stvar - ni da kompajlira.
Može li mi tko objasniti kako implementirati zadnju Fermatovu teoremu za provjeru prostih brojeva u c ili c++-u??
Može li mi tko objasniti kako implementirati zadnju Fermatovu teoremu za provjeru prostih brojeva u c ili c++-u??
Hm, nije mi baš jasno kak bi s Fermatovim zadnjim teoremom provjerio dali je neki broj prosti ili nije. Fermatov zadnji teorem kaže da ne postoje tri pozitivna cijela broja a, b i c koji bi zadovoljavali jednadžbu an + bn = cn za bilo koji cijeli broj n veći od dva. No, vrlo lako možeš provjeriti da li je broj prost samo treba znati što proste brojeve čini prostima. Svaki prosti broj se može podijeliti jedino sam sa sobom ili s jedinicom. To možeš iskoristiti u provjeri dali je broj prost ili ne.
Da al mi treba neki brži algoritam za provjeru da li je broj prost!
Konkretno mi treba pomoc s zadatkom http://www.spoj.pl/problems/PON/ i u komentarima pise da se moze rjesiti pomocu male(Fermat's little theorem) Fermatove teoreme!
Da al mi treba neki brži algoritam za provjeru da li je broj prost!
Konkretno mi treba pomoc s zadatkom http://www.spoj.pl/problems/PON/ i u komentarima pise da se moze rjesiti pomocu zadnje Fermatove teoreme!
Aaa, sry nisam pomislio da ti treba nešto brže ;)
Inače, taj "naivni" algoritam se može dosta optimizirati, recimo, ne moraš provjeravati do n - 1 već je dovoljno provjeriti do korijen(n). Također, ne moraš provjeravati za parne brojeve, već samo za broj 2 (jer ako je djeljiv sa 2 bit će sa svakim parnim brojem) i sl.
Što se tiče komentara, pa, krivo piše :P. Pokazalo se da se mali Fermatov teorem može upotrijebiti za provjeru dali je broj prost i iz njega je nastao Pocklingtonov test. To su deterministički testovi. Postoje i probabilistički testovi. Nažalost nisam dovoljno kompetentan što se tiče programske implementacije tih algoritama (a i nemam baš vremena sad) pa te jedino mogu uputiti što da dalje tražiš. :(
Imaš ponešto i ovdje o tome.
EDIT: Evo i Fermatov test.
e ovako napravio sam dva programa , prvi program unesenu recenicu rastavlja na rijeci i ispisuje rijeci jednu ispod druge, a drugi program unesenu rijec ili recenicu provjerava da li je palindrom, sada meni treba program koji unosi recenicu i onda du recenicu rastavlja na rijeci i ispisuje ih jednu ispod druge i pored svake rijeci ispise dali je ta rijec palindrom ispise pored rijeci "je palindrom" , ako ta rijec nije poalindrom pored nje ispise "nije palindrom".znaci moram ova dva zadatka ujedinit u jedan sto ja nikako nemogu da uspijem , mozete li mi pomoci , HVALA UNAPRIJED.
program 1:
/*string7.cpp*/
/*ispisuje rijeci u slijedeci red*/
#include<conio.h>
#include<stdio.h>
#include<string.h>
char a[80];
int n,i,j,k,l;
void main(void)
{
clrscr();
printf("unesi string: ");
gets(a);
n=strlen(a)-1;
l=0;
for(i=0;i<=n;i++)
{
if (a[i]==' ' || a[i]==',' || i==n)
{
for (k=l;k<=i;k++)
printf("%c",a[k]);
if (a[i]==',' && a[i+1]==' ') l=i+2;
else{l=i+1;printf("\n");
}
}
}
getch();
}
program 2:
/*string4a.cpp*/
/*provjerava da li je ucitani string palindrom*/
#include<conio.h>
#include<stdio.h>
#include<string.h>
char a[80];
int n,i,k=0,br=0,j;
void main(void)
{
clrscr();
printf("unesi string: ");
gets(a);
n=strlen(a)-1;
/*broji razmake*/
for(i=0;i<=n;i++)
if (a[i]==' ') br++;
/*izbacuje razmake*/
for(i=0;i<=br-1;i++)
for(j=0;j<=n;j++)
{
if(a[j]==' '){a[j]=a[j+1];a[j+1]=' ';
}
}
/*provjerava da li je ucitani string palindrom*/
n=n-br;
for(i=0;i<=n;i++)
if (a[i]!=a[n-i])k=1;
if (k==0)printf("ucitani string je palindrom");
else printf ("ucitani string nije palindrom")
;getch();
}
@gerard
Kôd ti nije indentiran! Znači, nema razmake s lijeve strane. Užasno je nečitak. Copy&pasteaj svoj kod u ovaj online oblikovatelj kôda, oblikuj kôd, uredi svoju poruku u ovoj temi (klikni na link Uredi kod poruke) i onda zalijepi pravilno oblikovani kôd.
e ovako napravio sam dva programa , prvi program unesenu recenicu rastavlja na rijeci i ispisuje rijeci jednu ispod druge, a drugi program unesenu rijec ili recenicu provjerava da li je palindrom, ...
Prvo, kao što je mbaksa rekao, uredi kod da bude čitljiv.
Drugo, kolko se da razaznati, zašto su ti sve varijable globalne?!