Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação de Computadores Prof. Eduardo Chaves Faria Simulação da 3a Prova 1ª Questão O programa troca valores entre diferentes posições de um vetor, havendo sobreposição de valores. EXEMPLO: Para o número de matrícula 2012456789 o vetor A será preenchido conforme mostrado abaixo: 4 5 6 7 8 9 O valor da variável i varia de 6 até 2 (interrompe quando i = 1), e calcula A[i] ← A[7−i] Então, para cada valor de i é feita uma atribuição de valor entre diferentes posições, a saber: i A[i] ���� A[7-i] 6 A[6] ← A[1] 5 A[5] ← A[2] 4 A[4] ← A[3] 3 A[3] ← A[4] 2 A[2] ← A[5] A partir deste ponto as seguintes operações são realizadas: 4 5 6 7 8 9 4 5 6 7 8 4 4 5 6 7 5 4 4 5 6 6 5 4 4 5 6 6 5 4 4 5 6 6 5 4 Resultado final � A partir desta operação os valores não se alteram porque são os mesmos. SOLUÇÃO 2a Questão { Intercala dois conjuntos ordenados de 20 números } subrotina Intercala( A, B, C ) declare A, B[1:20] { entrada: conjuntos ordenados para intercalação } C[1:40] { saída: conjunto ordenado resultante da intercalação de A e B } numérico declare i { índice para o vetor A } j { índice para o vetor B } k { índice para o vetor C} numérico i ← 1 j ← 1 k ← 0 repita se i > 20 ou j > 20 então interrompa fim se k ← k + 1 se A[i] < B[j] então C[k] ← A[i] i ← i + 1 senão C[k] ← B[j] j ← j + 1 fim se fim repita se i ≤ 20 então Descarrega( i, A, k, C ) { copia resto dos elementos de A para C } senão Descarrega( j, B, k, C ) { copia resto dos elementos de B para C } fim se escreva C[1], C[2] ... C[40] fim subrotina { Copia o restante dos elementos de um dos conjuntos } subrotina Descarrega( p, X, k, C ) declare p { entrada: apontador para o próximo elemento de X a ser copiado } k { entrada/saída: apontador para o último elemento intercalado em C } i { apontador para percorrer elementos em X } numérico declare X[1:20] { entrada: conjunto com resto de elementos a serem copiados p/ C } C [1:40] { entrada/saída: conjunto ordenado resultante da intercalação} numérico i ← p repita se i > 20 então interrompa fim se k ← k + 1 C[k] ← X[i] i ← i + 1 fim repita fim subrotina 3ª Questão { Determina os pontos de sela de uma matriz quadrada fornecida pelo usuário } Algoritmo Defina o tipo das variáveis leia n leia A[1,1] ... A[n,n] i ← 1 repita se i > n então interrompa fim se Descubra qual a coluna da linha i que possui o maior valor Verifique se este valor é também o maior dentre todos da coluna { é um ponto de sela } se PontoSela então escreva i, k, Valor { escreve a posição na matriz e valor do ponto de sela } fim se i ← i + 1 fim repita fim algoritmo ref : Descubra qual a coluna da linha i que possui o maior valor j ← 1 Valor ← 0 repita { a linha i estará fixa, e j percorre as colunas } se j > n então interrompa fim se se A[i,j] > Valor então Valor ← A[i,j] k ← j { salva o índice da coluna onde está o maior valor } fim se j ← j + 1 fim repita fim ref ref: Verifique se este valor é também o maior dentre todos da coluna j ← 1 { Atenção: j agora é linha } PontoSela ← verdadeiro Repita { a coluna k estará fixa, e j percorre as linhas } se j > n então interrompa fim se se A[ j, k] > Valor então PontoSela ← falso { o maior valor da linha i NÃO é ponto de sela } fim se j ← j + 1 fim repita fim ref ref: Defina o tipo das variáveis declare n, { ordem da matriz } i, j, k, { contadores } Valor { usada para salvar maior elemento da linha } numérico declare A[1:50,1:50] { matriz de valores fornecida pelo usuário } numérico declare PontoSela { sinaliza se encontrou um Ponto de Sela } lógico fim ref
Compartilhar