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

Написать программу с указателями - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6.; http://www.cyberforum.ru/cpp-beginners/thread961854.html
Дано натуральное число n. Вычислить произведение первых n сомножителей: 1/2*3/4*5/6...; Помогите пожалуйста!!! Срочно нужен код программы)) Заранее спасибо!
C++ Составить программу с использованием оператора switch Case помогите составить программу с использованием оператора switch...case http://www.cyberforum.ru/cpp-beginners/thread961850.html
двоичный код C++
В общем задание такое: вводим число, присвоиваем переменной, на эту перемменную указатель, и нужно вытащить побитово значение этой переменной в двоичном коде.
Разработка и отладка циклических алгоритмов и программ C++
Значение аргумента x изменяется от a до b с шагом h. Для каждого x найти значения функции Y(x), суммы S(x) и |Y(x)-S(x)| и вывести в виде таблицы. Значения a,b,h и n вводятся с клавиатуры. Так как значение S(x) является рядом разложения функции Y(x). Значения S и Y для данного аргумента x должны совпадать в целой части и в первых двух-четырех позициях после десятичной точки.
C++ Расположить слова в последовательности http://www.cyberforum.ru/cpp-beginners/thread961837.html
Какая здесь ошибка не могу понять( реализовать нужно в консольном приложении визуал студио 2008 Слова, содержащие сочетание ‘кот’, расположить в конце последовательности, сохраняя исходный порядок следования слов. #include <iostream> #include <string> using namespace std; int main() { string s1 = "";
C++ Задача Иосифа Флавия, решение циклическим списком http://andrei-sapeshko.blogspot.ru/2013/04/blog-post.html тут есть пример, но он немного непонятный. struct node { int item; node *next; node(int x, node *t) { item = x; подробнее

Показать сообщение отдельно
Roodey
4 / 4 / 1
Регистрация: 23.05.2013
Сообщений: 36
25.09.2013, 10:08     Написать программу с указателями
Заданы 3 трехмерных вектора a,b,c. Найти скалярное произведение a*b, векторное произведение a*b, смешанное произведение векторов, модуль(длину) каждого вектора, угол между векторами A и B.

Дополнительные условия:
- Разбить программу на несколько модулей. Каждый модуль должен отвечать за опреденное действие (один за скалярное произведение, другой за векторное и т.д.)
- Программу выполнить с использованием указателей и/или ссылок.

Список модулей:
Основной модуль

C++
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
#include <iostream>
#include "mass1.module.h"       //ввод массива
#include "sp.module.h"          //скалярное
#include "vp.module.h"          //векторное
#include "smp.module.h"         //смешанное
#include "mv.module.h"          //модуль / длина
#include "ug.module.h"          //угол
 
using namespace std;
 
int main()
{
    int N;
    cout<<"Введите количество элементов в массиве(векторе): "<<endl;
    cin>>N;
    int a[N],b[N],c[N];
 
    mass1(N,a);
    mass1(N,b);
    mass1(N,c);
    sp(N,a,b);
    vp(N,a,b);
    smp(N,a,b,c);
    mv(N,a);
    mv(N,b);
    mv(N,c);
    ug(N,a,b);
 
    return 0;
}

Ввод массива(вектора)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
 
int mass1(int N, int a[])               //ввод массивов(векторов)
{
    cout<<endl<<"Введите элемент массива(вектора): "<<endl;
    for(int i=0;i<N;i++)
    {
        cin>>a[i];
    }
    for(int i=0;i<N;i++)
    {
        cout<<a[i]<<" ";
    }
    return 0;
}

Скалярное произведение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
 
//скалярное произведение
int sp(int N, int a[], int b[])
{
    int sp=0,i;                             //sp - скалярное произведение
    for(i=0;i<N;i++)
    {
        sp=sp+(a[i]*b[i]);
    }
    cout<<endl<<"Скалярное произведение равно a*b: "<<sp<<endl<<endl;
    return sp;
}

Векторное произведение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
using namespace std;
 
//векторное произведение                +q1 -q2 +q3
int vp(int N, int a[], int b[])
{
    int q1=0,q2=0,q3=0;
    q1=(a[1]*b[2])-(a[2]*b[1]);
    q2=(a[0]*b[2])-(b[0]*a[2]);
    q3=(a[0]*b[1])-(a[1]*b[0]);
    cout<<"Векторное произведение равно: "<<q1<<" "<<(-1)*q2<<" "<<q3<<endl<<endl;
    return 0;
}

Смешанное произведение

C++
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
65
66
67
68
#include <iostream>
 
using namespace std;
 
//смешанное произведение
int smp(int N, int a[], int b[], int c[])
{
    cout<<"Смешанное произведение равно: "<<endl;
    int i,w,w2;
    int sum1=0,sum2=0;
    int i2=1, i3=2;
    for(i=0;i<N;i++)
    {
 
        if(i3==N)
        {
            i3=0;
        }
        if(i2==N)
        {
            i2=0;
        }
        w=a[i]*b[i2]*c[i3];
        i2++;
        i3++;
        cout<<w;
        sum1=sum1+w;
        if(i<(N-1))
        {
        cout<<" + ";
        }
        else
        {
        cout<<" = ";
        cout<<sum1<<endl;
        }
    }
 
    for(i=0;i<N;i++)
    {
 
        if(i3==N)
        {
            i3=0;
        }
        if(i2==N)
        {
            i2=0;
        }
        w2=a[i3]*b[i2]*c[i];
        i2++;
        i3++;
        cout<<w2;
        sum2=sum2+w2;
        if(i<(N-1))
        {
        cout<<" + ";
        }
        else
        {
        cout<<" = ";
        cout<<sum2<<endl;
        }
    }
    int sm=sum1-sum2;
    cout<<sum1<<" - "<<sum2<<" = "<<sm<<endl;
    return 0;
}

Модуль(Длина) вектора

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <math.h>
 
 
using namespace std;
 
//модуль(длина) вектора
float mv(int N, int a[])
{
    float mv;
    mv=sqrt(pow(a[0],2) + pow(a[1],2) + pow(a[2],2));
    cout<<endl<<"Модуль(длина) вектора равен: "<<mv<<endl;
    return mv;
}

Угол между 'a' и 'b'

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include "sp.module.h"          //скалярное
#include "mv.module.h"
 
using namespace std;
 
//угол между векторами a и b
float ug (int N, int a[], int b[])
{
    cout<<endl<<endl<<"Данные для счета угла:";
    float mv1,mv2,ug;
    int sp1;
    sp1=sp(N,a,b);
//    cout<<"sp1="<<sp1<<endl;
    mv1=mv(N,a);
//    cout<<"mv1="<<mv1<<endl;
    mv2=mv(N,b);
//    cout<<"mv2="<<mv2<<endl;
 
    ug=sp1/(mv1*mv2);
    cout<<endl<<"Угол между векторами: "<<ug<<endl;
    return 0;
}


Собственно, основная работа уже выполнена. Понимаю, что малость(а может и не малость ) кривовато, но делалось наспех, что называется "на коленке". Поэтому строго не судите. По крайней мере считает правильно.

Вопрос собственно вот в чем, как реализовать все это с использованием указателей/ссылок. С ними знаком плохо, посему пока толкового ничего не удалось реализовать. Надеюсь кто-нибудь подскажет добрым советом, хотя бы на примере одного из модулей.

p.s. библиотеку с русским языком не подключаю, т.к. компьютер на линухе(работаю через code::blocks). А на его версии для линуха, подключать библиотеку с русским языком нет надобности, работает и так

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