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

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

27.08.2018, 21:14. Показов 1631. Ответов 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
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
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
18147 / 10731 / 2066
Регистрация: 27.09.2012
Сообщений: 27,030
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru