Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Desafios em Algoritmos e Programação Computacional: Exercícios para Engenharia Civil e Pro, Exercícios de Algoritmos e Programação

Lista de exercicios em algoritmos e programação computacional

Tipologia: Exercícios

2019

Compartilhado em 04/12/2019

higor-gustavo-5
higor-gustavo-5 🇧🇷

13 documentos

1 / 7

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
UNIVERSIDADE FEDERAL DE PERNAMBUCO
CENTRO ACADÊMICO DO AGRESTE
NÚCLEO DE TECNOLOGIA
CURSO DE ENGENHARIA CIVIL
CURSO DE ENGENHARIA DE PRODUÇÃO
DISCIPLINA: Algoritmos e Programação de Computadores
DOCENTE: Michele Mara de Araújo Espíndula Lima
Lista de Exercícios 02
QUESTÕES
1. Escreva a saída produzida pela execução do programa abaixo:
#include <stdio.h>
int x, y;
void a(int x, int y) {
printf ("a: %d %d\n", x, y);
}
void b(int y) {
x -= y;
printf ("b: %d %d\n", x, y);
}
void c(void) {
int y =2;
x = 7;
printf ("c: %d %d\n", x, y);
}
void d(void) {
int x = 5;
printf ("d: %d %d\n", x, y);
}
void e(int x) {
y += 7;
printf ("e: %d %d\n", x, y);
}
void main (void) {
int x = 3;
y = 1;
c();
a(y,2);
e(8);
d();
b(x);
e(x+2);
}
2. Faça um programa que leia um número N do teclado e depois leia N números e coloque-os
num vetor, (este vetor pode conter no máximo 100 elementos). Faça uma verificação no seu
programa para que o usuário não digite um valor inválido para N. Após terminar a leitura,
apresente a seguinte lista de opções para o usuário:
1) Impressão dos valores lidos na mesma ordem em que foram digitados;
2) Impressão dos valores na ordem inversa de digitação;
3) Impressão do menor e o maior número do vetor;
4) Impressão da média dos valores e de quantos números estão acima da média e quantos
estão abaixo da média;
5) Encerrar o programa.
3. Escreva uma função que, dado um polinômio na forma vetorial um número real x, calcule f(x)
(o valor do polinômio para aquele valor de x). Quais são os parâmetros e o valor de retorno
desta função?
4. Faça uma rotina que recebe 2 vetores de 20 elementos inteiros e que retorne, um outro vetor
de 40 elementos contendo, nas posições pares os valores do primeiro e nas posições impares
os valores do segundo.
5. Faça um programa que preencha dois vetores A e B, com 10 posições cada um. e depois
apresente a seguinte lista de opções para o usuário:
a) Imprime a união de A com B;
b) Imprime a intersecção entre A e B.
pf3
pf4
pf5

Pré-visualização parcial do texto

Baixe Desafios em Algoritmos e Programação Computacional: Exercícios para Engenharia Civil e Pro e outras Exercícios em PDF para Algoritmos e Programação, somente na Docsity!

CENTRO ACADÊMICO DO AGRESTE

NÚCLEO DE TECNOLOGIA

CURSO DE ENGENHARIA CIVIL

CURSO DE ENGENHARIA DE PRODUÇÃO

DISCIPLINA: Algoritmos e Programação de Computadores DOCENTE: Michele Mara de Araújo Espíndula Lima Lista de Exercícios 02 QUESTÕES

  1. Escreva a saída produzida pela execução do programa abaixo: #include <stdio.h> int x, y; void a(int x, int y) { printf ("a: %d %d\n", x, y); } void b(int y) { x -= y; printf ("b: %d %d\n", x, y); } void c(void) { int y =2; x = 7; printf ("c: %d %d\n", x, y); } void d(void) { int x = 5; printf ("d: %d %d\n", x, y); } void e(int x) { y += 7; printf ("e: %d %d\n", x, y); } void main (void) { int x = 3; y = 1; c(); a(y,2); e(8); d(); b(x); e(x+2); }
  2. Faça um programa que leia um número N do teclado e depois leia N números e coloque-os num vetor, (este vetor pode conter no máximo 100 elementos). Faça uma verificação no seu programa para que o usuário não digite um valor inválido para N. Após terminar a leitura, apresente a seguinte lista de opções para o usuário:
  1. Impressão dos valores lidos na mesma ordem em que foram digitados;
  2. Impressão dos valores na ordem inversa de digitação;
  3. Impressão do menor e o maior número do vetor;
  4. Impressão da média dos valores e de quantos números estão acima da média e quantos estão abaixo da média;
  5. Encerrar o programa.
  1. Escreva uma função que, dado um polinômio na forma vetorial um número real x, calcule f(x) (o valor do polinômio para aquele valor de x). Quais são os parâmetros e o valor de retorno desta função?
  2. Faça uma rotina que recebe 2 vetores de 20 elementos inteiros e que retorne, um outro vetor de 40 elementos contendo, nas posições pares os valores do primeiro e nas posições impares os valores do segundo.
  3. Faça um programa que preencha dois vetores A e B, com 10 posições cada um. e depois apresente a seguinte lista de opções para o usuário: a) Imprime a união de A com B; b) Imprime a intersecção entre A e B.

CENTRO ACADÊMICO DO AGRESTE

NÚCLEO DE TECNOLOGIA

CURSO DE ENGENHARIA CIVIL

CURSO DE ENGENHARIA DE PRODUÇÃO

  1. Escreva uma rotina que recebe como parâmetro um vetor de 50 elementos inteiros e que imprime e o maior elemento e sua posição no vetor.
  2. Faça uma rotina que receba um vetor A[100] de inteiros e retorna esse mesmo vetor compactado, ou seja, sem os seus valores nulos (zero).
  3. Faça uma rotina que receba um vetor A[100] de inteiros e retorna esse mesmo vetor compactado, ou seja, sem os seus valores negativos (menores que zero).
  4. Faça uma rotina que um vetor B[50] de reais e calcula o maior valor do vetor. A seguir, a rotina deve dividir todos os elementos de B pelo maior encontrado. O vetor deve retornar alterado.
  5. Uma locadora de vídeos tem guardada, em um vetor A de 500 posições, a quantidade de filmes retirados por seus clientes durante o ano de 1997. Agora, esta locadora está fazendo uma promoção e, para cada 15 filmes retirados, o cliente tem direito a uma locação grátis. Faça uma rotina que receba o vetor A e retorna um vetor contendo a quantidade de locações gratuitas a que cada cliente tem direito.
  6. Faça um programa que leia 2 matrizes 5 x 5 do teclado (X e Y) e depois apresente a seguinte lista de opções para o usuário:
    1. Imprime as matrizes lidas, X e Y;
    2. Somar as duas matrizes (Z = X + Y);
    3. Subtrair as duas matrizes (Z = X - Y);
    4. Multiplicar as duas matrizes (Z = X * Y);
    5. Criar uma matriz com os maiores elementos de cada matriz (Z[i,j] = MAX(X[i,j], Y[i,]);
    6. Criar uma matriz com os menores elementos de cada matriz (Z[i,j] = MIN(X[i,j], Y[i,j]).
    7. Verifica se as matrizes lidas são triangulares superiores;
    8. Verifica se as matrizes lidas são triangulares inferiores;
    9. Verifica se as matrizes lidas são matrizes diagonais;
    10. Verifica se as matrizes lidas são matrizes identidade;
    11. Verifique se as matrizes lidas são simétricas;
    12. Encerrar o programa.
  7. Faça um programa que leia uma matriz 10x10 do teclado depois apresente a seguinte lista de opções para o usuário:
    1. Imprime a matriz lida
    2. Informa a média aritmética dos elementos abaixo da diagonal principal.
    3. Informa a soma dos elementos acima da diagonal principal.
    4. Informa a soma dos elementos abaixo da diagonal principal.
    5. Informa o produto dos elementos da diagonal principal
    6. Informa o produto dos elementos da diagonal secundária
    7. Informa o menor valor dos elementos abaixo da diagonal secundária.
    8. Informa o menor valor dos elementos acima da diagonal secundária.
    9. Informa o maior elemento das k-diagonais (diagonal principal, mais os elementos que estão k diagonais acima e k diagonais abaixo da diagonal principal)
    10. Informa o maior valor da matriz
    11. Informa o menor valor da matriz
    12. Informa o elemento minimax de uma matriz (o menor elemento da linha em que se encontra o maior elemento da matriz)
    13. Informa o elemento maxmin de uma matriz (o maior elemento da linha em que se encontra o menor elemento da matriz)
    14. Encerrar o programa.

CENTRO ACADÊMICO DO AGRESTE

NÚCLEO DE TECNOLOGIA

CURSO DE ENGENHARIA CIVIL

CURSO DE ENGENHARIA DE PRODUÇÃO

  1. Escreva uma função que receba como parâmetro uma data e retorna o número de dias do ano decorridos até aquela data, inclusive. Por exemplo, o dia 10/03/2005 corresponde a 31 + 28 + 10 = 69 dias a partir do começo de 2005. O cabeçalho da sua função deve ser: int dias_no_ano(int dia, int mes, int ano); Você deve utilizar as funções data_valida, bissexto e dias_no_mes, definidas abaixo em sua implementação:
    • int bissexto(int ano) — Retorna 1 se o ano for bissexto ou 0 caso contrário
    • int dias_no_mes(int mes) — Retorna o número de dias em um mês, considerando-se um ano não bissexto (ou seja, retorna 28 para fevereiro, e não 29).
    • int data_valida(int dia, int mês, int ano) — Retorna 1 se o dia, mês e ano passados como parâmetro representarem uma data válida e 0 caso contrário
  2. Escreva um programa que leia o Gabarito de um teste da loteria esportiva, o qual contém os valores 1 (coluna 1), 2 (coluna 2) e 3 (coluna do meio). Leia, a seguir, para cada um dos 10 apostadores, o número do seu cartão e um vetor de Respostas de 13 posições. Verifique para cada apostador o números de acertos, comparando o vetor de Gabarito com o vetor de Respostas. Escreva o número do apostador e o número de acertos. Se o apostador tiver 13 acertos, mostrar a mensagem ‘Ganhador’.
  3. O Departamento de transito do estado anotou dados de acidentes de transito no ultimo ano. Para cada um dos 100 motoristas envolvidos em acidentes, tem-se as seguintes informações:
    • Ano de nascimento;
    • Sexo (M - Masculino, F - Feminino)
    • Procedência ( 0 - Capital, 1 - Interior, 2 - Outro estado); Faça um programa que calcule e imprima: a) O percentual de motoristas com menos de 21 anos; b) Quantas mulheres são da capital; c) Quantos motoristas do interior do estado tem idade maior que 60 anos; d) Verifique se existe alguma mulher com idade maior que 60 anos.
  4. Em certo município, vários proprietários de imóveis estão em atraso com o pagamento do IPTU. Escreva um programa que calcule o valor do IPTU dos 50 proprietários em atraso. Deve-se calcular a multa e juros a ser paga por estes proprietários, considerando que;  os dados de cada imóvel são identificação, valor do imposto e número de meses em atraso  estes dados devem ser lidos pelo seu algoritmo  a multa por atraso é de 5% e os juros compostos são de 1% ao mês  o programa deve exibir ao final: a identificação do imóvel, número de meses em atraso, o valor da multa, os juros a serem pagos e valor do imposto com os juros e multa adicionados.
  5. Faça um programa que apresente uma lista de opções de 1-18 para o usuário correspondente a cada uma das funções ou procedimentos abaixo. A opção 19 corresponde a finalizar o programa. Obs: todas as funções ou procedimentos devem ser implementadas, o que significa dizer que não devem ser utilizadas as funções da biblioteca string.h. Para cada uma das funções solicite que o usuário forneça o(s) parâmetro(s) necessário(s):
    1. int compara_textos(char texto1[], char texto2[]) — função que compara duas cadeias de caracteres e retorna um valor: = 0: se texto 1 e texto 2 forem iguais; < 0: se texto 1 for menor que texto 2;

      0: se texto 1 for maior que texto 2.

CENTRO ACADÊMICO DO AGRESTE

NÚCLEO DE TECNOLOGIA

CURSO DE ENGENHARIA CIVIL

CURSO DE ENGENHARIA DE PRODUÇÃO

  1. int copia_texto(char destino[], char fonte[]) — função que copia a cadeia de caracteres fonte na cadeia destino, e retorna o total de caracteres copiados.
  2. int concatena_texto(char destino[], fonte[]) — função que concatena a cadeia fonte no fim da cadeia destino, e retorna o total de caracteres concatenados.
  3. void inverte_texto(char texto_original[], char texto_invertido[]): procedimento que recebe uma cadeia de caracteres como parâmetro e retorna a cadeia invertida no parâmetro texto_invertido.
  4. int numero_ocorrencia_caracter(char texto[], char caracter): função que recebe como parâmetro uma cadeia e um caracter, e retorna como resultado o número de ocorrências desse caracter na cadeia passada como parâmetro.
  5. int prefixo(char s[], char t[]): função que retorna 1 se a cadeia t ocorrer no início da cadeia s, e 0 caso contrário;
  6. int sufixo(char s[], char t[]): função que retorna 1 se a cadeia t ocorrer no fim da cadeia s, e 0 caso contrário;
  7. int palindrome(char texto[]): função que recebe como parâmetro uma cadeia de caracteres e retorne VERDADEIRO se ela é palíndrome e FALSO caso contrário. Uma string é palíndrome quando pode ser lida tanto de trás pra frente quanto de frente para trás e possui exatamente a mesma seqüência de caracteres. Ex.: ASA, SUBI NO ONIBUS.
  8. void minuscula(char texto[]): procedimento que troca todas as letras maiúsculas por minúsculas do texto recebido como parâmetro.
  9. void maiuscula(char texto[]): procedimento que troca todas as letras minúsculas por maiúsculas do texto recebido como parâmetro.
  10. int eh_numero(char cadeia[]): função que dado uma cadeia de caracteres como parâmetro retorna 1 se a cadeia conter apenas dígitos, e 0 caso contrário;
  11. int inteiro(char cadeia[]): função que dado uma cadeia de caracteres que deve conter apenas dígitos e retorna o inteiro correspondente;
  12. int sub(char cadeia1[], char cadeia2[]):função que dado duas cadeias de caracteres retorna 1 se a cadeia 2 é substring da cadeia1 e 0 em caso contrário.
  13. int qpalavras(char cadeia[]):função que dado uma cadeia de caracteres retorna a quantidade de palavras da cadeia passada como parâmetro
  14. int qvogais(char cadeia[]):[]):função que dado uma cadeia de caracteres retorna a quantidade de vogais da cadeia passada como parâmetro
  15. int qconsoantes(char cadeia[]):[]):função que dado uma cadeia de caracteres retorna a quantidade de consoantes da cadeia passada como parâmetro
  16. void ocorrencia_letras(char cadeia[]): procedimento que recebe uma cadeia de caracteres como parâmetro, que imprime para cada letra presente na cadeia a quantidade de vezes que ela aparece na cadeia;
  17. void inverte_palavras_texto(char texto_original[], char texto_alterado[]): procedimento que recebe uma cadeia de caracteres como parâmetro e retorna a cadeia alterada, onde cada palavra da frase foi invertida.

CENTRO ACADÊMICO DO AGRESTE

NÚCLEO DE TECNOLOGIA

CURSO DE ENGENHARIA CIVIL

CURSO DE ENGENHARIA DE PRODUÇÃO

  1. O que será impresso pelo programa abaixo? Considere que a seja inicializada com a soma dos 3 primeiros dígitos do seu RA e b seja inicializada com a soma dos demais dígitos. Por exemplo, se RA=123456 então a recebe inicialmente 6 enquanto que b recebe inicialmente 15. #include <stdio.h> int main(){ int a=Soma 3 primeiros dígitos, b=Soma dos demais dígitos, *c, d; c = &a; d = c; c = &b; if(d % 2 == 0) *d = *d - 10; else c = 2 * (c);
  2. Considere o trecho de programa abaixo. Depois de executado, quais são os valores associados às variáveis c, i, v e d: char c='A'; char *pc=&c; int i=1, *pi=&i, v[] = {3,1,9,7,5}; double d=1.0, *pd=&d; *pc='B'; *pi=-1; *pd=0.1; v[3 + *pi] = v[1 + *pi * i] + 1;