Dev - C++ - Calcular la máxima pendiente porcentual entre cada dos puntos sucesivos leídos

 
Vista:
sin imagen de perfil
Val: 46
Ha disminuido su posición en 5 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Calcular la máxima pendiente porcentual entre cada dos puntos sucesivos leídos

Publicado por bartolo (9 intervenciones) el 01/12/2019 14:47:14
Leer una secuencia de longitud indefinida de puntos 3D en el espacio (x, y, z) hasta leer el punto (0, 0, 0). Calcular la máxima pendiente porcentual entre cada dos puntos sucesivos leídos.
La pendiente porcentual entre dos puntos (x1, y1, z1) y (x2, y2, z2) se calcula del siguiente modo:

Distancia vertical = z2 – z1
Distancia horizontal = ((y2-y1)2 +(x2-x1)2)0.5
Pendiente porcentual = (distancia vertical / distancia horizontal) * 100
Notas:
• Téngase en cuenta que la pendiente puede ser positiva o negativa y se debe calcular el
máximo del valor absoluto.
• Se puede suponer que al menos se introducirá la información de dos puntos.

En C++.
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 Alfil
Val: 3.511
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Calcular la máxima pendiente porcentual entre cada dos puntos sucesivos leídos

Publicado por Alfil (950 intervenciones) el 01/12/2019 18:28:34
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
struct Punto {
    float x;
    float y;
    float z;
};
 
float pendiente( const Punto a, const Punto b );
 
int main()
{
    Punto p1, p2;
    float max = 0.0, temp;
 
    cout << "\nPrimer punto:\n";
    cout << "x: "; cin >> p1.x;
    cout << "y: "; cin >> p1.y;
    cout << "z: "; cin >> p1.z;
     do {
        cout << "\nNuevo punto:\n";
        cout << "x: "; cin >> p2.x;
        cout << "y: "; cin >> p2.y;
        cout << "z: "; cin >> p2.z;
 
        temp = pendiente( p1, p2 );
        if( max < abs(temp) ) max = temp;
 
        cout << "\nPendiente porcentual entre ("
             << p1.x << "," << p1.y << "," << p1.z
             << ") y ("
             << p2.x << "," << p2.y << "," << p2.z
             << "): " << temp << endl;
 
        p1 = p2;
 
    } while( p2.x != 0 || p2.y != 0 || p2.z != 0 );
 
    cout << "\nMaxima pendiente porcentual: " << max << endl;
 
    return 0;
}
 
float pendiente( const Punto a, const Punto b )
{
    float dVertical, dHorizontal, pendiente;
 
    dVertical = b.z - a.z;
    dHorizontal = pow( ( pow( b.y - a.y, 2) + pow( b.x - a.x, 2 ) ), 0.5 );
 
    return ( dVertical / dHorizontal ) * 100;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar