Buscar

ListaExerc C Cpp

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 12 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 12 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 9, do total de 12 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

Prévia do material em texto

Lista de Exercícios – Linguagens C e C++ 
 
1. Identifique o erro em cada um dos segmentos seguintes de programa e indique 
como pode ser corrigido. 
 
primeiro trecho de código segundo trecho de código 
int g(void) 
{ 
 printf(“\n dentro da função g”); 
 int h(void) 
{ 
 printf (“\n dentro da função h”); 
} 
} 
int soma (int x, int y) 
{ 
 int resultado = x+y; 
} 
 
 
terceiro trecho de código quarto trecho de código 
int soma (int n) 
{ 
 if (n == 0) return (0); 
 else n + soma(n-1); 
} 
void f (double a) 
{ 
 float a; 
printf (“\n valor de a : %f”, a); 
} 
 
2. Reescreva a definição de função abaixo eliminando os erros de sintaxe e de 
semântica existentes. 
 
3. Identifique e corrija os erros de sintaxe presentes no trecho de código em 
linguagem C apresentado abaixo: 
 
{ 
Float altura, max_alt_turma, min_alt_turma, med_alt_turma; 
Float med_alt_masc, max_alt_masc, min_alt_masc, 
 med_alt_fem, max_alt_fem, min_alt_masc, 
Float soma_masc; soma_fem; 
Int cont_masc, cont_fem, cont_turma; 
Int n_turma, sexo; 
 
n_turma = 50; 
cont_masc = cont_fem = 0; 
max_altura_masc = max_alt_fem = max_alt_turma = 0; 
min_alt_masc = min_alt_fem = min_alt_turma = 5; 
soma_masc = soma_fem = 0; 
int proc maximo (float *A, int m); 
{ 
 float n; 
int val; 
for (n = 0, val = 1e38; n < m; n++); 
{ 
 if (val < A[n]) val = *(A+n); 
}; 
 
} 
int proc maximo (float *A, int m); 
{ 
 float n; 
int val; 
for (n = 0, val = 1e38; n < m; n++); 
{ 
 if (val < A[n]) val = *(A+n); 
}; 
return (val); 
} 
 
for ( cont_turma = 0; cont_turma < n_turma; ++cont_turma) 
{ 
/*as próximas duas linhas realizam a leitura dos dados de entrada. Não existem erros 
 nestas linhas! */ 
 printf (“\nEntre com a altura (em metros) e o sexo do aluno (1 = masc; 2 = fem) :”); 
 scanf(“%f %d”, &altura, &sexo); 
 
 if (sexo == 1) 
{ 
 soma_masc += altura; 
 if (max_altura_masc < altura) 
max_altura_masc = altura; 
 if ((min_alt_masc > altura) 
min_alt_masc = altura; 
 cont_masc = cont_masc + 1; 
} 
else 
{ 
 soma_fem += altura; 
 if (max_alt_fem < altura) max_alt_fem = altura; 
 if (min_alt_fem > altura) min_alt_fem = altura; 
 cont_fem = cont_fem + 1; 
} 
} 
med_alt_masc = soma_masc / cont_masc; 
med_alt_fem = soma_fem / cont_fem; 
med_alt_turma = (soma_masc + soma_fem) / cont_turma; 
if (max_alt_masc >= max_alt_fem) 
max_alt_turma = max_alt_masc 
else 
max_alt_turma = max_altura_fem; 
if (min_alt_masc >= min_alt_fem) 
min_alt_turma = min_alt_fem; 
else min_alt_turma = min_alt_masc; 
} 
{ 
Float altura, max_alt_turma, min_alt_turma, med_alt_turma; 
Float med_alt_masc, max_alt_masc, min_alt_masc, 
 med_alt_fem, max_alt_fem, min_alt_masc, 
Float soma_masc; soma_fem; 
Int cont_masc, cont_fem, cont_turma; 
Int n_turma, sexo; 
 
n_turma = 50; 
cont_masc = cont_fem = 0; 
max_altura_masc = max_alt_fem = max_alt_turma = 0; 
min_alt_masc = min_alt_fem = min_alt_turma = 5; 
soma_masc = soma_fem = 0; 
 
for ( cont_turma = 0; cont_turma < n_turma; ++cont_turma) 
{ 
/*as próximas duas linhas realizam a leitura dos dados de entrada. Não existem erros 
 nestas linhas! */ 
 printf (“\nEntre com a altura (em metros) e o sexo do aluno (1 = masc; 2 = fem) :”); 
 scanf(“%f %d”, &altura, &sexo); 
 
 if (sexo == 1) 
{ 
 soma_masc += altura; 
 if (max_altura_masc < altura) 
max_altura_masc = altura; 
 if ((min_alt_masc > altura) 
min_alt_masc = altura; 
 cont_masc = cont_masc + 1; 
} 
else 
{ 
 soma_fem += altura; 
 if (max_alt_fem < altura) max_alt_fem = altura; 
 if (min_alt_fem > altura) min_alt_fem = altura; 
 cont_fem = cont_fem + 1; 
} 
} 
med_alt_masc = soma_masc / cont_masc; 
med_alt_fem = soma_fem / cont_fem; 
med_alt_turma = (soma_masc + soma_fem) / cont_turma; 
if (max_alt_masc >= max_alt_fem) 
max_alt_turma = max_alt_masc 
else 
max_alt_turma = max_altura_fem; 
if (min_alt_masc >= min_alt_fem) 
min_alt_turma = min_alt_fem; 
else min_alt_turma = min_alt_masc; 
} 
 
 
4. Construir um algoritmo para calcular o valor de s, usando os 20 primeiros termos 
da série: 
 
20
.......
7654321
xxxxxxxx
s +−+−+−= , 
 
onde x é um valor fornecido pelo usuário. 
 
5. Construir um algoritmo que leia a altura e o sexo (codificado como 1 – masculino, 
2 – feminino) de um grupo de N pessoas (N também deve ser lido), calcule e 
escreva: 
� Média da altura das mulheres e média da altura dos homens; 
� Maior e a menor altura da turma; 
� Média da altura da turma. 
 
6. Dado um número inteiro positivo (na base 10), construa um algoritmo para 
transformá-lo em binário. 
 
7. Implemente em linguagem C(C++) o algoritmo desenvolvido na questão 1. 
 
8. Implemente em linguagem C(C++) o algoritmo desenvolvido na questão 2. 
 
9. Implemente em linguagem C(C++) o algoritmo desenvolvido na questão 3. 
 
10. O fatorial de um número inteiro n é dado pela expressão: 
 
1.2.3......)2(.)1(.! −−= nnnn , para n ≥ 1 e 
 
 0 ! = 1 
 
(exemplos : 5 ! = 5 . 4 . 3 . 2 . 1, 3 ! = 3 . 2 . 1). 
Construir um algoritmo estruturado para calcular o fatorial de um número inteiro 
n dado (lido). Não deixe de considerar o caso n = 0! Implemente o algoritmo com 
o uso da linguagem de programação C (C++). 
 
11. O valor de ex pode ser obtido, com boa aproximação, a partir dos 15 primeiros 
termos da série abaixo: 
 
.......
!7!6!5!4!3!2!1
1
7654321
++++++++=
xxxxxxx
ex 
 
i. Construir um algoritmo estruturado para obter o valor de ex , sendo 
x um número inteiro dado (leitura). Não é necessário apresentar o 
algoritmo para o cálculo do fatorial nesta questão. 
ii. Implemente em linguagem C(C++) o algoritmo desenvolvido 
(indique o cálculo do fatorial por fatorial(i), onde i corresponde ao 
número cujo fatorial deve ser calculado). 
 
12. Em uma eleição presidencial existem 5 candidatos. Os votos foram registrados em 
fichas. Cada ficha contém um dos códigos relacionados abaixo: 
 
� 1, 2, 3, 4, 5 – voto para os respectivos candidatos; 
� 6 – voto nulo; 
� 7 – voto em branco. 
 
Construa um algoritmo que: 
� Leia a fichas; 
� Calcule : 
o o total de votos para cada candidato; 
o Total de votos nulos; 
o Total de votos em branco; 
o O percentual de ocorrência para cada um dos códigos. 
� Escreva todos os valores obtidos no item anterior; 
 
Implemente o programa em linguagem C(C++). 
 
13. Ler um array unidimensional A com 15 elementos. Construir um array do mesmo 
tipo, sendo que cada elemento do array B seja o fatorial do elemento 
correspondente da matriz A. 
 
14. Ler12 elementos inteiros para um array unidimensional A. Construir um array B 
de mesmo tipo e dimensão, observando a seguinte lei de formação: 
 “Todo o elemento do array A que for ímpar deverá ser multiplicado por 2; caso 
contrário, deve-se armazenar o fatorial do elemento do array A. 
Apresente os arrays A e B no final da execução. 
15. Leia dois vetores A e B, com os dados ordenados, construa um algoritmo (em 
português estruturado) para intercalar os vetores A e B de tal modo que o novo 
vetor C também esteja ordenado. Faça a implementação na linguagem C(C++) 
utilizando sintaxe de arrays. 
 
Exemplo: 
 A 1 3 4 7 
B 2 5 6 8 
C 1 2 3 4 5 6 7 8 
 
 
 
 
 
16. (a) Construir um algoritmo que leia dois arrays unidimensionais, contendo, cada 
um 30 elementos numéricos, e construa um terceiro array, de 60 elementos, 
intercalando os elementos dos dois arrays lidos. Os arrays de entrada e o 
construído devem ser impressos no final do processo. 
Exemplo: A 1 10 4.7 7.2 
 
B 0.1 5.7 5 8.1 
 
C 1 0.1 10 5.7 4.7 5 7.2 8.1(b) Implemente em linguagem C (C++) o algoritmo desenvolvido. 
(c) Generalize o programa desenvolvido no item (b), de forma a aceitar a entrada 
de arrays de até 100 elementos. (indique as modificações efetuadas no algoritmo). 
 
17. (a) Construir um algoritmo que leia dois arrays unidimensionais, contendo, cada 
um 30 elementos numéricos, e construa um terceiro array, de 60 elementos, 
intercalando o inverso dos elementos dos dois arrays lidos. Os arrays de entrada e 
o construído devem ser impressos no final do processo. 
 
Exemplo: A 1 10 4.7 7.2 
 
B 0.1 5.7 5 8.1 
 
C 1/1 1/0.1 1/10 1/5.7 1/4.7 1/5 1/7.2 1/8.1 
 
 
 
(b) Implemente em linguagem C (C++) o algoritmo desenvolvido. 
(c) Generalize o programa desenvolvido no item (b), de forma a aceitar a entrada 
de arrays de até 100 elementos. (indique as modificações efetuadas no algoritmo). 
 
 
18. (a) Vamos considerar uma planilha de 21 linhas por 11 colunas, a qual será 
representada por um array bidimensional. Desenvolva um algoritmo que faça a 
leitura, a partir do teclado, dos valores numéricos das primeiras 20 linhas e 10 
colunas da planilha. Realizada a leitura, armazenar a soma dos valores de cada 
linha na linha correspondente da última coluna. Finalmente, armazenar a soma 
dos valores de cada coluna na coluna correspondente da última linha da planilha. 
(b) Implemente em linguagem C (C++) o algoritmo desenvolvido. 
 
19. Considere o desenvolvimento de uma agenda que contenha nomes, endereços e 
telefones (residencial e comercial) de 10 pessoas. Defina uma estrutura adequada , 
o algoritmo estruturado e a codificação, em linguagem C(C++), de um programa 
que, por meio de um menu de opções, execute as seguintes etapas: 
a) Cadastro de registros; 
b) Pesquisa os registros cadastrados em busca de um dado nome; 
c) Classifique por ordem de nome os registros cadastrados. 
d) Apresente todos os registros 
e) Sai do programa cadastro. 
 
Atenção: Simplifique a resolução. Primeiro preocupe-se com a parte funcional, ou seja, 
como fazer para cadastrar, como fazer para pesquisar registros já cadastrados (lembre-se 
dos primeiros exercícios), como classificar os registros por nome, etc. Somente então se 
preocupe com o menu. Para controle do menu associe a cada opção uma letra. Utilize 
uma estrutura condicional do tipo switch para o controle. 
 
20. Criar um programa, em linguagem C(C++), que realiza as quatro operações 
matemáticas básicas, a saber, soma (utilize o símbolo +), subtração (símbolo -), 
multiplicação (símbolo *) e divisão (símbolo /) e pode ser desligada com o 
comando Fim (utilize a tecla F). O programa deve operar por meio de um menu 
simples que requisita o tipo de operação a executar (utilizando os símbolos 
acima), em seguida requisita os dois operandos e, finalmente, apresenta o 
resultado da operação. Uma vez apresentado o resultado da operação, a 
calculadora requisita a nova operação e repete-se o processo. Utilize uma 
estrutura condicional do tipo switch para controle da operação. Deve-se 
apresentar o algoritmo em linguagem natural ou na forma de diagrama de blocos, 
com um nível de detalhamento que permita a tradução direta para a linguagem 
C(C++). 
 
21. Criar um programa, em linguagem C(C++), para avaliar expressões a partir da 
interpretação dos operadores AND bit a bit (símbolo &), OR bit a bit (símbolo | ) 
e XOR bit a bit (símbolo ^). Apresente como saída os dados de entrada e o 
resultado da expressão avaliada em notação decimal e também as representações 
binárias correspondentes. (O algoritmo é obrigatório!). 
 
22. Escreva um programa que lê uma seqüência de caracteres (string) de qualquer 
tamanho a partir do teclado e conta o número de ocorrências de cada um dos 
diferentes caracteres contidos na seqüência. Exemplo: a letra A ocorre 3 vezes na 
seqüência de caracteres BANANA, enquanto a letra N ocorre duas vezes e B 
apenas uma vez. 
 
23. Desenvolver um programa em linguagem C(C++) que permita realizar o produto 
interno de dois arrays unidimensionais denominados A (array linha) e B (array 
coluna), conforme expressão a seguir: 
 
BAC .= , ou �
=
=
n
i
ii BAC
1
. , 
 
Note que o índice i varia de 1 até o número de elementos do array. O número de 
elementos dos arrays A e B deve ser igual e deve ser fornecido pelo usuário, assim 
como os valores de cada um dos elementos de cada um dos arrays. (Apresentar o 
algoritmo obrigatoriamente!). 
 
24. Desenvolver um programa em linguagem C(C++) que permita realizar o produto 
de uma matriz (array bidimensional) quadrada e um array unidimensional, 
denominados A (array bidimensional) e b (array coluna) respectivamente, 
conforme expressão a seguir: 
 
bAC .= , ou 
�
=
=
n
j
jjii bAC
1
,
. , com i = 1, 2, 3, ..., n 
 
Note que os índices i e j variam de 1 até o número de elementos do array (n). A 
quantidade de elementos dos arrays A e b deve ser fornecida pelo usuário, assim 
como os valores de cada um dos elementos de cada um dos arrays. (Apresentar o 
algoritmo obrigatoriamente!). 
 
25. Elaborar um programa em linguagem C(C++) que possibilite calcular a área total 
de uma residência (sala, cozinha, banheiro, quartos, área de serviço, quintal, 
garagem, etc.). O programa deverá solicitar a entrada do nome, a largura e o 
comprimento de um determinado cômodo. Em seguida deverá apresentar o nome 
e a área calculada do cômodo e também uma mensagem solicitando do usuário a 
confirmação de continuar calculando novos cômodos. Caso o usuário responda 
NÃO, o programa deverá reapresentar o nome e área calculada de todos os 
cômodos e o valor total acumulado da área residencial. (Apresentar o algoritmo 
obrigatoriamente!). 
 
26. Desenvolver um programa em linguagem C que permita realizar o produto de 
duas matrizes (arrays bidimensionais) de ordem n x m e m x k, denominadas, 
respectivamente, A e B, resultando numa matriz C de ordem n x k, conforme 
expressão a seguir: 
 
BAC .= , ou 
�
=
=
m
k
jkkiji BAC
1
,,,
. , 
com i = 1, 2, 3, ..., n e j = 1, 2, ... k 
 
A ordem das matrizes A e B deve ser fornecida pelo usuário, assim como os 
valores de cada um dos elementos de cada um dos arrays. Imprimir no dispositivo 
padrão de saída os arrays de entrada e o calculado. (Observação: Considere 
matrizes estáticas de, no máximo, 20x20 elementos. Não se esqueça de informar o 
usuário sobre esta limitaçao!). 
 
27. Considere o desenvolvimento de uma agenda que contenha nomes, endereços e 
telefones (residencial e comercial) de 10 pessoas. Defina uma struct adequada , o 
algoritmo estruturado e a codificação, em linguagem C, de um programa que, por 
meio de um menu de opções, execute as seguintes etapas: 
a) Altera dados de um registro identificado pelo nome. O tipo de dado a ser alterado 
deve ser fornecido pelo usuário por meio de um menu auxiliar. 
b) Pesquisa os registros cadastrados em busca de um dado nome; 
c) Apresente todos os registros 
d) Sai do programa cadastro. 
 
28. Considere as structs data, endereço e pessoa definidas a seguir: 
 
struct endereco struct data struct pessoa 
char rua [256]; 
unsigned int numero; 
char cidade [30]; 
unsigned long int cep; 
unsigned char dia, mes; 
unsigned short int ano; 
 
char nome [128]; 
endereco residencia; 
endereco comercial; 
data nascimento; 
 
a. Escreva um programa que lê os dados de uma pessoa, fornecidos pelo usuário, e os 
armazena na struct pessoa. (Lembre-se de utilizar as funções para manipulação de 
strings da biblioteca do C). 
 
b. Escreva um programa que armazena um array unidimensional de structs pessoa. O 
número de pessoas é determinado pelo usuário (Lembre-se de avisar o usuário se 
existir limitação no número máximo de pessoas no cadastro). Os dadosde todas as 
pessoas são fornecidos pelo usuário. (Lembre-se de não utilizar espaço em branco na 
entrada da string (nome da pessoa, rua e cidade). Para separar palavras deve-se usar o 
caracter de sublinhado – ex: Rua_Bom_Jardim, Joao_da_Silva.). (Obviamente, o 
programa desenvolvido no item anterior pode ser utilizado aqui, com pequenas 
modificações, para a leitura dos dados!) 
 
29. Desenvolver um algoritmo para uma Agenda de Compromissos que permita 
armazenar compromissos fornecidos pelo usuário. A agenda deve conter: 
A. Um título para o compromisso (uma string) 
B. A data do compromisso (dia / mes / ano) 
C. A hora do compromisso (hora : minuto) 
D. Pessoa a contatar (uma string) 
E. Telefone de contato (string) 
 
Cada compromisso deve ser armazenado como uma struct e o programa deve 
permitir agendar o compromisso a partir de dados fornecidos pelo usuário 
utilizando o teclado. O número de compromissos a agendar deve ser definido pelo 
usuário. Implemente a leitura e o cadastro em funções distintas. A agenda deve 
ser declarada global e outros parâmetros, se necessários, devem ser passados por 
valor ou referência. 
 
30. Considere as structs data, endereço e pessoa definidas a seguir: 
 
struct endereco struct data struct pessoa 
char rua [256]; 
unsigned int numero; 
char cidade [30]; 
unsigned long int cep; 
unsigned char dia, mes; 
unsigned short int ano; 
 
char nome [128]; 
endereco residencia; 
endereco comercial; 
data nascimento; 
 
a) Defina uma nova struct, denominada agenda, cujos dados membros são: 
um array de pessoas, o número máximo permitido no array e o número de 
pessoas já cadastradas. (ATENÇÃO: você é quem define os tipos de cada 
dado. Considere atentamente a questão. Considere somente arrays 
estáticos.) 
b) Faça um programa que permita a inclusão dos dados de várias pessoas na 
agenda, verificando antes se o nome dado já não se encontra armazenado. 
(O programa não aceita a existência de homônimos!). 
 
 
31. Dada uma matriz de 1000 linhas e 80 colunas, contendo um texto, faça um 
algoritmo para compactar e descompactar o texto, isto é, cada palavra deve ser 
armazenada uma única vez. Considere as seguintes sugestões: 
a. leia a matriz; 
b. construa um array unidimensional onde cada elemento é uma struct 
contendo: 
i. um array unidimensional de 20 elementos para armazenar a 
palavra, ou sinais de pontuação (ponto, vírgula, ponto e vírgula, 
ponto de exclamação, ponto de interrogação e dois pontos) [isto 
significa que nenhuma palavra pode ter mais que 20 caracteres]; 
ii. um array unidimensional de 30 elementos para armazenas as 
posições onde a palavra ocorre na matriz [isto significa que 
nenhuma palavra ocorre mais de 30 vezes no texto]; (ATENÇÃO: 
Estude atentamente o armazenaemnto de elementos de um array 
bidimensional na linguagem C) . 
c. considere que uma palavra é sempre delimitada por espaços em branco ou 
espaço em branco e caracteres de pontuação. 
 
32. Desenvolva um programa para calcular a média e desvio padrão da temperatura 
em uma semana, num mes ou num ano e apresentá-los ao usuário. Em cada caso 
deve-se considerar a leitura de um dado de temperatura por unidade. A unidade 
corresponde a um dia para o caso de cálculo de média na semana ou no mes e 
unidade deve corresponder a um mes no caso de média de temperatura no ano. O 
tipo de média e os dados de temperatura devem ser fornecidos pelo usuário. 
Observe que a leitura de temperatura, no caso de cálculo da média por mês, deve 
considerar o mes (Janeiro, fevereiro, março abril, ..., dezembro) e os anos 
bissextos. 
Atenção: Exige-se o uso de arrays com alocação dinâmica. Não devem ser 
utilizadas funções!!! 
Exemplo de operação: 
Deseja calcular a média de temperatura por semana (S), mes (M) ou ano (A) ? (Utilize F 
para terminar!): 
entrada do usuário :S 
Forneça a temperatura para o Domingo : (entrada do usuário) 
Forneça a temperatura para a Segunda-feira : (entrada do usuário) 
Forneça a temperatura para a Terça-feira : (entrada do usuário) 
Forneça a temperatura para a Quarta-feira : (entrada do usuário) 
Forneça a temperatura para a Quinta-feira : (entrada do usuário) 
Forneça a temperatura para a Sexta-feira : (entrada do usuário) 
Forneça a temperatura para o Sabado : (entrada do usuário) 
 
Média Calculada e desvio padrão: valor calculado +- (desvio) 
 
Deseja calcular a média de temperatura por semana (S), mês (M) ou ano (A) ? (Utilize F 
para terminar!): 
entrada do usuário :F 
 
O comportamento para a entrada de dados para as outras opções fica por conta do 
programador. 
 
Cálculo da Média : = �
=
=
N
i
iTN
T
1
1
 
Cálculo do Desvio Padrão: ( )
21
1
2
1
1
/N
i
i TTN
�
�
�
�
�
�
−
−
= �
=
σ 
 
33. A função floor pode ser utilizada para arredondar um valor para o inteiro mais 
próximo. O comando 
 
y = floor (x + 0.5); // declaração em math.h : double floor (double a); 
 
arredonda o valor numérico x para o inteiro mais próximo e atribui o resultado a y. 
Escreva um programa que leia a média (sem arredondamento) de todos os alunos da 
classe e use o comando precedente para arredondar cada uma dessas notas para o 
valor inteiro mais próximo. O número de alunos da classe, as notas lidas, assim como 
as arredondadas, devem ser armazenadas em vetores. Os vetores devem ser alocados 
dinamicamente. A leitura dos valores deve ser feita no programa principal (main) e o 
aluno deve implementar uma função que calcule o arredondamento. O programa deve 
imprimir uma tabela com os valores originais e os valores arredondados (ao lado). 
Esta impressão deve ser feita por meio de uma função denominada imprime. 
(ATENÇÃO à passagem de parâmetros!!!). 
 
 
34. Considere o controle de um almoxarifado. Neste almoxarifado, são armazenados 
diferentes tipos de peças (até 10000) e o controle é feito por fichas que contêm: 
- Uma descrição da peça: (uma seqüência de caracteres de até 128 caracteres); 
- O nome de 3 fornecedores : (cada um corresponde a uma seqüência de caracteres 
de até 64 caracteres); 
- O endereço de cada um dos fornecedores : (uma seqüência de até 512 caracteres); 
- Número de peças em estoque (no máximo 60000 peças por item); 
 
Crie um programa que permita cadastrar a peça, os fornecedores e seus endereços. O 
programa deve permitir definir o número total de peças em estoque, incluir e excluir 
um certo número de peças e deve avisar o usuário quando o número de peças em 
estoque passa a ser inferior a um número pré-estabelecido (um limite mínimo de 
peças no estoque). Utilize uma ou mais structs para o cadastro. Não utilize funções. 
 
 
35. Uma matriz esparsa corresponde a um array bidimensional contendo um grande 
número de elementos iguais a zero, conforme figura abaixo. Para reduzir o 
consumo de memória, tais matrizes podem ser armazenadas a partir de um de 
vários esquemas especiais de armazenamento compacto. Nestes esquemas, 
somente os elementos não nulos são armazenados. Lembrando que um array 
bidimensional na linguagem C é armazenado por linha, uma forma econômica de 
armazenar o array bidimensional acima é apresentado a seguir: 
 
 
 
 
 
 
 
 
 
 
Escreva um programa que, dada a matriz esparsa armazene somente os valores 
diferentes de zero a partir do esquema mostrado acima. 
 
36. Desenvolver um algoritmo, com posterior implementação em linguagem C, para 
calcular a integral de uma função representada por uma tabela de dados (x, y) cujo 
número de elementos é fornecido pelo usuário. Os dados da tabela são fornecidos 
a partir do teclado. O programa deve conter uma função para leitura, uma para 
saída e outra para a integração. Todos os dados devem ser transmitidos às funçõespor parâmetros e não declarados globais. A integração será realizada utilizando a 
regra dos trapézios, apresentada a seguir: 
( ) �
�
�
�
�
�
+
+∆=�
�
�
�
�
�
+
∆
≅= ��	
−
==
+
1
1
0
0
1 22
)(
0
n
i
i
n
n
i
ii
x
x
y
yy
xyyxdxxyI
n
 
 
com ∆x = (xi+1 – xi). 
A saída deve conter a tabela fornecida na entrada e o valor calculado da integral. 
 
Exemplo: 
x 1 2 3 4 
y 1 4 9 16 
∆x = 1 
Integral exata (de 1 a 4): 21 
Integral aproximada: 21,5 
 
 
 
�
�
�
�
00080
00300
07000
05002
[ ]
[ ]83752:
1713941:
valorvetor
posiçãovetor

Outros materiais