Baixe o app para aproveitar ainda mais
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
Compartilhar