0 / 0 / 1
Регистрация: 29.06.2011
Сообщений: 77

Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над векторами

29.06.2011, 16:15. Показов 4996. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно написать это на СИ!

Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над векторами:
1)сложения;
2)вычитания;
3)скалярного умножения векторов;
4)умножения вектора на число;
5)нахождение длины вектора.
Используя этот модуль, решить задачу. Дан массив A - массив векторов. Отсортировать его в порядке убывания длин векторов.

Добавлено через 31 минуту
Помогите пожалуйста написать этот модуль!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.06.2011, 16:15
Ответы с готовыми решениями:

Реализовать в виде модуля набор подпрограмм для выполнения операций над обыкновенными дробями вида P/Q
Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над обыкновенными дробями вида P/Q (Р − целое, Q —...

Реализовать в виде модуля набор подпрограмм для работы с многочленами
Реализовать в виде модуля набор подпрограмм для работы с многочленами от одной переменной (1й степени t, 2й степени n). 1) сложение ...

Реализовать класс Строка (String) для хранения и выполнения операций над строкой
Реализовать класс Строка (String) для хранения и выполнения операций над строкой. Строка должна храниться в виде динамического массива...

19
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
29.06.2011, 16:22
векторы бывают 2-х, 3-х и многомерными, вам какие?
использовать при этом структуры?
0
0 / 0 / 1
Регистрация: 29.06.2011
Сообщений: 77
29.06.2011, 16:24  [ТС]
Достаточно и двумерных векторов. Да, лучше использовать структуры.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
29.06.2011, 17:24
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
#include <stdio.h>
#include <math.h>
 
struct Vector2D {
    float x;
    float y;
};
 
void Add(const struct Vector2D* l, const struct Vector2D* r, struct Vector2D* res)
{
    res->x = l->x + r->x;
    res->y = l->y + r->y;
}
 
void Sub(const struct Vector2D* l, const struct Vector2D* r, struct Vector2D* res)
{
    res->x = l->x - r->x;
    res->y = l->y - r->y;
}
 
void MulD(struct Vector2D* vec, float number)
{
    vec->x *= number;
    vec->y *= number;
}
 
float Length(const struct Vector2D* l)
{
    return sqrtf(l->x * l->x + l->y * l->y);
}
 
float MulS(const struct Vector2D* l, const struct Vector2D* r, float fi)
{
    return Length(l) * Length(r) * cos(fi);
}
 
int main()
{
    struct Vector2D a, b;
    a.x = 2.0f;
    a.y = b.x = 0.0f;
    b.y = 3.0f;
    MulD(&a, 3.0f);
    MulD(&b, 4.0f);
    struct Vector2D c; 
    Sub(&a, &b, &c);
    printf("Length of vector C = %f", Length(&c));
    getchar();
    return 0;
}
1
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
29.06.2011, 18:30

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <stdio.h>
#include <math.h>
 
 
struct vector {
   long x, y;
};
 
 
// сложение векторов
struct vector  add(struct vector* a, struct vector* b) {
    struct vector res;
    res.x = a->x + b->x;
    res.y = a->y + b->y;
    return res;
}
 
// вычитание векторов
struct vector  sub(struct vector* a, struct vector* b) {
    struct vector res;
    res.x = a->x - b->x;
    res.y = a->y - b->y;
    return res;
}
 
// скалярное произведение векторов
struct vector  scale(struct vector* a, struct vector* b) {
    struct vector res;
    res.x = a->x * b->x;
    res.y = a->y * b->y;
    return res;
}
 
// умножение вектора на число
struct vector  mul(struct vector* a,long N) {
    struct vector res;
    res.x = a->x * N;
    res.y = a->y * N;
    return res;
}
 
// длина вектора
long length(struct vector*  vec) {
    long result = sqrtl(powl(vec->x, 2) + powl(vec->y, 2));
    return result;
}
 
// сортировка векторов по длине, от большего к меньшему
void  sort(struct vector*  vec, struct vector*  end) {
     int id;
     struct vector* last;
     struct vector* first;
     struct vector  tmp;
 
     while(1) {
           id = 0;
           first = vec;
           last  = vec + 1;
           for( ; last != end; ++last, ++first) {
 
               if(length(first) < length(last)) {
                   tmp    = *first;
                   *first = *last;
                   *last  = tmp;
                   id |= 1;
               }
           }
           if(! id)
              break;
     }
}
 
 
 
 
int main(int argc, char* argv[])
{
     struct vector a = { 3, 5 };
     struct vector b = { 2, 3 };
     struct vector c;
 
     struct vector vec[5] = { { 2, -2 }, { 2, 4 }, { -5, 9 }, { 9, -7 }, { 2, 3 } };
 
     int i, size   = sizeof(vec) / sizeof(struct vector);
     sort(vec, vec + size);
     for(i = 0; i < size; i++)
            printf("|%d,%d|, ", vec[i].x, vec[i].y);
 
 
     c = add(&a, &b);
     printf("\n\nadd(%d, %d)\n", c.x, c.y);
 
     c = sub(&a, &b);
     printf("sub(%d, %d)\n", c.x, c.y);
 
     c = scale(&a, &b);
     printf("scale(%d, %d)\n", c.x, c.y);
 
     c = mul(&a, 4);
     printf("mul(%d, %d)\n", c.x, c.y);
 
     printf("a - %d, b - %d\n", length(&a), length(&b) );
 
 
     getchar();
     return 0;
}
1
0 / 0 / 1
Регистрация: 29.06.2011
Сообщений: 77
29.06.2011, 19:08  [ТС]
Спасибо большое, в этом еще надо как следует разобраться мне... А как написать модуль? Ну то есть чтоб был заголовочный файл и файл реализации с расширениями .h и .c соответственно?
0
Эксперт С++
 Аватар для nameless
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
29.06.2011, 19:12
Protected_fleur,

Файл module.h
C
1
2
3
4
5
6
7
#ifndef _MODULE_H
#define _MODULE_H
 
//описание структуры вектора
//прототипы функций
 
#endif
module.c
C
1
2
3
4
//Подключайте необходимые библиотеки, в том числе
#include "module.h"
//Реализация функций
//описываете главную функция (main)
2
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
29.06.2011, 19:13
deleted
0
Эксперт С++
 Аватар для nameless
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
29.06.2011, 19:35
Protected_fleur, забыл написать, что реализацию функции main, нужно выделить в отдельный файл main.c

C
1
2
3
4
5
//подключаете библиотеки, в том числе "module.h"
int main()
{
    //какие-то действия над векторами..
}
1
0 / 0 / 1
Регистрация: 29.06.2011
Сообщений: 77
29.06.2011, 19:38  [ТС]
Ну то есть у нас получается будет module.h, module.c и main.c ?
0
Эксперт С++
 Аватар для nameless
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
29.06.2011, 19:39
Protected_fleur, Верно.
0
0 / 0 / 1
Регистрация: 29.06.2011
Сообщений: 77
29.06.2011, 20:50  [ТС]
res.x = a->x + b->x;
что это означает? именно a->x ? впервые вижу... нельзя по-другому это написать?
0
Эксперт С++
 Аватар для nameless
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
29.06.2011, 20:54
Protected_fleur, можно (*a).x ..
0
Эксперт С++
5057 / 3117 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
29.06.2011, 20:55
nameless, или всё-таки (*a).x?

Protected_fleur, а не лучше ли разобраться, что означает именно эта запись?
0
Эксперт С++
 Аватар для nameless
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
29.06.2011, 20:56
C
1
a->x
А означает это разыменование указателя и обращение к элементу структуры.
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,890
29.06.2011, 20:56
Цитата Сообщение от nameless Посмотреть сообщение
(*a)->x
(*a).x

Добавлено через 13 секунд
Цитата Сообщение от nameless Посмотреть сообщение
(*a)->x
(*a).x
0
Эксперт С++
 Аватар для nameless
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
29.06.2011, 20:57
silent_1991, Ну да, описался слегка..) Спасибо, что поправили..
0
0 / 0 / 1
Регистрация: 29.06.2011
Сообщений: 77
30.06.2011, 15:51  [ТС]
xAtom, я не могу разобраться в сортировке...
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
// сортировка векторов по длине, от большего к меньшему
void  sort(struct vector*  vec, struct vector*  end) {
     int id;
     struct vector* last;
     struct vector* first;
     struct vector  tmp;
 
     while(1) {
           id = 0;
           first = vec;
           last  = vec + 1;
           for( ; last != end; ++last, ++first) {
 
               if(length(first) < length(last)) {
                   tmp    = *first;
                   *first = *last;
                   *last  = tmp;
                   id |= 1;
               }
           }
           if(! id)
              break;
     }
}
Добавлено через 1 минуту
Цитата Сообщение от Protected_fleur Посмотреть сообщение
for( ; last != end; ++last, ++first)
почему в этой строчке перед ";" нет ничего???

Добавлено через 3 минуты
Цитата Сообщение от xAtom Посмотреть сообщение
size = sizeof(vec) / sizeof(struct vector);
еще вот эта строчка непонятна... объясните пожалуйста
0
Эксперт С++
 Аватар для nameless
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
30.06.2011, 20:17
Protected_fleur,
Цитата Сообщение от Protected_fleur Посмотреть сообщение
Добавлено через 1 минуту
Сообщение от Protected_fleur
for( ; last != end; ++last, ++first)
почему в этой строчке перед ";" нет ничего???
А что тут должно еще стоять?

Цитата Сообщение от Protected_fleur Посмотреть сообщение
id = 0;
first = vec;
last = vec + 1;
Данные переменные инициализированы непосредственно перед описанием цикла.. Все в порядке..


Цитата Сообщение от Protected_fleur Посмотреть сообщение
Добавлено через 3 минуты
Сообщение от xAtom
size = sizeof(vec) / sizeof(struct vector);
еще вот эта строчка непонятна... объясните пожалуйста
Вычисляем количество элементов в vec..
0
0 / 0 / 1
Регистрация: 29.06.2011
Сообщений: 77
30.06.2011, 20:24  [ТС]
не совсем понятно...просто я недавно с программированием столкнулась...и везде как бы встречала
например, for(i=1;i<n;i++) это к примеру...так вот меня и смутило...

Добавлено через 1 минуту
nameless, спасибо)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.06.2011, 20:24
Помогаю со студенческими работами здесь

Напишите по одному оператору для выполнения следующих операций с одномерным массивом:
Напишите по одному оператору для выполнения следующих операций с одномерным массивом: а) присвойте нулевые начальные значения 10...

Программа для выполнения указанных операций над матрицами
в общем нужна помощ написать прогу которая выполныет действия над матрицами 1)Сложение 2)Вычитание 3)Возведение в степень ...

Написать функции для выполнения операций над одномерным массивом целых чисел
Написать функции для выполнения операций над одномерным массивом целых чисел: • определить среднее арифметическое отрицательных элементов...

Реализовать в виде модуля набор подпрограмм для выполнения операций над векторами
Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над векторами: 1) сложения; 2) вычитания; 3) скалярного...

Реализовать в виде модуля набор подпрограмм для выполнения операций над векторами
Доброе время суток. Прошу помощи опытных людей. Задача на Паскале по теме &quot;Модули&quot; Реализовать в виде модуля набор подпрограмм для...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Сложность Колмогорова: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 20.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
C++26: Индексирование пакетов и метапрограммиро­вание
bytestream 20.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
Состояние гонки в C#: подводные камни многопоточного программировани­я
UnmanagedCoder 20.03.2025
Что такое состояние гонки? Это ситуация, когда результат программы непредсказуемо меняется в зависимости от порядка выполнения потоков. Проще говоря, два или более потока пытаются одновременно. . .
Next.js для разработки React: преимущества серверного рендеринга
Reangularity 20.03.2025
Next. js решает классическую проблему React-приложений: медленную первоначальную загрузку и плохую индексацию поисковиками. Вместо того чтобы заставлять браузер пользователя выполнять всю работу по. . .
JUnit или TestNG: Выбираем Java-фреймворк для тестирования
Javaican 20.03.2025
История тестовых фреймворков в Java началась в конце 90-х, когда Кент Бек и Эрих Гамма разработали JUnit - инструмент, который перевернул представление разработчиков о модульном тестировании. JUnit. . .
Разбиваем монолит на два микросервиса и реализуем CI/CD
ArchitectMsa 20.03.2025
Когда команда растет, а функциональность монолита расширяется, поддерживать и развивать такую систему становится все труднее. Разработчики начинают тратить много времени на разбор сложных. . .
Python и PDF: Создание и редактирование файлов
py-thonny 20.03.2025
Работа с PDF-документами – одна из популярных задач в современной разработке. Python предлагает несколько инструментов для создания, чтения и редактирования PDF-файлов, среди которых особенно. . .
Корутины в Unity и производительно­сть WaitForSeconds
GameUnited 20.03.2025
Разработчики игр на Unity часто сталкиваются с вопросом: как выполнять действия через определённые промежутки времени, не блокируя основной поток игры? Тут как раз и приходят на помощь корутины —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru