]> web.ist.utl.pt Git - iaed.git/commitdiff
update 2015_16
authorfranciscocsantos <xsantos@gmail.com>
Mon, 22 Feb 2016 11:15:24 +0000 (11:15 +0000)
committerfranciscocsantos <xsantos@gmail.com>
Mon, 22 Feb 2016 11:15:24 +0000 (11:15 +0000)
adicionei 2 novos exercícios

aula02/ex1.c
aula02/ex10.c [new file with mode: 0644]
aula02/ex11.c [new file with mode: 0644]
aula02/ex2.c
aula02/ex3.c
aula02/ex4.c
aula02/ex5.c
aula02/ex6.c
aula02/ex7.c
aula02/ex8.c
aula02/ex9.c

index f4f1e8977cd6dabd39d51519088e9f6df3a58128..29ce4cbd16403b20378edfe81dc8e934727fd5b7 100644 (file)
@@ -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 (file)
index 0000000..b5d3f88
--- /dev/null
@@ -0,0 +1,48 @@
+#include <stdio.h>
+
+#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 (file)
index 0000000..5218c30
--- /dev/null
@@ -0,0 +1,30 @@
+#include <stdio.h>
+/* 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;
+}
index ef598b5fa25edea937ffabc16378844150b13e50..d3346ecb0994b3a039c411ad530f57f441bd6d09 100644 (file)
@@ -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--) {
index 7a4d0caf860631a397ec90bcce0497a3a9bd98e5..ea3e5be3cd6a7409bbb8780882cf58205fbb4ddb 100644 (file)
@@ -1,21 +1,21 @@
 #include <stdio.h>
 
 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;
 }
index ec4ba49358a956ac6fb558e05b1626af5a4baf2d..557047478041d928cdaa8082cd5e6792e2f1349f 100644 (file)
@@ -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;
 }
 
index 425a13dae3ae92a10635f2a33085f56e0aa4545f..b7f2492838e2f9e1a67618aff5931c7da6922de6 100644 (file)
@@ -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;
 }
index 17ac4aeeb8a61d14883c32dad9f6441ab2cf7523..a97497597aa82d94ab30c20f167da3e1da00fe91 100644 (file)
@@ -1,20 +1,20 @@
 #include <stdio.h>
 
 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;
 }
index 3704415659e374ef48e70ca4ec3a78faed5a1b57..dc4eeb033c2f9de6eb3c67c34bbe1e699bcd264b 100644 (file)
@@ -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;
 }
 
index 2583d6acfa7f2be2bbffcbf1b5c77212180c3450..47374c09cecfdf31a7a1f8feb0c6338a118eaf0a 100644 (file)
@@ -1,15 +1,35 @@
 #include <stdio.h>
 
-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;
+               }       
+    }
 }
index 9be562e6ec9ddc7e05f2a9163bce0827ea265895..96ff2ba38c0d250154999a38c081d0e8318fe90d 100644 (file)
@@ -1,48 +1,15 @@
 #include <stdio.h>
 
-#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--);
-}
-