Buscar

Lista de exercícios C, vetores, matrizes, e Funções

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Algoritmos e Programac¸a˜o (Prof. Marcelo S. Zanetti - DELC - CT - UFSM ): Lista 2
Func¸o˜es utilizando Repetic¸a˜o, Vetores, Matrizes e Strings
(1) Escreva uma func¸a˜o que receba uma va´riavel do tipo double representando
temperatura e uma va´riavel do tipo char representando a unidade, tal que ‘c’
representa graus Celsius e ‘f ’ representa graus Fahrenheit. Se a func¸a˜o receber a
unidade em Fahrenheit ela deve converter a temperatura para Celsius, e se rece-
ber em Celsius deve converte-la para Fahrenheit. Em ambos os casos, a func¸a˜o
retorna o valor no formato double. Para tanto, utilize o seguinte proto´tipo:
double converter temperatura(double,char);
(2) Escreva uma func¸a˜o que leia as coordenadas de dois pontos, passados para a
func¸a˜o como dois vetores de double, sendo constituidos de dois elementos cada
(coordenada x e y de cada ponto) e retorne a distaˆncia entre eles, no formato
double. Utilize o seguinte proto´tipo: double distancia(double [],double []);
(3) Escreva uma func¸a˜o que receba como entrada um inteiro representando
o primeiro termo de uma Progressa˜o Aritme´tica, um inteiro representando o
nu´mero n de termos, e um inteiro representando a diferenc¸a entre dois nu´meros
consecutivos. A func¸a˜o deve retornar o valor do n-e´simo termo desta P.A. no
formato int. Utilize o seguinte proto´tipo: int nesimo termoPA(int, int, int);
(4) Escreva uma func¸a˜o que receba dois valores do tipo double representando a
base e a altura de um triaˆngulo e retorne o valor da sua a´rea no formato double.
Utilize o seguinte proto´tipo: double area triangulo(double,double);
(5) Escreva uma func¸a˜o que receba treˆs nu´meros inteiros e retorne o maior deles.
Utilize o seguinte proto´tipo: int maior de tres(int, int, int);
(6) Escreva uma func¸a˜o que leia o ano, no formato inteiro, e retorne se o ano
e´ bissexto ou na˜o. Se for bissexto retorna 1, se na˜o for retorna 0. Utilize o
seguinte proto´tipo: int ano bissexto(int);
(7) Escreva uma func¸a˜o que leia os treˆs lados de um triaˆngulo, no formato double,
e retorne 0 se ele e´ iso´sceles, 1 se for escaleno ou 2 se for equila´tero. Utilize o
seguinte proto´tipo: int tipo triangulo(double, double, double);
(8) Escreva uma func¸a˜o que leˆ as duas coordenadas x e y de um ponto, ambas
no formato inteiro, e retorne de 1 a 4, representando o quadrante em que a
coordenada esta´ localizada. Utilize o seguinte proto´tipo: int quadrante(double,
double);
(9) Escreva uma func¸a˜o que recebe dois nu´meros inteiros positivos base b e
expoente e. Utilizando somente comandos de repetic¸a˜o (for/while), a func¸a˜o
retorna o valor inteiro be. Utilize o seguinte proto´tipo: int potencia(int,int);
Pa´gina 1 de 8
Algoritmos e Programac¸a˜o (Prof. Marcelo S. Zanetti - DELC - CT - UFSM ): Lista 2
(10) Escreva uma func¸a˜o que recebe um nu´mero inteiro n e que ca´lcule e re-
torne o valor
∑n
i=1 i. Na˜o utilize formu´las, como as da soma de uma Progressa˜o
Aritmetica. Utilize o seguinte proto´tipo: int somatorio(int);
(11) Escreva uma func¸a˜o que recebe um nu´mero inteiro n e retorne a quantidade
de valores entre 2 e n que sa˜o divisores de n, tambe´m no formato inteiro. Utilize
o seguinte proto´tipo: int divisores de n(int);
(12) Escreva uma func¸a˜o que receba um inteiro n e retorne o fatorial de n, em
formato inteiro. Utilize o seguinte proto´tipo: int fatorial(int);
(13) Escreva uma func¸a˜o que receba uma string (vetor do tipo char) e retorne
1 se a string e´ um palindromo (por exemplo, arara e osso sa˜o palindromos:
indenpendete do sentido de leitura, a palavra na˜o muda), e 0 no caso contra´rio.
Utilize o seguinte proto´tipo: int palindromo(char []);
(14) Escreva uma func¸a˜o que receba um vetor de inteiros e seu tamanho como
paraˆmetros, em formato inteiro, e retorne a soma dos nu´meros pares deste vetor.
Utilize o seguinte proto´tipo: int soma dos pares(int [], int);
(15) Escreva uma func¸a˜o que receba dois vetores inteiros a e b e um inteiro n
representando o nu´mero de elementos dos vetores. A func¸a˜o deve retornar o
produto escalar desses dois vetores a.b =
∑n
i aibi, no formato inteiro. Utilize o
seguinte proto´tipo: int produto escalar(int [], int[],int);
(16) Escreva uma func¸a˜o que receba duas strings (vetor do tipo char) e retorne
1 se a segunda palavra e´ um anagrama da primeira (por exemplo “ROMA”,
“MORA”, “ORAM”, “AMOR”, “RAMO” sa˜o anagramas entre si.) , e 0 no
caso contra´rio. Utilize o seguinte proto´tipo: int anagrama(char [], char[]);
(17) Escreva uma func¸a˜o que receba um vetor inteiro, com elementos na˜o orde-
nados, um inteiro n que representa o nu´mero de elementos deste vetor, e um
inteiro i. Sua func¸a˜o deve retornar 0 se i na˜o estiver presente no vetor, ou um
inteiro no intervalo [1,n], representando o nu´mero de tentativas caso i seja en-
contrado. Sua func¸a˜o deve implementar o algoritmo de busca sequencial. Utilize
o seguinte proto´tipo: int busca sequencial(int [], int, int);
(18) Escreva uma func¸a˜o que receba um vetor inteiro, com elementos ordenados,
um inteiro n que representa o nu´mero de elementos deste vetor, e um inteiro
i. Sua func¸a˜o deve retornar 0 se i na˜o estiver presente no vetor, ou um inteiro
no intervalo [1,n], representando o nu´mero de tentativas caso i seja encontrado.
Sua func¸a˜o deve implementar o algoritmo de busca bina´ria. Utilize o seguinte
proto´tipo: int busca binaria(int [], int, int);
(19) Escreva uma func¸a˜o que receba um nu´mero inteiro n e retorna o primeiro
nu´mero da se´rie de fibonacci que e´ maior ou igual a n, no formato inteiro. Utilize
o seguinte proto´tipo: int fibonacci n(int);
Pa´gina 2 de 8
Algoritmos e Programac¸a˜o (Prof. Marcelo S. Zanetti - DELC - CT - UFSM ): Lista 2
(20) Escreva uma func¸a˜o que recebe um nu´mero inteiro n e retorna o maior
nu´mero primo que e´ menor ou igual a n. Para tanto, utilize o seguinte proto´tipo:
int primo(int);
(21) Escreva uma func¸a˜o que receba uma string (vetor do tipo char), um char-
acter c (tipo char) e retorne o nu´mero de ocoreˆncias de c nesta string. Utilize o
seguinte proto´tipo: int ocorrencias de caracter(char[], char);
(22) Escreva uma func¸a˜o que receba dois vetores do tipo inteiro, contendo 3
elementos cada, sendo estes: as coordenadas x e y do centro de um c´ırculo, e
seu raio r. Sua func¸a˜o deve retornar 1 se os dois circulos colidirem e 0 no caso
contra´rio. Utilize o seguinte proto´tipo: int colisao circulos(int [], int []);
(23) Escreva uma func¸a˜o que receba um vetor inteiro, o nu´mero n de elementos
neste vetor, e um inteiro x. Sua func¸a˜o deve retornar o nu´mero de ocorreˆncias do
nu´mero inteiro x no vetor supracitado. Para tanto, utilize o seguinte proto´tipo:
int ocorrencias de elemento(int [], int, int);
(24) Escreva uma func¸a˜o que recebe um nu´mero inteiro n e retorna a quantidade
de nu´meros primos no intervalo [2,n]. Para tanto, utilize o seguinte proto´tipo:
int primos(int);
(25) Escreva uma func¸a˜o que receba um vetor do tipo inteiro, um inteiro n
representando o nu´mero de elementos neste vetor e retorne o maior elemento
deste vetor. Utilize o seguinte proto´tipo: int max(int [], int);
(26) Escreva uma func¸a˜o que receba um vetor do tipo inteiro, um inteiro n
representando o nu´mero de elementos neste vetor e retorne o menor elemento
deste vetor. Utilize o seguinte proto´tipo: int min(int [], int);
(27) Escreva uma func¸a˜o que receba um vetor do tipo inteiro, um inteiro n
representando o nu´mero de elementos neste vetor e retorne o indice do maior
elemento deste vetor. Utilize o seguinte proto´tipo: int max ind(int [], int);
(28) Escreva uma func¸a˜o que receba um vetor do tipo inteiro, um inteiro n
representando o nu´mero de elementos neste vetor e retorne o indice domenor
elemento deste vetor. Utilize o seguinte proto´tipo: int min ind(int [], int);
(29) Escreva uma func¸a˜o que receba duas strings (vetor tipo char) de compri-
mento n e m respectivamente, tal que n ≤ m, contendo zeros e uns, ou seja duas
strings representando nu´meros bina´rios. Sua func¸a˜o deve retornar quantas vezes
a primeira string aparece na segunda, de forma continua. Por exemplo, se a
primeira for “101” e a segunda “1101010011010”, sua func¸a˜o deve retornar 3.
Utilize o seguinte proto´tipo: int substring(char [], char []);
Pa´gina 3 de 8
Algoritmos e Programac¸a˜o (Prof. Marcelo S. Zanetti - DELC - CT - UFSM ): Lista 2
(30) Escreva uma func¸a˜o que receba como entrada um inteiro representando
o primeiro termo de uma Progressa˜o Geome´trica, um inteiro representando o
nu´mero n de termos, e um inteiro representando a raza˜o entre dois nu´meros
consecutivos. A func¸a˜o deve retornar o valor do n-e´simo termo desta G.A. no
formato int. Utilize o seguinte proto´tipo: int nesimo termoGA(int, int, int);
(31) Escreva uma func¸a˜o que receba como entrada um inteiro representando o
nu´mero de lados n de um dado virtual e retorne como resultado de um lanc¸mento
do dado o lado onde o mesmo parou. Por exemplo, se n = 2 podemos simular o
lanc¸amento de uma moeda, se n = 6, o de um dado cu´bico convencional. Dica:
pesquise sobre a func¸a˜o rand na stdlib.h. Para tanto, utilize o seguinte proto´tipo:
int dado virtual(int);
(32) Fac¸a um jogo de advinhac¸a˜o de nu´meros;
• o usua´rio deve comec¸ar digitando o inteiro n no teclado, que representa o maior nu´mero que poderia
aparecer no jogo de advinhac¸a˜o
• utilizando este n digitado pelo usua´rio, o computador gera um outro inteiro, o nu´mero secreto, dentro
do intervalo [0, n] aleatoriamente
– adicione no cabec¸alho
#include <time.h>
– adicione dentro do main()
srand(time(NULL));
int numero secreto=rand()%(n+1);
– estamos utilizando o gerador de nu´meros aleato´rios do C, rand(), que usa o hora´rio atual,
time(NULL), como ponto de partida, ou seed (semente) da func¸a˜o srand(), que gera a sequeˆncia
de nu´meros aleato´rios que sera´ utilizada.
– portanto, como cada execuc¸a˜o do programa acontece em hora´rios diferentes, os nu´meros gerados
por rand() sera˜o diferentes na maioria destas execuc¸o˜es.
• o usua´rio tera´ k = dlog2ne (k e´ do tipo inteiro) chances para advinhar qual o nu´mero secreto, digitando
suas tentativas no teclado.
– adicione ao cabec¸alho
#include <math.h>
– adicione dentro do main()
int k=ceil(log2(n));
– estamos utilizando a func¸a˜o ceiling (teto) para arredondar, para cima, nu´meros fraciona´rios:
d4.5e = 5, d2.7e = 3, d7.2e = 8, etc.
• se o usua´rio advinhar o nu´mero correto, dentro do limite de k tentativas, o jogo termina com a vito´ria
do usua´rio.
• cada vez que o usua´rio faz uma tentativa mal sucedida, o computador devera´ dizer se o nu´mero secreto
e´ maior ou menor que a tentativa atual, e quantas tentativas restam ao usua´rio.
• se as tentativas se esgotarem o jogo termina com a derrota do usua´rio.
Pa´gina 4 de 8
Algoritmos e Programac¸a˜o (Prof. Marcelo S. Zanetti - DELC - CT - UFSM ): Lista 2
(33) Escreva uma func¸a˜o que receba uma matrix quadradada (vetor unidimen-
sional com n×n elementos - indices linearizados), e um inteiro n representando o
nu´mero de linhas e colunas. Sua func¸a˜o deve retornar 1 se a matrix for invers´ıvel
e 0 no caso contra´rio. Voceˆ deve percorrer a matrix utilizando o me´todo de in-
dices linearizados (por exemplo, linha×n + coluna). Utilize o seguinte proto´tipo:
int matrix inversivel(int [], int);
(34) Escreva uma func¸a˜o que receba um nu´mero y do tipo double, e retorne
a raiz quadrada de y (
√
y). Deve-se calcular a raiz quadrada utilizando um
me´todo de aproximac¸a˜o f(x) = x2 − y (ou seja na˜o e´ permitido utilizar sqrt da
biblioteca math.h). Utilize como aproximac¸a˜o inicial x0 =
y
2
. Para calcular cada
nova aproximac¸a˜o, utilize o me´todo de Newton: xt+1 = xt − f(xt)f ′(xt) . A func¸a˜o deve
retorna o valor equivalente a de´cima aproximac¸a˜o, ou seja x10. Utilize o seguinte
proto´tipo: double sqrt newton(double);
(35) Escreva uma func¸a˜o que receba um nu´mero decimal em formato inteiro, fac¸a
a conversa˜o para bina´rio e retorne o respectivo valor como um inteiro contendo
apenas digitos 1 e 0. Utilize o seguinte proto´tipo: int decimal binario(int);
(36) Escreva uma func¸a˜o que receba uma string (vetor do tipo char) represen-
tando digitos binarios, e fac¸a a conversa˜o para decimal e retorne o respectivo
valor como um inteiro. Utilize o seguinte proto´tipo: int binario decimal(char []);
(37) Escreva uma func¸a˜o que receba como entrada um ano no formato inteiro
e retorne a data da Pa´scoa naquele ano no formato inteiro (diamesano, ou seja
caso o dia<10, teremos um inteiro com 7 d´ıgitos, caso o dia≥10 teremos um
inteiro com 8 d´ıgitos). Voceˆ deve fazer uma pesquisa para encontrar a fo´rmula
que calcula a data da Pa´scoa. Utilize o seguinte proto´tipo: int pascoa(int);
(38) Um jogador da Mega-Sena e´ supersticioso, e so´ faz jogos em que o primeiro
nu´mero do jogo e´ par, o segundo e´ ı´mpar, o terceiro e´ par, o quarto e´ ı´mpar, o
quinto e´ par e o sexto e´ ı´mpar. Escreva uma func¸a˜o que retorne a quantidade
de jogos possiveis que obedecem o padra˜o acima, utilizando o formato inteiro.
Utilize o seguinte proto´tipo: int megasena(void);
(39) Escreva uma func¸a˜o que receba um nu´mero inteiro na˜o negativo n, e retorne
1 se esse nu´mero e´ um palindromo (por exemplo 121 e 21022012 sa˜o palindromos,
pois invertendo-se a ordem dos digitos o nu´mero resultante na˜o se altera) e 0
no caso contra´rio. Dica: utilizar a func¸a˜o sprintf() para converter o inteiro em
uma string (vetor do tipo char terminado em \0). Para tanto, utilize o seguinte
proto´tipo: int numero palindromo(int);
Pa´gina 5 de 8
Algoritmos e Programac¸a˜o (Prof. Marcelo S. Zanetti - DELC - CT - UFSM ): Lista 2
(40) Escreva uma func¸a˜o que receba um texto, em uma string (vetor do tipo
char), formado de letras maiu´sculas, v´ırgulas, pontos e espac¸os, terminado pelo
caracter \0 (que somente ocorre no fim do texto). A func¸a˜o deve retornar o
nu´mero de palavras com comprimento maior ou igual a 5. Para tanto, utilize o
seguinte proto´tipo: int palavras 5 letras(char []);
(41) Escreva uma func¸a˜o que receba dois vetores do tipo double, x e w e um
inteiro n representando a quantidade de elementos desses vetores. A func¸a˜o
deve retornar a me´dia ponderada m¯ =
∑n
i=1 xiwi∑n
i=1 wi
. Utilize o seguinte proto´tipo:
double media ponderada(double [], double [], int);
(42) Escreva uma func¸a˜o que leia um nu´mero inteiro positivo menor ou igual a
3999, convertendo-o para sua representac¸a˜o em algarismos romanos, retornando
o respectivo nu´mero de digitos romanos. Para tanto, utilize o seguinte proto´tipo:
int algarismos romanos(int);
(43) Escreva uma func¸a˜o que receba uma matrix quadrada (vetor unidimensional
com n×n elementos), e o inteiro n representando o nu´mero de linhas e colunas
e retorne 1 se a matrix for diagonal (todos elementos fora da diagonal princi-
pal iguais a zero) e 0 caso contra´rio. Voceˆ deve percorrer a matrix utilizando
o me´todo de indices linearizados (por exemplo, linha×n + coluna). Utilize o
seguinte proto´tipo: int matrix diagonal(int [], int);
(44) Escreva uma func¸a˜o que receba uma matrix quadrada (vetor unidimensional
com n×n elementos), e o inteiro n representando o nu´mero de linhas e colunas e
retorne o determinante desta matrix, no formato inteiro. Voceˆ deve percorrer a
matrix utilizando o me´todo de indices lineares (por exemplo, linha×n + coluna).
Utilize o seguinte proto´tipo: int determinante matrix(int [], int);
(45) Escreva uma func¸a˜oque receba uma matrix quadrada (vetor unidimensional
com n×n elementos), e o inteiro n representando o nu´mero de linhas e colunas e
retorne 1 se a matrix for sime´trica (ou seja M = MT ) e 0 no caso contra´rio. Voceˆ
deve percorrer a matrix utilizando o me´todo de indices lineares (por exemplo,
linha×n + coluna). Utilize o seguinte proto´tipo: int matrix simetrica(int [], int);
(46) Escreva uma func¸a˜o que receba o dia, meˆs e ano, todos em formato inteiro,
e retorne 1 se a data for va´lida (ou seja se a data existe) e 0 no caso contra´rio.
Utilize o seguinte proto´tipo: int data valida(int, int, int);
(47) Escreva uma func¸a˜o que receba um vetor inteiro, o nu´mero n de elementos
neste vetor e retorne 1 se o vetor estiver ordenado em ordem na˜o decrescente,
2 se a ordem for na˜o crescente e 0 no caso de na˜o estar ordenado. Utilize o
seguinte proto´tipo: int ordenado(int [], int);
Pa´gina 6 de 8
Algoritmos e Programac¸a˜o (Prof. Marcelo S. Zanetti - DELC - CT - UFSM ): Lista 2
(48) Escreva uma func¸a˜o que receba um vetor double, o inteiro n representando
o nu´mero de elementos neste vetor e retorne o respectivo desvio padra˜o (σ), em
formato double. Para calcular o desvio padra˜o faz-se necessario o calculo pre´vio
da me´dia (x¯). Formulas: x¯ = 1
n
∑n
i=1 xi e σ =
√
1
n
∑n
i=1(xi − x¯)2. Utilize o seguinte
proto´tipo: double media dp(double [], int);
(49) Escreva uma func¸a˜o que receba um nu´mero inteiro e converta seus digitos
utilizando co´digo morse. Sua func¸a˜o deve retornar o nu´mero de ocorreˆncias do
caracter ‘.’ na string resultante. O co´digo morse para cada digito e´: 1: “. - - -
-”, 2: “. . - - -”, 3: “. . . - -”, 4: “. . . . -”, 5: “. . . . .”, 6: “- . . . .”, 7: “-
- . . .”, 8: “- - - . .”, 9: “- - - - .”, 0: “- - - - -”. Para tanto, utilize o seguinte
proto´tipo: int morse(int);
(50) Escreva uma func¸a˜o que receba duas strings (vetor tipo char) representando
a escolha de dois jogadores em uma partida de “Papel, Pedra, Tesoura, Lagarto,
Spock”. As regras sa˜o as seguintes: Tesoura corta o Papel, Papel cobre a Pedra,
Pedra esmaga o Lagarto, Lagarto envenena o Spock, Spock destroe a Tesoura,
Tesoura decapita o Lagarto, Lagarto come Papel, Papel refuta o Spock, Spock
vaporiza a Pedra, Pedra destroe a Tesoura. Sua func¸a˜o deve retornar 1 se o
primeiro jogador for o vencedor, 2 se o segundo jogador for o vencedor, e 0 caso
haja um empate. Utilize o seguinte proto´tipo: int pptls(char [], char []);
Figure 1: “Papel, Pedra, Tesoura, Lagarto, Spock”: a seta indica o perdedor em cada par de escolhas.
Pa´gina 7 de 8
Algoritmos e Programac¸a˜o (Prof. Marcelo S. Zanetti - DELC - CT - UFSM ): Lista 2
(51) Uma matriz quadrada de inteiros e´ um quadrado ma´gico se a soma dos
elementos de cada linha, a soma dos elementos de cada coluna, a soma dos
elementos da diagonal principal e da diagonal secunda´ria sa˜o todos iguais. A
matriz abaixo e´ um exemplo de quadrado ma´gico. Escreva uma func¸a˜o que
receba uma matrix quadrada (vetor unidimensional com n×n elementos), e o
inteiro n representando o nu´mero de linhas e colunas e retorne 1 se esta for um
quadrado ma´gico e 0 caso contra´rio. Voceˆ deve percorrer a matrix utilizando o
me´todo de indices lineares (por exemplo, linha×n + coluna). Utilize o seguinte
proto´tipo: int quadrado magico(int [], int);
 3 4 810 5 0
2 6 7

(52) Sudoku e´ jogado numa malha de 9×9 quadrados, dividida em sub-malhas
de 3x3 quadrados, chamada “quadrantes”. O objetivo do jogo e´ preencher os
quadrados com nu´meros entre 1 e 9 de acordo com as seguintes regras: 1-)
Cada nu´mero pode aparecer apenas uma vez em cada linha, 2-) Cada nu´mero
pode aparacer apenas uma vez em cada coluna, 3-) Cada nu´mero pode aparecer
apenas uma vez em cada quadrante. Escreva uma func¸a˜o que receba uma matrix
de inteiros com 9 linhas e 9 colunas (vetor unidimensional com 9×9 elementos),
sendo cada elemento preenchido com um nu´mero de 1 a 9 e retorne 1 se e´ um
jogo va´lido e 0 caso contra´rio. Um jogo va´lido respeita as treˆs regras acima,
sendo que um exemplo pode ser visualizado abaixo. Voceˆ deve percorrer a
matrix utilizando o me´todo de indices lineares (por exemplo, linha×n + coluna).
Utilize o seguinte proto´tipo: int sudoku(int []);
Figure 2: Um jogo va´lido.
(53) Fac¸a uma func¸a˜o que calcule e escreve uma tabela de graus cent´ıgrados em
func¸a˜o de graus Farenheit, variando de um em um de 0 a 1000 graus Farenheit
OBS.: Muitos exerc´ıcios foram resolvidos em videos, e podem ser encontrados neste link.
Recomenda-se tentar resolve-los antes de olhar o link. Recorra aos videos somente apo´s...
Pa´gina 8 de 8
	Funções utilizando Repetição, Vetores, Matrizes e Strings
	(1) Escreva uma função que receba uma váriavel do tipo double representando temperatura e uma váriavel do tipo char representando a unidade, tal que `c' representa graus Celsius e `f' representa graus Fahrenheit. Se a função receber a unidade em Fahrenheit ela deve converter a temperatura para Celsius, e se receber em Celsius deve converte-la para Fahrenheit. Em ambos os casos, a função retorna o valor no formato double. Para tanto, utilize o seguinte protótipo: double converter_temperatura(double,char);
	(2) Escreva uma função que leia as coordenadas de dois pontos, passados para a função como dois vetores de double, sendo constituidos de dois elementos cada (coordenada x e y de cada ponto) e retorne a distância entre eles, no formato double. Utilize o seguinte protótipo: double distancia(double [],double []);
	(3) Escreva uma função que receba como entrada um inteiro representando o primeiro termo de uma Progressão Aritmética, um inteiro representando o número n de termos, e um inteiro representando a diferença entre dois números consecutivos. A função deve retornar o valor do n-ésimo termo desta P.A. no formato int. Utilize o seguinte protótipo: int nesimo_termoPA(int, int, int);
	(4) Escreva uma função que receba dois valores do tipo double representando a base e a altura de um triângulo e retorne o valor da sua área no formato double. Utilize o seguinte protótipo: double area_triangulo(double,double);
	(5) Escreva uma função que receba três números inteiros e retorne o maior deles. Utilize o seguinte protótipo: int maior_de_tres(int, int, int);
	(6) Escreva uma função que leia o ano, no formato inteiro, e retorne se o ano é bissexto ou não. Se for bissexto retorna 1, se não for retorna 0. Utilize o seguinte protótipo: int ano_bissexto(int);
	(7) Escreva uma função que leia os três lados de um triângulo, no formato double, e retorne 0 se ele é isósceles, 1 se for escaleno ou 2 se for equilátero. Utilize o seguinte protótipo: int tipo_triangulo(double, double, double);
	(8) Escreva uma função que lê as duas coordenadas x e y de um ponto, ambas no formato inteiro, e retorne de 1 a 4, representando o quadrante em que a coordenada está localizada. Utilize o seguinte protótipo: int quadrante(double, double);
	(9) Escreva uma função que recebe dois números inteiros positivos base b e expoente e. Utilizando somente comandos de repetição (for/while), a função retorna o valor inteiro be. Utilize o seguinte protótipo: int potencia(int,int);
	(10) Escreva uma função que recebe um número inteiro n e que cálcule e retorne o valor i=1ni. Não utilize formúlas, como as da soma de uma Progressão Aritmetica. Utilize o seguinte protótipo: int somatorio(int);
	(11) Escreva uma função que recebe um número inteiro n e retorne a quantidade de valores entre 2 e n que são divisores de n, também no formato inteiro. Utilize o seguinte protótipo: int divisores_de_n(int);
	(12) Escreva uma função que receba um inteiro n e retorne o fatorial de n, em formato inteiro. Utilize o seguinte protótipo: int fatorial(int);
	(13) Escreva uma função que receba uma string (vetor do tipo char) e retorne 1 se a string é um palindromo(por exemplo, arara e osso são palindromos: indenpendete do sentido de leitura, a palavra não muda), e 0 no caso contrário. Utilize o seguinte protótipo: int palindromo(char []);
	(14) Escreva uma função que receba um vetor de inteiros e seu tamanho como parâmetros, em formato inteiro, e retorne a soma dos números pares deste vetor. Utilize o seguinte protótipo: int soma_dos_pares(int [], int);
	(15) Escreva uma função que receba dois vetores inteiros a e b e um inteiro n representando o número de elementos dos vetores. A função deve retornar o produto escalar desses dois vetores a.b=inaibi, no formato inteiro. Utilize o seguinte protótipo: int produto_escalar(int [], int[],int);
	(16) Escreva uma função que receba duas strings (vetor do tipo char) e retorne 1 se a segunda palavra é um anagrama da primeira (por exemplo ``ROMA'', ``MORA'', ``ORAM'', ``AMOR'', ``RAMO'' são anagramas entre si.) , e 0 no caso contrário. Utilize o seguinte protótipo: int anagrama(char [], char[]);
	(17) Escreva uma função que receba um vetor inteiro, com elementos não ordenados, um inteiro n que representa o número de elementos deste vetor, e um inteiro i. Sua função deve retornar 0 se i não estiver presente no vetor, ou um inteiro no intervalo [1,n], representando o número de tentativas caso i seja encontrado. Sua função deve implementar o algoritmo de busca sequencial. Utilize o seguinte protótipo: int busca_sequencial(int [], int, int);
	(18) Escreva uma função que receba um vetor inteiro, com elementos ordenados, um inteiro n que representa o número de elementos deste vetor, e um inteiro i. Sua função deve retornar 0 se i não estiver presente no vetor, ou um inteiro no intervalo [1,n], representando o número de tentativas caso i seja encontrado. Sua função deve implementar o algoritmo de busca binária. Utilize o seguinte protótipo: int busca_binaria(int [], int, int);
	(19) Escreva uma função que receba um número inteiro n e retorna o primeiro número da série de fibonacci que é maior ou igual a n, no formato inteiro. Utilize o seguinte protótipo: int fibonacci_n(int);
	(20) Escreva uma função que recebe um número inteiro n e retorna o maior número primo que é menor ou igual a n. Para tanto, utilize o seguinte protótipo: int primo(int);
	(21) Escreva uma função que receba uma string (vetor do tipo char), um character c (tipo char) e retorne o número de ocorências de c nesta string. Utilize o seguinte protótipo: int ocorrencias_de_caracter(char[], char);
	(22) Escreva uma função que receba dois vetores do tipo inteiro, contendo 3 elementos cada, sendo estes: as coordenadas x e y do centro de um círculo, e seu raio r. Sua função deve retornar 1 se os dois circulos colidirem e 0 no caso contrário. Utilize o seguinte protótipo: int colisao_circulos(int [], int []);
	(23) Escreva uma função que receba um vetor inteiro, o número n de elementos neste vetor, e um inteiro x. Sua função deve retornar o número de ocorrências do número inteiro x no vetor supracitado. Para tanto, utilize o seguinte protótipo: int ocorrencias_de_elemento(int [], int, int);
	(24) Escreva uma função que recebe um número inteiro n e retorna a quantidade de números primos no intervalo [2,n]. Para tanto, utilize o seguinte protótipo: int primos(int);
	(25) Escreva uma função que receba um vetor do tipo inteiro, um inteiro n representando o número de elementos neste vetor e retorne o maior elemento deste vetor. Utilize o seguinte protótipo: int max(int [], int);
	(26) Escreva uma função que receba um vetor do tipo inteiro, um inteiro n representando o número de elementos neste vetor e retorne o menor elemento deste vetor. Utilize o seguinte protótipo: int min(int [], int);
	(27) Escreva uma função que receba um vetor do tipo inteiro, um inteiro n representando o número de elementos neste vetor e retorne o indice do maior elemento deste vetor. Utilize o seguinte protótipo: int max_ind(int [], int);
	(28) Escreva uma função que receba um vetor do tipo inteiro, um inteiro n representando o número de elementos neste vetor e retorne o indice do menor elemento deste vetor. Utilize o seguinte protótipo: int min_ind(int [], int);
	(29) Escreva uma função que receba duas strings (vetor tipo char) de comprimento n e m respectivamente, tal que nm, contendo zeros e uns, ou seja duas strings representando números binários. Sua função deve retornar quantas vezes a primeira string aparece na segunda, de forma continua. Por exemplo, se a primeira for ``101'' e a segunda ``1101010011010'', sua função deve retornar 3. Utilize o seguinte protótipo: int substring(char [], char []);
	(30) Escreva uma função que receba como entrada um inteiro representando o primeiro termo de uma Progressão Geométrica, um inteiro representando o número n de termos, e um inteiro representando a razão entre dois números consecutivos. A função deve retornar o valor do n-ésimo termo desta G.A. no formato int. Utilize o seguinte protótipo: int nesimo_termoGA(int, int, int);
	(31) Escreva uma função que receba como entrada um inteiro representando o número de lados n de um dado virtual e retorne como resultado de um lançmento do dado o lado onde o mesmo parou. Por exemplo, se n=2 podemos simular o lançamento de uma moeda, se n=6, o de um dado cúbico convencional. Dica: pesquise sobre a função rand na stdlib.h. Para tanto, utilize o seguinte protótipo: int dado_virtual(int);
	(32) Faça um jogo de advinhação de números;
	(33) Escreva uma função que receba uma matrix quadradada (vetor unidimensional com nn elementos - indices linearizados), e um inteiro n representando o número de linhas e colunas. Sua função deve retornar 1 se a matrix for inversível e 0 no caso contrário. Você deve percorrer a matrix utilizando o método de indices linearizados (por exemplo, linhan + coluna). Utilize o seguinte protótipo: int matrix_inversivel(int [], int);
	(34) Escreva uma função que receba um número y do tipo double, e retorne a raiz quadrada de y (y). Deve-se calcular a raiz quadrada utilizando um método de aproximação f(x)=x2-y (ou seja não é permitido utilizar sqrt da biblioteca math.h). Utilize como aproximação inicial x0=y2. Para calcular cada nova aproximação, utilize o método de Newton: xt+1=xt-f(xt)f'(xt). A função deve retorna o valor equivalente a décima aproximação, ou seja x10. Utilize o seguinte protótipo: double sqrt_newton(double);
	(35) Escreva uma função que receba um número decimal em formato inteiro, faça a conversão para binário e retorne o respectivo valor como um inteiro contendo apenas digitos 1 e 0. Utilize o seguinte protótipo: int decimal_binario(int);
	(36) Escreva uma função que receba uma string (vetor do tipo char) representando digitos binarios, e faça a conversão para decimal e retorne o respectivo valor como um inteiro. Utilize o seguinte protótipo: int binario_decimal(char []);
	(37) Escreva uma função que receba como entrada um ano no formato inteiro e retorne a data da Páscoa naquele ano no formato inteiro (diamesano, ou seja caso o dia<10, teremos um inteiro com 7 dígitos, caso o dia10 teremos um inteiro com 8 dígitos). Você deve fazer uma pesquisa para encontrar a fórmula que calcula a data da Páscoa. Utilize o seguinte protótipo: int pascoa(int);
	(38) Um jogador da Mega-Sena é supersticioso, e só faz jogos em que o primeiro número do jogo é par, o segundo é ímpar, o terceiro é par, o quarto é ímpar, o quinto é par e o sexto é ímpar. Escreva uma função que retorne a quantidade de jogos possiveis que obedecem o padrão acima, utilizando o formato inteiro. Utilize o seguinte protótipo: int megasena(void);
	(39) Escreva uma função que receba um número inteiro não negativo n, e retorne 1 se esse número é um palindromo (por exemplo 121 e 21022012 são palindromos, pois invertendo-se a ordem dos digitos o número resultante não se altera) e 0 no caso contrário. Dica: utilizar a função sprintf() para converter o inteiro em uma string (vetor do tipo char terminado em "026E30F 0). Para tanto, utilize o seguinte protótipo: int numero_palindromo(int);
	(40)Escreva uma função que receba um texto, em uma string (vetor do tipo char), formado de letras maiúsculas, vírgulas, pontos e espaços, terminado pelo caracter "026E30F 0 (que somente ocorre no fim do texto). A função deve retornar o número de palavras com comprimento maior ou igual a 5. Para tanto, utilize o seguinte protótipo: int palavras_5_letras(char []);
	(41) Escreva uma função que receba dois vetores do tipo double, x e w e um inteiro n representando a quantidade de elementos desses vetores. A função deve retornar a média ponderada =i=1nxiwii=1nwi. Utilize o seguinte protótipo: double media_ponderada(double [], double [], int);
	(42) Escreva uma função que leia um número inteiro positivo menor ou igual a 3999, convertendo-o para sua representação em algarismos romanos, retornando o respectivo número de digitos romanos. Para tanto, utilize o seguinte protótipo: int algarismos_romanos(int);
	(43) Escreva uma função que receba uma matrix quadrada (vetor unidimensional com nn elementos), e o inteiro n representando o número de linhas e colunas e retorne 1 se a matrix for diagonal (todos elementos fora da diagonal principal iguais a zero) e 0 caso contrário. Você deve percorrer a matrix utilizando o método de indices linearizados (por exemplo, linhan + coluna). Utilize o seguinte protótipo: int matrix_diagonal(int [], int);
	(44) Escreva uma função que receba uma matrix quadrada (vetor unidimensional com nn elementos), e o inteiro n representando o número de linhas e colunas e retorne o determinante desta matrix, no formato inteiro. Você deve percorrer a matrix utilizando o método de indices lineares (por exemplo, linhan + coluna). Utilize o seguinte protótipo: int determinante_matrix(int [], int);
	(45) Escreva uma função que receba uma matrix quadrada (vetor unidimensional com nn elementos), e o inteiro n representando o número de linhas e colunas e retorne 1 se a matrix for simétrica (ou seja M=MT) e 0 no caso contrário. Você deve percorrer a matrix utilizando o método de indices lineares (por exemplo, linhan + coluna). Utilize o seguinte protótipo: int matrix_simetrica(int [], int);
	(46) Escreva uma função que receba o dia, mês e ano, todos em formato inteiro, e retorne 1 se a data for válida (ou seja se a data existe) e 0 no caso contrário. Utilize o seguinte protótipo: int data_valida(int, int, int);
	(47) Escreva uma função que receba um vetor inteiro, o número n de elementos neste vetor e retorne 1 se o vetor estiver ordenado em ordem não decrescente, 2 se a ordem for não crescente e 0 no caso de não estar ordenado. Utilize o seguinte protótipo: int ordenado(int [], int);
	(48) Escreva uma função que receba um vetor double, o inteiro n representando o número de elementos neste vetor e retorne o respectivo desvio padrão (), em formato double. Para calcular o desvio padrão faz-se necessario o calculo prévio da média (). Formulas: =1ni=1nxi e =1ni=1n(xi-)2. Utilize o seguinte protótipo: double media_dp(double [], int);
	(49) Escreva uma função que receba um número inteiro e converta seus digitos utilizando código morse. Sua função deve retornar o número de ocorrências do caracter `.' na string resultante. O código morse para cada digito é: 1: ``. - - - -'', 2: ``. . - - -'', 3: ``. . . - -'', 4: ``. . . . -'', 5: ``. . . . .'', 6: ``- . . . .'', 7: ``- - . . .'', 8: ``- - - . .'', 9: ``- - - - .'', 0: ``- - - - -''. Para tanto, utilize o seguinte protótipo: int morse(int);
	(50) Escreva uma função que receba duas strings (vetor tipo char) representando a escolha de dois jogadores em uma partida de ``Papel, Pedra, Tesoura, Lagarto, Spock''. As regras são as seguintes: Tesoura corta o Papel, Papel cobre a Pedra, Pedra esmaga o Lagarto, Lagarto envenena o Spock, Spock destroe a Tesoura, Tesoura decapita o Lagarto, Lagarto come Papel, Papel refuta o Spock, Spock vaporiza a Pedra, Pedra destroe a Tesoura. Sua função deve retornar 1 se o primeiro jogador for o vencedor, 2 se o segundo jogador for o vencedor, e 0 caso haja um empate. Utilize o seguinte protótipo: int pptls(char [], char []);
	(51) Uma matriz quadrada de inteiros é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna, a soma dos elementos da diagonal principal e da diagonal secundária são todos iguais. A matriz abaixo é um exemplo de quadrado mágico. Escreva uma função que receba uma matrix quadrada (vetor unidimensional com nn elementos), e o inteiro n representando o número de linhas e colunas e retorne 1 se esta for um quadrado mágico e 0 caso contrário. Você deve percorrer a matrix utilizando o método de indices lineares (por exemplo, linhan + coluna). Utilize o seguinte protótipo: int quadrado_magico(int [], int);
	(52) Sudoku é jogado numa malha de 99 quadrados, dividida em sub-malhas de 3x3 quadrados, chamada ``quadrantes''. O objetivo do jogo é preencher os quadrados com números entre 1 e 9 de acordo com as seguintes regras: 1-) Cada número pode aparecer apenas uma vez em cada linha, 2-) Cada número pode aparacer apenas uma vez em cada coluna, 3-) Cada número pode aparecer apenas uma vez em cada quadrante. Escreva uma função que receba uma matrix de inteiros com 9 linhas e 9 colunas (vetor unidimensional com 99 elementos), sendo cada elemento preenchido com um número de 1 a 9 e retorne 1 se é um jogo válido e 0 caso contrário. Um jogo válido respeita as três regras acima, sendo que um exemplo pode ser visualizado abaixo. Você deve percorrer a matrix utilizando o método de indices lineares (por exemplo, linhan + coluna). Utilize o seguinte protótipo: int sudoku(int []);
	(53) Faça uma função que calcule e escreve uma tabela de graus centígrados em função de graus Farenheit, variando de um em um de 0 a 1000 graus Farenheit

Continue navegando