Форум программистов, компьютерный форум CyberForum.ru

Задача: написать программу для вычисления модуля вектора - C++

Восстановить пароль Регистрация
 
S1GeR
1 / 1 / 0
Регистрация: 04.05.2013
Сообщений: 33
18.06.2013, 10:33     Задача: написать программу для вычисления модуля вектора #1
Здравствуйте.Начал изучение c++, дошёл до указателей и массивов, теперь решаю задачи.И вот одна из них, самая первая (возможно, она покажется многим "детской", но я почему-то не могу её решиь):
{ссылка удалена} (условие на картинке, уберите пробелы).

Вот что я сумел написать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cmath> //подключение мат. библиотеки
using namespace std;
int main()
{
int i; //индексная переменная
double a1[3]; //указываем массивы
double a2[3];
double a3[3];
double res=0; //переменная для хранения результата
cout << "Vvedite a1=";
for(i=0; i<3; i++) cin>> a1[i];
cout << "Vvedite a2=";             //ввод параметров "a"
for(i=0; i<3; i++) cin>> a2[i];
cout << "Vvedite a3=";
for(i=0; i<3; i++) cin>> a3[i];
//считаем резульат
for(i=0; i<3; i++) res+=sqrt(pow(a1[i]*a2[i]*a3[i], 2));
cout << "Pe3yJIbTaT= " <<res << endl; //выводим результат на экран
return 0;
}
Программа работает, но правильно ли?
И вот вопросы:
1.Нужно ли было указывать аж 3 массива: a1, a2, a3? Или нужно было просто указать 1 (т.к. всего 3 элемента)
2.Правильно ли я записал формулу: res+=sqrt(pow(a1[i]*a2[i]*a3[i], 2)) ? ( ну ясно что не правильно, скажите как надо..)
3.Как создать этот модуль (о котором говорится в задаче)? Я что-то не понял..

Добавлено через 12 минут
Эх, жаль что нельзя больше редачить сообщение, вот как должно быть:

Написать программу для вычисления модуля вектора.Компоненты вектора вводятся пользователем.Напомним, что модулем вектора a(вектор)=(a1,a2,a3) называется число a(вектор, по модулю)=sqrt(a1 ^2 + a2^2 + a3^2) (извините, что так тупо написал, но картинки мне пока нельзя загружать )

Вот что я сумел написать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cmath> //подключение мат. библиотеки
using namespace std;
int main()
{
int i; //индексная переменная
double a1[3]; //указываем массивы
double a2[3];
double a3[3];
double res=0; //переменная для хранения результата
cout << "Vvedite a1=";
for(i=0; i<3; i++) cin>> a1[i];
cout << "Vvedite a2=";             //ввод параметров "a"
for(i=0; i<3; i++) cin>> a2[i];
cout << "Vvedite a3=";
for(i=0; i<3; i++) cin>> a3[i];
//считаем резульат
for(i=0; i<3; i++) res+=sqrt(pow(a1[i]+a2[i]+a3[i], 2));
cout << "Pe3yJIbTaT= " <<res << endl; //выводим результат на экран
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2013, 10:33     Задача: написать программу для вычисления модуля вектора
Посмотрите здесь:

Написать программу для вычисления функции F C++
Написать программу, которая выводит значения факториалов чисел от 0 до N. Для вычисления факториала числа написать функцию пользователя C++
C++ написать программу для вычисления значений функции F(x) для х, изменяющегося в интервале от A до B с шагом DEL.
Написать программу для вычисления функции C++
Написать программу для вычисления ряда C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nikoys
26 / 26 / 6
Регистрация: 29.12.2010
Сообщений: 90
18.06.2013, 14:51     Задача: написать программу для вычисления модуля вектора #2
Цитата Сообщение от S1GeR Посмотреть сообщение
sqrt(pow(a1[i]+a2[i]+a3[i], 2))
Корень из квадрата суммы это, а не суммы квадратов. Да и вообще, нелогично. Зачем аж три массива? В одном массиве хранить три элемента - три компоненты вектора. Обобщение теоремы Пифагора, просто сумму квадратов.
Цитата Сообщение от S1GeR Посмотреть сообщение
double a1[3]; //указываем массивы
double a2[3];
double a3[3];
заменяем на
C++
1
double a[3];
Соответственно, ввод только один.

Цитата Сообщение от S1GeR Посмотреть сообщение
for(i=0; i<3; i++) res+=sqrt(pow(a1[i]+a2[i]+a3[i], 2));
Если очень хочется общно (чтобы можно было сделать для k координат, например), то:
C++
1
2
3
for(i = 0; i < 3; i++)
   res += a[i]*a[i];
res = sqrt(res);
В таком случае вы сможете поменять потом 3 на k (количество компонент) и сделать общий случай.

P.S. Если очень охото писать по-русски, setlocale() поможет.

Добавлено через 3 минуты
Например, так можно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cmath> //подключение мат. библиотеки
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    double a[3]; //указываем массивы
    double res = 0; //переменная для хранения результата
    cout << "Введите элементы массива a:\n";
    for(int i = 0; i < 3; i++) 
        cin >> a[i];
    for(int i = 0; i < 3; i++) 
        res += a[i]*a[i];
    res = sqrt(res);
    cout << "Результат = " << res << endl; //выводим результат на экран
    system("pause");
    return 0;
}
S1GeR
1 / 1 / 0
Регистрация: 04.05.2013
Сообщений: 33
18.06.2013, 15:01  [ТС]     Задача: написать программу для вычисления модуля вектора #3
Nikoys, так?:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cmath> //подключение мат. библиотеки
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
int i; //индексная переменная
double a[3]; //указываем массив
double res=0; //переменная для хранения результата
cout << "Ведите a=";
for(i=0; i<3; i++) cin>> a[i];
 
//считаем резульат
for(i = 0; i < 3; i++)
   res += a[i]*a[i];
res = sqrt(res);
cout << "Pe3yJIbTaT= " <<res << endl; //выводим результат на экран
return 0;
}
Только на счёт "setlocale" "каракули" выводятся.Читаю пока инфу о нём)
Nikoys
26 / 26 / 6
Регистрация: 29.12.2010
Сообщений: 90
18.06.2013, 15:05     Задача: написать программу для вычисления модуля вектора #4
S1GeR, я выше написал как можно, у меня на вижуалке все нормально с этим выписывает.
А так да, теперь, вроде, правильно.
S1GeR
1 / 1 / 0
Регистрация: 04.05.2013
Сообщений: 33
18.06.2013, 15:09  [ТС]     Задача: написать программу для вычисления модуля вектора #5
Спасибо! (вбил +1 =)
Yandex
Объявления
18.06.2013, 15:09     Задача: написать программу для вычисления модуля вектора
Ответ Создать тему
Опции темы

Текущее время: 10:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru