Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
WLF
1 / 2 / 0
Регистрация: 06.12.2013
Сообщений: 118

Std::array - что не так? (найти и исправить ошибки в коде)

27.08.2018, 21:14. Показов 1536. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Подскажите что не правильно:
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
#include <iostream>
#include <array>
 
using namespace std;
 
double CalculateRecommendedPower(double resistor_pow, double power[], int sizePower);
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    const int sizePower = 10;
//  double power[sizePower] = {0.125, 0.25, 0.5, 1, 2, 3, 4, 5, 8, 10};
    array<double, sizePower> power = {0.125, 0.25, 0.5, 1, 2, 3, 4, 5, 8, 10};
    double resistor_pow = 0.35;
 
    cout << "Рекомендуемая мощность: " << CalculateRecommendedPower(resistor_pow, power, sizePower) << " Вт" << endl;
 
    return 0;
}
 
double CalculateRecommendedPower(double resistor_pow, double power[], int sizePower)
{
    double recommended_power;
    for (int i = 0; i < sizePower; i++)
    {
//      if (resistor_pow <= power[i])
        if (resistor_pow <= power.at[i])
        {
//          recommended_power = power[i];
            recommended_power = power.at[i];
            break;
        }
    }
    return recommended_power;
}
Code::Blocks выдает ошибку
Code
1
2
3
4
5
6
7
8
||=== Build file: "no target" in "no project" (compiler: unknown) ===|
C:\Users\W0LF\Dropbox\src\CPP\array.cpp||In function 'int main()':|
C:\Users\W0LF\Dropbox\src\CPP\array.cpp|17|error: cannot convert 'std::array<double, 10>' to 'double*'|
C:\Users\W0LF\Dropbox\src\CPP\array.cpp|6|note:   initializing argument 2 of 'double CalculateRecommendedPower(double, double*, int)'|
C:\Users\W0LF\Dropbox\src\CPP\array.cpp||In function 'double CalculateRecommendedPower(double, double*, int)':|
C:\Users\W0LF\Dropbox\src\CPP\array.cpp|28|error: request for member 'at' in 'power', which is of non-class type 'double*'|
C:\Users\W0LF\Dropbox\src\CPP\array.cpp|31|error: request for member 'at' in 'power', which is of non-class type 'double*'|
||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.08.2018, 21:14
Ответы с готовыми решениями:

Что не так? (найти и исправить ошибки в коде)
Нужно создать и обработать структуру #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;cstdlib&gt; #include &lt;iostream&gt; ...

Что не так с кодом? (найти и исправить ошибки в заданном коде)
Ребят, подскажите что не так с кодом на с++? #include &lt;iostream&gt; using namespace std; int main() { int i; int...

Std::getline() пропускает итерацию в цикле: найти и исправить ошибки в коде
Цикл for принимает на одну строку меньше чем должен. Я так понимаю это getline() воспринимает введенную перед этим переменную &quot;int...

17
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
27.08.2018, 21:17
WLF, наверно так должно быть
C++
1
double CalculateRecommendedPower(double resistor_pow, const array<double, sizePower>& power, int sizePower);
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
#include <iostream>
#include <array>
 
using namespace std;
 
template <typename T, int sizePower>
double CalculateRecommendedPower(double resistor_pow, array<double, sizePower> power);
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    const int sizePower = 10;
//  double power[sizePower] = {0.125, 0.25, 0.5, 1, 2, 3, 4, 5, 8, 10};
    array<double, sizePower> power = {0.125, 0.25, 0.5, 1, 2, 3, 4, 5, 8, 10};
    double resistor_pow = 0.35;
 
    cout << "Рекомендуемая мощность: " << CalculateRecommendedPower<double, sizePower>(resistor_pow, power) << " Вт" << endl;
 
    return 0;
}
 
template <typename T, int sizePower>
double CalculateRecommendedPower(double resistor_pow, array<double, sizePower> power)
{
    double recommended_power;
    for (auto& r : power)
    {
//      if (resistor_pow <= power[i])
        if (resistor_pow <= r)
        {
//          recommended_power = power[i];
            recommended_power = r;
            break;
        }
    }
    return recommended_power;
}
1
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
27.08.2018, 21:20
В текст не вникал.

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 <iostream>
#include <array>
 
using namespace std;
 
const int sizePower = 10;
 
double CalculateRecommendedPower(double resistor_pow, const array<double, sizePower>& power, int sizePower);
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    //  double power[sizePower] = {0.125, 0.25, 0.5, 1, 2, 3, 4, 5, 8, 10};
    array<double, sizePower> power = { 0.125, 0.25, 0.5, 1, 2, 3, 4, 5, 8, 10 };
    double resistor_pow = 0.35;
 
    cout << "Рекомендуемая мощность: " << CalculateRecommendedPower(resistor_pow, power, sizePower) << " Вт" << endl;
 
    return 0;
}
 
double CalculateRecommendedPower(double resistor_pow, const array<double, sizePower>& power, int sizePower)
{
    double recommended_power;
    for (int i = 0; i < sizePower; i++)
    {
        //      if (resistor_pow <= power[i])
        if (resistor_pow <= power.at(i))
        {
            //          recommended_power = power[i];
            recommended_power = power.at(i);
            break;
        }
    }
    return recommended_power;
}
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
27.08.2018, 21:57
WLF, вот , там ошибки были
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
#include <iostream>
#include <array>
 
using namespace std;
 
template <typename T, int sizePower>
double CalculateRecommendedPower(double resistor_pow, const array<T, sizePower>& power);
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    const int sizePower = 10;
//  double power[sizePower] = {0.125, 0.25, 0.5, 1, 2, 3, 4, 5, 8, 10};
    array<double, sizePower> power = {0.125, 0.25, 0.5, 1, 2, 3, 4, 5, 8, 10};
    double resistor_pow = 0.35;
 
    cout << "Рекомендуемая мощность: " << CalculateRecommendedPower(resistor_pow, power) << " Вт" << endl;
 
    return 0;
}
 
template <typename T, int sizePower>
double CalculateRecommendedPower(double resistor_pow, const array<T, sizePower>& power)
{
    T recommended_power;
    for (auto& r : power)
    {
//      if (resistor_pow <= power[i])
        if (resistor_pow <= r)
        {
//          recommended_power = power[i];
            recommended_power = r;
            break;
        }
    }
    return recommended_power;
}
1
WLF
1 / 2 / 0
Регистрация: 06.12.2013
Сообщений: 118
27.08.2018, 22:01  [ТС]
А вот это -
C++
1
template <typename T, int sizePower>
обязательно?
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
27.08.2018, 22:04
Цитата Сообщение от WLF Посмотреть сообщение
обязательно?
это нужно что бы использовать тип не только double но и еще допустим int, и что бы размер передавать массива автоматически.

Добавлено через 35 секунд
Цитата Сообщение от _stanislav Посмотреть сообщение
CalculateRecommendedPower(resistor_pow, power)
только два параметра.
0
WLF
1 / 2 / 0
Регистрация: 06.12.2013
Сообщений: 118
27.08.2018, 22:14  [ТС]
_stanislav, теперь такие ошибки:
Code
1
2
3
4
5
6
7
||=== Build file: "no target" in "no project" (compiler: unknown) ===|
C:\Users\W0LF\Dropbox\src\CPP\array.cpp||In function 'int main()':|
C:\Users\W0LF\Dropbox\src\CPP\array.cpp|18|error: no matching function for call to 'CalculateRecommendedPower(double&, std::array<double, 10>&)'|
C:\Users\W0LF\Dropbox\src\CPP\array.cpp|7|note: candidate: 'template<class T, int sizePower> double CalculateRecommendedPower(double, const std::array<T, sizePower>&)'|
C:\Users\W0LF\Dropbox\src\CPP\array.cpp|7|note:   template argument deduction/substitution failed:|
C:\Users\W0LF\Dropbox\src\CPP\array.cpp|18|note:   mismatched types 'int' and 'unsigned int'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
27.08.2018, 22:21
WLF, вот у меня работает
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 <cstddef>
#include <iostream>
#include <array>
 
using namespace std;
 
template <typename T, std::size_t sizePower>
T CalculateRecommendedPower(T resistor_pow, const array<T, sizePower>& power);
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    const std::size_t sizePower = 10;
//  double power[sizePower] = {0.125, 0.25, 0.5, 1, 2, 3, 4, 5, 8, 10};
    array<double, sizePower> power = {0.125, 0.25, 0.5, 1, 2, 3, 4, 5, 8, 10};
    double resistor_pow = 0.35;
 
    cout << "Рекомендуемая мощность: " << CalculateRecommendedPower(resistor_pow, power) << " Вт" << endl;
 
    return 0;
}
 
template <typename T, std::size_t sizePower>
T CalculateRecommendedPower(T resistor_pow, const array<T, sizePower>& power)
{
    T recommended_power;
    for (auto& r : power)
    {
//      if (resistor_pow <= power[i])
        if (resistor_pow <= r)
        {
//          recommended_power = power[i];
            recommended_power = r;
            break;
        }
    }
    return recommended_power;
}
0
WLF
1 / 2 / 0
Регистрация: 06.12.2013
Сообщений: 118
28.08.2018, 16:02  [ТС]
C++
1
2
template <typename T, std::size_t sizePower>
T CalculateRecommendedPower(T resistor_pow, const array<T, sizePower>& power);
пипец, как всё сложно...
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
28.08.2018, 16:04
Цитата Сообщение от WLF Посмотреть сообщение
пипец, как всё сложно...
Ты выбрал один из самых сложных современных языков программирования. Чего ж ты удивляешься? Хочешь проще, иди учи Java или Python.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
28.08.2018, 16:15
Цитата Сообщение от WLF Посмотреть сообщение
пипец, как всё сложно...
у меня тоже есть тайная мечта выучить шаблоны, манит все непонятное.

Добавлено через 5 минут

Не по теме:

вообще сложно это понять бесконечность, а все что придумал человек все просто.

0
WLF
1 / 2 / 0
Регистрация: 06.12.2013
Сообщений: 118
28.08.2018, 16:21  [ТС]
Хочешь проще, иди учи Java или Python

Не по теме:

Пробовал. И питон, и яву, и яваскрипт, и котлин, и что-то еще, уже не помню. Я с 2010 года пытаюсь вникнуть в с++. Бросал и начинал изучать снова. Мне проще на асме что-нить написать. Но мне нужно gui. На сях это проще и быстрее. На питоне или яве можно писать гуи?



вообще сложно это понять бесконечность, а все что придумал человек все просто.

Не по теме:

не соглашусь. :) бесконечность - это просто бесконечность. А вот прочитав вчера о том, что ученые придумали математическую модель машины времени, мой мозг чуть не поджарился. :)

0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
28.08.2018, 16:29
Цитата Сообщение от WLF Посмотреть сообщение
На питоне или яве можно писать гуи?
Конечно. GUI - как правило, явление ортогональное языку программирования.
https://www.cyberforum.ru/java-gui/
https://www.cyberforum.ru/python-graphics/
https://www.cyberforum.ru/windows-forms/
https://www.cyberforum.ru/wpf-silverlight/
https://www.cyberforum.ru/qt/
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
28.08.2018, 16:32
Цитата Сообщение от WLF Посмотреть сообщение
пипец, как всё сложно...
Ну можно шаблоны убрать, получилась бы просто функция
C++
1
double CalculateRecommendedPower(double resistor_pow, const array<double, 10>& power)
А с шаблоном можно использовать не только для double, и не только для 10 элементов, но и для любых других типов.

Добавлено через 2 минуты
Если нужна переменная длина массива, используй лучше std::vector
0
28.08.2018, 16:41

Не по теме:

Цитата Сообщение от WLF Посмотреть сообщение
бесконечность - это просто бесконечность
я вот такое понятие как "просто" не понимаю, если ты понимаешь объясни.

0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
29.08.2018, 08:41
Цитата Сообщение от WLF Посмотреть сообщение
пипец, как всё сложно...
В общем-то std::array в этом примере не особо нужен.
Как и шаблоны.
Люди просто показывают вам средства языка.
0
WLF
1 / 2 / 0
Регистрация: 06.12.2013
Сообщений: 118
29.08.2018, 12:35  [ТС]
Что, если заменить ссылочные переменные обычными?
Ну, т.е. я так и сделал и всё работает. Что изменится в откомпилированном коде?

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
#include <iostream>
#include <array>
 
using namespace std;
 
double CalculateRecommendedPower(double resistor_pow, const array<double, 10> value);
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    array<double, 10> power = {0.125, 0.25, 0.5, 1, 2, 3, 4, 5, 8, 10};
    double resistor_pow = 1.1;
 
    cout << "Рекомендуемая мощность: " << CalculateRecommendedPower(resistor_pow, power) << " Вт" << endl;
 
    return 0;
}
 
double CalculateRecommendedPower(double resistor_pow, const array<double, 10> value)
{
    double recommended_value;
    for (auto i : value)
    {
        if (resistor_pow <= i)
        {
            recommended_value = i;
            break;
        }
    }
    return recommended_value;
}
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
29.08.2018, 12:42
Цитата Сообщение от WLF Посмотреть сообщение
Что, если заменить ссылочные переменные обычными?
То массивы (std::array) будут копироваться.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.08.2018, 12:42
Помогаю со студенческими работами здесь

Найти ошибки в коде и исправить эти ошибки (Наследование)
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h (inline) #pragma once class list...

Расстановка девяти чисел (Turbo C) Выводит ошибку using Matrix = std::array<std::array<int, 3>, 3>; и bool NextSet
#include &lt;iostream&gt; #include &lt;array&gt; using Matrix = std::array&lt;std::array&lt;int, 3&gt;, 3&gt;; // взято отсюда:...

Найти ошибки в коде и исправить эти ошибки
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; class A{ private: int* a; size_t size_; ...

Найти ошибки в коде и исправить эти ошибки - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить откуда. A.h #pragma once ...

Найти и исправить ошибки в коде
Всем доброго времени суток. Посмотрите что за ошибки в программе у меня компилятор 8 ошибок выдает в том числе где сstdlib #include...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru