Вычислить длину вектора с координатами x, y, z

Уровень сложности:

Напишите программу, которая позволяет пользователю ввести в консоль три координаты вектора x, y, и z, с основанием у начала координат. Вычислите длину этого вектора и выведите её обратно в консоль. Вывод программы у вас должен быть похож на этот:

#include <iostream>
#include <locale>
#include <cmath>

using std::cout;
using std::cin;

int main()
{
setlocale(LC_ALL,"Russian");

double dX(0.0), dY(0.0), dZ(0.0);
double dVectorLength(0.0);

cout << "\n Введите Х: ";
cin >> dX;

cout << "\n Введите Y: ";
cin >> dY;

cout << "\n Введите Z: ";
cin >> dZ;

cout << "\n Вы ввели следующие числа: X = " << dX << "; Y = " << dY << "; Z = " << dZ;

dVectorLength = sqrt(dX*dX + dY*dY + dZ*dZ);

cout << "\n Длина вектора: " << dVectorLength << ". \n\n\a";

return 0;
}

А вот так выглядит вывод данной программы:

CppStudio.com

Введите Х: 5

Введите Y: 5

Введите Z: 5

Вы ввели следующие числа: X = 5; Y = 5; Z = 5
Длина вектора: 8.66025.

Следующие статьи помогут вам в решении данной задачи:
Автор: Marienko L.
Дата: 29.10.2012
Поделиться:

Комментарии

  1. Lee Amstrong

    Сделал ввод координат XYZ одной строкой, через регулярки, поддерживается ввод координат в виде чисел с плавающей точкой. У меня тут линуксы, но работать будет и под виндой, разве что только не будут отображаться русские символы, но вы и так знаете что с этим делать.

    Это вывод с консоли (он же простым текстом, если изображение недоступно): тыц


    alexandr@kompukter
    ~/Рабочий стол/memory-games/build $ ./main
    Введите X Y Z координаты вектора (через пробел): 3.4 10 0.3
    Длина вектора: 10.5665

    #include <iostream>
    #include <string>
    #include <regex>
    #include <cmath>
    
    int main(int argc, char const *argv[]) {
       std::cout << "Введите X Y Z координаты вектора (через пробел): ";
       std::string s_coords;
       std::getline(std::cin,  s_coords, '\n');
       std::smatch match;
       std::regex rx("(\\d+[.]*\\d*).+?(\\d+[.]*\\d*).+?(\\d+[.]*\\d*)");
       if (!std::regex_search(s_coords, match, rx)) {
          std::cout << "Неправильный формат, надо через пробел" << '\n';
          return -1;
       }
       double x = std::stod(match[1]);
       double y = std::stod(match[2]);
       double z = std::stod(match[3]);
       std::cout << "Длина вектора: " << sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2)) << '\n';
    }

     

  2. Alexey Kutch

    Решение на Си:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main()
    {
        system("chcp 1251 > nul");
        
        int x, y, z;
        float dlinna;
        
        printf("Введите координату X = ");
        scanf("%d", &x);
        
        printf("\nВведите координату Y = ");
        scanf("%d", &y);
        
        printf("\nВведите координату Z = ");
        scanf("%d", &z);
        
        printf("\nВы ввели следующие координаты: X = %d; Y = %d; Z = %d\n", x, y, z);
        dlinna = sqrt((x * x) + (y * y) + (z * z));
        
        printf("Длина вектора: %3.5f", dlinna);
        
        return 0;
    }
  3. raman_by

    raman_by

    #include <iostream>
    #include <conio.h>
    #include <string.h>
    #include <math.h>
    #include <cmath>
    
    
    using namespace std;
    float vector(int x, int y, int z); 
    
    int main()
    	{
    		int x,y,z;
    		cout << "Please enter a value of X: ...\n";
    		cin >> x;
    		cout << "Please enter a value of Y: ...\n";
    		cin >> y;
    		cout << "Please enter a value of Z: ...\n";
    		cin >> z;
    		cout << "You entered this values: | X == "<<x<<"| Y == "<<y<<"| Z == "<<z<<endl;
    		cout << "Your Vector is: " << vector(x,y,z) << endl;
    		system("pause");
    		return 0;
    	}
    float vector(int x, int y, int z)
    	{	
    		float v;
    		v = sqrt(pow(x,2.0)+pow(y,2.0)+pow(z,2.0));
    		return v;
    	}

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.