PC Ekspert Forum

PC Ekspert Forum (https://forum.pcekspert.com/index.php)
-   Web dizajn, programiranje i ostalo (https://forum.pcekspert.com/forumdisplay.php?f=39)
-   -   help (https://forum.pcekspert.com/showthread.php?t=70695)

mc_fish 31.05.2007. 20:30

help
 
2. Formatirana datoteka "pjesme" sadrži tekstove pjesama. Za svaku pjesmu navedeno je ime i prezime
autora, ime pjesme, te stihovi pjesme. Svaki stih pjesme naveden je u jednom retku. U jednom
retku ne može biti više od 512 znakova.

\n \n ime i prezime autora \n naziv pjesme \n tekst pjesme...

Napisati funkciju koja će vratiti ime i prezime autora, te naziv pjesme koja sadrži najdulji stih.

Citiraj:

#include
#include
#include
#include
struct pjesme{
char ip[80+1];
char imep[80+1];
char stih[512];
};

int ispis(char ip,char imep,char stih){
int i,d[]={},max,j;
char koi[]={};
struct pjesme p;
FILE *fout;
fout=fopen("pjesme.txt","r");
if(fout==0) return -1;
for(i=1;fscanf(fout,"\n%[^\n]%*c%[^\n]%*c%[^\n\n]%*c",p.ip,p.imep,p.stih)>0;i++){
d[i]=strlen(p.stih);
koi[i]=*p.stih;
printf("\nDuljina stiha %d :%d\n",i,d[i]);
printf("Ime i prezime autora: \n%s\nNaziv pjesme:\n%s\nTekst pjesme:\n%s\n\n\n",p.ip,p.imep,p.stih);
max=d[1];
if(d[i] > max){
j=i;
max=d[i];}
printf("\nNajdulji stih ima %d znakova,\na glasi: %s",max,koi[j]);
}fclose(fout);
}
int main(){
struct pjesme p;
ispis(&p.ip,&p.imep,&p.stih);
getch();
}
ovaklec ovo je prog kojeg sam napisao al mi se cmp rusi...wtf?!kolko ja vidim je sve 5...ili se onaj j brise nakon for petlje...

btw zasto nemrem pisati (printf) unutar if petlje...sam ja puko il je komp oso kvragu?:D

Majestic 01.06.2007. 16:57

nit si ti puko nit je komp oso vragu. uzmi knjigu u ruke i uci ako te zanima programiranje, inace je bolje da postas tekst zadatka i molis dobre:D duse na ovom forumu da ti ga rijese. :chears:

EDIT: prije je puko kompajler :lol2:

Majestic 02.06.2007. 11:51

letimicnim pregledom koda evo par "tipova":

tip 1: int d[]={} - velika greska, pa cak i za samog pocetnika; prilikom deklaracije niza mora se zadati velicina istog

tip 2: kod poziva funkcije ispis(&p.ip,&p.imep,&p.stih) za char tip se ne pise znak & (adresni operator)

tip 3: neznam jel ti struktura koda poremetila kopiranjem, ali svakako pripazi da stavljas razmake i odvajas cjeline; lakse se prati i ispravlja kod

p.s. stavi fajl pjesme tu ako ga imas.

mc_fish 02.06.2007. 17:49

1 privitaka
Citiraj:

letimicnim pregledom koda evo par "tipova":
stvarno letis;)

Citiraj:

tip 1: int d[]={} - velika greska, pa cak i za samog pocetnika; prilikom deklaracije niza mora se zadati velicina istog
kao 1. nisam pocetnik(pocetnici koriste string stlib conio itd lajberije tj headere??mislim da ne...isto tako ne rade s datotekama vec printf scanf...doduse fscanf i fprintf nije isto;) necemo ulazit u neformatirane datoteke i ostale binarne nakupine 0 i 1)
kao 2. deklaracije je integare polja a ne stringa/niza necemo ulaziti u vose dim. polja!inace tako dobivamo mogucnost NE punjenja/rezerviranja meme bezveze...drugim rijecima fora trik;)

Citiraj:

tip 2: kod poziva funkcije ispis(&p.ip,&p.imep,&p.stih) za char tip se ne pise znak & (adresni operator)
za svaki tip se pise osim za polja! jer je ujedno nulti index pocetak polja tj adresa...zato netreba tamo &

Citiraj:

tip 3: neznam jel ti struktura koda poremetila kopiranjem, ali svakako pripazi da stavljas razmake i odvajas cjeline; lakse se prati i ispravlja kod
da lakse se prati al kad c/p napravis svi tabulatori odu k' vragu...enivejz i meni se cini da je kompajler...

Citiraj:

p.s. stavi fajl pjesme tu ako ga imas.
ups sry zaboravio...btw na pocetku ti pise zadatak u tekstualnom obliku....pa si iz njega mogo i zakljucit format:)

enivejz tnx na pomoci jos javlja gresku a nemrem biti 1000% siher(999% jesam:) ) je mi je to za ocjenu -_-
a uz to i cura ima isti zadatak...ne zelim ostat bez jaja:D

mc_fish 02.06.2007. 17:54

khm edita nema hehe

enivejz vidim da nisam bio jasan oko &...

daklec:svaka varijablja(izuzevsi polja) trebaju imati doticni operator radi pohranjivanja(rezrviranja) meme za isti...dok kod polja nulti index pokazuje na pocetak polja ilitiga pocetnu adresu:)

je da tamo ne treba doc...al sam ga stavio iz reda radi(ne smeta)

Majestic 02.06.2007. 18:45

ne, ne, ma sad mi je sve jasno. nadam se da ces dobit ocjenu sukladnu sa iskazanim znanjem. :goood:

mc_fish 02.06.2007. 19:09

Citiraj:

Autor Majestic (Post 736268)
ne, ne, ma sad mi je sve jasno. nadam se da ces dobit ocjenu sukladnu sa iskazanim znanjem. :goood:

muahzaha wanabe cinik:D

os pomoc il ne?! sa mojim znanjem imam 5;) a ti?

btw sam da znas

za ispis(&p.ip,&p.imep,&p.stih); treba pisati tocno ispis(*p.ip,*p.imep,*p.stih);

intagare u pointer joj joj sam zasluzio 2?:goood:



dakle da prevedem tvoje rijeci...NEMAS POJMA:p

immortal 02.06.2007. 19:23

Program mora biti u C-u ili može biti i u C++-u?
Kolko sam shvatio zadatak, ispisati se treba samo ime autora i ime pjesme one pjesme s najvećim stihom, a tvoj program ispisuje svakog autora, pjesmu i stih... I u zadatku piše da pjesma može imati više stihova. Znači treba učitati ime pjesme, autora i odredi duljinu najvećeg stiha za tu pjesmu (pa tako do kraja fajla) i onda na kraju ispisati samo autora i pjesmu s najduljim stihom.

mc_fish 02.06.2007. 19:38

daj mici ovo ko je iskljucio edit i delete...tor opet prckas:p

mc_fish 02.06.2007. 19:40

trebo bi mi c al c++isto moze...da moze biti vise stihova(al u jednom redu) npr

\n\nhladno pivo\nnije sve tako sivo\nnije sve bla bla bla stihovi\n\nneki drugi autor


inace mene sam zanima kak iz fajla ono sto procitam sa svojim fscanf(fout,"\n%[^\n]%*c%[^\n]%*c%[^\n\n]%*c",p.ip,p.imep,p.stih)

smjestim u string...the only problem, jednostavno vec 2 dana blokiram naime kanio sam nes tipa

for(i=1;fscanf(fout,"\n%[^\n]%*c%[^\n]%*c%[^\n\n]%*c",p.ip,p.imep,p.stih)>0;i++){
d[i]=strlen(p.stih);
koi[i]=kopiraj na index "i" cijeli fscanf
max=d[1];
if(d[i]>max){
max=d[i];
j=i; pa ovdje jednostavno svaki max izmjenim sa j...ilitiga kad upisem printf koi[j] baci mi max string tj naziv bla bla bla
}


moja ideja eh sad kao sto rekoh blokiram i nikak da mi padne napamet nesto pametno:D

mc_fish 03.06.2007. 17:18

Citiraj:

#include
#include
#include
#include

int main ( int argv, char *argc ) {

char imeAutora[70+1];
char imePjesme[100+1];
char stih[512+1];
char imeAutoraMax[70+1]="";
char imePjesmeMax[100+1]="";
char stihMax[512+1]="";

FILE *file;
char fileName[ ] = "pjesme.txt";

int counter = 0, counter2 = 0;

if ( ( file = fopen ( fileName, "r" ) ) == NULL ) {
printf ( "\n File missing ! " );
getche ( );
exit ( 1 );
}

while ( fscanf ( file, "%*c%*c%70[^\n]%*c%100[^\n]%*c", imeAutora,
imePjesme ) == 2 ) {

if ( counter == 0 ) {
strcat (imeAutoraMax, imeAutora );
strcat (imePjesmeMax, imePjesme );
}

while ( fscanf( file, "%512[^\n]%*c", stih ) == 1 ) {
if ( counter2 == 0 ) {
strcat ( stihMax, stih );
}
if ( strlen ( stih ) > strlen ( stihMax ) ) {
strcpy ( imeAutoraMax, imeAutora );
strcpy ( imePjesmeMax, imePjesme );
strcpy ( stihMax, stih );
}
counter2++;
}

counter++;
}

printf ( "\n Ime datoteke: %s", fileName );
printf ( "\n Ime autora: %s\n\n Ime pjesme: %s", imeAutoraMax , imePjesmeMax);

getche ( );
fclose ( file );

return 0;
}

evo ak nekog zanima uspjedoh nakon puno salica kava:)


Sva vremena su GMT +2. Sada je 02:36.

Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 1999-2024 PC Ekspert - Sva prava pridržana ISSN 1334-2940
Ad Management by RedTyger