UFABC - MCTA028-15 - Programação Estruturada
Aula de Revisão 01

Terceiro Quadrimestre de 2018
Professor: Emilio Francesquini
E-mail: e.francesquini@ufabc.edu.br


O código abaixo é a transcrição o código escrito na aula de revisão para a Prova 01.

#include <stdio.h>

int multiplicaIter (int a, int b) {
    int soma = 0;
    int i;
    int maior = (a > b) ? a : b;
    int menor = (a > b) ? b : a;
    for(i = 0; i < menor; i++)
        soma += maior;
    return soma;
}

/* Tente alterar a função abaixo para
   incluir a otimização da função acima */
int multiplicaRec (int a, int b) {
    if ((a == 0) || (b == 0))
        return 0;
    if (b == 1)
        return a;
    return a + multiplicaRec (a, b-1);
}

int busca (int v[], int n, int e) {
    int i;
    for (i = 0; i < n; i++) {
        if (v[i] == e)
            return i;
    }
    /* Outro valor válido seria n, pq? */
    return -1;
}

int buscaRec (int v[], int n, int e) {
    if (n == 0)
        return -1;
    if (v[n - 1] == e) {
        return n - 1;
    }
    return buscaRec (v, n - 1, e);
}

/* n > 0 */
int maximo (int v[], int n) {
    int maior, ultimo;
    if (n == 1)
        return v[n - 1];
    maior = maximo (v, n - 1);
    ultimo = v[n - 1];
    return ultimo > maior ? ultimo : maior;
}

int somaVetor (int v[], int n) {
    int atual, soma;
    if (n == 0)
        return 0;
    if (n == 1)
        return v[n - 1];
    atual = v[n - 1];
    soma = somaVetor (v, n - 1);
    return atual + soma;
}

int tamanhoString (char str[]) {
    int i;
    /* Note que a solução abaixo ainda
       conta '\n'. Dependendo do caso pode
       não ser o desejado */
    for (i = 0; str[i] != '\0'; i++);
    return i;
}

/* Bombas estão marcadas com -1 */
void preencheMatriz(int m[100][100], int l, int c){
    int i, j, nbombas;
    for (i = 0; i < l; i++) {
        for (j = 0; j < c; j++) {
            if (m[i][j] != -1) {
                nbombas = 0;
                if (j > 0 && m[i][j - 1] == -1)
                    nbombas++;
                if (j < c - 1 && m[i][j + 1] == -1)
                    nbombas++;
                if (i > 0 && m[i - 1][j] == -1)
                    nbombas++;
                if (i < l - 1 && m[i + 1][j] == -1)
                    nbombas++;
                m[i][j] = nbombas;
            }
        }
    }
}

Author: Emilio Francesquini

Created: 2018-10-24 Wed 14:58