1. RECUPERACION DE ESTRUCTURA DE DATOS.
Rodríguez Vicente Javier 14150630053
2416-IS
RENE DOMINGUEZ ESCALONA
Universidad Politécnica de Tecámac.
2. CARRETES
Descripción
En un tipo de caja registradora antigua, para mostrar los precios, se utilizaba
un carrete con los dígitos del 0 al 9 escritos alrededor, para representar cada
una de las cifras. este carrete podía girar, hacia delante o hacia atrás,
avanzando de uno en uno los dígitos hasta legar al número deseado y girando
cada uno hacia el sentido que requiera menor número de pasos Tu deseas
conocer cuántos de estos pasos realiza la máquina para cambiar de un precio
a otro.
Problema Debes realizar un programa que, conociendo la cantidad de carretes
que tiene la máquina, el precio inicial y el precio final, calcule el número de
pasos que realizara el mecanismo para llegar de uno a otro.
Entrada
Tu programa deberá leer del teclado los siguientes datos: en la primera línea el
número de carretes N, que puede ser desde 2 hasta 200. En la segunda línea,
el precio inicial como una cadena de N caracteres y en la tercera línea el precio
final. Como otra cadena de caracteres.
Salida
Tu programa debe escribir en pantalla el número total de pasos que realizará
la máquina para llegar del precio inicial al precio final
Algoritmo
1.-Introducir el número de carretes
2.-El valor de carácter esta entre (2-200)
3.-Introducir el precio inicial
4.-Introducir el precio final
5.-Calcular la salida
6.-Salida
Código Fuente
package recuperacion;
import java.util.Scanner;
public class Carretes {
public static void main(String[] args) {
Scanner lector = new Scanner(System.in);
3. int n,salida=0;
String cad;
int[] pinicial,pfinal;
System.out.println("Introduce el numero de carretes (entre 2 y 200)");
do{
cad=lector.nextLine();
n=Integer.parseInt(cad);
}while(n<2 || n>200);
pinicial= new int[n];
pfinal= new int[n];
System.out.println("Introduce el precio inicial");
do{
cad=lector.nextLine();
}while(cad.length()!=n);
for(int i=0; i<n;i++) pinicial[i]=cad.charAt(i)-48;
System.out.println("Introduce el precio final");
do{
cad=lector.nextLine();
}
while(cad.length()!=n);
for(int i=0; i<n;i++) pfinal[i]=cad.charAt(i)-48;
for(int i=0; i<n;i++){
int dif1,dif2,dif3,min;
dif1=Math.abs(pfinal[i]+10-pinicial[i]);
dif2=Math.abs(pfinal[i]-pinicial[i]);
dif3=Math.abs(pinicial[i]+10-pfinal[i]);
4. min=Math.min(Math.min(dif1, dif2),dif3);
salida+=min;
System.out.println("pfinal["+i+"]="+pfinal[i]+" pinicial["+i+"]="+pinicial[i]+"
dif1="+salida+" dif2="+dif2+" dif3="+dif3+" min="+min);
}
System.out.println("salida="+salida);
}
}
MATRIZ TRANSPUESTA
Descripción
Dados los datos enteros de una matriz de F filas por C columnas.
1<=F,C<=50. Imprime sus transpuesta, en una matriz transpuesta las columnas
pasan a ser filas.
Entrada
En la primera línea los enteros F, C separados por espacios, que denotan el
número de filas y columnas de la matriz. En cada una de las siguientes F filas,
C enteros separados por espacios.
Salida
La matriz transpuesta, F líneas, en cada línea Los C datos separados por un
espacio, excepto el último.
Algoritmo
1.-Introducir numero de columnas
2.-Introducir numero de filas
3.-Ingresa un números dependiendo del numero de columnas y filas
4.-Imprime la matriz transpuesta
Código Fuente
package recuperacion;
import java.util.Random;
public class MatrizTranspuesta {
public static void imprimir(int matriz[][], int fila, int columna)
{
5. int i, j;
for (i=0; i<fila; i++)
{
for (j=0; j<columna; j++)
{
System .out.print(matriz[i][j]+"t");
}
System .out.println(" ");
}
System.out.println();
}
public static void main(String[] args) {
int i,j,fil,colum;
fil = ((int)(Math.random()*(4-2+1)+2)); //(int)(Math.random()*(HASTA-
DESDE+1)+DESDE);
colum = ((int)(Math.random()*(4-2+1)+2));
int [] [] matriz = new int [fil][colum];
int [] [] matriz_T = new int [colum][fil];
System.out.println("La matriz es: ");
Random num = new Random();
for ( i = 0; i < fil; i++) {
for (j = 0; j < colum; j++) {
matriz [i][j] = matriz [i][j]=((int)(Math.random()*(60-2+1)+2));
}
}
imprimir (matriz,fil,colum);
System.out.println("La transpuesta de la matriz es: ");
for(j=0;j<colum;j++)
{
for (i=0;i<fil;i++)
{
6. matriz_T[j][i]=matriz[i][j];
}
}
imprimir (matriz_T,colum,fil);
}
}
NÚMEROS NO FIBONACCI
"Leonardo de Pisa o Leonardo Pisano o Leonardo Bigollo(c. 1175 - 1250),
tambi llamado Fibonacci, fue un matemático italiano,famoso por la invención de
la sucesión de Fibonacci, surgida como consecuencia del estudio del
crecimiento de las poblaciones de conejos" Wikipedia La sucesión de Fibonacci
es una serie de números enteros positivos de la cual sus primeros 2 números
son 1 y 2, luego de eso, cada número es el resultado de sumar los dos
anteriores de dicha serie de la siguiente forma: 1, 2, 3, 5, 8, 13, 21, 34, 55...
Nótese que 1+2=3, 2+3=5, 5+8=13, 13+21=34, 21+34=55 ... Ahora, podrías
pensar que el problema será calcular la serie de fibonacci, sin embargo es
exactamente lo contrario.
Problema
Escribe un programa que imprima en pantalla todos los números enteros
positivos estrictamente menores que N que NO pertenezcan a la serie de
Fibonacci.
Entrada
Tu programa deberá de leer del un solo número entero 2 ≤≤ N ≤≤ 30000 (30
mil)
Salida
Tu programa deberá imprimir en pantalla todos los números enteros positivos
menores que N que no formen parte de la serie de Fibonacci, deberá
imprimirlos en orden creciente, separados por espacios.
Algoritmo
1.-Introduce el numero fibonaci 1
2.-Introduce el numero fibonaci 2
3.-Haz la operación
4.-Imprime el resultado
7. Código Fuente
Package recuperacion;
import java.util.Scanner;
public class NoFibonacci {
public static void main(String[] args) {
Scanner in;
in = new Scanner(System.in);
boolean iguales = false;
int n1= in.nextInt();
int aux1= n1;
int n2= in.nextInt();
int aux2=n2;
int contador =0;
System.out.print(n1+"+n2+");
while (iguales == false){
int temp =n1+n2;
if (temp>10){
temp-=10;
}
System.out.print(temp+" ");
n1=n2;
n2=temp;
contador++;
if (n1== aux1&&n2==aux2){
iguales=true;
}
}
System.out.println("");
8. System.out.println(contador+"veces");
}
}
SI TE DA
No tienes nada que hacer y un amigo te comento que existe un problema de
teoría de números que se te ha hecho muy interesante y quieres resolverlo a
través de una programa de computo.
Problema
Se tienen 2 números de un digito cada uno, el tercer numero se forma de la
suma de los 2 números anteriores, tomando de el, solo la posición del digito, y
así sucesivamente hasta que el ciclo regresa a los 2 numero originales.
Entrada
Dos números enteros de un solo dígito, en líneas separadas.
Salida
En la primera línea tu programa deberá escribir la serie completa separada por
espacios. En la segunda línea tu programa deberá imprimir el número de pasos
para regresar a los números iniciales.
Algoritmo
1.-Declara variables
2.-Iniciar variable
3.-Lee el primer numero
4.-Lee el segundo numero
5.-Imprime solo un digito de las suma entre los numero
Código Fuente
package recuperacion;
import java.util.Scanner;
public class SiTeDa {
public static void main(String[] args) {
Scanner in;
in = new Scanner(System.in);
9. boolean iguales = false;
int n1= in.nextInt();
int aux1= n1;
int n2= in.nextInt();
int aux2=n2;
int contador =0;
System.out.print(n1+"+n2+");
while (iguales == false){
int temp =n1+n2;
if (temp>10){
temp-=10;
}
System.out.print(temp+" ");
n1=n2;
n2=temp;
contador++;
if (n1== aux1&&n2==aux2){
iguales=true;
}
}
System.out.println("");
System.out.println(contador+"veces");
}
}