Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
com a utilização apenas de lápis e papel.<br />
Trata-se de um programa para determinar a quantidade de múltiplos de um inteiro dado k<br />
compreendidos (estritamente) entre dois inteiros x e y dados. Por ex<strong>em</strong>plo, se a entrada for k = 7, x = 10 e y =<br />
42, o programa deve retornar a mensag<strong>em</strong> a quantidade de múltiplos de 7 compreendidos entre 10 e 42 é 4<br />
(que são 14, 21, 28, 35).<br />
Uma solução “na mão” desta questão utiliza progressões aritméticas, assunto da Mat<strong>em</strong>ática que é<br />
estudada no Ensino Médio. Uma progressão aritmética de primeiro termo a 1 e razão r é uma sequência de<br />
números a 1 , a 2 , ..., a n cuja diferença entre dois termos consecutivos é constante e igual a r. É fácil provar que<br />
a n = a 1 + (n – 1)r.<br />
Na nossa questão, a 1 é o menor múltiplo de k maior que x (ex<strong>em</strong>plo anterior), a n é o maior múltiplo de<br />
k menor que y e r é igual a k. É fácil ver que o maior múltiplo de k menor que y é dado por (y – 1) – (y – 1) %<br />
k, sendo y – 1 utilizado para gerenciar o caso <strong>em</strong> que y é múltiplo de k, já que quer<strong>em</strong>os múltiplos de k<br />
menor que y.<br />
/*Programa que determina o número de múltiplos de um inteiro k situados entre dois inteiros x e y*/<br />
#include <br />
main()<br />
{<br />
int i, x, y, a, k, NumMultiplos = 0;<br />
printf("Digite os inteiros x e y (y > x)");<br />
scanf("%d %d", &x, &y);<br />
a = y - 1;<br />
printf("Digite o inteiro k \n");<br />
scanf("%d", &k);<br />
NumMultiplos = (a - a % k - x + x % k)/k;<br />
printf("O número de multiplos de %d compreendidos entre %d e %d e' %d \n", k, x, y,<br />
NumMultiplos);<br />
}<br />
6. O programa a seguir, além de ser muito interessante no sentido do desenvolvimento da lógica de<br />
programação, será utilizado (a sequência de comandos da função main()) <strong>em</strong> outros programas. Seu objetivo<br />
é permutar os conteúdos de duas variáveis. Ou seja, suponhamos que, através de comandos de entrada o<br />
programa armazenou nas variáveis x e y os valores 7 e 18 e pretendamos que o programa faça com que o<br />
conteúdo de x passe a ser 18 e o de y passe a ser igual a 7. À primeira vista, bastaria a sequência de<br />
comandos<br />
x = y;<br />
y = x;<br />
Ocorre que, quando o segundo comando fosse executado, o primeiro já teria sido e o conteúdo de x<br />
não seria mais o original. No nosso ex<strong>em</strong>plo, teríamos a seguinte situação<br />
x y<br />
17 8<br />
8<br />
8<br />
e a permuta não teria sido feita, além do fato de que o conteúdo original de x teria sido perdido. Uma<br />
alternativa é considerar uma variável auxiliar que "guarde" o conteúdo de x antes que este seja substituído<br />
pelo conteúdo de y. Teríamos assim o seguinte programa.<br />
/* Programa que permuta os conteúdos de duas variáveis */<br />
#include <br />
main()<br />
{<br />
float x, y, Aux;<br />
printf("Digite os dois numeros ");<br />
scanf("%f %f", &x, &y);<br />
printf("Entrada x = %0.1f, y = %0.1f \n", x, y);<br />
Aux = x;