Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //NE ZABORAVI DA KORISTIS -lm KAD POKRECES
- // ./a.out 100 13 13 5 ULAZ.txt IZLAZS.txt
- //ULAZNI FILE
- /*
- Petar 50 Warrior 10 10
- Milos 55 Warrior 10 15
- Jovan 750 Mage 30 30
- Milica 250 Cleric 15 30
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- #define MAX_NIZ 30
- #define MAX_IME 20+1
- #define MAX_RANK 7+1
- struct igrac_st{
- char naziv[MAX_IME];
- int helti;
- char rank[MAX_RANK];
- int x;
- int y;
- };
- struct preziveti_st{
- char naziv[MAX_IME];
- int helti;
- };
- FILE *safe_fopen(char filename[], char mode[], int error_code);
- void citaj_file(FILE *in, struct igrac_st igrac[], int *n);
- void racunaj(struct igrac_st igrac[],struct preziveti_st preziveti[],int n,int xcen,int ycen,int radijus, int steta);
- void cuvaj_file(FILE *out,struct preziveti_st preziveti[],struct preziveti_st temp[], int n);
- double racunaj_udeljenost(struct igrac_st igrac,int xcen,int ycen);
- int main(int arg_num, char **args){
- if(arg_num!=7){
- printf("Niste pravilno pokrenuli program");
- exit(404);
- }
- int steta= atoi(args[1]);
- int xcen=atoi(args[2]);
- int ycen=atoi(args[3]);
- int radijus=atoi(args[4]);
- char *in_filename=args[5];
- char *out_filename=args[6];
- FILE *in=safe_fopen(in_filename, "r", 1);
- FILE *out=safe_fopen(out_filename, "w", 2);
- int n;
- struct igrac_st igrac[MAX_NIZ];
- struct preziveti_st preziveti[MAX_NIZ];
- struct preziveti_st temp[MAX_NIZ];
- citaj_file(in, igrac, &n);
- racunaj(igrac, preziveti, n, xcen, ycen, radijus, steta);
- cuvaj_file(out, preziveti, temp, n);
- fclose(in);
- fclose(out);
- return 0;
- }
- FILE *safe_fopen(char filename[], char mode[], int error_code){
- FILE *fp=fopen(filename, mode);
- if(fp==NULL){
- printf("NISTE USPELI DA OTVORITE FILE");
- exit(error_code);
- }
- return fp;
- }
- void citaj_file(FILE *in, struct igrac_st igrac[], int *n){
- *n=0;
- while(fscanf(in, "%s %d %s %d %d",
- igrac[*n].naziv,
- &igrac[*n].helti,
- igrac[*n].rank,
- &igrac[*n].x,
- &igrac[*n].y
- )!=EOF){
- (*n)++;
- }
- }
- void racunaj(struct igrac_st igrac[],struct preziveti_st preziveti[],int n,int xcen,int ycen,int radijus, int steta){
- //AKO SE GLEDA KAO KOCKA
- /*int i,radijusxmanje,radijusymanje, radijusxvece, radijusyvece;
- radijusxmanje = xcen-radijus;
- radijusymanje = ycen-radijus;
- radijusxvece = xcen+radijus;
- radijusyvece = ycen+radijus;
- char warrior_rank[MAX_IME];
- strcpy(warrior_rank, "Warrior");
- for(i=0;i<n;i++){
- if(igrac[i].x>=radijusxmanje && igrac[i].x<=radijusxvece) //ako je u tom radijusu
- {
- if(igrac[i].y>=radijusymanje && igrac[i].y<=radijusyvece)
- {
- if ((strcmp(igrac[i].rank, warrior_rank))==0)
- {
- preziveti[i].helti=igrac[i].helti-steta/2;
- }
- else
- {
- preziveti[i].helti=(igrac[i].helti)-steta;
- }
- }
- else
- preziveti[i].helti=igrac[i].helti;
- }
- else
- preziveti[i].helti=igrac[i].helti;
- */
- //AKO SE GLEDA KAO KRUG
- int i,poluprecnik;
- char warrior_rank[MAX_IME];
- double udaljenost_tacke_od_centra;
- strcpy(warrior_rank, "Warrior");
- for(i=0;i<n;i++){
- udaljenost_tacke_od_centra=racunaj_udeljenost(igrac[i],xcen,ycen);
- if(udaljenost_tacke_od_centra<=radijus) //ako je u tom radijusu
- {
- if ((strcmp(igrac[i].rank, warrior_rank))==0)
- {
- preziveti[i].helti=igrac[i].helti-steta/2;
- }
- else
- {
- preziveti[i].helti=(igrac[i].helti)-steta;
- }
- }
- else
- preziveti[i].helti=igrac[i].helti;
- strcpy(preziveti[i].naziv, igrac[i].naziv);
- }
- }
- void cuvaj_file(FILE *out,struct preziveti_st preziveti[],struct preziveti_st temp[], int n){
- int i;
- for(i=0;i<n;i++){
- if(preziveti[i].helti>0){
- fprintf(out, "%s %d\n",
- preziveti[i].naziv,
- preziveti[i].helti);
- }}
- }
- double racunaj_udeljenost(struct igrac_st igrac,int xcen,int ycen){
- double udaljenost;
- udaljenost=sqrt((xcen-igrac.x)*(xcen-igrac.x)+(ycen-igrac.y)*(ycen-igrac.y));
- return udaljenost;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement