Baixe o app para aproveitar ainda mais
Prévia do material em texto
CIENCIA DA COMPUTACAO INTEGRADA Diogo Alexandro Silva Oliveira – RA: T2826E4 • (A) A linha 04 deve ser corrigida da seguinte forma: for(i = 1; i < n - 1; i++) e a linha 13, do seguinte modo: v[j - 1] = chave;. • (B) A linha 04 deve ser corrigida da seguinte forma: for(i = 1; i < n - 1; i++) e a linha 07, do seguinte modo: j = i + 1;. • (C) A linha 07 deve ser corrigida da seguinte forma: j = i + 1 e a linha 08, do seguinte modo: while(j >= 0 && v[j] > chave). • (D) A linha 08 deve ser corrigida da seguinte forma: while(j >= 0 && v[j] > chave) e a linha 10, do seguinte modo: v[j + 1] = v[j]; • (E) A linha 10 deve ser corrigida da seguinte forma: v[j + 1] = v[j]; e a linha 13, do seguinte modo: v[j - 1] = chave;. Correto – (Letra D) = linha 10, que faz os deslocamentos para a esquerda e não para a direita. O correto, nesse caso, seria v[j + 1] = v[j]. Os valores maiores que chave são deslocados para a direita. A condição v[j] < chave na linha 08 está errada, pois está verificando se o valor é menor que a chave e não se é maior. Logo, o correto seria v[j] > chave. #include <stdio.h> #include <math.h> void ordena(int *v, int n) //metodo para ordernar o vetor { int i, j, chave; for(i = 1; i < n; i++) { chave = v[i]; j = i - 1; /* Move os elementos do v[0..i-1], que são maiores que a chave, para uma posição afrente da posição atual */ while(j >= 0 && v[j] > chave) { v[j + 1] = v[j]; //faz os deslocamentos para a direita. j = j - 1; } v[j+1] = chave; } } void printArray(int *v, int n) //Uma função utilitária para imprimir uma matriz de tamanho n { int i; for (i = 0; i < n; i++) printf("%d ", v[i]); printf("\n"); } int main() //função principal { int v[] = { 12, 11, 13, 5, 6 }; //valores inseridos no vetor int n = sizeof(v) / sizeof(v[0]); ordena(v, n); printArray(v, n); return 0; } • (A) SELECT Deputado.nomeDeputado, Secao.dataSecao FROM Deputado, Participacao, Secao WHERE Deputado.idDeputado=Participacao.idDeputado; • (B) SELECT Deputado.nomeDeputado, Secao.dataSecao FROM Deputado, Participacao, Secao WHERE Deputado.idDeputado = Participacao. idDeputado OR Secao.idSecao = Participacao.idSecao; • (C) SELECT Deputado.nomeDeputado, Secao.dataSecao FROM Deputado LEFT OUTER JOIN Participacao ON Deputado.idDeputado = Participacao.idDeputado LEFT OUTER JOIN Secao ON Secao.idSecao = Participacao.idSecao; • (D) SELECT Deputado.nomeDeputado, Secao.dataSecao FROM Deputado RIGHT OUTER JOIN Participacao ON Deputado.idDeputado = Participacao.idDeputado RIGHT OUTER JOIN Secao ON Secao.idSecao = Participacao.idSecao; • (E) SELECT Deputado.nomeDeputado, Secao.dataSecao FROM Deputado INNER JOIN Participacao ON Deputado.idDeputado = Participacao.idDeputado INNER JOIN Secao ON Participacao.idSecao=Secao.idSecao; Resposta correta = Letra E Para exibir os nomes dos deputados e as datas das seções que eles participaram, precisamos utilizar o INNER JOIN, pois os dados estão em tabelas distintas. Nas letras C e D não iria dar certo pois com o outer join exibiríamos mais dados do que precisamos. -- MySQL Workbench Forward Engineering CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ; USE `mydb` ; -- ----------------------------------------------------- -- Table `mydb`.`Partido` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`Partido` ( `idPartido` INT NOT NULL, `siglaPartido` VARCHAR(45) NOT NULL, `descricaoPartido` VARCHAR(45) NOT NULL, PRIMARY KEY (`idPartido`)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `mydb`.`Deputado` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`Deputado` ( `idDeputado` INT NOT NULL, `nomeDeputado` VARCHAR(60) NOT NULL, `idPartido` INT NOT NULL, PRIMARY KEY (`idDeputado`)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `mydb`.`Secao` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`Secao` ( `idSecao` INT NOT NULL, `dataSecao` DATE NOT NULL, `horaSecao` TIME NOT NULL, `decisao` VARCHAR(2000) NOT NULL, PRIMARY KEY (`idSecao`)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `mydb`.`Participacao` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mydb`.`Participacao` ( `idSecao` INT NOT NULL, `idDeputado` INT NOT NULL, PRIMARY KEY (`idSecao`, `idDeputado`), INDEX `idDeputado_idx` (`idDeputado` ASC) VISIBLE, CONSTRAINT `idSecao` FOREIGN KEY (`idSecao`) REFERENCES `mydb`.`Secao` (`idSecao`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `idDeputado` FOREIGN KEY (`idDeputado`) REFERENCES `mydb`.`Deputado` (`idDeputado`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; INSERT INTO Partido VALUES (3,'Novo','Partido Novo'); INSERT INTO Deputado VALUES (13,'Diogo',15); INSERT INTO Secao VALUES (32,'12-06-2020','02:00:00','SL'); SELECT Deputado.nomeDeputado, Secao.dataSecao FROM Deputado INNER JOIN Participacao ON Deputado.idDeputado = Participacao.idDeputado INNER JOIN Secao ON Participacao.idSecao=Secao.idSecao;
Compartilhar