From: franciscocsantos Date: Mon, 22 Feb 2016 11:15:24 +0000 (+0000) Subject: update 2015_16 X-Git-Url: http://web.ist.utl.pt/aplf/git/?a=commitdiff_plain;h=137b37688ef539d1d5984435588c59eea6a65689;p=iaed.git update 2015_16 adicionei 2 novos exercícios --- diff --git a/aula02/ex1.c b/aula02/ex1.c index f4f1e89..29ce4cb 100644 --- a/aula02/ex1.c +++ b/aula02/ex1.c @@ -3,18 +3,18 @@ int maior(int, int, int); int main() { - int a, b, c; + int a, b, c; - scanf("%d%d%d", &a, &b, &c); - printf("max: %d\n", maior(a, b, c)); + scanf("%d%d%d", &a, &b, &c); + printf("max: %d\n", maior(a, b, c)); - return 0; + return 0; } int maior(int a, int b, int c) { - if (a < b) a = b; - if (a < c) a = c; - - return a; + if (a < b) a = b; + if (a < c) a = c; + + return a; } diff --git a/aula02/ex10.c b/aula02/ex10.c new file mode 100644 index 0000000..b5d3f88 --- /dev/null +++ b/aula02/ex10.c @@ -0,0 +1,48 @@ +#include + +#define SPACE 2 + +void piramide (int N); +void escreveCaracter(char c, int n); +void escreveNumerosAsc(int a, int b); +void escreveNumerosDesc(int a, int b); + +int main() { + int n; + + do { + printf("Número: "); + scanf("%d", &n); + } while (n < 2); + + piramide(n); + + return 0; +} + +void piramide (int N) { + int i; + + for (i = 1; i <= N; i++) { + escreveCaracter(' ', (SPACE + 1)*(N - i)); + escreveNumerosAsc(1, i); + escreveNumerosDesc(i - 1, 1); + putchar('\n'); + } +} + +void escreveCaracter(char c, int n) { + while (n--) + putchar(c); +} + +void escreveNumerosAsc(int a, int b) { + while (a <= b) + printf(" %*d", SPACE, a++); +} + +void escreveNumerosDesc(int a, int b) { + while (a >= b) + printf(" %*d", SPACE, a--); +} + diff --git a/aula02/ex11.c b/aula02/ex11.c new file mode 100644 index 0000000..5218c30 --- /dev/null +++ b/aula02/ex11.c @@ -0,0 +1,30 @@ +#include + +/* 10. Partindo dos exemplos da aula teorica 03, construa um programa que consiga contar numero de letras minusculas, o numero de letras maiusculas e o numero de algarismos dos Lusiadas. */ + + + +int main () +{ + int c; + long maiusculas = 0, minusculas = 0, algarismos = 0, outros = 0, vazias = 0; + + while ((c = getchar()) != EOF) + { + if (c >= 'a' && c<='z') + maiusculas++; + else if (c >= 'A' && c<='Z') + minusculas++; + else if (c >= '0' && c<='9') + algarismos++; + else + outros++; + } + + printf("%ld minusculas\n",minusculas); + printf("%ld maiusculas\n",maiusculas); + printf("%ld algarismos\n",algarismos); + printf("%ld outros caracteres\n",outros); + + return 0; +} diff --git a/aula02/ex2.c b/aula02/ex2.c index ef598b5..d3346ec 100644 --- a/aula02/ex2.c +++ b/aula02/ex2.c @@ -3,6 +3,12 @@ float menor(float a, float b) { return (a < b) ? a : b; + /* esta linha é equivalente a + if(a < b) + return a; + else + return b; + */ } float maior(float a, float b) { @@ -12,7 +18,9 @@ float maior(float a, float b) { int main() { int n; float min = FLT_MAX, max = -FLT_MAX, x; - + /* aqui estamos a inicializar o valor min com o maior float possível e o max com o menor float possível de guardar */ + /* em alternativa, poderá inicializar estas entradas com o primeiro float lido e só depois entra no loop */ + scanf("%d", &n); while (n--) { diff --git a/aula02/ex3.c b/aula02/ex3.c index 7a4d0ca..ea3e5be 100644 --- a/aula02/ex3.c +++ b/aula02/ex3.c @@ -1,21 +1,21 @@ #include int main() { - int soma = 0, prod = 1, n1, n2; + int soma = 0, prod = 1, n1, n2; - scanf("%d%d", &n1, &n2); + scanf("%d%d", &n1, &n2); - while (n1 <= n2) { - if (n1%2) - soma += n1; - else - prod *= n1; + while (n1 <= n2) { + if (n1%2) + soma += n1; + else + prod *= n1; - n1++; - } + n1++; + } - printf("soma (impares): %d\n", soma); - printf("produto (pares): %d\n", prod); + printf("soma (impares): %d\n", soma); + printf("produto (pares): %d\n", prod); - return 0; + return 0; } diff --git a/aula02/ex4.c b/aula02/ex4.c index ec4ba49..5570474 100644 --- a/aula02/ex4.c +++ b/aula02/ex4.c @@ -3,23 +3,23 @@ float media (int N); int main() { - int N; + int N; - scanf("%d", &N); - printf("%f\n", media(N)); + scanf("%d", &N); + printf("%f\n", media(N)); - return 0; + return 0; } float media (int N) { - int i; - float sum = 0, val; + int i; + float sum = 0, val; - for (i = 0; i < N; i++) { - scanf("%f", &val); - sum += val; - } + for (i = 0; i < N; i++) { + scanf("%f", &val); + sum += val; + } - return sum/N; + return sum/N; } diff --git a/aula02/ex5.c b/aula02/ex5.c index 425a13d..b7f2492 100644 --- a/aula02/ex5.c +++ b/aula02/ex5.c @@ -3,13 +3,13 @@ #define TUNITS 60 int main() { - int time; + int time; - scanf("%d", &time); - printf("%02d:%02d:%02d\n", - time/(TUNITS*TUNITS), - (time/TUNITS)%TUNITS, - time%TUNITS); + scanf("%d", &time); + printf("%02d:%02d:%02d\n", + time/(TUNITS*TUNITS), + (time/TUNITS)%TUNITS, + time%TUNITS); - return 0; + return 0; } diff --git a/aula02/ex6.c b/aula02/ex6.c index 17ac4ae..a974975 100644 --- a/aula02/ex6.c +++ b/aula02/ex6.c @@ -1,20 +1,20 @@ #include int main() { - int n, dc = 0, ds = 0; + int n, dc = 0, ds = 0; - do { - printf("Número positivo: "); - scanf("%d", &n); - } while (n <= 0); + do { + printf("Número positivo: "); + scanf("%d", &n); + } while (n <= 0); - while (n != 0) { - ds += n%10; - n /= 10; - dc ++; - } + while (n != 0) { + ds += n%10; + n /= 10; + dc ++; + } - printf("#dig: %d, sum: %d\n", dc, ds); + printf("#dig: %d, sum: %d\n", dc, ds); - return 0; + return 0; } diff --git a/aula02/ex7.c b/aula02/ex7.c index 3704415..dc4eeb0 100644 --- a/aula02/ex7.c +++ b/aula02/ex7.c @@ -6,44 +6,44 @@ float pesoMinimo(float altura); float pesoMaximo (float altura); int main() { - float h, w; + float h, w; - printf("Altura: "); - scanf("%f", &h); - printf("Peso: "); - scanf("%f", &w); + printf("Altura: "); + scanf("%f", &h); + printf("Peso: "); + scanf("%f", &w); - escreveCategoria(imc(w, h)); + escreveCategoria(imc(w, h)); - printf("Normal: %.2f < peso < %.2f\n", - pesoMinimo(h), - pesoMaximo(h)); + printf("Normal: %.2f < peso < %.2f\n", + pesoMinimo(h), + pesoMaximo(h)); - return 0; + return 0; } float imc(float peso, float altura) { - return peso / (altura*altura); + return peso / (altura*altura); } void escreveCategoria(float imc) { - printf("Categoria (IMC %f): ", imc); + printf("Categoria (IMC %f): ", imc); - if (imc < 19) printf("Magro"); - else if (imc <= 25) printf("Normal"); - else if (imc <= 30) printf("Excesso de peso"); - else if (imc <= 40) printf("Obeso"); - else printf("Obesidade Mórbida"); + if (imc < 19) printf("Magro"); + else if (imc <= 25) printf("Normal"); + else if (imc <= 30) printf("Excesso de peso"); + else if (imc <= 40) printf("Obeso"); + else printf("Obesidade Mórbida"); - printf("\n"); + printf("\n"); } float pesoMinimo(float altura) { - return 19*altura*altura; + return 19*altura*altura; } float pesoMaximo (float altura) { - return 25*altura*altura; + return 25*altura*altura; } diff --git a/aula02/ex8.c b/aula02/ex8.c index 2583d6a..47374c0 100644 --- a/aula02/ex8.c +++ b/aula02/ex8.c @@ -1,15 +1,35 @@ #include -int main() { - int n, i, j; +int insurance(int current, int age, int nAcc); - scanf("%d", &n); - for (i = 1; i <= n; i++) { - for (j = 0; j < n; j++) - printf(" %3d", i + j); - printf("\n"); - } +int main() +{ + /* ler o valor actual, a idade e o número de acidentes */ - return 0; +} + +int insurance(int current, int age, int nAcc) +{ + if(age < 25) + { /* confirme se precisamos mesmo destes parentesis curvos... */ + if(nAcc == 0) return 0.85 * current; + else if(nAcc == 1) return 1.05 * current; + else if(nAcc <= 4) return 1.5 * current; + else + { + printf("REFUSED"); + return 0; + } + } + else + { + if(nAcc == 0) return 0.8 * current; + else if(nAcc == 1) return current; + else if(nAcc <= 4) return 1.3 * current; + else { + printf("REFUSED"); + return 0; + } + } } diff --git a/aula02/ex9.c b/aula02/ex9.c index 9be562e..96ff2ba 100644 --- a/aula02/ex9.c +++ b/aula02/ex9.c @@ -1,48 +1,15 @@ #include -#define SPACE 2 - -void piramide (int N); -void escreveCaracter(char c, int n); -void escreveNumerosAsc(int a, int b); -void escreveNumerosDesc(int a, int b); - int main() { - int n; + int n, i, j; - do { - printf("Número: "); scanf("%d", &n); - } while (n < 2); - - piramide(n); - - return 0; -} - -void piramide (int N) { - int i; - for (i = 1; i <= N; i++) { - escreveCaracter(' ', (SPACE + 1)*(N - i)); - escreveNumerosAsc(1, i); - escreveNumerosDesc(i - 1, 1); - putchar('\n'); + for (i = 1; i <= n; i++) { + for (j = 0; j < n; j++) + printf(" %3d", i + j); + printf("\n"); } -} - -void escreveCaracter(char c, int n) { - while (n--) - putchar(c); -} -void escreveNumerosAsc(int a, int b) { - while (a <= b) - printf(" %*d", SPACE, a++); + return 0; } - -void escreveNumerosDesc(int a, int b) { - while (a >= b) - printf(" %*d", SPACE, a--); -} -