Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifdef _MSC_VER
- #define _CRT_SECURE_NO_WARNINGS
- #endif
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- typedef struct stan{
- int id;
- float cena;
- float sirina;
- float duzina;
- }Stan;
- typedef struct Elem {
- Stan stan;
- struct Elem* sledeci;
- }Elem;
- Elem* ucitaj ( const char* ime_datoteke) {
- Elem* glava = NULL, * poslednji = NULL, *novi;
- FILE* ulaz = fopen(ime_datoteke, "r");
- if (!ulaz) exit(1);
- Stan stan;
- while (fscanf(ulaz, "%d %f %f %f", &stan.id, &stan.cena, &stan.sirina, &stan.duzina) == 4) {
- novi = (Elem*)malloc(sizeof(Elem));
- if (!novi) exit(1);
- novi->stan = stan;
- novi->sledeci = NULL;
- if (!glava) glava = novi;
- else poslednji->sledeci = novi;
- poslednji = novi;
- }
- fclose(ulaz);
- return glava;
- }
- void sortiraj(Elem* glava) {
- Elem* pom1, * pom2;
- Stan pom;
- for (pom1 = glava; pom1 != NULL; pom1 = pom1->sledeci) {
- for (pom2 = pom1->sledeci; pom2 != NULL; pom2 = pom2->sledeci) {
- if (uporedi(pom1->stan, pom2->stan) <= 0) {
- continue;
- }else{
- pom= pom1->stan;
- pom1->stan = pom2->stan;
- pom2->stan = pom;
- }
- }
- }
- }
- int uporedi(Stan stan1, Stan stan2) {
- if (stan1.cena == stan2.cena) {
- return 0;
- }
- else if (stan1.cena < stan2.cena) {
- return -1;
- }
- else if (stan1.cena > stan2.cena) {
- return 1;
- }
- }
- void ispis(Elem* glava, float radius, const char* ime_datoteke) {
- Elem* curr;
- float rastojanje;
- FILE* izlaz = fopen(ime_datoteke, "w");
- if (!izlaz) exit(1);
- for (curr = glava; curr != NULL; curr = curr->sledeci) {
- rastojanje = sqrt(pow(2, curr->stan.duzina) + pow(2, curr->stan.sirina));
- if (rastojanje < radius) fprintf(izlaz, "%d %f %f %f \n", curr->stan.id, curr->stan.cena, curr->stan.sirina, curr->stan.duzina);
- }
- fclose(izlaz);
- }
- void deallocate(Elem* glava) {
- Elem* pom;
- while (glava) {
- pom = glava;
- free(pom);
- glava = glava->sledeci;
- }
- }
- int main() {
- float radius;
- Elem* glava = ucitaj("stanovi.txt");
- sortiraj(glava);
- scanf_s("%f", &radius);
- ispis(glava, radius, "stanovi_filtrirano.txt");
- deallocate(glava);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement