Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
nemanja065 Forumaš(ica)

Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16
|
Postano: 19:32 ned, 14. 9. 2008 Naslov: Funkcije? |
|
|
Imam problem sa sledecim zadacima tj. neznam ih uraditi,ako neko zna nek pomogne .... hvala
ZADATAK 1: Napisati funkciju na C-u kojom se vrši rotiranje elemenata niza A dimenzije N za K pozijica u desno. U glavnom programu učitati matricu B, reda P*T, i koristeći formiranu funkciju izvršiti rotiranje elemenata unutar svake vrste za i pozicija u desno, pri čemu je i indeks vrste. Štampati matricu B nakon transformacije.
ZADATAK 2: Napisati program na C-u koji za uneti celi broj računa zbir njegovih cifara korištenjem funkcije SUMA_CIFARA. Funkcija SUMA_CIFARA treba da radi i za negativne brojeve. Npr ., SUMA_CIFARA(-3291) treba da vrati vrednost -15, a SUMA_CIFARA(568) treba da vrati vrednost 19.
Imam problem sa sledecim zadacima tj. neznam ih uraditi,ako neko zna nek pomogne .... hvala
ZADATAK 1: Napisati funkciju na C-u kojom se vrši rotiranje elemenata niza A dimenzije N za K pozijica u desno. U glavnom programu učitati matricu B, reda P*T, i koristeći formiranu funkciju izvršiti rotiranje elemenata unutar svake vrste za i pozicija u desno, pri čemu je i indeks vrste. Štampati matricu B nakon transformacije.
ZADATAK 2: Napisati program na C-u koji za uneti celi broj računa zbir njegovih cifara korištenjem funkcije SUMA_CIFARA. Funkcija SUMA_CIFARA treba da radi i za negativne brojeve. Npr ., SUMA_CIFARA(-3291) treba da vrati vrednost -15, a SUMA_CIFARA(568) treba da vrati vrednost 19.
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
|
[Vrh] |
|
nemanja065 Forumaš(ica)

Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
|
[Vrh] |
|
mdoko Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: 
Lokacija: Heriot-Watt University, Edinburgh
|
Postano: 22:39 ned, 14. 9. 2008 Naslov: |
|
|
[quote="Luuka"]pa daj napiši točno kaj se traži... :roll: :roll:
[/quote]
Pa, jasno je sto se trazi.
[quote]
Dakle, treba li fja promijeniti matricu iz glavog programa?
[/quote]
Da.
[quote]
Ispis promijenjene matrice unutar fje ili u glavnom programu? (i to odgovara na prethodno pitanje)
[/quote]
U glavnom programu.
[quote]
Da li treba pazit da nam ta rotacija postoji? (ili znamo da neće bit 2x2 matrica a mi tražimo rotaciju za 17)
[/quote]
Tko kaze da niz duljine 2 ne mozes rotirati za 17?
[quote]
Treba li zamijenit stupce ili retke?
[/quote]
Lijepo rece covjek: [i]"izvršiti rotiranje elemenata unutar svake vrste"[/i] Ovdje treba napomenuti da [i]vrsta[/i] znaci [i]redak[/i] (sjecate se tjelesnog u osnovnoj - poredajte se u vrstu?)
[quote]
Ubuduće, napiši sve detalje zadatka, dobit ćeš bržu i bolju pomoć, a i rješenje će bit točnije...
[/quote]
Napisao je sve detalje zadatka, samo sto je koristio srpske izraze, pa vas je to zbunilo.
Sto se pomoci tice, ja nemam nikakvu namjeru rjesavati tudje zadace, a ako netko drugi hoce - slobodno.
Luuka (napisa): | pa daj napiši točno kaj se traži...
|
Pa, jasno je sto se trazi.
Citat: |
Dakle, treba li fja promijeniti matricu iz glavog programa?
|
Da.
Citat: |
Ispis promijenjene matrice unutar fje ili u glavnom programu? (i to odgovara na prethodno pitanje)
|
U glavnom programu.
Citat: |
Da li treba pazit da nam ta rotacija postoji? (ili znamo da neće bit 2x2 matrica a mi tražimo rotaciju za 17)
|
Tko kaze da niz duljine 2 ne mozes rotirati za 17?
Citat: |
Treba li zamijenit stupce ili retke?
|
Lijepo rece covjek: "izvršiti rotiranje elemenata unutar svake vrste" Ovdje treba napomenuti da vrsta znaci redak (sjecate se tjelesnog u osnovnoj - poredajte se u vrstu?)
Citat: |
Ubuduće, napiši sve detalje zadatka, dobit ćeš bržu i bolju pomoć, a i rješenje će bit točnije...
|
Napisao je sve detalje zadatka, samo sto je koristio srpske izraze, pa vas je to zbunilo.
Sto se pomoci tice, ja nemam nikakvu namjeru rjesavati tudje zadace, a ako netko drugi hoce - slobodno.
_________________ Extraordinary claims require extraordinary evidence. – Carl Sagan
|
|
[Vrh] |
|
nemanja065 Forumaš(ica)

Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16
|
Postano: 15:00 pon, 15. 9. 2008 Naslov: |
|
|
main ()
{
int n,SUMA_CIFARA();
printf("unesite broj:\n");
scanf("%d",&n);
printf("zbir cifara je %d",SUMA_CIFARA());
}
int SUMA_CIFARA (int n)
{
int predznak,suma=0;
if (n>=0) predznak=1;
else {n=-n;predznak=-1;}
while (n>0)
{
suma+=n%10;
n/=10;
}
return suma*predznak;
}
ja sam ovako napisao zadatak ,al mi daje rezultat 28,u cemu je problrm...
main ()
{
int n,SUMA_CIFARA();
printf("unesite broj:\n");
scanf("%d",&n);
printf("zbir cifara je %d",SUMA_CIFARA());
}
int SUMA_CIFARA (int n)
{
int predznak,suma=0;
if (n>=0) predznak=1;
else {n=-n;predznak=-1;}
while (n>0)
{
suma+=n%10;
n/=10;
}
return suma*predznak;
}
ja sam ovako napisao zadatak ,al mi daje rezultat 28,u cemu je problrm...
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
nemanja065 Forumaš(ica)

Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16
|
|
[Vrh] |
|
nemanja065 Forumaš(ica)

Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16
|
Postano: 16:11 uto, 16. 9. 2008 Naslov: |
|
|
Nemogu nikako da shvatim sledecu funkciju (u pitanju je razlika 2 skupa A i B)
void razlika (int *a,int *b,int n,int m,int *c,int *k)
{
int i,j,s,l=0;
for(i=0;i<n;i++)
{
j=0;
s=0;
while(j<m && s==0)
{ if(*(a+i)==*(b+j))
s++;
else
j++;
}
if(s==0)
{
*(c+l)=*(a+i);
l++;
}
}
*k=l;
return;
}
Ako neko moze da mi objasni postupak tj. princip rada funkcije.....hvala
Nemogu nikako da shvatim sledecu funkciju (u pitanju je razlika 2 skupa A i B)
void razlika (int *a,int *b,int n,int m,int *c,int *k)
{
int i,j,s,l=0;
for(i=0;i<n;i++)
{
j=0;
s=0;
while(j<m && s==0)
{ if(*(a+i)==*(b+j))
s++;
else
j++;
}
if(s==0)
{
*(c+l)=*(a+i);
l++;
}
}
*k=l;
return;
}
Ako neko moze da mi objasni postupak tj. princip rada funkcije.....hvala
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
Postano: 17:48 uto, 16. 9. 2008 Naslov: |
|
|
Idem ja napisat svoju fju, pa ćemo vidjet koja je ideja...
[code:1]
void razlika (int *A,int *B,int duljinaA,int duljinaB,int *razl, int *razlDuljina)
{
int i,j,brojac=0,k=0;
for (j=0;j<duljinaB; j++)
for (i=0;i<duljinaA;i++)
if ( *(A+i)==*(B+j) ) brojac++;
razl=(int*)malloc((duljinaA-brojac)*sizeof(int));
for (i=0;i<duljinaA; i++)
{
int da=0;
for (j=0;j<duljinaB;j++)
if ( *(A+i)==*(B+j) ) da=1;
if ( !da) { *(razl+k)=*(A+i); k++; }
*razlDuljina=k;
}
}
[/code:1]
Ovo je pisano bez compilera pa su greške moguće...
Ideja: Funkciji šaljemo 2 niza, A i B, njihove duljine i još jedan niz gdje ćemo spremiti razliku.
Najprije prođemo po nizu B i za svaki taj element pogledamo dal je u A. Ako je povećamo brojač. Sada znamo da će nam niz razlika bit dug duljinaA-brojač (imat će sve elemente iz A osim onih koji su i u B). Alociramo memoriju za razl pomoću malloc. (moguće da to nije ni potrebno,uz još poneku pretpostavku, al nek se nađe).
Sad idemo kroz A i za svaki element provjeravamo dal je u B. To će nam reć varijabla "da". Ako taj element nije u B, onda ga ubacimo u razl.
Duljina razlike je k (jer do k dođe upisivanje elemenata)
I to je to.
P.s. Kad ubacuješ kod, stavi ga u kućicu za kod. (klikneš dvaput na "code", pravokutni gumbić ispod naslova posta i onda unutra zaljepiš kod)
Idem ja napisat svoju fju, pa ćemo vidjet koja je ideja...
Kod: |
void razlika (int *A,int *B,int duljinaA,int duljinaB,int *razl, int *razlDuljina)
{
int i,j,brojac=0,k=0;
for (j=0;j<duljinaB; j++)
for (i=0;i<duljinaA;i++)
if ( *(A+i)==*(B+j) ) brojac++;
razl=(int*)malloc((duljinaA-brojac)*sizeof(int));
for (i=0;i<duljinaA; i++)
{
int da=0;
for (j=0;j<duljinaB;j++)
if ( *(A+i)==*(B+j) ) da=1;
if ( !da) { *(razl+k)=*(A+i); k++; }
*razlDuljina=k;
}
}
|
Ovo je pisano bez compilera pa su greške moguće...
Ideja: Funkciji šaljemo 2 niza, A i B, njihove duljine i još jedan niz gdje ćemo spremiti razliku.
Najprije prođemo po nizu B i za svaki taj element pogledamo dal je u A. Ako je povećamo brojač. Sada znamo da će nam niz razlika bit dug duljinaA-brojač (imat će sve elemente iz A osim onih koji su i u B). Alociramo memoriju za razl pomoću malloc. (moguće da to nije ni potrebno,uz još poneku pretpostavku, al nek se nađe).
Sad idemo kroz A i za svaki element provjeravamo dal je u B. To će nam reć varijabla "da". Ako taj element nije u B, onda ga ubacimo u razl.
Duljina razlike je k (jer do k dođe upisivanje elemenata)
I to je to.
P.s. Kad ubacuješ kod, stavi ga u kućicu za kod. (klikneš dvaput na "code", pravokutni gumbić ispod naslova posta i onda unutra zaljepiš kod)
_________________ "Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy 
|
|
[Vrh] |
|
nemanja065 Forumaš(ica)

Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16
|
|
[Vrh] |
|
Mad Wilson Forumaš(ica)


Pridružen/a: 29. 05. 2006. (22:51:14) Postovi: (121)16
|
|
[Vrh] |
|
nemanja065 Forumaš(ica)

Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16
|
|
[Vrh] |
|
Mad Wilson Forumaš(ica)


Pridružen/a: 29. 05. 2006. (22:51:14) Postovi: (121)16
|
Postano: 19:01 sub, 20. 9. 2008 Naslov: |
|
|
Zna;
[code:1]void set_copy( char* a, char* c, unsigned int _len_a){ // kopira skup a u skup c
// pretpostavka je da je kardinalitet od c >= kardinalitetu od a.
// elemeti skupa c bivaju prepisani
unsigned int i=0;
for(;i<_len_a;++i)
c[i]=a[i];
}
void element_in_set( char element, char* a, unsigned int _len_a, char* c, unsigned int *_len_c ){
// prima element i provjerava nalazi li se u skupu a
// ukoliko se ne nalazi, tada ga 'ubacuje' u skup c
// i skupu c povecava kardinalitet
unsigned int i=0;
for(;i<_len_a;++i)
if( a[i]==element ) // element se nalazi u skupu a, a samim time se nalazi i u skupu c...
return;
c[(*_len_c)++]=element; // jos smo u funkciji, dakle element se ne nalazi u skupu a
// pa ga ubacujemo u skup c
}
unsigned int unija( char* a, char* b, unsigned int _len_a, unsigned int _len_b, char **c)
// prima dva skupa (o ovom slucaju su to char-ovi, ali moze biti bilosto),
// a i b, njihove duljine, te pointer na skup koji ce sadrzati uniju.
// funkcija vraca (efektivnu) duljinu rezultantnog skupa
{
unsigned int i=0, _len_c;
*c=malloc( (_len_a+_len_b)*sizeof(char) ); // alociramo memoriju za rezultantni skup
// u grubo kao kardinalitet prvog i drugog skupa; vece od tog ne moze biti
set_copy(a,c,_len_a); // kopiramo prvi skup u rezultantni
_len_c = _len_a; // sad skup c sadrzi sve elemente koje sadrzi i skup a
// pa su im kardinaliteti jednaki
for(;i<_len_b;++i) // u ovoj petlji kopiramo drugi skup u rezultantni
element_in_set( b[i], a, _len_a, c, &_len_c ); // kopiramo samo one elemente iz drugog
// skupa koji nisu vec ubaceni, tj. koji nisu u prvom skupu, jer je
// A U B = A U (B\A)
return _len_c; // vratimo efektivnu duljinu rezultantnog skupa
}[/code:1]
Nisam provjeravao dal radi, ako ne radi... vici!
Zna;
Kod: | void set_copy( char* a, char* c, unsigned int _len_a){ // kopira skup a u skup c
// pretpostavka je da je kardinalitet od c >= kardinalitetu od a.
// elemeti skupa c bivaju prepisani
unsigned int i=0;
for(;i<_len_a;++i)
c[i]=a[i];
}
void element_in_set( char element, char* a, unsigned int _len_a, char* c, unsigned int *_len_c ){
// prima element i provjerava nalazi li se u skupu a
// ukoliko se ne nalazi, tada ga 'ubacuje' u skup c
// i skupu c povecava kardinalitet
unsigned int i=0;
for(;i<_len_a;++i)
if( a[i]==element ) // element se nalazi u skupu a, a samim time se nalazi i u skupu c...
return;
c[(*_len_c)++]=element; // jos smo u funkciji, dakle element se ne nalazi u skupu a
// pa ga ubacujemo u skup c
}
unsigned int unija( char* a, char* b, unsigned int _len_a, unsigned int _len_b, char **c)
// prima dva skupa (o ovom slucaju su to char-ovi, ali moze biti bilosto),
// a i b, njihove duljine, te pointer na skup koji ce sadrzati uniju.
// funkcija vraca (efektivnu) duljinu rezultantnog skupa
{
unsigned int i=0, _len_c;
*c=malloc( (_len_a+_len_b)*sizeof(char) ); // alociramo memoriju za rezultantni skup
// u grubo kao kardinalitet prvog i drugog skupa; vece od tog ne moze biti
set_copy(a,c,_len_a); // kopiramo prvi skup u rezultantni
_len_c = _len_a; // sad skup c sadrzi sve elemente koje sadrzi i skup a
// pa su im kardinaliteti jednaki
for(;i<_len_b;++i) // u ovoj petlji kopiramo drugi skup u rezultantni
element_in_set( b[i], a, _len_a, c, &_len_c ); // kopiramo samo one elemente iz drugog
// skupa koji nisu vec ubaceni, tj. koji nisu u prvom skupu, jer je
// A U B = A U (B\A)
return _len_c; // vratimo efektivnu duljinu rezultantnog skupa
} |
Nisam provjeravao dal radi, ako ne radi... vici!
|
|
[Vrh] |
|
nemanja065 Forumaš(ica)

Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16
|
Postano: 9:32 ned, 21. 9. 2008 Naslov: |
|
|
Imam poslednji zadatak koji vas moram pitati,s obzirom da je sutra ispit.....
ZADATAK : Napisati program na C-u kojim se čitanjem iz binarne datoteke IMENIK kreira tekstualna datoteka MARIC.txt. U binarnoj datoteci IMENIK nalaze se imena, prezimena, adrese i brojevi telefona stanovnika jednog grada. U datoteci MARIC.txt treba da se nalaze informacije o svim stanovnicima čije je prezime MARIC. Program treba da sadrži deo za formiranje binarne datoteke IMENIK i deo u kojem se čitanjem iz nje formira datoteka MARIC.txt.
funkciju za kreiranje datoteke znam napraviti createdat(), jedino neznam kako napraviti taj dio gdje se citanjem izbinarne datoteke IMENIK forimira datoteka MARIC.txt......(samo sto jednostavnije ako moze)
[size=9][color=#999999]Added after 1 minutes:[/color][/size]
Imam poslednji zadatak koji vas moram pitati,s obzirom da je sutra ispit.....
ZADATAK : Napisati program na C-u kojim se čitanjem iz binarne datoteke IMENIK kreira tekstualna datoteka MARIC.txt. U binarnoj datoteci IMENIK nalaze se imena, prezimena, adrese i brojevi telefona stanovnika jednog grada. U datoteci MARIC.txt treba da se nalaze informacije o svim stanovnicima čije je prezime MARIC. Program treba da sadrži deo za formiranje binarne datoteke IMENIK i deo u kojem se čitanjem iz nje formira datoteka MARIC.txt.
funkciju za kreiranje datoteke znam napraviti createdat(), jedino neznam kako napraviti taj dio gdje se citanjem izbinarne datoteke IMENIK forimira datoteka MARIC.txt(tu su svi podaci stanovnika sa prezimenom MARIC tj. ime prezime adresa broj telefona)......(samo sto jednostavnije ako moze)
Imam poslednji zadatak koji vas moram pitati,s obzirom da je sutra ispit.....
ZADATAK : Napisati program na C-u kojim se čitanjem iz binarne datoteke IMENIK kreira tekstualna datoteka MARIC.txt. U binarnoj datoteci IMENIK nalaze se imena, prezimena, adrese i brojevi telefona stanovnika jednog grada. U datoteci MARIC.txt treba da se nalaze informacije o svim stanovnicima čije je prezime MARIC. Program treba da sadrži deo za formiranje binarne datoteke IMENIK i deo u kojem se čitanjem iz nje formira datoteka MARIC.txt.
funkciju za kreiranje datoteke znam napraviti createdat(), jedino neznam kako napraviti taj dio gdje se citanjem izbinarne datoteke IMENIK forimira datoteka MARIC.txt......(samo sto jednostavnije ako moze)
Added after 1 minutes:
Imam poslednji zadatak koji vas moram pitati,s obzirom da je sutra ispit.....
ZADATAK : Napisati program na C-u kojim se čitanjem iz binarne datoteke IMENIK kreira tekstualna datoteka MARIC.txt. U binarnoj datoteci IMENIK nalaze se imena, prezimena, adrese i brojevi telefona stanovnika jednog grada. U datoteci MARIC.txt treba da se nalaze informacije o svim stanovnicima čije je prezime MARIC. Program treba da sadrži deo za formiranje binarne datoteke IMENIK i deo u kojem se čitanjem iz nje formira datoteka MARIC.txt.
funkciju za kreiranje datoteke znam napraviti createdat(), jedino neznam kako napraviti taj dio gdje se citanjem izbinarne datoteke IMENIK forimira datoteka MARIC.txt(tu su svi podaci stanovnika sa prezimenom MARIC tj. ime prezime adresa broj telefona)......(samo sto jednostavnije ako moze)
|
|
[Vrh] |
|
nemanja065 Forumaš(ica)

Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 1:03 čet, 25. 9. 2008 Naslov: |
|
|
Nagadjam: onaj "[tt]-k[/tt]" se zamijeni sa "[tt]+k[/tt]"? :gg:
C'mon, nije to formuletina za bubanje napamet, nego zapisi niz od - recimo - 5 elemenata na papir i probaj ga, prema svojoj formuli, pomaknuti za 2 mjesta u desno i bit ce ti jasno kako to radi. 8) Nakon toga razmisli kako bi islo u lijevo... 8)
Nikakva korist od ucenja na pamet ako ti nije jasno. :( Recimo, mogu ti reci da pomaknes samo svaki drugi element za [tt]k[/tt] mjesta... sto ces onda ako samo znas formulu na pamet, ali ju zapravo ne razumijes? :-k
(Hint za ovo zadnje: mijenja se petlja u kojoj pozivas svoju "formulu")
Nagadjam: onaj "-k" se zamijeni sa "+k"?
C'mon, nije to formuletina za bubanje napamet, nego zapisi niz od - recimo - 5 elemenata na papir i probaj ga, prema svojoj formuli, pomaknuti za 2 mjesta u desno i bit ce ti jasno kako to radi. Nakon toga razmisli kako bi islo u lijevo...
Nikakva korist od ucenja na pamet ako ti nije jasno. Recimo, mogu ti reci da pomaknes samo svaki drugi element za k mjesta... sto ces onda ako samo znas formulu na pamet, ali ju zapravo ne razumijes?
(Hint za ovo zadnje: mijenja se petlja u kojoj pozivas svoju "formulu")
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju. 
|
|
[Vrh] |
|
nemanja065 Forumaš(ica)

Pridružen/a: 05. 01. 2007. (22:48:40) Postovi: (23)16
|
Postano: 14:12 pet, 3. 10. 2008 Naslov: |
|
|
#include<stdio.h>
#include<string.h>
main()
{
struct student
{
char ime[20];
char prezime[20];
int brind;
char smer[20];
}ulaz,izlaz;
FILE *dat1,*dat2;
int i,n,postoji=0;
dat2=fopen("EE.txt","w+");
if((dat1=fopen("STUDENTI.txt","r+"))==NULL)
{
dat1=fopen("STUDENTI.txt","w+");
printf("koliko studenata upisujete?\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("unesite podatke o %d. studentu\n",i+1);
scanf("%s %s %d %s",ulaz.ime,ulaz.prezime,&ulaz.brind,ulaz.smer);
fprintf(dat1,"%s% s% d %s",ulaz.ime,ulaz.prezime,ulaz.brind,ulaz.smer);
}
rewind(dat1);
}
while(!feof(dat1))
{
fscanf(dat1,"%s %s %d %s",ulaz.ime,ulaz.prezime,&ulaz.brind,ulaz.smer);
if(strcmp(ulaz.smer,"ee")==0)
{
izlaz=ulaz;
fprintf(dat2,"%s %s %d",izlaz.ime,izlaz.prezime,izlaz.brind);
postoji=1;
}
}
if(postoji==0){
printf("\nnema studenta sa EE odseka");
}
fclose(dat1);
fclose(dat2);
}
Ovaj zadatak treba da iz dat student.txt nadje i kopira studente sa odseka EE u dat ee.txt
Sad neznam u cemu je problem pa program nece da radi kako treba....
#include<stdio.h>
#include<string.h>
main()
{
struct student
{
char ime[20];
char prezime[20];
int brind;
char smer[20];
}ulaz,izlaz;
FILE *dat1,*dat2;
int i,n,postoji=0;
dat2=fopen("EE.txt","w+");
if((dat1=fopen("STUDENTI.txt","r+"))==NULL)
{
dat1=fopen("STUDENTI.txt","w+");
printf("koliko studenata upisujete?\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("unesite podatke o %d. studentu\n",i+1);
scanf("%s %s %d %s",ulaz.ime,ulaz.prezime,&ulaz.brind,ulaz.smer);
fprintf(dat1,"%s% s% d %s",ulaz.ime,ulaz.prezime,ulaz.brind,ulaz.smer);
}
rewind(dat1);
}
while(!feof(dat1))
{
fscanf(dat1,"%s %s %d %s",ulaz.ime,ulaz.prezime,&ulaz.brind,ulaz.smer);
if(strcmp(ulaz.smer,"ee")==0)
{
izlaz=ulaz;
fprintf(dat2,"%s %s %d",izlaz.ime,izlaz.prezime,izlaz.brind);
postoji=1;
}
}
if(postoji==0){
printf("\nnema studenta sa EE odseka");
}
fclose(dat1);
fclose(dat2);
}
Ovaj zadatak treba da iz dat student.txt nadje i kopira studente sa odseka EE u dat ee.txt
Sad neznam u cemu je problem pa program nece da radi kako treba....
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
Postano: 14:19 pet, 3. 10. 2008 Naslov: |
|
|
[quote="nemanja065"]
izlaz=ulaz;
[/quote]
Ne, ne... C ne zna to sam pridružit... Tu imaš jedna_struktura=druga_struktura, a to u C-u ne ide... trebaš ručno sve... dakle, ime, prezime preko strcpy, onaj int obično... tak bi trebalo bit ok. :D Eventualno tamo di upisuješ studente u dat1, tamo imaš % s (razdvojeno), možda i to zeza, a možda i prolazi, to nisam siguran.
i daj please stavi kod u kućicu (ispod naslova teme na vrhu posta imaš kvadratić code, to dvaput i onda unutar toga zalijepiš kod), onda je puno preglednije...
nemanja065 (napisa): |
izlaz=ulaz;
|
Ne, ne... C ne zna to sam pridružit... Tu imaš jedna_struktura=druga_struktura, a to u C-u ne ide... trebaš ručno sve... dakle, ime, prezime preko strcpy, onaj int obično... tak bi trebalo bit ok. Eventualno tamo di upisuješ studente u dat1, tamo imaš % s (razdvojeno), možda i to zeza, a možda i prolazi, to nisam siguran.
i daj please stavi kod u kućicu (ispod naslova teme na vrhu posta imaš kvadratić code, to dvaput i onda unutar toga zalijepiš kod), onda je puno preglednije...
_________________ "Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy 
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 14:45 pet, 3. 10. 2008 Naslov: |
|
|
Posto su stringovi nizovi, a ne pointeri, mislim da ovakvo kopiranje dobro radi. :)
Greska je ovdje:
[tt]fprintf(dat1,"%s[bg=red]% [/bg]s[bg=red]% [/bg]d %s",ulaz.ime,ulaz.prezime,ulaz.brind,ulaz.smer);[/tt]
Treba biti:
[tt]fprintf(dat1,"%s[bg=lime] %[/bg]s[bg=lime] %[/bg]d %s[bg=lime]\n[/bg]",ulaz.ime,ulaz.prezime,ulaz.brind,ulaz.smer);[/tt]
(skok u novi red da se izbjegne da se slijepe smjer i-tog i ime (i+1)-og studenta. 8)
Dodatno, u izlazu ce zadnji student biti dva puta. :? Treba
[code:1]while(!feof(dat1))
{
fscanf(dat1,"%s %s %d %s",ulaz.ime,ulaz.prezime,&ulaz.brind,ulaz.smer);
...
}[/code:1]
zamijeniti sa
[code:1]fscanf(dat1,"%s %s %d %s",ulaz.ime,ulaz.prezime,&ulaz.brind,ulaz.smer);
while(!feof(dat1))
{
...
fscanf(dat1,"%s %s %d %s",ulaz.ime,ulaz.prezime,&ulaz.brind,ulaz.smer);
}[/code:1]
ili
[code:1]while(1)
{
fscanf(dat1,"%s %s %d %s",ulaz.ime,ulaz.prezime,&ulaz.brind,ulaz.smer);
if (feof(dat1)) break;
...
}[/code:1]
I ovdje bi bilo dobro na kraj formata dodati [tt]\n[/tt]. 8)
8)
Posto su stringovi nizovi, a ne pointeri, mislim da ovakvo kopiranje dobro radi.
Greska je ovdje:
fprintf(dat1,"%s% s% d %s",ulaz.ime,ulaz.prezime,ulaz.brind,ulaz.smer);
Treba biti:
fprintf(dat1,"%s %s %d %s\n",ulaz.ime,ulaz.prezime,ulaz.brind,ulaz.smer);
(skok u novi red da se izbjegne da se slijepe smjer i-tog i ime (i+1)-og studenta.
Dodatno, u izlazu ce zadnji student biti dva puta. Treba
Kod: | while(!feof(dat1))
{
fscanf(dat1,"%s %s %d %s",ulaz.ime,ulaz.prezime,&ulaz.brind,ulaz.smer);
...
} |
zamijeniti sa
Kod: | fscanf(dat1,"%s %s %d %s",ulaz.ime,ulaz.prezime,&ulaz.brind,ulaz.smer);
while(!feof(dat1))
{
...
fscanf(dat1,"%s %s %d %s",ulaz.ime,ulaz.prezime,&ulaz.brind,ulaz.smer);
} |
ili
Kod: | while(1)
{
fscanf(dat1,"%s %s %d %s",ulaz.ime,ulaz.prezime,&ulaz.brind,ulaz.smer);
if (feof(dat1)) break;
...
} |
I ovdje bi bilo dobro na kraj formata dodati \n.
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju. 
|
|
[Vrh] |
|
|