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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
drop_D
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 22
#1

Найти вектор - C++

15.03.2010, 11:59. Просмотров 1054. Ответов 10
Метки нет (Все метки)

Доработайте или подскажите пожалуйста,
Вот что смог написал:


23. Дан n-мерный вектор х=(х1, х2, ...,хn).
Написать программу, которая может находить
вектор y=(xn, xn-1, xn-2, ..., x2, x1) и скалярное произведение x*y.

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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main()
{
 
    int *x,*y,n,z;
    int i,count;
    setlocale( LC_ALL, "Russian_Russia.1251" );
 
    cout << "Введите n : ";
    cin >> n ;
 
    // выделение памяти под вектор x
    x= new int[n];
    // выделение памяти под вектор y
    y= new int[n];
 
    cout << "Введите вектор из " << n << " єлемнтов " << endl;
 
    for(i=0;i<n;i++)
    
        cin >> x[i];
 
    for(i=0;i<n;i++)
 
        y[i] = x[n-i-1];
 
    
    z += x[i] * y [i];
 
    cout << " z = " << z << endl;
    
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2010, 11:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти вектор (C++):

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов - C++
Привет! Задача следующая. Нужно реализовать класс &quot;вектор&quot; с конструкторами, которые позволяют создать нулевой вектор и вектор с...

Найти вектор - C++
Найти вектор c=2&lt;a,b&gt;с-3*b, где a,b,c принадлежат Rn , &lt;x,y&gt; – скалярное произведение векторов. Помогите не очень понимаю как...

Массивы, найти вектор - C++
Помогите пожалуйста, при компиляции в полученном масиве 0. Где ошибка? Вот условие: Даны натуральное число n и действительные числа y1...

Найти вектор по формуле - C++
Найти вектор Y=(y1, y2...y6) по формуле: если i&lt;3 yi=5xi-3xi+2, если i&gt;=3 то yi=3xi-25. Вектор X=(x1,x2...x6) задан, его элементы...

Найти вектор по формуле - C++
Найти вектор Y=(y1, y2...y6) по формуле: если i&lt;3 yi=5xi-3xi+2, если i&gt;=3 yi=3xi-25. Вектор X=(x1,x2...x6) задан, его элементы...

Найти минимальный по модулю вектор - C++
С++. Дан вектор, состоящий из 7 элементов целого типа. Найти минимальный по модулю элемент вектора. Ввод вывод потоковый. Помогите...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
15.03.2010, 14:54 #2
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
#include <iostream>
 
int main()
{
 
    size_t n;
    int z=0;//Инициализируем нулем
    setlocale( LC_ALL, "Russian_Russia.1251" );
 
    std::cout << "Введите n : ";
    std::cin >> n ;
 
    // выделение памяти под вектор x
    int* x= new int[n];
    // выделение памяти под вектор y
    int* y= new int[n];
 
    std::cout << "Введите вектор из " << n << " єлемнтов " << std::endl;
 
    for(size_t i=0; i<n; ++i)
    {
        std::cout << "Введите x[" << i << "]: ";
        std::cin >> x[i];
        y[n-i-1]=x[i];
    }
    for(size_t i=0; i<n; ++i)
    {
        std::cout << "x[" << i << "]=" << x[i]
              << "\t\ty[" << i << "]=" << y[i] << std::endl;
        z+=x[i]*y[i];
    }
    std::cout << "Скалярное произведение равно " << z << std::endl;
    //Не забываем освобождать память
    delete[] x;
    delete[] y;
 
    system("pause");
    return 0;
}
drop_D
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 22
22.03.2010, 12:07  [ТС] #3
Цитата Сообщение от Nameless One Посмотреть сообщение
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
#include <iostream>
 
int main()
{
 
    size_t n;
    int z=0;//Инициализируем нулем
    setlocale( LC_ALL, "Russian_Russia.1251" );
 
    std::cout << "Введите n : ";
    std::cin >> n ;
 
    // выделение памяти под вектор x
    int* x= new int[n];
    // выделение памяти под вектор y
    int* y= new int[n];
 
    std::cout << "Введите вектор из " << n << " єлемнтов " << std::endl;
 
    for(size_t i=0; i<n; ++i)
    {
        std::cout << "Введите x[" << i << "]: ";
        std::cin >> x[i];
        y[n-i-1]=x[i];
    }
    for(size_t i=0; i<n; ++i)
    {
        std::cout << "x[" << i << "]=" << x[i]
              << "\t\ty[" << i << "]=" << y[i] << std::endl;
        z+=x[i]*y[i];
    }
    std::cout << "Скалярное произведение равно " << z << std::endl;
    //Не забываем освобождать память
    delete[] x;
    delete[] y;
 
    system("pause");
    return 0;
}

спасибо огромное )
А эту же программу можно написать в функциях ???
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
22.03.2010, 12:10 #4
Можно. Тебя что интересует конкретно, нахождение вектора y или скалярного произведения?
drop_D
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 22
22.03.2010, 12:22  [ТС] #5
Мне бы хотелось посмотреть как вся прога будет выглядеть )

Или всю прогу функциями нельзя составить ?
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
22.03.2010, 12:27 #6
Я просто немного не понимаю, что ты хочешь. Или выделить участки кода (например, нахождение вектора y, нахождение скалярного произведения) в отдельные функции, или использовать для решения задачи стандартные функции.
drop_D
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 22
22.03.2010, 12:39  [ТС] #7
ну вот у меня цель решить задачу с использованием функций и ссылок )
Вы мне написали программу без использования функций, которую я более менее понял, а сейчас мне требуется с ними.
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
22.03.2010, 12:53 #8
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
#include <iostream>
 
//Ввод числа n - передача по ссылке
void get_n(size_t& n)
{
    std::cout << "Введите n : ";
    std::cin >> n ;
}
 
//Ввод вектора
void get_vector(int* x, size_t n)
{
    for(size_t i=0; i<n; ++i)
    {
        std::cout << "Введите x[" << i << "]: ";
        std::cin >> x[i];
    }
}
 
//Нахождение вектора y
void reverse(int* x, int* y, size_t n)
{
    for(size_t i=0; i<n; ++i)
        y[n-i-1]=x[i];
}
 
//Вычисление скалярного произведения
int scalar(int* x, int* y, size_t n)
{
    int res=0;
    for(size_t i=0; i<n; ++i)
        res+=x[i]*y[i];
    return res;
}
 
int main()
{
    setlocale( LC_ALL, "Russian_Russia.1251" );
    
    size_t n;
    get_n(n);
    // выделение памяти под вектор x
    int* x= new int[n];
    // выделение памяти под вектор y
    int* y= new int[n];
     
    std::cout << "Введите вектор из " << n << " єлемнтов " << std::endl;
 
    get_vector(x, n);
    reverse(x, y, n);
    std::cout << "Скалярное произведение равно " << scalar(x, y, n) << std::endl;
    //Не забываем освобождать память
    delete[] x;
    delete[] y;
     
    system("pause");
    return 0;
}
drop_D
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 22
22.03.2010, 12:58  [ТС] #9
О щас я её под себя ещё подштрихую )
благодарю товаришь )
Очень выручил ))
DimaSoldier
0 / 0 / 0
Регистрация: 23.09.2010
Сообщений: 31
23.12.2010, 07:08 #10
Цитата Сообщение от Nameless One Посмотреть сообщение
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
#include <iostream>
 
int main()
{
 
    size_t n;
    int z=0;//Инициализируем нулем
    setlocale( LC_ALL, "Russian_Russia.1251" );
 
    std::cout << "Введите n : ";
    std::cin >> n ;
 
    // выделение памяти под вектор x
    int* x= new int[n];
    // выделение памяти под вектор y
    int* y= new int[n];
 
    std::cout << "Введите вектор из " << n << " єлемнтов " << std::endl;
 
    for(size_t i=0; i<n; ++i)
    {
        std::cout << "Введите x[" << i << "]: ";
        std::cin >> x[i];
        y[n-i-1]=x[i];
    }
    for(size_t i=0; i<n; ++i)
    {
        std::cout << "x[" << i << "]=" << x[i]
              << "\t\ty[" << i << "]=" << y[i] << std::endl;
        z+=x[i]*y[i];
    }
    std::cout << "Скалярное произведение равно " << z << std::endl;
    //Не забываем освобождать память
    delete[] x;
    delete[] y;
 
    system("pause");
    return 0;
}
Кто может переписать на СИ ? Заранее спасибо!

Добавлено через 6 часов 29 минут
ну кто можешь?
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
23.12.2010, 07:10 #11
DimaSoldier, а самому хотя бы разок попробовать?...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2010, 07:10
Привет! Вот еще темы с ответами:

Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы - C++
Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы. Безопасный вектор определяет переменные нижний и верхний...

Почему матрица на вектор умножается быстрее чем вектор на матрицу? - C++
Почему матрица на вектор умножается быстрее чем вектор на матрицу?

Есть квадратная матрица А порядка n и вектор b с n элементами. Получить вектор Аb. - C++
Привет. Не могу разобратся, вот задание: Есть квадратная матрица А порядка n и вектор b с n элементами. Получить вектор Аb.

матрица на вектор, вроде правильно, а вектор на матрицу? посмотрите пожалуйста? - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int main() { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.12.2010, 07:10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru