Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 43

Передача вектора в функцию

11.03.2020, 19:27. Показов 647. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу понять как передать вектор в параметры метода класса.
Сама матрица читается с текстового файла
И все операции должны совершаться над ней

заголовочный***
C++
1
2
3
4
5
6
class Matrix
{
public:
    std::vector<std::vector<double>> read(std::string p);
    std::vector<std::vector<double>> transpose(std::vector < std::vector <double>> matrix);
};
файл с функциями
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
std::vector<std::vector<double>> Matrix::read(std::string p) {
    int a = 0;
    int b = 0;
    std::vector<std::vector<double> > matrix;
    std::ifstream fin(p);
    if (!fin)
    {
        std::cout << "ERROR. file is not founded";
    }
    std::cout << "file is opened" << std::endl;
    char c;
    do
    {
        std::vector<double> t;
        do
        {
            double x;
            fin >> x;
            if (!fin)
                break;
            t.push_back(x);
            if (b == 0)
                a++;
            c = fin.get();
        } while (c != '\n' && c != EOF);
        if (t.size() == a) // вставляем только строки с одинаковым количеством чисел
        {
            matrix.push_back(t);
            b++;
        }
    } while (fin);
    for (int i = 0; i < a; i++)
    {
        for (int j = 0; j < b; j++)
        {
            fin >> matrix[i][j];
            std::cout << std::fixed << std::setprecision(4) << matrix[i][j] << "\t";
        }
        std::cout << std::endl;
    }
    fin.close();
    return matrix;
}
std::vector<std::vector<double>> Matrix::transpose(std::vector < std::vector <double>> matrix)
{
    unsigned a= matrix.size();
    unsigned b = matrix[0].size();
 
    double t;
    for (int i = 0; i < a; i++)
    {
        for (int j = 0; j < b; j++) {
            t = matrix[i][j];
            matrix[i][j] = matrix[j][i];
            matrix[j][i] = t;
        }
    }
    return matrix;
}


файл с main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
 
    std::string p = "a.txt";
    Matrix matrix;
    std::vector<std::vector<double>> m = matrix.read(std::string (p));
    int q;
    std::cout << "Select operation" <<"\n";
    std::cout << "1-transpose" << "\n" << "2-multiplication" << "\n";
    std::cin >> q;
    switch (q)
    {
    case 1:
        std::vector<std::vector<double>> k = matrix.transpose(matrix);// интересует этот момент. Выдает ошибку "не существует подходящего преобразования"
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.03.2020, 19:27
Ответы с готовыми решениями:

Передача вектора в функцию
Как правильно передавать вектор в функцию? Опускаю подробности его инициализации, проблема в передачи в функцию. Выводит ошибки: 1)...

Передача вектора в функцию
void foo(vector&lt;int&gt; x) { //Тело функции } void foo(vector&lt;int&gt; &amp;x) { //Тело функции } Пишут что в первой записи все...

Передача вектора в функцию
Сабж. В главной программе есть структура: struct Complex { double Re; double Im; } com; и есть вектор: vector...

3
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
11.03.2020, 19:43
Цитата Сообщение от DariaDasha7 Посмотреть сообщение
Выдает ошибку "не существует подходящего преобразования"
Как у вас описан метод transpose?
Цитата Сообщение от DariaDasha7 Посмотреть сообщение
C++
1
std::vector<std::vector<double>> transpose(std::vector < std::vector <double>> matrix);
У него единственный аргумент типа std::vector < std::vector <double>>. Передаете в качестве аргумента matrix, какой тип у этой переменной?

И в целом не понятно, нафига зачем тут класс Matrix с нестатичными методами и без данных.
0
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 43
11.03.2020, 20:14  [ТС]
Цитата Сообщение от valen10 Посмотреть сообщение
Как у вас описан метод transpose?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
std::vector<std::vector<double>> Matrix::transpose(std::vector < std::vector <double>> matrix)
{
    unsigned a= matrix.size();
    unsigned b = matrix[0].size();
 
    double t;
    for (int i = 0; i < a; i++)
    {
        for (int j = 0; j < b; j++) {
            t = matrix[i][j];
            matrix[i][j] = matrix[j][i];
            matrix[j][i] = t;
        }
    }
    return matrix;
}

Цитата Сообщение от valen10 Посмотреть сообщение
Передаете в качестве аргумента matrix, какой тип у этой переменной?
matrix в данном случае экземпляр класса.

Цитата Сообщение от valen10 Посмотреть сообщение
И в целом не понятно, нафига зачем тут класс Matrix с нестатичными методами и без данных
Ну просто по заданию. В заголовочном файле класс и прототипы методов. В cpp файле описания методов. В main вызовы.
Все равно не могу понять что должно быть на входе. вектор?
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
11.03.2020, 20:25
DariaDasha7, еще раз. Посмотрите на 5 строку в заголовочном файле, прототип метода transpose выглядит так:
Цитата Сообщение от DariaDasha7 Посмотреть сообщение
C++
5
std::vector<std::vector<double>> transpose(std::vector < std::vector <double>> matrix);
Он принимает один аргумент типа std::vector < std::vector <double>>.

Далее смотрим на 5 строку фала main.cpp, matrix имеет тип Matrix.
Цитата Сообщение от DariaDasha7 Посмотреть сообщение
C++
5
Matrix matrix;
И затем попытка вызвать transpose в строке 14.
Цитата Сообщение от DariaDasha7 Посмотреть сообщение
C++
14
std::vector<std::vector<double>> k = matrix.transpose(matrix);
Вы пытаетесь передать в качестве аргумента переменную не подходящего типа. Самое подходящее, что тут можно передать, это m, прочитанное в строке 6.

Но что-то мне подсказывает, задание Вы поняли не совсем правильно. Напишите его сюда.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2020, 20:25
Помогаю со студенческими работами здесь

Передача вектора в функцию
И снова я сюда) Еще раз всем привет. Как передать ветор в функцию? Пробовал по указателю и ссылке , все равно ругается на что то) Вот...

Передача вектора в функцию.
Сабж. #include &lt;iostream&gt; #include &lt;vector.h&gt; void show (); // ? int main () { vector &lt;int&gt;...

Передача вектора в функцию
вот например функция void f(vector &lt;int&gt; v) { cout &lt;&lt; v.size(); } в нее нужно передать вектор, сразу же в передаче и...

Передача вектора в функцию по ссылке
Здравствуйте. Как решить эту ошибку. Ошибка: In member function ‘void Blocks::SetCube(std::vector&lt;Texture2f&gt;*,...

Передача вектора в функцию по указателю
Есть функция с таким прототипом: void Split(const string&amp; text, char delimeter, const vector&lt;string&gt;* pPars); как воспользоваться...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru