Java - convertir de C a JAVA

 
Vista:

convertir de C a JAVA

Publicado por angela perez (1 intervención) el 22/04/2020 22:42:21
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#include< stdio.h >
#include< conio.h >
struct tiempo
{
int hor;
int min;
};
struct Cliente
{
int ced,pla;
char nom[50];
float val;
struct tiempo ent;
struct tiempo sal;
 
};
void portada(){
printf("...............................................................................\a\n");
printf("................******.*****.** **.*****.****.*****.*****..**................\a\n");
printf("................ ** .** **.*** ***.** **.** .** **.**.**.***................\a\n");
printf("................ ** .*****.*******.*****.****.*****.*****..**................\a\n");
printf("................ ** .** **.** * **.** .** .*** ....**..**................\a\n");
printf("................**** .** **.** **.** .****.** **....**.****...............\a\n");
printf("...............................jamper91.hostei.com.............................\a\n");
printf("\n");
};
void final(){
printf("-------------------------------------------------------------------------------\a\n");
printf ("******************************************************************************\a\n");
printf ("******************************************************************************\a\n");
printf("-------------------------------------------------------------------------------\a\n");
};
/*
-- Una función que registre la entrada de un vehículo, capturando todos los datos del cliente (excepto la hora de salida y el
valor a pagar) y almacenándolo en el vector en la posición correspondiente, según la llegada del cliente.
*/
void llenar(struct Cliente c[],int t)
{
 
for(int i=0;i< t;i++)
{
printf("\n\tDigite cedula %d:",i+1);
scanf("%d",&c[i].ced);
printf("\t %d\n",c[i].ced);
printf("\tDigite nombre %d:",i+1);
scanf("%s",&c[i].nom);
printf("\t %s\n",c[i].nom);
printf("\tDigite placa %d:",i+1);
scanf("%d",&c[i].pla);
printf("\t %d\n",c[i].pla);
printf("\tDigite Hora entrada %d:",i+1);
scanf("%d",&c[i].ent.hor);
printf("\t %d\n",c[i].ent.hor);
printf("\tDigite Minutos entrada %d:",i+1);
scanf("%d",&c[i].ent.min);
printf("\t %d\n",c[i].ent.min);
 
}
 
}
/*
Una función que dado un número de placa, retorne la posición dentro del vector donde se encuentra registrado dicho
vehículo.
*/
int buscarporPlaca(struct Cliente c[],int t,int p)
{
//Recorro todos los clientes
for(int i=0;i< t;i++)
{
if(c[i].pla==p)
return i;
}
return -1;
 
}
/*
Una función que registre la salida de un auto. Registre la hora y minutos de salida, Calcule el total a pagar (incluyendo
descuentos e iva) por parte de un cliente dando dentro de los parámetros la posición donde se encuentra ubicado el registro
respectivo, y el valor del minuto. Dentro de esta misma función se debe registrar este valor en el respectivo campo.
*/
void registrarSalida(struct Cliente c[],int t,int vM)
{
int p,h,m,pos;
//Variable que me acumulara el descuento
float des;
float total;
printf("Digite la placa del auto a Salir:");
scanf("%d",&p);
pos=buscarporPlaca(c,t,p);
if(p!=-1)
{
printf("Digite la hora de Salida:\n");
scanf("%d",&h);
printf("Digite los minutos de Salida:\n");
scanf("%d",&m);
//Guardo la informacion en el registro
c[pos].sal.hor=h;
c[pos].sal.min=m;
printf("Guarde la informacion\n");
//Determino si la placa es par
if((c[pos].pla%2)==0)
{
des=0.20;
}else{
des=0.0;
}
printf("Determine le descuento\n");
//Determino el total de hora que estuvo en el estacionamineto
int tH=h-c[pos].ent.hor;
//Determino el total de minutos que estuvo en el estacionamineto
int tM=m-c[pos].ent.min;
printf("Determine el total de horas: %d y el total de min:%d\n",tH,tM);
//Tengo que tener el total de minutos, para luego multiplicar ese total, por el valor por minuto (vM) y luego multiplicarle el descuento
//Recuerda que si el descuento es el 20% se hace (1-0.20)=0.80, ese valor es el que se multiplica por el total
c[pos].val=((((tH*60)+tM)*vM)*(1-des));
 
//Ahora le agrego el iva =16%
c[pos].val=c[pos].val+(c[pos].val*0.16);
}else{
printf("No se encontro esa placa");
}
}
/*
Una función que calcule y retorne el total recaudado por el parqueadero en un día.
*/
float totalRecaudado(struct Cliente c[],int ta)
{
float t=0;
for(int i=0;i< ta;i++)
{
//Verifico que ya haya salio el carro,
if(c[i].val!=-1.0)
{
t=t+c[i].val;
 
}
}
printf("El total que recaudo el parqueadero en el dia fue: %.2f",t);
return t;
 
}
/*
En el main se debe, capturar el valor del minuto de parqueo, hacer uso adecuado de las funciones ya definidas y presentar
un menú con las siguientes opciones:
1. Registro de entrada
2. Registro de salida
3. Terminar día
Este menú debe repetirse hasta que el administrador del parqueadero teclee la opción 3. En cuyo caso se debe imprimir en pantalla
el total recaudado en el día
*/
main()
{
int n=1,vM,op=1;
portada();
printf("Valor del minuto:");
scanf("%d",&vM);
struct Cliente c[n];
while(op!=3)
{
printf("1. Registro de Entrada\n");
printf("2. Registro de Salida\n");
printf("3. Salir\n");
printf("Escoje:");
scanf("%d",&op);
if(op==1){
llenar(c,n);
}else if(op==2){
registrarSalida(c,n,vM);
}else if(op==3){
//En caso de que escrbia algun numero diferente de 1,2,3
}else {
printf("\n\t Opcion no valida \n");
}
 
}
totalRecaudado(c,n);
final();
getch();
return 0;
 
}



POR FAVORRR, ME AYUDAN
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

convertir de C a JAVA

Publicado por Kabuto (1385 intervenciones) el 23/04/2020 18:47:08
Hola.
Java y C son bastante similares en muchas cosas. De hecho, Java es un derivado de C++, quien a su vez es la evolución de C.

Sin embargo, otras son muy distintas. La principal es que Java esta plenamente orientado a objetos, y C no.
En Java no existen las estructuras (struct), se trabaja directamente con clases que ofrecen muchísimas ventajas sobre las estructuras.

No se si vienes de lenguaje C, o simplemente estabas buscando un código para un ejercicio y solo lo has podido encontrar en C.

Por si fuera el primer caso, que vienes de lenguaje C, he transcrito el programa a Java, usando clases de la forma más simple y básica para que se parezca a un struct y así te resulte un poco más familiar.
Pero aunque el programa funciona perfectamente de este modo, en realidad nadie que programe en Java lo habría hecho de esta forma.

En Java hay otra filosofía, otras convenciones. Para que se parezca un struct he hecho clases sin constructores, con los atributos públicos para poder acceder directamente a ellos, cuando la norma es que los atributos sean privado (no visibles fuera de la clase) y el acceso se haga a través de métodos.

Pero bueno, échale un vistazo al código. Cuando aprendas más Java tu misma te darás cuenta de los cambios que habría que hacer para cumplir las convenciones.

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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
import java.util.Scanner;
import java.util.Vector;
 
public class Parking {
 
	//Java no hay estructuras.
	//Usamos clases, en su expresión más sencilla para que parezcan un struct
	static class Tiempo {
		int hora;
		int minuto;
	}
 
	//A la clase Cliente, le proporcionamos un método para calcular el valor según tiempo estacionado
	static class Cliente {
		int ced, pla;
		String nom;
		float val;
		Tiempo entrada = new Tiempo();
		Tiempo salida = new Tiempo();
 
		public void calcularValor(float descuento, int valorMinuto) {
 
			int tH = salida.hora - entrada.hora;
			int tM = salida.minuto - entrada.minuto;
 
			float valor =(((tH * 60) + tM) * valorMinuto) * (1f - descuento);
			//Guardamos valor con IVA
			val = valor + (valor * 0.16f);
		}
 
	}
 
	//Funciones/Procedimientos del programa
	static void portada() {
		System.out.println("...............................................................................");
		System.out.println("................******.*****.** **.*****.****.*****.*****..**................");
		System.out.println("................ ** .** **.*** ***.** **.** .** **.**.**.***................");
		System.out.println("................ ** .*****.*******.*****.****.*****.*****..**................");
		System.out.println("................ ** .** **.** * **.** .** .*** ....**..**................");
		System.out.println("................**** .** **.** **.** .****.** **....**.****...............");
		System.out.println("...............................jamper91.hostei.com.............................\n");
	}
 
	static void fin() {
		System.out.println("-------------------------------------------------------------------------------");
		System.out.println("******************************************************************************");
		System.out.println("******************************************************************************");
		System.out.println("-------------------------------------------------------------------------------");
	}
 
	static void registrarEntrada() {
		Cliente cliente = new Cliente();
		System.out.print("\tDigite cedula: ");
		cliente.ced = Integer.parseInt(teclado.nextLine());
		System.out.print("\tDigite nombre: ");
		cliente.nom = teclado.nextLine();
		System.out.print("\tDigite placa: ");
		cliente.pla = Integer.parseInt(teclado.nextLine());
		System.out.print("\tDigite hora entrada: ");
		cliente.entrada.hora = Integer.parseInt(teclado.nextLine());
		System.out.print("\tDigite minuto entrada: ");
		cliente.entrada.minuto = Integer.parseInt(teclado.nextLine());
		//Datos capturados, guardamos cliente en el Vector
		clientes.add(cliente);
	}
 
	static int buscarPorPlaca(int placa) {
		for (int i =0; i < clientes.size(); i++) {
			if (clientes.get(i).pla == placa)
				return i;
		}
 
		return -1;
	}
 
	static void registrarSalida(int vM) {
		float des;
 
		System.out.print("\nDigite la placa del auto a Salir: ");
		int placa = Integer.parseInt(teclado.nextLine());
		int pos = buscarPorPlaca(placa);
 
		if (pos == -1)
			System.out.println("No hay ningún auto con esa placa");
		else {
			System.out.print("Digite la hora de Salida: ");
			clientes.get(pos).salida.hora = Integer.parseInt(teclado.nextLine());
			System.out.print("Digite el minuto de Salida: ");
			clientes.get(pos).salida.minuto = Integer.parseInt(teclado.nextLine());
			//Info guardada, comprobamos si placa es par para elegir descuento
			if (clientes.get(pos).pla % 2 == 0)
				des = 0.2f;
			else
				des = 0f;
			//Pedimos al objeto que calcule valor invocando su método.
			clientes.get(pos).calcularValor(des, vM);
 
		}
	}
 
	static float totalRecaudado() {
		float total = 0f;
 
		for (Cliente cli: clientes)
			if (cli.val != 0)
				total += cli.val;
 
		return total;
	}
 
	//Los Clientes los almacenaremos en un objeto de la clase Vector
	static Vector<Cliente> clientes = new Vector<Cliente>();
	//Para leer datos por teclado
	static Scanner teclado = new Scanner(System.in);
 
	//Comienza programa principal
	public static void main(String[] args) {
 
		portada();
		System.out.print("Valor del minuto: ");
		int vM = Integer.parseInt(teclado.nextLine());
 
		int op = 0;
		while (op != 3) {
			System.out.println("\n1. Registro de Entrada");
			System.out.println("2. Registro de Salida");
			System.out.println("3. SALIR");
			System.out.print("\nEscoje: ");
			op = Integer.parseInt(teclado.nextLine());
 
			switch (op) {
			case 1:
				registrarEntrada();
				break;
			case 2:
				registrarSalida(vM);
				break;
			case 3:
				System.out.println("\nRegistro cerrado.");
				System.out.printf("Total recaudado: %.2f\n", totalRecaudado());
				break;
			default:
				System.out.println("\nOpción no valida");
			}
		}
		fin();
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar