-
Notifications
You must be signed in to change notification settings - Fork 65
/
Copy pathejercicio5.psc
78 lines (70 loc) · 3.22 KB
/
ejercicio5.psc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
//################################################################################
//Función ConvertirABinario: Recibe un número entero y devuelve una cadena de
//caracteres con la representación binaria del número.
//Parámetros de entrada: Número entero a convertir
//Dato devuelto: Cadena de caracteres con el número binario
//################################################################################
Funcion binario <- ConvertirABinario(decimal)
Definir binario como Caracter;
binario<-"";
//Realizo divisiones sucesivas entre 2 guardando el resto (1 o 0)
Mientras decimal>1 Hacer
//Concatenamos en orden inverso los restos de la división entre 2.
binario<-Concatenar(ConvertirATexto(decimal % 2),binario);
decimal <- trunc(decimal / 2);
FinMientras
binario<-Concatenar(ConvertirATexto(decimal),binario);
FinFuncion
//################################################################################
//Función ConvertirADecimal: Recibe una cadena de caracteres con la representación
// de un número binario y devuelve el entero correspondiente.
//Parámetros de entrada: Cadena de caracteres con el número binario
//Dato devuelto: Entero
//################################################################################
Funcion decimal <- ConvertirADecimal(binario)
Definir decimal,posicion, exponente Como Entero;
decimal <- 0;
exponente<-1;
//Voy acumulando el valor de la cifra binario elevado a un exponente que depende de su posición.
//La última cifra hay que elevar al exponete 1, la siguiente 2, la siguiente 4, y así sucesivamente.
Para posicion<-Longitud(binario)-1 hasta 0 con paso -1 Hacer
Si Subcadena(binario,posicion,posicion)="1" Entonces
decimal<-decimal+ConvertirANumero(Subcadena(binario,posicion,posicion))*exponente;
FinSi
//El exponente se va doblando en cada iteración
exponente<-exponente*2;
FinPara
FinFuncion
//################################################################################
//Función EsBinario: Recibe una cadena de caracteres con la representación
// de un número binario y devuelve un valor lógico indicando si realmente es un
//número binario (Tienes 1 y 0) verdadero, y falso en caso contrario.
//Parámetros de entrada: Cadena de caracteres con el número binario
//Dato devuelto: Valor lógico
//################################################################################
Funcion indicador <- EsBinario(binario)
Definir indicador Como Logico;
Definir i como Entero;
indicador<-Verdadero;
Para i<-0 hasta Longitud(binario)-1 Hacer
Si Subcadena(binario,i,i)<>"1" Y Subcadena(binario,i,i)<>"0" Entonces
indicador<-Falso;
FinSi
FinPara
FinFuncion
//################################################################################
//Crea un programa principal que permita convertir de decimal a binario y de
//binario a decimal.
//################################################################################
Proceso DecimalBinario
Definir decimal como Entero;
Definir binario Como Caracter;
Escribir Sin Saltar "Dime un número decimal:";
Leer decimal;
Escribir "Número binario:",ConvertirABinario(decimal);
Repetir
Escribir Sin Saltar "Dime un número en binario:";
Leer binario;
Hasta Que EsBinario(binario);
Escribir "Número decimal:",ConvertirADecimal(binario);
FinProceso