Trabajo2.
java lunes, 9 de junio de 2025, 12:08
1 package polinomios;
2
3 import [Link];
4
5 public class Trabajo2 {
6
7 public static void main(String[] args) {
8 Scanner sc = new Scanner([Link]);
9
10 [Link]("Este codigo resuelve Ejercicios basicos de polinomios de grado 1 y
2");
11 [Link]("De qué grado será el polinomio.");
12
13 int orden = 0;
14
15 // Pedir el grado hasta que sea 1 o 2, no acepto otra cosa
16 do {
17 [Link]("Escribe 1 para polinomio de primer grado, o 2 para segundo
grado: ");
18 orden = leerEntero(sc);
19 if (orden != 1 && orden != 2) {
20 [Link]("Solo se puede poner 1 o 2, prueba otra vez.");
21 }
22 } while (orden != 1 && orden != 2);
23
24 // Variables para los coeficientes
25 double a = 0, b = 0, c = 0;
26
27 // Si es grado 2, pedimos el coeficiente para x^2
28 if (orden == 2) {
29 [Link]("Pon el numero que va con x^2 (coeficiente a): ");
30 a = leerDouble(sc);
31 }
32
33 // Coeficiente para x
34 [Link]("Pon el numero que va con x (coeficiente b): ");
35 b = leerDouble(sc);
36
37 // Termino independiente
38 [Link]("Pon el numero que es constante (coeficiente c): ");
39 c = leerDouble(sc);
40
41 // Creo el polinomio con esos numeros
42 Polinomio p = new Polinomio(a, b, c);
43
44 int opcion = 0;
45
46 // menu principal, se repite hasta que pongas salir (3)
47 do {
48 [Link]("\n=== MENU PRINCIPAL ===");
49 [Link]("1. Calcular cuanto vale el polinomio en un numero");
50 [Link]("2. Mostrar la grafica del polinomio");
51 [Link]("3. Mostrar tabla de valores del polinomio");
52 [Link]("4. Ver coeficientes que pusiste");
53 [Link]("5. Salir");
54 [Link]("Escoge lo que quieres hallar (1-5): ");
55
Page 1
[Link] lunes, 9 de junio de 2025, 12:08
56 opcion = leerEntero(sc);
57
58 switch (opcion) {
59 case 1:
60 [Link]("Escribe el numero donde quieres calcular el polinomio:
");
61 double x = leerDouble(sc);
62 double resultado = [Link](x);
63 [Link]("El polinomio evaluado en " + x + " da: " + resultado);
64 pausa(sc);
65 break;
66
67 case 2:
68 [Link]("Aqui va la grafica (con * en la consola):");
69 [Link](p);
70 pausa(sc);
71 break;
72
73 case 3:
74 [Link]("Vamos a mostrar una tabla con varios valores:");
75 mostrarTablaValores(p, sc);
76 pausa(sc);
77 break;
78
79 case 4:
80 [Link]("Tus coeficientes son:");
81 [Link]("a (x^2) = " + [Link](2));
82 [Link]("b (x) = " + [Link](1));
83 [Link]("c (constante) = " + [Link](0));
84 pausa(sc);
85 break;
86
87 case 5:
88 [Link]("Gracias por usar el programa, chao!");
89 break;
90
91 default:
92 [Link]("Esa opcion no existe, intenta otra vez.");
93 pausa(sc);
94 break;
95 }
96 } while (opcion != 5);
97
98 [Link]();
99 }
100
101 // leer enteros
102 public static int leerEntero(Scanner sc) {
103 while (![Link]()) {
104 [Link]("Eso no es un numero entero, intenta otra vez:");
105 [Link]();
106 }
107 return [Link]();
108 }
109
110 // leer double
111 public static double leerDouble(Scanner sc) {
Page 2
[Link] lunes, 9 de junio de 2025, 12:08
112 while (![Link]()) {
113 [Link]("Eso no es un numero valido, intenta otra vez:");
114 [Link]();
115 }
116 return [Link]();
117 }
118
119 // hacer pausa
120 public static void pausa(Scanner sc) {
121 [Link]("\nPresiona enter para seguir...");
122 try {
123 [Link]();
124 } catch (Exception e) {
125 }
126 [Link](); // para limpiar el buffer
127 }
128
129 // mostrar tabla de valores
130 public static void mostrarTablaValores(Polinomio p, Scanner sc) {
131 [Link]("Desde que valor de x quieres empezar?: ");
132 double inicio = leerDouble(sc);
133 [Link]("Hasta que valor de x quieres llegar?: ");
134 double fin = leerDouble(sc);
135
136 while (fin <= inicio) {
137 [Link]("El valor final debe ser mayor que el inicial, intenta otra
vez.");
138 [Link]("Hasta que valor de x quieres llegar?: ");
139 fin = leerDouble(sc);
140 }
141
142 [Link]("Cada cuanto quieres aumentar x?: ");
143 double paso = leerDouble(sc);
144
145 while (paso <= 0) {
146 [Link]("El paso debe ser positivo y mayor que cero.");
147 [Link]("Cada cuanto quieres aumentar x?: ");
148 paso = leerDouble(sc);
149 }
150
151 [Link]("\n x | valor del polinomio");
152 [Link]("--------------------------------");
153
154 for (double x = inicio; x <= fin; x += paso) {
155 double val = [Link](x);
156 [Link]("%-8.2f | %-15.4f\n", x, val);
157 }
158 }
159
160 // representar un polinomio simple
161 static class Polinomio {
162 private double a;
163 private double b;
164 private double c;
165
166 // Constructor
167 public Polinomio(double a, double b, double c) {
Page 3
[Link] lunes, 9 de junio de 2025, 12:08
168 this.a = a;
169 this.b = b;
170 this.c = c;
171 }
172
173 // calcular valor del polinomio en x
174 public double evaluar(double x) {
175 return a * x * x + b * x + c;
176 }
177
178 // obtener coeficiente por grado
179 public double getCoeficiente(int grado) {
180 if (grado == 2) return a;
181 else if (grado == 1) return b;
182 else if (grado == 0) return c;
183 else return 0;
184 }
185 }
186
187 // grafica en consola usando *
188 static class Graficador {
189 public static void mostrarGrafica(Polinomio p) {
190 int ancho = 40; // cuantos puntos en x
191 int alto = 20; // filas para y
192
193 double xMin = -10;
194 double xMax = 10;
195
196 double[] valoresY = new double[ancho];
197 double yMax = -9999999;
198 double yMin = 9999999;
199
200 // hallar los valores de y para cada x para ver hasta donde sube o baja la grafica
201 for (int i = 0; i < ancho; i++) {
202 double x = xMin + i * (xMax - xMin) / (ancho - 1);
203 double y = [Link](x);
204 valoresY[i] = y;
205 if (y > yMax) yMax = y;
206 if (y < yMin) yMin = y;
207 }
208
209 // Por si todos los valores son iguales (para evitar division por cero)
210 if (yMax == yMin) {
211 yMax += 1;
212 yMin -= 1;
213 }
214
215 // Dibujo fila por fila (de arriba a abajo)
216 for (int fila = alto; fila >= 0; fila--) {
217 double yLinea = yMin + (yMax - yMin) * fila / alto;
218
219 // Muestro la escala del eje y a la izquierda
220 [Link]("%7.2f |", yLinea);
221
222 for (int i = 0; i < ancho; i++) {
223 double y = valoresY[i];
224
Page 4
[Link] lunes, 9 de junio de 2025, 12:08
225 // Si el punto está cerca de la línea actual, dibujo *
226 if ([Link](y - yLinea) < (yMax - yMin) / alto / 2) {
227 [Link]("*");
228 }
229 // Dibujo eje x (linea en y=0) con guion si toca aqui
230 else if ([Link](yLinea) < (yMax - yMin) / alto / 2
231 && i == (int) ((0 - xMin) * (ancho - 1) / (xMax - xMin))) {
232 [Link]("-");
233 } else {
234 [Link](" ");
235 }
236 }
237 [Link]();
238 }
239
240 // Muestro escala del eje x debajo
241 [Link](" ");
242 for (int i = 0; i < ancho; i += 5) {
243 double x = xMin + i * (xMax - xMin) / (ancho - 1);
244 [Link]("%-5.1f", x);
245 }
246 [Link]("\n");
247 // POR: PARICAHUA LAURA SAIRI RICARDO
248 // MAMANI TITO FREDDY CELESTINO
249 // QUISPE CONDORI SOSKY EMANUEL
250 // QUISPE PANDIA JHOEL ANTONY
251 }
252 }
253 }
254
Page 5