Вы находитесь на странице: 1из 14

UNIDADE CURRICULAR: Programação

CÓDIGO: 21090

DOCENTE: José Coelho

A preencher pelo estudante

NOME: Sara Cristina Guedes de Novais de Lima

N.º DE ESTUDANTE: 1701162

CURSO: Informática

DATA DE ENTREGA: 2018/01/16

Página 1 de 14
TRABALHO / RESOLUÇÃO:

TRABALHO / RESOLUÇÃO:

Alínea A

Na alínea A, optei por fazer a alocação dinâmica, para isso criar uma declaração
de variáveis do tipo e passagem de estruturas para funções. Verifiquei se a string
introduzida não está vazia, e se não estiver realizar a funcão que coloca as
strings por ordem contrária à introduzida e adiciona à Lista. É por fim imprimida
a Lista.

Alínea B

Esta alínea não foi efetuada na sua totalidade.

O que consegui fazer: Verificar se o primeiro caráter é letra e caso seja adicionar
à Lista, esta que agora coloca as strings por ordem alfabética. Por fim imprimir a
Lista

Não consegui fazer: Após a leitura de uma string com o primeiro caráter letra,
efetuar a contagem de quantas linhas existem que começam com o primeiro
caráter nº até chegar a uma string com o primeiro caráter letra. Somar as linhas
e transformar em string. Unir as duas strings (ex: Produto A #2) e adicionar à
lista por ordem alfabética.

Nesta alínea e na seguinte não efectuei os test case devido a não ter conseguido
concluir o código (no HR também não passou nos test case). Iria aproveitar os
test case da alinea A, adicionando datas e preços/valores para que consegui-se
depois aproveitar também para todas as alíenas seguintes.

Alínea C

Página 2 de 14
Após a alínea B efetuada, retirar a contagem das linhas das strings das datas,
enviar estas para a função que organiza as strings. Organizando por strings
começadas por letra e dentro destas organizar as datas.

Alínea D---

Não foi efectuada esta alínea.

Página 3 de 14
Anexos

TEST CASES

Alínea A

Açúcar Produtos:
Sal
Arroz - Arroz;
Feijão - Açúcar;
Farinha
- Café;
Macarrão
Café - Carnes;
Leite - Farinha;
Óleo
Temperos - Feijão;
Test Case 1 Molho de tomate - Fermento;
Queijo ralado
- Leite;
Ovos
Fermento - Macarrão;
Pães - Molho de tomate;
Carnes
- Ovos;
- Pães;
- Queijo ralado;
- Sal;

Página 4 de 14
- Temperos;

Reinado de D. Afonso V Produtos:


Reinado de D. Manuel I
Reinado de D. João III - Reinado de D. Afonso V;
Reinado de D. Sebastião - Reinado de D. José I;
Reinado de D. João V
- Reinado de D. João III;
Reinado de D. José I
Test Case 2 - Reinado de D. João V;
- Reinado de D. Manuel I;
- Reinado de D. Sebastião;

México Produtos:
Cuba
Menorca - Cuba;
Las Palmas - Las Palmas;
Test Case 3 - Menorca;
- México;

Página 5 de 14
stdlib.h Produtos:
atoi
atof - atof;
atol - atoi;
itoa
Test Case 4 - atol;
- itoa;
- stdlib.h;

21002 Álgebra Linear Produtos:


21090 Introdução à Programação
21110 Sistemas Multimédia - 21010 Arquitectura Informática;
21157 Cálculo para Informática - 21157 Cálculo para Informática;
21010 Arquitectura Informática
Test Case 5 - 21110 Sistemas Multimédia;
- 21090 Introdução à Programação;
- 21002 Álgebra Linear;

Hotot Produtos:
Castor Rex
Test Case 6 Leão - Tan;
Belier - Gigante de Flandres;
Angorá inglês
- Coelho toy ou anão;
Coelho toy ou anão

Página 6 de 14
Gigante de Flandres - Angorá inglês;
Tan - Belier;
- Leão;
- Castor Rex;
- Hotot;

Koenigsegg CCXR Trevita Produtos:


Lamborghini Veneno
W Motors Lykan Hypersport - Pagani Huayra BC;
Bugatti Veyron por Mansory Vivere - Ferrari Sergio;
Koenigsegg One
- Koenigsegg One;
Ferrari Sergio
Test Case 7 Pagani Huayra BC - Bugatti Veyron por Mansory Vivere;
- W Motors Lykan Hypersport;
- Lamborghini Veneno;
- Koenigsegg CCXR Trevita;

League of Legends Produtos:


Hearthstone: Heroes of Warcraft
Test Case 8 Minecraft - World of Warcraft;
Counter-Strike: Global Offensive - Counter-Strike: Global Offensive;
- Minecraft;

Página 7 de 14
World of Warcraft - Hearthstone: Heroes of Warcraft;
- League of Legends;

Cristiano Ronaldo Produtos:


Messi
Neymar - Neymar;

Test Case 9 - Messi;


- Cristiano Ronaldo;

Liliane Bettencourt Produtos:


Alice Walton
Jacqueline Mars - Susanne Klatten ;
Maria Franca Fissolo - Maria Franca Fissolo ;
Susanne Klatten
Test Case 10 - Jacqueline Mars;
- Alice Walton;
- Liliane Bettencourt;

Página 8 de 14
CÓDIGOS

Nota: Os códigos aqui colocados são iguais ao do hackerrank (estes não têm os #include, unsigned,etc)

Alínea A

#define MAXSTR 255

typedef struct sProdutos

{ char *nomes;

struct sProdutos *Prox;

}Produtos;

/***********adicionar novo produto na pilha**********/

Produtos *Adic(Produtos *lista, char *NOME)

Produtos *Tmp = (Produtos*) malloc(sizeof(Produtos));

if (Tmp != NULL)

Tmp->nomes = (char *) malloc(strlen(NOME) + 1);

strcpy(Tmp->nomes, NOME);

Tmp->Prox = lista;

return Tmp;

/********************imprimir**********************/

void Print(Produtos *lista)

Página 9 de 14
while(lista != NULL)

printf("- %s;\n",lista->nomes);

lista = lista->Prox;

main()

char str[MAXSTR];

Produtos *lista=NULL;

while(fgets(str,MAXSTR,stdin) != NULL)

strtok(str,"\n");

lista = Adic(lista,str);

printf("Produtos: \n");

Print(lista);

Alínea B e C

#define MAXSTR 255

struct Produtos {

Página 10 de 14
char *str;

struct Produtos *Prox;

};

struct Produtos *insert(char *data, struct Produtos *list)

struct Produtos *p;

struct Produtos *q;

p = (struct Produtos *)malloc(sizeof(struct Produtos));

p->str = strdup(data);

if(list == NULL || strcmp(list->str, data) > 0)

p->Prox = list;

return p;

} else

q = list;

while(q->Prox != NULL && strcmp(q->Prox->str, data) < 0)

q = q->Prox;

Página 11 de 14
p->Prox = q->Prox;

q->Prox = p;

return list;

void Apag(struct Produtos *list) {

struct Produtos *p;

while(list != NULL) {

p = list->Prox;

free(list);

list = p;

void Print(struct Produtos *list) {

struct Produtos *p;

for(p = list; p != NULL; p = p->Prox)

printf("- %s;\n", p->str);

int main()

char line[MAXSTR];

struct lnode *list;

Página 12 de 14
int contar=0;

/*char nomes[MAXSTR];

char preco[MAXSTR];

char tamanho[MAXSTR];*/

printf("Produtos:\n");

list = NULL;

while((fgets(line, MAXSTR, stdin)) != NULL)

if ((line[0] >= 'a' && line[0] <= 'z') || (line[0] >= 'A' && line[0] <= 'Z'))

strtok(line,"\n");

list = insert(line, list);

/* else if (line[1] >= '0' && line[1] <= '9')

{ contar++;

sprintf(line,"%d",contar);*/

//unir as duas string e insert (line #%d;

// list = insert(line, list);

Print(list);

Apag(list);

return 0;

Página 13 de 14
Página 14 de 14

Вам также может понравиться