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

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

Восстановить пароль Регистрация
 
drop_D
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 22
15.03.2010, 11:59     Найти вектор #1
Доработайте или подскажите пожалуйста,
Вот что смог написал:


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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
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
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
22.03.2010, 12:10     Найти вектор #4
Можно. Тебя что интересует конкретно, нахождение вектора y или скалярного произведения?
drop_D
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 22
22.03.2010, 12:22  [ТС]     Найти вектор #5
Мне бы хотелось посмотреть как вся прога будет выглядеть )

Или всю прогу функциями нельзя составить ?
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
22.03.2010, 12:27     Найти вектор #6
Я просто немного не понимаю, что ты хочешь. Или выделить участки кода (например, нахождение вектора y, нахождение скалярного произведения) в отдельные функции, или использовать для решения задачи стандартные функции.
drop_D
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 22
22.03.2010, 12:39  [ТС]     Найти вектор #7
ну вот у меня цель решить задачу с использованием функций и ссылок )
Вы мне написали программу без использования функций, которую я более менее понял, а сейчас мне требуется с ними.
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
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 минут
ну кто можешь?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2010, 07:10     Найти вектор
Еще ссылки по теме:

Считать вектор из файла, записать вектор в файл C++
Как рандомно заполнить вектор? Не могу найти ошибку C++
Вектор с неизвестным количеством чисел преобразовать в другой вектор, где числа будут стоять по возрастанию C++

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
23.12.2010, 07:10     Найти вектор #11
DimaSoldier, а самому хотя бы разок попробовать?...
Yandex
Объявления
23.12.2010, 07:10     Найти вектор
Ответ Создать тему
Опции темы

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