1º TRABALHO DE CALCULO NUMÉRICO
Click here to load reader
-
Upload
lincolnazevedo -
Category
Documents
-
view
45 -
download
0
Transcript of 1º TRABALHO DE CALCULO NUMÉRICO
CONVERSÃO DE BASE Trabalho apresentado ao Professor Giovane Christian Nunes como exigências da disciplina de Cálculo Numérico pelos discentes Karith Mesquita, Lincoln Barony, Lúcio Flávio e Marina Bornachi.
2012
Faculdade de Engenharia - FaEnge Universidade do Estado de Minas Gerais
05/09/2012
2
1. IMPLEMENTAR UM MÉTODO DE CONVERSÃO DE BASE DECIMAL
FRACIONÁRIA PARA BASE BINÁRIA E BINÁRIA FRACIONÁRIA PARA
DECIMAL.
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
main(){
{
int MENU;
printf("\n\t\t* * Escolha o tipo de Conversao * *\n");
printf("\t\t* *\n");
printf("\t\t* 0 - Sair *\n");
printf("\t\t* 1 - decimal para binario *\n");
printf("\t\t* 2 - binario para decimal *\n");
printf("\t\t* *\n");
printf("\t\t* * * * * * * * * * * * * * * * * * *\n");
printf("\n\t\t\tA opcao escolhida:");
scanf("%d",&MENU);
if(MENU!=0)
{
if(MENU==1)
{
printf("\nConversao de binario para decimal.\n\n");
float numero1, numero2, sobra, res=-1, x2=0.5, soma2=0, soma3;
int ptint1, ptint2, dgt1, dgt2, soma1=0, x1=1;
printf("Informe um numero Binario:\n");
scanf("%f", &numero1);
3
numero2 = numero1;
ptint1 = numero1;
sobra = numero1 - ptint1;
while(ptint1 >= 1){
dgt1 = ptint1%10;
ptint1 = ptint1/10;
soma1 = soma1 + dgt1 * x1;
x1 = x1 * 2;
}
while(res != 0){
numero2 = numero2 * 10;
ptint2 = numero2;
dgt2 = ptint2%10;
res = numero2 - ptint2;
soma2 = soma2 + dgt2 * x2;
x2 = x2 * 0.5;
}
soma3 = soma1 + soma2;
printf("%f\n", soma3);
system("PAUSE");
}
if(MENU==2)
{
printf("\nConversao de decimal para binario.\n\n");
int pi, pi2, vet1[100], vet2[100], i=0, cont1=-1, cont2=0;
float num, pf, aux;
4
printf("Informe um numero Decimal:\n");
scanf("%f", &num);
pi = num;
pi2 = pi;
pf = num - pi;
while(pi >= 1){
vet1[i] = pi%2;
pi = pi/2;
i++;
cont1 = cont1 + 1;
}
printf("%f \n", num);
if(pi2 == 0){
printf("0");
}
for(i = cont1; i >= 0; i--){
printf("%d", vet1[i]);
}
printf(",");
i=0;
while(pf != 0){
aux = pf * 2;
pi = aux;
pf = aux - pi;
vet2[i] = pi;
i++;
cont2 = cont2 + 1;
5
}
for(i=0; i < cont2; i++){
printf("resultado = %d\n", vet2[i]);
}
system("PAUSE");
}
else
{
printf("BYE BYE");
getchar();
}
}
}
}
2. CONVERTA OS SEGUINTES NÚMEROS DECIMAIS PARA SUA FORMA
BINÁRIA.
A) X = 37
37 / 2 = 16 resto 1
16/2 = 8 resto 0
8/2 = 4 resto 0
4/2 = 2 resto 0
2/2 = 1 resto 0
Logo o número 37 na base binária fica 1000001
B) Y = 2345
2345/2 = 1172 resto 1
1172/2 = 586 resto 0
586/2 = 293 resto 0
6
293/2 = 146 resto 1
146/2 = 73 resto 0
73/2 = 36 resto 1
36/2 = 18 resto 0
18/2 = 9 resto 0
9/2 = 4 resto 1
4/2 = 2 resto 0
2/2 = 1 resto 0
Logo o número 2345 na base binária fica 100100101001
C) Z = 0,1217
Primeiramente analisamos as casas antes da vírgula. O número zero na base binária também é zero.
0,1217 x 2 = 0,2434 primeira casa 0
0,2434 x 2 = 0,4868 primeira casa 0
0,4868 x 2 = 0,9736 primeira casa 0
0,9736 x 2 = 1,9472 primeira casa 1
0,9472 x 2 = 1,8944 primeira casa 1
0,8944 x 2 = 1,7888 primeira casa 1
0,788 x 2 = 1,5776 primeira casa 1
0,5776 x 2 = 1,1552 primeira casa 1
0,1552 x 2 = 0,3104 primeira casa 0
0,3104 x 2 = 0,6208 primeira casa 0
0,6208 x 2 = 1,2416 primeira casa 1
0,2416 x 2 = 0,4832 primeira casa 0
0,4832 x 2 = 0,9664 primeira casa 0
0,9664 x 2 = 1,9328 primeira casa 1
0,9328 x 2 = 1,8656 primeira casa 1
Provavelmente é uma dízima periódica, por isso encerrarei o processo por aqui, sendo assim a
representação de 0,1217 na base binária é 0,000111110010011
7
3. CONVERTA OS SEGUINTES NÚMEROS BINÁRIOS PARA BASE DECIMAL:
A) X = 101101
1 x 25 + 0 x 2
4 + 1 x 2³ + 1 x 2² + 0 x 2¹ + 1 x 2
0 = 32 + 0 + 8 + 4 + 0 + 1 = 45
B) Z = 0,1101
0 x 20 + 1 x 2
-1 + 1 x 2
-2 + 0 x 2
-2 + 1 x 2
-3 = 0 +
+
+ 0 +
= 0,875
C) Y = 110101011
1 x 28 + 1 x 2
7 + 0 x 2
6 + 1 x 2
5 + 0 x 2
4 + 1 x 2³ + 0 x 2² + 1 x 2
1 + 1 x 2
0 = 256 + 128 + 0 + 32 + 0 + 8 + 0 + 2
+ 1 = 427
D) W = 0,1111111
0 x 20 + 1 x 2
-1 + 1 x 2
-2 + 1 x 2
-3 + 1 x 2
-4 + 1 x 2
-5 + 1 x 2
-6 + 1 x 2
-7 = 0 +
+
+
+
+
+
+
=
0,9921875