diff --git a/tps/gabaritos/tp02/TP02Q01 - Classe/Q01.java b/tps/gabaritos/tp02/TP02Q01 - Classe/Q01.java deleted file mode 100644 index f1ece5a..0000000 --- a/tps/gabaritos/tp02/TP02Q01 - Classe/Q01.java +++ /dev/null @@ -1,192 +0,0 @@ -import java.util.ArrayList; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.FileInputStream; -import java.io.IOException; - -/** - * @author Bernardo Marques Fernandes - 774119 - */ - -class SWCharacter { - private String name; - private Integer height; - private Double mass; - private String hairColor; - private String skinColor; - private String eyeColor; - private String birthYear; - private String gender; - private String homeworld; - - private Integer parseIndex; - - public SWCharacter() { - this.name = null; - this.height = null; - this.mass = null; - this.hairColor = null; - this.skinColor = null; - this.eyeColor = null; - this.birthYear = null; - this.gender = null; - this.homeworld = null; - this.parseIndex = null; - } - - public SWCharacter(String path) throws IOException { - this.parseIndex = 2; - BufferedReader f = new BufferedReader(new InputStreamReader(new FileInputStream(path))); - String json = f.readLine(); - - this.name = this.jsonSubstring(json, "name"); - String height = this.jsonSubstring(json, "height"); - String mass = this.jsonSubstring(json, "mass"); - this.height = height.equals("unknown") ? 0 : Integer.parseInt(height); - this.mass = mass.equals("unknown") ? 0 : Double.parseDouble(mass.replace(",", "")); - this.hairColor = this.jsonSubstring(json, "hair_color"); - this.skinColor = this.jsonSubstring(json, "skin_color"); - this.eyeColor = this.jsonSubstring(json, "eye_color"); - this.birthYear = this.jsonSubstring(json, "birth_year"); - this.gender = this.jsonSubstring(json, "gender"); - this.homeworld = this.jsonSubstring(json, "homeworld"); - - f.close(); - } - - private String jsonSubstring(String json, String key) { - int start = this.parseIndex + key.length() + 4; - this.parseIndex = start; - while(json.charAt(this.parseIndex) != '\'') this.parseIndex++; - this.parseIndex += 4; - return json.substring(start, this.parseIndex - 4); - } - - public SWCharacter clone() { - SWCharacter clone = new SWCharacter(); - - clone.name = this.name; - clone.height = this.height; - clone.mass = this.mass; - clone.hairColor = this.hairColor; - clone.skinColor = this.skinColor; - clone.eyeColor = this.eyeColor; - clone.birthYear = this.birthYear; - clone.gender = this.gender; - clone.homeworld = this.homeworld; - - return clone; - } - - public String toString() { - String str = " ## "; - String stringMass = this.mass.toString(); - - if(this.mass.intValue() == this.mass) - stringMass = "" + this.mass.intValue(); - - str += this.name + " ## "; - str += this.height + " ## "; - str += stringMass + " ## "; - str += this.hairColor + " ## "; - str += this.skinColor + " ## "; - str += this.eyeColor + " ## "; - str += this.birthYear + " ## "; - str += this.gender + " ## "; - str += this.homeworld + " ## "; - - return str; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public Integer getHeight() { - return height; - } - - public void setHeight(Integer height) { - this.height = height; - } - - public Double getMass() { - return mass; - } - - public void setMass(Double mass) { - this.mass = mass; - } - - public String getHairColor() { - return hairColor; - } - - public void setHairColor(String hairColor) { - this.hairColor = hairColor; - } - - public String getSkinColor() { - return skinColor; - } - - public void setSkinColor(String skinColor) { - this.skinColor = skinColor; - } - - public String getEyeColor() { - return eyeColor; - } - - public void setEyeColor(String eyeColor) { - this.eyeColor = eyeColor; - } - - public String getBirthYear() { - return birthYear; - } - - public void setBirthYear(String birthYear) { - this.birthYear = birthYear; - } - - public String getGender() { - return gender; - } - - public void setGender(String gender) { - this.gender = gender; - } - - public String getHomeworld() { - return homeworld; - } - - public void setHomeworld(String homeworld) { - this.homeworld = homeworld; - } -} - -public class Q01 { - public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - - public static void main(String[] args) { - ArrayList array = new ArrayList<>(); - String str = new String(); - - try { - while(!(str = br.readLine()).equals("FIM")) - array.add(new SWCharacter(str)); - } catch(IOException e) { - System.out.println("Oporra"); - } - - for(SWCharacter c: array) { - System.out.println(c); - } - } -} diff --git a/tps/gabaritos/tp02/TP02Q02 - Classe em C/Q02.c b/tps/gabaritos/tp02/TP02Q02 - Classe em C/Q02.c deleted file mode 100644 index 7eada1f..0000000 --- a/tps/gabaritos/tp02/TP02Q02 - Classe em C/Q02.c +++ /dev/null @@ -1,279 +0,0 @@ -#include -#include - -/** - * @author Bernardo Marques Fernandes - 774119 - */ - -// ==================================== Definitions ================================== // - -#define N_JSONS 86 - -typedef struct SWCharacter_s SWCharacter; - -// ==================================== Prototypes ================================== // - -size_t str_len(const char* const str); -short str_equals(const char* const str, const char* const other); -char* str_substring(const char* const str, const size_t start, const size_t end); -char* str_clone(const char* const str); -void str_remove_all(char* const str, const char c); -void file_to_string(const char* const path, char* const str); -char* json_substring(const char* const str, const char* const key, size_t* const index); -int parse_int(const char* const str); -double parse_double(const char* str); -short isFim(const char* const str); - -SWCharacter SWCharacter_new(); -SWCharacter SWCharacter_from_file(const char* const path); -SWCharacter swc_clone(const SWCharacter* const self); -void swc_print(const SWCharacter* const self); -void swc_free(SWCharacter* const self, const size_t len); - -// ==================================== Utils ================================== // - -size_t str_len(const char* const str) { - size_t len = 0; - - while(str[len]) - len++; - - return len; -} - -short str_equals(const char* const str, const char* const other) { - size_t i = 0; - short equals = 1; - - while(equals && str[i] && other[i]) { - equals = str[i] == other[i]; - i++; - } - - return equals && !(str[i] || other[i]); -} - -char* str_substring(const char* const str, const size_t start, const size_t end) { - size_t i = 0; - char* substr = (char*)malloc((end - start + 1) * sizeof(char)); - - while(i < end - start) { - substr[i] = str[start + i]; - substr[++i] = '\0'; - } - - return substr; -} - -char* str_clone(const char* const str) { - size_t len = str_len(str) + 1; - char* copy = (char*)malloc(len * sizeof(char)); - for(size_t i = 0; i < len; i++) copy[i] = str[i]; - return copy; -} - -void str_remove_all(char* const str, const char c) { - size_t len = str_len(str); - size_t i = 0; - - while(i < len && str[i] != c) i++; - - for(size_t j = i; j < len; i++, j++) { - if(str[i] == c) j++; - str[i] = str[j]; - } - - str[i] = '\0'; -} - -void file_to_string(const char* const path, char* const str) { - FILE* f = fopen(path, "r"); - fscanf(f, " %1000[^\n]", str); - fclose(f); -} - -char* json_substring(const char* const str, const char* const key, size_t* const index) { - size_t start = *index + str_len(key) + 4; - *index = start; - while(str[++*index] != '\''); - *index += 4; - return str_substring(str, start, *index - 4); -} - -int parse_int(const char* const str) { - int a = 0; - int b = 1; - - for(int i = str_len(str) - 1; i >= 0; i--, b *= 10) - a += (str[i] - 48) * b; - - return a; -} - -double parse_double(const char* str) { - double value = 0; - int dot = 0; - double scale = 1; - int negative = 0; - - if(*str == '-'){ - str++; - negative = 1; - } - - while(*str) { - if(dot) { - scale = scale / 10; - value = value + (*str - 48) * scale; - } else { - if(*str == '.') dot++; - else value = value * 10.0 + (*str - 48); - } - - str++; - } - - return negative ? -value : value; -} - -short isFim(const char* const str) { - return str_equals(str, "FIM"); -} - -// ==================================== Structs ================================== // - -struct SWCharacter_s { - char* name; - int height; - double mass; - char* hair_color; - char* skin_color; - char* eye_color; - char* birth_year; - char* gender; - char* homeworld; -}; - -// ==================================== Constructors ================================== // - -SWCharacter SWCharacter_new() { - SWCharacter self; - - self.name = NULL; - self.height = 0; - self.mass = 0; - self.hair_color = NULL; - self.skin_color = NULL; - self.eye_color = NULL; - self.birth_year = NULL; - self.gender = NULL; - self.homeworld = NULL; - - return self; -} - -SWCharacter SWCharacter_from_file(const char* const path) { - char* json = (char*)malloc(1000 * sizeof(char)); - SWCharacter self; - char* str = NULL; - size_t index = 2; - - file_to_string(path, json); - - self.name = json_substring(json, "name", &index); - - str = json_substring(json, "height", &index); - self.height = str_equals(str, "unknown") ? 0 : parse_int(str); - free(str); - - str = json_substring(json, "mass", &index); - str_remove_all(str, ','); - self.mass = str_equals(str, "unknown") ? 0 : parse_double(str); - free(str); - - self.hair_color = json_substring(json, "hair_color", &index); - self.skin_color = json_substring(json, "skin_color", &index); - self.eye_color = json_substring(json, "eye_color", &index); - self.birth_year = json_substring(json, "birth_year", &index); - self.gender = json_substring(json, "gender", &index); - self.homeworld = json_substring(json, "homeworld", &index); - - free(json); - - return self; -} - -// ==================================== SWCharacter Methods ================================== // - -SWCharacter swc_clone(const SWCharacter* const self) { - SWCharacter other; - - other.name = str_clone(self->name); - other.height = self->height; - other.mass = self->mass; - other.hair_color = str_clone(self->hair_color); - other.skin_color = str_clone(self->skin_color); - other.eye_color = str_clone(self->eye_color); - other.birth_year = str_clone(self->birth_year); - other.gender = str_clone(self->gender); - other.homeworld = str_clone(self->homeworld); - - return other; -} - -void swc_print(const SWCharacter* const self) { - printf(" ## "); - printf("%s ## ", self->name); - printf("%d ## ", self->height); - - if(self->mass == (int)self->mass) { - printf("%d ## ", (int)self->mass); - } else { - printf("%.1lf ## ", self->mass); - } - - printf("%s ## ", self->hair_color); - printf("%s ## ", self->skin_color); - printf("%s ## ", self->eye_color); - printf("%s ## ", self->birth_year); - printf("%s ## ", self->gender); - printf("%s ## ", self->homeworld); - printf("\n"); -} - -void swc_free(SWCharacter* const self, const size_t len) { - if(self) { - for(size_t i = 0; i < len; i++) { - if(self[i].name) free(self[i].name); - if(self[i].hair_color) free(self[i].hair_color); - if(self[i].skin_color) free(self[i].skin_color); - if(self[i].eye_color) free(self[i].eye_color); - if(self[i].gender) free(self[i].gender); - if(self[i].birth_year) free(self[i].birth_year); - if(self[i].homeworld) free(self[i].homeworld); - } - free(self); - } -} - -// ==================================== Main ================================== // - -int main() { - SWCharacter* array = (SWCharacter*)malloc(N_JSONS * sizeof(SWCharacter)); - size_t len = 0; - char* str = (char*)malloc(100 * sizeof(char)); - scanf(" %100[^\n]", str); - - while(!isFim(str)) { - array[len++] = SWCharacter_from_file(str); - scanf(" %100[^\n]", str); - } - - for(size_t i = 0; i < len; i++) { - swc_print(&array[i]); - } - - swc_free(array, len); - free(str); - return 0; -}