Pozz svima. Zadatak je sledeci:
Potrebno je napraviti dve funkcije za rad sa datotekama.Funkciju koja:
1) Kreira datoteku "tacka.bin", i u nju upisuje koordinate tacke,
2) Cita fajl"tacka.bin", i to dve po dve tacke, a kao rezultat daje rastojanje izmedju njih, ako korisnik unese neparan broj tacaka, poslednje koordinate samo prepisuje.
Prva funkcija bi trebalo da izgleda ovako:
#inslude<stdio.h>
#include<stdlib.h>
typedef struct
{
float x,y;
}Tacka;
void upisi()
{
int i,n;
FILE *fp;
Tacka t;
printf("Koliko tacaka zelite da unesete:");
scanf("%d",&n);
fp=fopen("tacka","wb");
for(i=1;i<=n;i++)
{
printf("Unesite koordinate %d.tacke:",i);
scanf("%f%f",&t.x,&t.y);
fwrite(&t,sizeof(Tacka),1,fp);
}
fclose(fp)
return;
}
Problem je kod druge f-je, a jebe me to kako da citam dve po dve tacke,odnosno njihove koordinate.
Unapred zahvalan, Condor.
Pomoc programiranje u C-u!!!
Moderators: pedja089, stojke369, [eDo], trax, LAF
Pomoc programiranje u C-u!!!
Nesvestan zivot nije vredan da bude prozivljen.
Ja sam ovo poceo da pisem kao funkciju. Ali ako se taj deo stavi u void program onda odlicno radi, ne vidim u cemu je greska. Evo i void main-a:
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
float x,y;
}Tacka;
void main()
{
int i,n;
FILE *fp;
Tacka t;
printf("Koliko tacaka zelite da unesete:");
scanf("%d",&n);
fp=fopen("tacka","wb");
for(i=1;i<=n;i++)
{
printf("Unesite koordinate %d.tacke:",i);
scanf("%f%f",&t.x,&t.y);
fwrite(&t,sizeof(Tacka),1,fp);
}
fclose(fp);
getch();
}
Drugi deo zadatka, slobodno ispisi kako ti odgovara, vazno mi je da vidim princp, i funkciju citanja dve po dve kao i njihovo sabiranje.
Nadam se da smo se razumeli.
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
float x,y;
}Tacka;
void main()
{
int i,n;
FILE *fp;
Tacka t;
printf("Koliko tacaka zelite da unesete:");
scanf("%d",&n);
fp=fopen("tacka","wb");
for(i=1;i<=n;i++)
{
printf("Unesite koordinate %d.tacke:",i);
scanf("%f%f",&t.x,&t.y);
fwrite(&t,sizeof(Tacka),1,fp);
}
fclose(fp);
getch();
}
Drugi deo zadatka, slobodno ispisi kako ti odgovara, vazno mi je da vidim princp, i funkciju citanja dve po dve kao i njihovo sabiranje.
Nadam se da smo se razumeli.
Nesvestan zivot nije vredan da bude prozivljen.
Ljudi nasao sam resenje. Ako se neko pitao kako odraditi drugi zadatak.....evo:(napisan je kao funkcija):!:
#include<stdio.h>
#include<math.h>
typedef struct
{
float x,y;
}Tacka;
void prikazi()
{
File *fp;
int i=1;
float d;
Tacka t1,t2;
clrscr();
fp=fopen("tacka","rb");
while(!feof(fp))
{
fread(&t1,sizeof(Tacka),1,fp);
fread(&t2,sizeof(Tacka),1,fp);
if(feof(fp))
{
break;
}
d=sqrt((t1.x-t2.x)*(t1.x-t2.x)+(t1.y-t2.y)*(t1.y-t2.y))
printf("Rastojanje izmedju %d. i %d. tacke iznosi %f",i,i+1,d);
i=i+2;
}
getch();
}
Moralo je da dodje do male modifikacije programa, naime program prikazuje samo paran broj tacaka, ukoliko se ukuca neparan poslednja tacka se izbacuje - bilo je malo ne moguce ostvariti da se i ona printa. Ali eto radi.....
#include<stdio.h>
#include<math.h>
typedef struct
{
float x,y;
}Tacka;
void prikazi()
{
File *fp;
int i=1;
float d;
Tacka t1,t2;
clrscr();
fp=fopen("tacka","rb");
while(!feof(fp))
{
fread(&t1,sizeof(Tacka),1,fp);
fread(&t2,sizeof(Tacka),1,fp);
if(feof(fp))
{
break;
}
d=sqrt((t1.x-t2.x)*(t1.x-t2.x)+(t1.y-t2.y)*(t1.y-t2.y))
printf("Rastojanje izmedju %d. i %d. tacke iznosi %f",i,i+1,d);
i=i+2;
}
getch();
}
Moralo je da dodje do male modifikacije programa, naime program prikazuje samo paran broj tacaka, ukoliko se ukuca neparan poslednja tacka se izbacuje - bilo je malo ne moguce ostvariti da se i ona printa. Ali eto radi.....
Nesvestan zivot nije vredan da bude prozivljen.