From 696fd6ba8b57ef39605b309816be14ef8800c4bf Mon Sep 17 00:00:00 2001 From: Felipe Domingos Date: Sun, 27 Sep 2020 15:53:48 -0300 Subject: [PATCH 1/5] Update Jogador.java --- tps/fonte/Jogador.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tps/fonte/Jogador.java b/tps/fonte/Jogador.java index 04eea9c..28d61df 100644 --- a/tps/fonte/Jogador.java +++ b/tps/fonte/Jogador.java @@ -1,7 +1,7 @@ public class Jogador { - int id; - String nome; + int id; + String nome; int altura; int peso; String universidade; From 6c08ae3c329e596af17927442b56d84b4d110adc Mon Sep 17 00:00:00 2001 From: axell-brendow Date: Thu, 1 Oct 2020 15:10:01 -0300 Subject: [PATCH 2/5] Add Jogador struct --- tps/fonte/jogador.c | 81 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 tps/fonte/jogador.c diff --git a/tps/fonte/jogador.c b/tps/fonte/jogador.c new file mode 100644 index 0000000..c3feae2 --- /dev/null +++ b/tps/fonte/jogador.c @@ -0,0 +1,81 @@ +#include +#include +#include + +#define TAM_MAX_LINHA 250 + +typedef struct { + int id; + int peso; + int altura; + char nome[70]; + char universidade[70]; + char anoNascimento[7]; + char cidadeNascimento[70]; + char estadoNascimento[70]; +} Jogador; + +/** + * Se linha = "65,Joe Graboski,201,88,,1930,," + * então + * novaLinha = "65,Joe Graboski,201,88,nao informado,1930,nao informado,nao informado" + * + * @param linha String com a linha do CSV. + * @param novaLinha String que receberá uma nova linha com os campos vazios + * preenchidos. + */ +void inserirNaoInformado(char *linha, char *novaLinha) { + int tam = strlen(linha); + for (int i = 0; i <= tam; i++, linha++) { + *novaLinha++ = *linha; + if (*linha == ',' && (*(linha + 1) == ',' || *(linha + 1) == '\0')) { + strcpy(novaLinha, "nao informado"); + novaLinha += strlen("nao informado"); + } + } +} + +/** + * @param jogador Ponteiro para o jogador a receber os dados + * @param linha Linha do CSV. Ex.: "65,Joe Graboski,201,88,,1930,," + */ +void ler(Jogador *jogador, char linha[]) { + char novaLinha[TAM_MAX_LINHA]; + inserirNaoInformado(linha, novaLinha); + + jogador->id = atoi(strtok(novaLinha, ",")); + strcpy(jogador->nome, strtok(NULL, ",")); + jogador->altura = atoi(strtok(NULL, ",")); + jogador->peso = atoi(strtok(NULL, ",")); + strcpy(jogador->universidade, strtok(NULL, ",")); + strcpy(jogador->anoNascimento, strtok(NULL, ",")); + strcpy(jogador->cidadeNascimento, strtok(NULL, ",")); + strcpy(jogador->estadoNascimento, strtok(NULL, ",")); +} + +void imprimir(Jogador *jogador) { + printf("[%d ## %s ## %d ## %d ## %s ## %s ## %s ## %s]\n", + jogador->id, + jogador->nome, + jogador->altura, + jogador->peso, + jogador->anoNascimento, + jogador->universidade, + jogador->cidadeNascimento, + jogador->estadoNascimento + ); +} + +Jogador clone(Jogador *jogador) { + Jogador retorno; + + retorno.id = jogador->id; + retorno.peso = jogador->peso; + retorno.altura = jogador->altura; + strcpy(retorno.nome, jogador->nome); + strcpy(retorno.universidade, jogador->universidade); + strcpy(retorno.cidadeNascimento, jogador->cidadeNascimento); + strcpy(retorno.estadoNascimento, jogador->estadoNascimento); + + return retorno; +} From 375d47f9054b22c0c2e1b0b65e0df01c0f9cb1f0 Mon Sep 17 00:00:00 2001 From: axell-brendow Date: Thu, 1 Oct 2020 15:18:42 -0300 Subject: [PATCH 3/5] Fix clone function --- tps/fonte/jogador.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tps/fonte/jogador.c b/tps/fonte/jogador.c index c3feae2..1d5b512 100644 --- a/tps/fonte/jogador.c +++ b/tps/fonte/jogador.c @@ -70,9 +70,10 @@ Jogador clone(Jogador *jogador) { Jogador retorno; retorno.id = jogador->id; - retorno.peso = jogador->peso; - retorno.altura = jogador->altura; strcpy(retorno.nome, jogador->nome); + retorno.altura = jogador->altura; + retorno.peso = jogador->peso; + strcpy(retorno.anoNascimento, jogador->anoNascimento); strcpy(retorno.universidade, jogador->universidade); strcpy(retorno.cidadeNascimento, jogador->cidadeNascimento); strcpy(retorno.estadoNascimento, jogador->estadoNascimento); From 961e43b5155b0588264bc96292c7c832ed23f943 Mon Sep 17 00:00:00 2001 From: axell-brendow Date: Thu, 1 Oct 2020 15:41:39 -0300 Subject: [PATCH 4/5] Remove newline from string end --- tps/fonte/jogador.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tps/fonte/jogador.c b/tps/fonte/jogador.c index 1d5b512..cd08b62 100644 --- a/tps/fonte/jogador.c +++ b/tps/fonte/jogador.c @@ -35,12 +35,23 @@ void inserirNaoInformado(char *linha, char *novaLinha) { } } +void tirarQuebraDeLinha(char linha[]) { + int tam = strlen(linha); + + if (linha[tam - 2] == '\r' && linha[tam - 1] == '\n') // Linha do Windows + linha[tam - 2] = '\0'; // Apaga a linha + + else if (linha[tam - 1] == '\r' || linha[tam - 1] == '\n') // Mac ou Linux + linha[tam - 1] = '\0'; // Apaga a linha +} + /** * @param jogador Ponteiro para o jogador a receber os dados * @param linha Linha do CSV. Ex.: "65,Joe Graboski,201,88,,1930,," */ void ler(Jogador *jogador, char linha[]) { char novaLinha[TAM_MAX_LINHA]; + tirarQuebraDeLinha(linha); inserirNaoInformado(linha, novaLinha); jogador->id = atoi(strtok(novaLinha, ",")); From 77e7d266df0819e776d914e25a58ed297405343c Mon Sep 17 00:00:00 2001 From: axell-brendow Date: Sun, 4 Oct 2020 23:24:45 -0300 Subject: [PATCH 5/5] Fix type of anoNascimento --- tps/fonte/jogador.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tps/fonte/jogador.c b/tps/fonte/jogador.c index cd08b62..f047555 100644 --- a/tps/fonte/jogador.c +++ b/tps/fonte/jogador.c @@ -10,7 +10,7 @@ typedef struct { int altura; char nome[70]; char universidade[70]; - char anoNascimento[7]; + int anoNascimento; char cidadeNascimento[70]; char estadoNascimento[70]; } Jogador; @@ -59,13 +59,13 @@ void ler(Jogador *jogador, char linha[]) { jogador->altura = atoi(strtok(NULL, ",")); jogador->peso = atoi(strtok(NULL, ",")); strcpy(jogador->universidade, strtok(NULL, ",")); - strcpy(jogador->anoNascimento, strtok(NULL, ",")); + jogador->anoNascimento = atoi(strtok(NULL, ",")); strcpy(jogador->cidadeNascimento, strtok(NULL, ",")); strcpy(jogador->estadoNascimento, strtok(NULL, ",")); } void imprimir(Jogador *jogador) { - printf("[%d ## %s ## %d ## %d ## %s ## %s ## %s ## %s]\n", + printf("[%d ## %s ## %d ## %d ## %d ## %s ## %s ## %s]\n", jogador->id, jogador->nome, jogador->altura, @@ -84,7 +84,7 @@ Jogador clone(Jogador *jogador) { strcpy(retorno.nome, jogador->nome); retorno.altura = jogador->altura; retorno.peso = jogador->peso; - strcpy(retorno.anoNascimento, jogador->anoNascimento); + retorno.anoNascimento = jogador->anoNascimento; strcpy(retorno.universidade, jogador->universidade); strcpy(retorno.cidadeNascimento, jogador->cidadeNascimento); strcpy(retorno.estadoNascimento, jogador->estadoNascimento);