You are on page 1of 4

Lucrare anuntata

Ranja Alexandra Beatris, Colcer Alexia Ioana, Pirvu Ciprian Cristian

includerea bibliotecilor:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <stdio.h>

structura intrebare

sir de caractere text_intrebare[100];

intreg answers[93];

};

int main()

intreg i, j

intreg finalGrade[93]

// intreg real_grade[93] <-


{3,2,0,4,4,4,1,3,2,2,4,2,4,3,2,5,3,3,5,2,2,3,1,3,3,5,3,2,4,3,3,4,3,2,2,1,1,3,5,3,3,3,3,4,2,2,5,4,2,3,1,3,3,3,2,5
,3,5,3,1,5,3,4,3,4,5,3,4,4,4,4,3,3,3,3,4,3,4,3,3,3,3,3,3,3,3,4,4,3,4,4,5,4}

intreg studentsIntersection <- 0

intreg studentsUnion <- 93

real jaccard_index

real jaccard_distance

integ hamming_distance <- 0

structura intrebare array[27]


fisier *inputData

inputData <- fopen("chestionar1.csv", "rt")

daca (inputData = NULL) atunci

scrie "cannot open date.csv\n"

returneaza -1

intreg index

sir de caractere line[256]

sir de caractere *p

pentru (i <- 0; i < 27; i<- i +1)

fgets(line, sizeof(line), inputData)

p <- strtok(line, ",")

index <- atoi(p) - 1

p <- strtok(NULL, ",")

strcpy(array[index].text_intrebare, p)

p <- strtok(NULL, ",")

pentru (j <- 0; j < 93; j <- j +1)

array[index].answers[j] <- atoi(p);

p <- strtok(NULL, ",")

}
// vectorul cu notele asteptate

pentru (i <- 0; i < 93; i <- i+1)

finalGrade[i] <- 5

fisier *out = fopen("date_iesire.txt", "wt")

pentru (i <- 0; i < 27; i <- i+1)

pentru (intreg j <- 0; j < 93; j <- j+1)

daca (array[i].answers[j] = 5)atunci

studentsIntersection <- studentsIntersection +1

altfel

hamming_distance <- hamming_distance +1

jaccard_index <- (real)studentsIntersection / (real)studentsUnion

jaccard_distance <- 1 - jaccard_index

scrie in fisier(out, "%d Jaccard index: %f \t Jaccard distance: %f \t Hamming distance: %d\n", i,
jaccard_index, jaccard_distance, hamming_distance)

studentsIntersection <- 0

hamming_distance <- 0

}
sfarsit

a) Pseudocod distanta Jaccard

Initializezam un vector cu note ideale (numai note de 5)

Extragem din fisier de 27 de ori (pentru ca avem 27 de intrebari) vectorul cu notele reale

Facem reuniunea celor 2 vectori (toate notele, ideale si reale)

Se face intersectia celor 2 vectori (cate node de 5 se afla in vectorul cu note reale)

Calculam indexul Jaccard ( cardinal_intersectie/cardinal_reuniune );

Calculam distanta Jaccard (1 – jaccard_index);

b) Pseudocod distanta Hemming

Se initializezeaza un vector cu note ideale (numai note de 5)

Se extrage din fisier de 27 de ori (pentru ca avem 27 de intrebari) vectorul cu notele reale

Numaram cate instante de 5 sunt in vectorul cu notele reale. Aceea va fi distanta Hemming

d) Interpretarea rezultatelor:

Distanta Hamming mare inseamna ca raspunsurile reale sunt foarte diferite fata de cele ideale, iar o
distanta Hamming mica inseamna ca raspunsurile reale sunt similare cu cele ideale.

O distanta Jaccard mai mica (index Jaccard mare) inseamna ca raspunsurile reale sunt foarte diferite fata
de cele ideale, iar o distanta Jaccard mai mare (index Jaccard mic) inseamna ca raspunsurile reale sunt
foarte similar cu cele ideale.

Observatii:

Mare parte din distanțele rezultate din rularea algoritmilor Hamming si Jaccard pentru formularea unor
statistici, observate de noi nu sunt foarte mari, în general răspunsurile studenților sunt majoritar în
concordanță cu așteptările noastre, desigur cu câteva excepții, existand diferente foarte mici de
implementare intre cei doi algoritmi.

You might also like