Skip to content

Instantly share code, notes, and snippets.

@diogocapela
Last active October 19, 2017 15:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save diogocapela/fd4cd8a9ee327039f59a47eef897d61e to your computer and use it in GitHub Desktop.
Save diogocapela/fd4cd8a9ee327039f59a47eef897d61e to your computer and use it in GitHub Desktop.
APROG - PL03 Algoritmia

APROG - PL03 Algoritmia

Instituto Superior de Engenharia do Porto - 2017/2018
R: O algoritmo faz o factorial de um número num.
ED: res, num, x, n INTEIRO
INÍCIO
REPETE
LER(n)
ENQUANTO(n <= 0)
PARA(i = 1 ATE n PASSO 1)
res = 1
LER(num)
PARA(x = num ATE 1 PASSO -1)
res = res * x
FIMPARA
ESCREVER('O resultado é ', res)
FIMPARA
FIM
R: Tenho a certeza que o algoritmo é finito.
ED: res, num, x INTEIRO
INÍCIO
LER(num)
ENQUANTO(num > 0)
PARA(i = 0 ATE n PASSO 1)
res = 1
LER(num)
PARA(x = num ATE 1 PASSO -1)
res = res * x
FIMPARA
ESCREVER('O resultado é ', res)
FIMPARA
LER(num)
FIMENQUANTO
FIM
R: Tenho a certeza que o algoritmo é finito.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int alunos;
float nota;
int notasPositivas = 0;
int notasNegativas = 0;
double somaPositivas = 0;
double somaNegativas = 0;
double mediaPositivas;
double mediaNegativas;
double percentagemPositivas;
double percentagemNegativas;
System.out.println("Quantos alunos são no total?");
alunos = scanner.nextInt();
while(alunos <= 0) {
System.out.println("Número introduzido incorrecto. Introduza outra vez.");
alunos = scanner.nextInt();
}
for(int i = 1; i <= alunos; i++) {
System.out.println("Nota do aluno " + i + ", num total de " + alunos + " alunos.");
nota = scanner.nextInt();
if(nota >= 10) {
notasPositivas++;
somaPositivas = somaPositivas + nota;
} else {
notasNegativas++;
somaNegativas = somaNegativas + nota;
}
}
mediaPositivas = (double) somaPositivas / (double) alunos;
mediaNegativas = (double) somaNegativas / (double) alunos;
percentagemPositivas = (double) notasPositivas / (double) alunos;
percentagemNegativas = (double) notasNegativas / (double) alunos;
System.out.println("Positivas: " + notasPositivas);
System.out.println("Negativas: " + notasNegativas);
System.out.println("A percentagem de positivas é: " + percentagemPositivas);
System.out.println("A percentagem de negativas é: " + percentagemNegativas);
System.out.println("Média das Positivas: " + mediaPositivas);
System.out.println("Média das Negativas: " + mediaNegativas);
}
}
ED: numero, pares, impares, mediaPares, mediaImpares
INÍCIO
ESCREVER('Introduza um número:')
LER(numero)
SE(numero MOD 2 == 0)
pares++;
SENÃO
impares++
FIMSE
ENQUANTO(numero > 0)
ESCREVER('Introduza um número:')
LER(numero)
SE(numero MOD 2 == 0)
pares++;
SENÃO
impares++
FIMSE
FIMENQUANTO
mediaPares = pares / (pares + impares)
mediaImpares = impares / (pares + impares)
ESCREVER('Média dos números pares: ' + mediaPares)
ESCREVER('Média dos números impares: ' + mediaImpares)
FIM
ED: minimo, maximo, lista
INÍCIO
LER(minimo, maximo)
ENQUANTO(minimo >= maximo)
ESCREVER('Intervalo definido incorrecto. Por favor volte a introduzir os dados.')
LER(minimo, maximo)
FIMENQUANTO
lista = ''
PARA(i = minimo + 1; i <= maximo; i++)
SE(i MOD 5 == 0 && i MOD 2 == 0)
lista = lista + i
FIMSE
FIMPARA
FIM
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int minimo = 0;
int maximo = 0;
String lista = "";
System.out.println("Hello World!");
System.out.println("Input the maximum range:");
maximo = scanner.nextInt();
System.out.println("Input the minimum range:");
minimo = scanner.nextInt();
while(minimo >= maximo || maximo <= 0 || minimo <= 0) {
System.out.println("Wrong range, please repeat the input.");
System.out.println("Input the maximum range:");
maximo = scanner.nextInt();
System.out.println("Input the minimum range:");
minimo = scanner.nextInt();
}
for(int i = minimo + 1; i <= maximo; i++) {
if(i % 5 == 0 && i % 2 != 0) {
lista = lista + i + ",";
}
}
System.out.println("Minimum:");
System.out.println(minimo);
System.out.println("Maximum:");
System.out.println(maximo);
System.out.println("The list is:");
System.out.println(lista);
}
}
ED: produtoMaximo, produtoAcumulado, numeroMaior
INÍCIO
numeroMaior = 0;
produtoAcumulado = 1;
LER(produtoMaximo);
ENQUANTO(produtoAcumulado <= produtoMaximo)
LER(novoNumero);
ENQUANTO(novoNumero <= 0)
ESCREVER('Os número introduzidos devem ser positivos. Introduza o número outra vez.');
LER(novoNumero);
FIMENQUANTO
SE(novoNumero > numeroMaior)
numeroMaior = novoNumero;
FIMSE
produtoAcumulado = produtoAcumulado * novoNumero;
FIMENQUANTO
ESCREVER('O maior de todos os números introduzidos foi: ' + numeroMaior);
FIM
ED Global: funcionarios, totalSalarios, mediaSalarios
ED Scoped: horasExtra, salarioBase, novoSalario
INÍCIO
totalSalarios = 0
ESCREVER('Insira o número total de funcionários.')
LER(funcionarios)
ENQUNATO(funcionarios <= 0)
ESCREVER('O número de funcionários tem de ser superior a 0. Volte a inserir o número de funcionários.')
LER(funcionarios)
FIMENQUANTO
PARA(i = 1; i <= funcionarios; i++)
ESCREVER('Funcionário número ' + i + ', num total de ' + funcionarios + '.')
ESCREVER('Horas extraordinárias:')
LER(horasExtra)
ESCREVER('Salário base:')
LER(salarioBase)
totalSalarios = totalSalarios + salarioBase
novoSalario = salarioBase + (horasExtra * salarioBase * 0.02)
ESCREVER('O novo salário do funcionário ' + i + ' é: ' + novoSalario + '€.')
FIMPARA
mediaSalarios = totalSalarios / funcionarios
ESCREVER('A média de salários é de: ' + mediaSalarios + '€.')
FIM
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a;
int b;
int c;
double delta;
double root1;
double root2;
System.out.println("ax2 + bx + c = 0");
System.out.println("Input A:");
a = scanner.nextInt();
System.out.println("Input B:");
b = scanner.nextInt();
System.out.println("Input C:");
c = scanner.nextInt();
delta = Math.pow(b, 2) - (4 * a * c);
root1 = (-b + Math.sqrt(delta)) / (2 * a);
root2 = (-b - Math.sqrt(delta)) / (2 * a);
if(delta < 0) {
System.out.println("Nenhuma raiz real (delta menor que zero).");
} else if(delta == 0) {
System.out.println("Uma única raiz real: (delta igual a zero).");
System.out.println("Raiz: " + root1);
} else {
System.out.println("Duas raízes reais: (delta maior que zero).");
System.out.println("Raiz 1: " + root1);
System.out.println("Raiz 2: " + root2);
if(root1 == root2) {
System.out.println("A equação tem uma raiz dupla.");
}
}
if(a == 0) {
System.out.println("Não é equação do segundo grau.");
}
}
}
ED: n, num1, num2
INÍCIO
REPETE
LER(n)
ENQUANTO(n < 1 OU n > 20)
PARA(i = 0 ATE n / 2 PASSO 1)
num1 = i
num2 = n - i
ESCREVER(num1 + ' + ' + num2)
FIMPARA
FIM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment