A maior rede de estudos do Brasil

Grátis
59 pág.
livro Programacao C - Respostas+dos+exercícios+propostos+C

Pré-visualização | Página 1 de 8

Aprendendo 
a 
Programar
Programando 
na 
Linguagem C
Para Iniciantes
Jaime Evaristo
Respostas dos Exercícios 
Propostos 
Capítulo 1
1.  Naturalmente, na primeira travessia um índio levaria um branco até a outra margem e 
voltaria sozinho. A questão é a segunda: não poderia atravessar um índio e um branco, pois ao 
chegar na outra margem haveria dois brancos e um índio; não poderiam atravessar dois índio, pois 
o terceiro ficaria com dois brancos. A solução é atravessar dois brancos e um deles retornar. A 
terceira travessia só pode ser feita por dois índios, pois já existem dois brancos na outra margem. 
A questão é o retorno. A única possibilidade é retornar um índio e um branco! Temos então o 
seguinte algoritmo:
1. Atravessem um índio e um branco.
2. Retorne o índio.
3. Atravessem dois brancos.
4. Retorne um branco.
5. Atravessem dois índios.
6. Retornem um índio e um branco.
7. Atravessem dois índios.
8. Retorne um branco.
9. Atravessem dois brancos.
10. Retorne um branco.
11. Atravessem dois brancos.  
2. Indicando por 1, 2, 3, 4, ... os discos na ordem crescente dos seus diâmetros, temos para 
o caso n = 2: 
1. Disco 1 da origem para auxiliar.
2. Disco 2 da origem para o destino.
3. Disco 1 da auxiliar para o destino.
Para o caso n = 3, basta observar que é necessário apenas transportar os dois discos 1 e 2 da 
origem para auxiliar (que é o caso anterior), transportar o disco três da origem para o destino e os 
discos 1 e 2 da torre auxiliar para o destino (que é, novamente, o caso anterior).
1. Disco 1 da origem para destino.
2. Disco 2 da origem para  auxiliar.
3. Disco 1 do destino para  auxilia.
4. Disco 3 da origem para destino.
5. Disco 1 da auxiliar para origem.
6. Disco 2 da auxiliar para o destino.
7. Disco 1 da origem para o destino.
3. Indiquemos por P(m, n) = 0 se m e n  têm o mesmo peso e P(m, n) > 0 se a esfera m é 
mais pesada que a esfera n. Temos então a seguinte proposta:
1. Pese as esferas 1 e 2.
2. Se P(1, 2) = 0, pese as esferas 1 e 3.
2.1 Se P(1, 3) > 0 então forneça como resposta:  a esfera 3 tem peso menor que as 
esferas 1 e 2.
2.2 Se P(3, 1) > 0 então forneça como resposta: a esfera 3 tem peso maior que as esferas 
1 e 2.
3. Se P(1, 2) > 0, pese as esferas 1 e 3.
3.1 Se P(1, 3) = 0 então forneça como resposta:  a esfera 2 tem peso menor que as 
esferas 1 e 3.
3.2 Se P(1, 3) > 0 então forneça como resposta: a esfera 1 tem peso maior que as esferas 
2 e 3.
3.3 Se P(3, 1) > 0 então forneça como resposta:  a esfera 1 tem peso menor que as 
esferas 2 e 3.
4. Se P(2, 1) > 0, pese as esferas 2 e 3.
4.1 Se P(2, 3) = 0 então forneça como resposta:  a esfera 1 tem peso menor que as 
esferas 2 e 3.
4.2 Se P(2, 3) > 0 então forneça como resposta: a esfera 2 tem peso maior que as esferas 
1 e 3.
4.3 Se P(3, 2) > 0 então forneça como resposta:  a esfera 2 tem peso menor que as 
esferas 1 e 3.
4. Para calcular o produto, utilizamos uma variável P que assume inicialmente o primeiro 
valor da relação e, para cada novo elemento, vai tendo o seu valor substituído pelo produto do seu 
valor atual pelo novo elemento. A partir daí, a média geométrica é raiz n­ésima desse produto.
1. Chame de A o primeiro número dado.
2. Chame de N o número de elementos da relação
3. Faça P = A.
4. Repita N ­ 1 vezes as instruções 4.1 e 4.2.
4.1. Chame de A o próximo número dado.
4.2. Substitua o valor de P por P x A.
5. Calcule M = Raiz(P, N)
6. Forneça M para o valor da média.
5. Basta observar que os dias da semana, sendo em número de 7, repetem­se em ciclos de 7 
dias.   Assim,   se   01/01/1900   foi   uma   segunda­feira,   o   foram   também   os   dias   08/01/1900, 
15/01/1900, 22/01/1900, 29/01/1900, 05/02/1900 e assim sucessivamente. Basta então determinar 
o número de dias decorridos entre a data dada e o dia 01/01/1900 e calcular o resto da divisão por 
7.
1. Determine o número n de dias entre a data dada e 01/01/1900.
2. Calcule o resto r da divisão de n por 7
3. Se r = 1 forneça como resposta segunda­feira.
4. Se r = 2 forneça como resposta terça­feira.
5. Se r = 3 forneça como resposta quarta­feira.
6. Se r = 4 forneça como resposta quinta­feira.
7. Se r = 5 forneça como resposta sexta­feira.
8. Se r = 6 forneça como resposta sábado.
9. Se r = 0 forneça como resposta domingo.
6. Indicando por A(x, y) a travessia dos integrantes x e y e por V(x) a volta do integrante x, 
teríamos:
1. A(baterista, baixista).
2. V(baterista).
3. A(guitarrista, vocal).
4. V(baixista)
5. A(baixista, baterista)
Capítulo 2
1.a) ((­(­9) + sqrt((­9)*(­9) ­ 4*3*6))/(2*3)) = ((9 + sqrt(81 – 72))/6) = ((9 + sqrt(9))/6) = 
= ((9 + 3)/6)  = (12/6) = 2.
1.b) ((pow(3, 2) == 9) && (acos(0) == 0)) || (4 % 8 ==  3) = (1 && 0) || 0 = 0 || 0 = 0.
2.a) /*Programa que converte uma temperatura dada em graus Fahrenheit para graus 
Celsius */
#include <stdio.h>
main()
{
float Fahrenheit, Celsius;
printf("Digite a temperatura em Fahrenheit");
scanf("%f", &Fahrenheit);
Celsius = 5 * (Fahrenheit ­ 32)/9;
printf("A temperatura de %.2f  Fahrenheit corresponde a %.2f Celsius ", Fahrenheit, 
Celsius);
}
2.b) /*Programa que inverte um numero com tres algarismos*/
#include <stdio.h>
main()
{
int Num, Invert, Unid, Dez, Cent;
printf("Digite o numero a inverter ");
scanf("%d", &Num);
Unid = Num % 10;
Dez = (Num % 100)/10;
Cent = Num/100;
Invert = Unid*100 + Dez*10 + Cent;
printf("Invertendo­se %d obtemos %d \n", Num, Invert);
}
2.c /*Programa para somar duas frações*/
#include <stdio.h>
main()
{
int Num1, Den1, Num2, Den2, Num, Den;
printf("Digite os termos das fracoes \n");
scanf("%d %d %d %d", &Num1, &Den1, &Num2, &Den2);
Num = Num1*Den2 + Num2*Den1;
Den = Den1*Den2;
printf("(%d/%d) + (%d/%d) = (%d/%d)", Num1, Den1, Num2, Den2, Num, Den);
}
2.d) /* Programa que determina o maior multiplo de um inteiro menor ou igual a outro 
inteiro*/
#include <stdio.h>
main()
{
int Num, Divisor, MaiorMultiplo;
printf("Digite o inteiro do qual ser o número procurado deve ser multiplo \n");
scanf("%d", &Divisor);
printf("Digite o inteiro que deve ser maior do o que múltiplo procurado\n");
scanf("%d", &Num);
MaiorMultiplo = Num ­ Num % Divisor;
printf(" \n O maior multiplo de  %d menor do que ou igual %d e' %d \n",  Divisor, Num, 
MaiorMultiplo);
}
2.e) /*Programa para calcular o perimetro de um poligono regular de n lados inscrito numa 
circunferencia de raio r*/
#include <stdio.h>
#include <math.h>
main()
{
const float Pi = 3.1416;
float r, Perim, Seno;
int n;
printf("Digite o numero de lados do poligono e o raio \n");
scanf("%d %f", &n, &r);
Perim = 2*n*r*sin(Pi/n);
printf("Perimetro do poligono regular de %d lados inscrito numa circunferencia de raio 
%.2f: %.2f \n", n, r, Perim);
}
3. /*Programa para permutar os conteudos de duas variaveis sem utilizar uma variavel 
auxiliar*/
#include <stdio.h>
main()
{
float x, y;
printf("Digite os dois numeros \n");
scanf("%f %f", &x, &y);
printf("Conteudos antes da troca x =  %0.1f, y = %0.1f \n", x, y);
x = x + y;
y = x ­ y;
x = x ­ y;
printf("Conteudos depois da troca x = %0.2f, y = %0.2f \n", x, y);
}
4. /*Programa para determinar entrada mais duas parcelas inteiras de uma compra*/
#include <stdio.h>
main()
{
float Compra, Entrada;
int Parcelas;
printf("Digite o valor da compra: ");
scanf("%f", &Compra);
Parcelas = Compra/3;
Entrada = Compra ­ 2*Parcelas;
printf("Entrada = %0.2f, Parcelas %d.00 \n", Entrada, Parcelas);
}
5. /*Programa para converter um tempo dado em segundos para horas, minutos e 
segundos*/
#include <stdio.h>
main()
{
int Tempo, Horas, Minutos, Segundos;
printf("Digite o valor do intervalo de tempo (em segundos): ");
scanf("%d", &Tempo);
Horas = Tempo/3600;
Minutos = (Tempo % 3600)/60;
Segundos = Tempo % 60;
printf("O intervalo de tempo de %d segundos equivale a %d h %d min %d s \n", Tempo, 
Horas, Minutos, Segundos);
}
6. /*Programa para converter um tempo dado em minutos para horas, minutos e segundos*/
#include <stdio.h>
main()
{
float Tempo, Segundos;
int Horas, Minutos;
printf("Digite o valor do intervalo de tempo (em minutos):