-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.c
More file actions
111 lines (91 loc) · 2.65 KB
/
main.c
File metadata and controls
111 lines (91 loc) · 2.65 KB
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*
******PROBLEMA*****
Escribe un algoritmo en para hacer la conversión de un número binario a base 5, es claro que se utilizara una estrucutra de datos, así que implementar la estructura necesaria con las operaciones que se requieran.
Para ello, se debe utilizar una pila. Para la conversión, se debe utilizar una pila auxiliar.
Ideas de Pasos a seguir:
Declarar una pila.
Declarar una variable para almacenar el número binario.
Declarar una variable para almacenar el número en base 5.
Empujar el número binario en la pila.
Mientras la pila no esté vacía:
podria hacerlo con Pop el número binario de la pila.?
Multiplicar el número binario por 2.?
Si el número binario es mayor o igual que 5, restar 5 del número binario y agregar 1 a la variable que almacena el número en base 5.
De lo contrario, agregar 0 a la variable que almacena el número en base 5.
Empujar el número en base 5 en la pila.
Mientras la pila no esté vacía:
Pop en el número en base 5 de la pila.
Imprimir el número en base 5.
****Algoritmo en Pseudocodigo *****
1. Declarar variables
2. Preguntar al usuario el número a convertir
3. Declarar una pila
4. Declarar una pila auxiliar
5. Mientras el número sea mayor a 0, realizar las siguientes operaciones:
6. Dividir el número entre 5
7. Empujar el residuo (módulo) a la pila
8. Empujar el cociente (división entera) a la pila
9. Mover todos los elementos de la pila a la pila auxiliar
10. Imprimir los elementos de la pila auxiliar
11. Fin
Nota no dejar todo para el final estas bien wey Isaid
*/
#include <stdio.h>
#include <stdlib.h>
typedef struct Nodo
{
int dato;
struct Nodo * siguiente;
} nodo;
nodo * crearPila ()
{
return NULL;
}
nodo * insertar (nodo *pila, int dato)
{
nodo * nuevo;
nuevo = (nodo *) malloc (sizeof (nodo));
if (nuevo == NULL)
return NULL;
nuevo->dato = dato;
nuevo->siguiente = pila;
return nuevo;
}
nodo * sacar (nodo *pila, int *dato)
{
if (pila == NULL)
return NULL;
*dato = pila->dato;
nodo * aux = pila->siguiente;
free (pila);
return aux;
}
void imprimirPila (nodo *pila)
{
if (pila == NULL)
return;
printf ("%d\n", pila->dato);
imprimirPila (pila->siguiente);
}
int main()
{
nodo * pila = crearPila();
int numero, residuo, dato;
printf("Ingrese numero: ");
scanf("%d", &numero);
while (numero > 0)
{
residuo = numero % 5;
numero = numero / 5;
pila = insertar(pila, residuo);
}
printf("Numero en base 5: ");
while (pila != NULL)
{
pila = sacar(pila, &dato);
printf("%d", dato);
}
printf("\n");
system("PAUSE");
return 0;
}