Dev - C++ - Por que no me funciona el codigo?

 
Vista:

Por que no me funciona el codigo?

Publicado por Nico (1 intervención) el 08/11/2015 00:17:08
Hola, que tal? Tengo como tarea hacer una programa con matrices para sacar la resultante de un sistema de fuerzas y no me funciona el codigo. Alguien podria ayudarme?

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
#include <iostream>
#include <cmath>
using namespace std;
float sumatoria_x(float componente_x[], int n){
	int suma_x=0;
	for(int i=0;i<n;){
		suma_x+=componente_x[i];
	}
	return suma_x;
}
float sumatoria_y(float componente_y[], int n){
	int suma_y=0;
	for(int i=0;i<n;){
		suma_y+=componente_y[i];
	}
	return suma_y;
}
void comp_x(float f[], float a[], float componente_x[], int n){
	int num;
	for(int i=0;i<n;i++){
		num=f[i]*cos(a[i]*M_PI/180);
		componente_x[i]=num;
	}
}
void comp_y(float f[], float a[], float componente_y[], int n){
	int num;
	for (int i=0;i<n;i++){
		num=f[i]*sin(a[i]*M_PI/180);
		componente_y[i]=num;
	}
}
int main(int argc, char *argv[]) {
	cout << "Alumno: Berdini, Franco" << endl;
	cout << "Alumno: Pérez Maestri, Nicolás" << endl << endl;
	float f[100]={}, a[100]={}, componente_x[100]={}, componente_y[100]={}, rx, ry;
	int n;
	cout << "Indique la cantidad de fuerzas con las que trabajará el programa: ";
	cin >> n;
	for(int i=0;i<n;i++){
		cout << "Ingrese la fuerza Nº " << i+1 << ": ";
		cin >> f[i];
		while(f[i]<0){
			cout << "Recuerde que debe ingresar un número positivo. Por favor, intente nuevamente." << endl;
			cout << "Ingrese la fuerza Nº " << i+1 << ": ";
			cin >> f[i];
		}
		cout << "Ingrese el ángulo de la fuerza Nº " << i+1 << ", medido desde +: ";
		cin >> a[i];
		while(a[i]<0){
			cout << "Recuerde que debe ingresar un ángulo positivo. Por favor, intente nuevamente." << endl;
			cout << "Ingrese el ángulo de la fuerza Nº " << i+1 << ", medido desde +: ";
			cin >> a[i];
		}
	}
	comp_x(f, a, componente_x, n);
	comp_y(f, a, componente_y, n);
	rx=sumatoria_x(componente_x, n);
	ry=sumatoria_y(componente_y, n);
	cout << "La proyección de la magnitud resultante en el eje de abscisas es: " << rx << "N" << endl;
	cout << "La proyección de la magnitud resultante en el eje de ordenadas es: " << ry << "N" << endl;
	cout << "La magnitud de la fuerza resultante es: " << sqrt(pow(rx,2)+pow(ry,2)) << "N" << endl;
	cout << "El ángulo de dirección de la fuerza resultante es: " << (atan(ry/rx))*180/M_PI << "°" << endl;
	return 0;
}
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

Por que no me funciona el codigo?

Publicado por Hector (45 intervenciones) el 08/11/2015 02:58:55
Observa las funciones sumartorias_x y sumatorias_y, en el area del for, te falto agregar la porción de incremento:

http://codigoprogramacion.com/cursos/tutoriales-c/ciclo-for-en-c-y-ejemplos.html

Como tienes el código:

1
2
3
4
5
6
7
float sumatoria_x(float componente_x[], int n){
int suma_x=0;
for(int i=0;i<n;){
suma_x+=componente_x[i];
}
return suma_x;
}

Como debe ser:
1
2
3
4
5
6
7
float sumatoria_x(float componente_x[], int n){
int suma_x=0;
for(int i=0;i<n; i++){
suma_x+=componente_x[i];
}
return suma_x;
}

Ahora también puedes usar una sola función sumatoria, ya que tanto la x como la y realizan lo mismo, reciben una matriz y la suman; borra una de las funciones sumatoria y la que queda la llamas dos veces en el main.

Ojo, no puedes aplicar lo mismo en el comp_x y comp_y ya que haces operaciones diferentes, mientras que en la x usas el coseno para determinar los valores, en la comp_y usas es el seno.

Saludos.
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