Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.06.2015, 19:11   #1
Vallery
Пользователь
 
Регистрация: 07.06.2015
Сообщений: 10
По умолчанию скалярное произведение

Взываю о помощи!
в программе есть функция Skal, которая вычисляет скалярное произведение 2х векторов.
Вроде все сделала правильно, но работает она каждый раз по разному: иногда считает все и правильно, иногда перемножает друг на друга только первые координаты и выводит только их произведение, а всего координат,например, три (трехмерное пространство).
Причем у меня шаблонный класс и в main'е я завожу по 2 объекта класса типа int (clVector<int> vec1, vec2
и типа double (clVector<double> vec3, vec4 Так вот с интовыми функция эта работает еще куда ни шло, а вот с типом double она всегда только первые координаты векторов перемножает и считает, что это их скалярное произведение.
Что не так я сделала??

Код:
/объявление функции
//считает скалярное произведение векторов
template<class Type>
Type clVector<Type>::Skal(clVector a)
{
    Type sum=0, skalar;
    for(int i=0; i<Len; i++)
    {
        mass[i]*=a.mass[i];
        sum+=mass[i];
        skalar=sum;
    }
    return skalar;
}
 
//вызов функции в мейне
//для типа int
case 4:{    // если выбрал "4", вызываем функцию Skal
                vec1.GetKord(n);
                vec1.Show();
                vec2.GetKord(n);
                vec2.Show();
                cout<<"Результат скалярного произведения векторов : "<<vec1.Skal(vec2);
                break;
                    };
 
//для типа double
case 4:{
                vec3.GetKord(n);
                vec3.Show();
                vec4.GetKord(n);
                vec4.Show();
                cout<<"Результат скалярного произведения векторов : "<<vec3.Skal(vec4);
                break;
                    };

Последний раз редактировалось Stilet; 07.06.2015 в 19:25.
Vallery вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по Cи: скалярное произведение kotenkov_m Помощь студентам 1 15.06.2014 21:49
скалярное произведение векторов Wika17 Паскаль, Turbo Pascal, PascalABC.NET 1 29.12.2010 11:32
скалярное произведение tilperion777 Паскаль, Turbo Pascal, PascalABC.NET 0 11.04.2010 16:13
delphi скалярное произведение Annie Помощь студентам 5 24.03.2010 10:35
Скалярное произведение. Рекурсия. grave123 Общие вопросы C/C++ 0 20.12.2009 13:31