Dev - C++ - Ayuda con un programa de identificación de raíces de polinomios

 
Vista:
sin imagen de perfil

Ayuda con un programa de identificación de raíces de polinomios

Publicado por Juan (3 intervenciones) el 14/01/2017 08:44:02
Hola a todos:
Este es mi primer post en esta página, y si lo escribo en el lugar equivocado o algo así, agradecería que me lo dijeseis para que lo pueda corregir. El caso: he decidido escribir un pequeño programa para que me ayude con unos deberes de matemáticas que son muy repetitivos y mecánicos (la factorización de polinomios). Como la parte mas pesada de estos ejercicios es encontrar una raíz del polinomio (un número que sustitituido por x el resultado de la operación de 0. Como ese número siempre es un divisor del término independiente, el primer paso sería encontrar los divisores y luego probar con todos hasta que uno de 0). Con ese objetivo escribí este programa:

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
#include<iostream>
int Num;
int Divisores[50];
int a;
int x;
int i;
int main(){
	std::cin >> Num;
	for(i++; i <=Num;){
 
		if(Num % i == 0 ){
			std::cout<<(i);
			Divisores[a++] = i;
			Divisores[a++] = -i;
 
		}
	}
    for(int b; b++; b <= i*2){
    	Divisores[b] = x;
    	if(2+x == 0){
    		std::cout<<("La raíz del polinomio es \n");
    		std::cout<<(x);
 
		}
	}
}
}

Por desgracia, no funciona como esperaba. Introduzco un número y solo sale una pared de 1. Seguro que alguien con mas experiencia en programación encontraría el error fácilmente, pero yo todavía soy un novato.
Por eso espero vuestras sugerencias de mejora para este programa.

Muchas gracias por adelantado.
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
sin imagen de perfil
Val: 1.084
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con un programa de identificación de raíces de polinomios

Publicado por agustin (522 intervenciones) el 14/01/2017 11:30:15
No soy para nada bueno en matemáticas con lo que no se lo que quieres hacer porque simplemente no se ni que polinomio es. No entiendo eso de encontrar los divisores para que sirve tampoco. Para mi un polinomio es por ejemplo 2x^2 - 5x + 2. No se que pinta ahí obtener los divisores de x.
Lo que si te puedo decir que esta linea:
1
Divisores[b] = x;
Te va a dar un valor indeterminado en Divisores[b] ya que x nunca ha sido inicializada y además no tiene mucho sentido eso que haces. ¿no será esto así?
1
x = Divisores[b];
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
sin imagen de perfil
Val: 1.084
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con un programa de identificación de raíces de polinomios

Publicado por agustin (522 intervenciones) el 14/01/2017 12:04:18
Para el polinomio que yo puse lo haría asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include  <stdio.h>
#include <math.h>
 
int main ()
{
	int mini, maxi, i, r;
	do {
		printf ("Introduce un valor minimo: ");
		scanf ("%i",&mini);
		printf ("Introduce un valor maximo: ");
		scanf ("%i",&maxi);
	}while (maxi < mini);
 
	for (i=mini; i <= maxi; i++){
		r=(2 * pow (i, 2)) - (5 * i) + 2; //polinomio
		if (r == 0){
			printf ("x=%i\n", i);
		}
	}
	printf ("finalizado");
	return 0;
}

Por cierto, para cosas matemáticas cómo estás es muy útil usar aplicaciones como Derive o Mathematicas las cuales le introduces la fórmula y te dan el resultado y lo resuelven paso a paso. Lo digo por si no necesitas crearte tu propio código.
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
sin imagen de perfil

Ayuda con un programa de identificación de raíces de polinomios

Publicado por Juan (3 intervenciones) el 14/01/2017 12:47:44
También es verdad, aquí se hace a base de fuerza bruta del procesador para que en vez de probar solo con los divisores pruebe con todos los números entre los divisores más grandes y pequeños. Creo que no es lo mas eficiente pero para 5 ejercicios diría que servirá.
Muchas gracias por las respuestas.
También probaré estos programas que me comentas
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
sin imagen de perfil

Ayuda con un programa de identificación de raíces de polinomios

Publicado por Juan (3 intervenciones) el 14/01/2017 12:42:02
Tienes toda la razón. Eso se me había pasado por alto.
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