Vous êtes sur la page 1sur 14

Pseudocódigos y códigos de los programas: Unidad 5

1. Búsqueda Secuencial.
n = 10
v(n)
Ciclo i = 1 hasta n
Pedir v(i)

i=1
b=0
Pedir x
Mientras (i <= n) y (b =0)
Si x = v(i)
b=1
No
i=i+1

Si b = 0
Imprimir “No existe”
No
Imprimir “Encontrado”

Codigo:
class Program
{
static int n = 10, i, b, x;
static int[] V = new int[10];
static string otro;

static void Main(string[] args)


{
Console.WriteLine("Busqueda Secuencial");
for (int j = 0; j < n; j++)
{
Console.WriteLine("Inserte un numero entero");
V[j] = int.Parse(Console.ReadLine());
}
Console.WriteLine("-----------------------------------------------------
--");
BusquedaSecuencial();

Console.Read();
}
static void BusquedaSecuencial()
{
i = 0;
b = 0;
do
{

Console.WriteLine("Ingrese el numero que desea buscar??");


x = int.Parse(Console.ReadLine());
while (i <= n & b == 0)
{
if (x == V[i])
{
b = 1;
}
else
{
i = i + 1;
}
}
if (b == 0)
{
Console.WriteLine("Imprimir el dato no existe");
}
else
{
Console.WriteLine("El dato {0}, ha sido encontrado", V[i]);
}

Console.WriteLine("Desea buscar otro numero??");


otro = Console.ReadLine();

} while (otro == "si");

}
}
}
2. Busqueda Binaria
Vector Ordenado
Busqueda()
Li = 1
Ls = n
b=0
Pedir x
Mientras (Li <= Ls) y (b = 0)
Mitad = (Ls + Li) / 2
Si v(Mitad) = x
b=1
No
Si x > v(Mitad)
Li = Mitad + 1
No
Ls = Mitad – 1

Si b = 0
Imprimir “No existe”
No
Imprimir “Encontrado”

Codigo:
class Program
{
static int x, li, ls, b, n = 10, mitad;
static int[] V = new int[n];
static string otro;
static void Main(string[] args)
{
Console.WriteLine("Busqueda binaria");
for (int j = 0; j < n; j++)
{
Console.WriteLine("Inserte un numero entero");
V[j] = int.Parse(Console.ReadLine());
}
Ordenar(V);
Console.WriteLine("-----------------------------------------------------
--");
BusquedaBinaria();
}
static void BusquedaBinaria()
{
li = 0;
ls = n;
b = 0;
do
{
Console.WriteLine("Que numero desea buscar?");
x = int.Parse(Console.ReadLine());
while(li <= ls & b == 0
{
mitad = (li + ls)/2;
if (x == V[mitad])
{
b = 1;
}
else
{
if (x > V[mitad])
{
li = mitad + 1;
}
else
{
ls = mitad - 1;
}
}
}
if (b == 0)
{
Console.WriteLine("No existe el numero");
}
else
{
Console.WriteLine("Dato encontrado");
}

Console.WriteLine("Desea buscar otro dato??");


otro = Console.ReadLine();

}while(otro == "si");
}
static void Ordenar(int[] vector)
{
Console.WriteLine("Busqueda binaria \n");

Console.WriteLine("Vector ordenado: \n");

for (int k = 0; k < n; k++)


{
int temporal = 0;

for (int j = k; j < n; j++)


{

if (vector[k] > vector[j])


{

temporal = vector[j];
vector[j] = vector[k];
vector[k] = temporal;

}
}

Console.Write(" " + vector[k]);


}

Console.WriteLine("");
}
}
}
3. Búsqueda Arborescente
Pedir x
t = raíz
b=0

Si t = nulo
Imprimir “No existe”
No
Mientras (t <> nulo) y (b = 0)
Si x = t^.dato
b=1
No
Si x > t^.dato
t = t^.ramader
No
t = t^.ramaizq
Si b = 0
Imprimir “No existe”
No
Imprimir “Eureka si existe”

Código:
class Program
{
static Nodo raiz, t, temp;
static int x, b;

static void Main(string[] args)


{
Console.WriteLine("Arbol binario");
string otro;
raiz = null;
//Insercion
do
{
Console.WriteLine("Ingrese un numero entero al arbol");
x = int.Parse(Console.ReadLine());
Insertar();
Console.WriteLine("Desea ingresar otro numero entero al arbol?");
otro = Console.ReadLine();
}
while (otro == "si");
Console.Clear();
//Buscar elemento
do
{
Console.WriteLine("Que numero del arbol desea buscar??");
x = int.Parse(Console.ReadLine());
Buscar();
Console.WriteLine("Desea buscar otro numero??");
otro = Console.ReadLine();
}
while (otro == "si");
}
static void Insertar()
{
if (raiz == null)
{
raiz = new Nodo();
raiz.dato = x;
raiz.ramader = null;
raiz.ramaizq = null;
}
else
{
t = raiz;
b = 0;
do
{
if (x > t.dato)
{
if (t.ramader == null)
{
temp = new Nodo();
temp.dato = x;
temp.ramader = null;
temp.ramaizq = null;
t.ramader = temp;
b = 1;
}
else
{
t = t.ramader;
}
}
else
{
if (t.ramaizq == null)
{
temp = new Nodo();
temp.dato = x;
temp.ramader = null;
temp.ramaizq = null;
t.ramaizq = temp;
b = 1;

}
}
}
while (b == 0);

}
}

static void Buscar()


{
t = raiz;
b = 0;
if (t == null)
{
Console.WriteLine("No existe el arbol");
}
else
{
while (t != null & b == 0)
{
if (x == t.dato)
{
b = 1;
}
else
{
if (x > t.dato)
{
t = t.ramader;
}
else
{
t = t.ramaizq;
}
}
}
if (b == 0)
{
Console.WriteLine("No existe el numero");
}
else
{
Console.WriteLine("Eureka, se encontro el dato {0}", x);
}
}
}

}
}
4. Búsqueda en listas
Si i = nulo
Imprimir “No existe”
No
temp = i
b=0
Mientras (temp <> nulo) y (b = 0)
Si x = temp^.dato
b=1
No
temp = temp^.dir
Si b = 0
Imprimir “No existe”
No
Imprimir “Dato encontrado”

Codigo:
class Program
{
static Nodo i, f, t, a, s, temp;
static int x, b;

static void Main(string[] args)


{
string otro;
Console.WriteLine("Lista encadenada simple");
do
{

Console.WriteLine("Ingrese un numero entero:");


x = int.Parse(Console.ReadLine());
Insertar();
Imprimir();
Console.WriteLine("Desea ingresar otro numero??");
otro = Console.ReadLine();
} while (otro == "si");

do
{
Console.WriteLine("Ingrese el numero que desee buscar:");
x = int.Parse(Console.ReadLine());
Buscar();
Console.WriteLine("Desea buscar otro numero??");
otro = Console.ReadLine();
}
while(otro == "si");
}
static void Insertar()
{
//Primera vez
if (i == null)
{
i = new Nodo();
i.dato = x;
f = i;
f.dir = null;
}
else
{ //insercion lado derecho
if (x > f.dato)
{
t = new Nodo();
t.dato = x;
f.dir = t;
f = t;
f.dir = null;
}
else
{ //Insercion lado izquierdo
if (x < i.dato)
{
t = new Nodo();
t.dato = x;
t.dir = i;
i = t;

}
else
{ //Insercion en medio
a = i;
s = i.dir;
while (x > s.dato)
{
a = s;
s = s.dir;
}
t = new Nodo();
t.dato = x;
a.dir = t;
t.dir = s;

}
}
}
}

static void Buscar()


{
if(i == null)
{
Console.WriteLine("No existe el dato");
}
else
{
temp = i;
b = 0;

while(temp != null & b == 0)


{
if(x == temp.dato)
{
b = 1;
}
else
{
temp = temp.dir;
}
}

if (b == 0)
{
Console.WriteLine("El dato no existe");
}
else
{
Console.WriteLine("El dato {0} ha sido encontrado", x);
}
}
}

static void Imprimir()


{
t = i;
while (t != null)
{
Console.Write("[" + t.dato + "]");
t = t.dir;
}

Console.WriteLine("");

}
}
5. Búsqueda Directa (Técnica de entrucamiento)
Ren = 0
dir = -1
BusquedaDirecta(NumControl, Nom)
Clave = NumControl
C = Clave

Si V(c).dir = -1
V(c).nombre = Nom
V(c).NoControl = NumControl
V(c).dir = C
No
VRepetidos(ren).nombre = Nom
VRepetidos(ren).NoControl = NumControl
VRepetidos(ren).dir = C
Ren = Ren + 1

Codigo:
class Program
{
public struct Alumno {
public String NoControl,Nombre;
public int Dir;

public void Generar() {


Dir = -1;
}

static public Alumno[] Grupo = new Alumno[100];


static public int Ren = 0;
static public Alumno[] GrupoRe = new Alumno[100];

static public void Buscar(string NC,string Nom) {


string Clave = NC.Substring(6,2);
int c = Int32.Parse(Clave);
if (Grupo[c].Dir == -1) {
Grupo[c].Nombre = Nom;
Grupo[c].NoControl = NC;
Grupo[c].Dir = c;
Console.WriteLine("Paso 1");
} else {
GrupoRe[Ren].Nombre = Nom;
GrupoRe[Ren].NoControl = NC;
GrupoRe[Ren].Dir = c;
Ren = Ren + 1;
Console.WriteLine("Paso 2");
}
}

static public void Imprimir()


{
for (int x = 0; x < 100; x++)
{
if (Grupo[x].Dir != -1)
{
Console.WriteLine("[{2}] >> NC [{0}] Nombre > {1}",
Grupo[x].NoControl, Grupo[x].Nombre, Grupo[x].Dir);
}
}
Console.WriteLine("Los Repetidos");
for (int x = 0; x < 100; x++)
{
if (GrupoRe[x].Dir != -1)
{
Console.WriteLine("[{2}] >> NC [{0}] Nombre > {1}",
GrupoRe[x].NoControl, GrupoRe[x].Nombre, GrupoRe[x].Dir);
}
}
}
static void Main(string[] args)
{
for (int x = 0; x < 100; x++)
{
Grupo[x].Generar();
GrupoRe[x].Generar();
}
Buscar("16212091", "Jorge");
Buscar("16212093", "Julio");
Buscar("16242091", "Pedro");
Buscar("16212090", "Kevin");
Buscar("16242091", "Heidi");
Imprimir();
Console.Read();
}

}
}

Vous aimerez peut-être aussi