Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/26: Рейтинг темы: голосов - 26, средняя оценка - 4.69
6 / 6 / 1
Регистрация: 23.12.2012
Сообщений: 131

Вывод массива через указатель

08.10.2013, 22:27. Показов 5869. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Небольшой набросок, есть функция, вычисляющая значения произвольного выражения. Эти значения потом скидываются в массив. Хочу возвратить массив с записанными в него значениями на экран. Но вылетает ошибка: невозможно преобразовать один тип в другой.
C++ (Qt)
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
#include <cstdlib>
#include <iostream>
using namespace std;
 
float Niko();
 
main()
{
    cout <<"Otvet: " << Niko() << "\n";
 
    system("pause");
    return 0;
}
 
float Niko()
{
    float FX = 0;
    int size = 0;
    float arr[size];
    float *ptrarr = &arr; // короче присваивание указателю адреса массива => ТУТ ОШИБКА вылетает
    for (float x = -10; x <= 10; x++)
      {
        FX = (5+7); // не надо говорить, что тут и функции-то не нужно, я просто пытаюсь понять алгоритм)
        size++;
        
        for (int i = 0; i < size; i++) //тут типо записываю полученные значения в массив
         arr[i] = FX;
      } 
return ptrarr; //возвращаю переменную (ну всмысле сам массив)
}
Разумеется, сам по себе массив не выведется, но оно и ясно (вывод осуществляется поэлементно). Собственно, у меня два вопроса:
1) Правильно ли применен указатель, и если да, почему вылетает ошибка?
2) Как мне вывести массив из функции в данном случае на экран? Ну да, я могу организовать поэлементный вывод через цикл for - но как тогда мне эту конструкцию возвратить в return?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.10.2013, 22:27
Ответы с готовыми решениями:

Вывод двумерного массива через указатель
в пятой главе Прохоренка приведен такой фрагмент кода #include &lt;iostream&gt; using namespace std; int main() { const short ROWS =...

Вывод двумерного массива на экран, переданного через указатель
Выводит совсем не то, что нужно исправить в функции вывода ? // labrab2.12.cpp: определяет точку входа для консольного приложения. // ...

Вывод строк через указатель
Здравствуйте! Не могу понять, почему в функции print() в поле &quot;входная строка&quot; выводится преобразованная строка str1, а не та str1, которая...

22
6 / 6 / 1
Регистрация: 23.12.2012
Сообщений: 131
09.10.2013, 19:04  [ТС]
Студворк — интернет-сервис помощи студентам
newb_programmer,
Дело в том, что при каждом запуске программы получаются все новые и новые числа в ответе. По виду как у вас. Но все время разные. Похоже, откуда-то лезут рандомные значения, а сама программа то ли не работает, то ли код совсем кривой.

castaway,
Отправил цикл if под for, вроде работает, но... при запуске появляется окошко коносли, после значения в которое высчитывается ответ. Если честно, ума не приложу, откуда оно берется, ведь специально ничего вводить и не собирался.
C
1
2
3
4
5
6
7
8
9
10
for (float x = -2; x <= 2; x+=0.05)
      {
        FX = 35 * exp(-x) * cos(x);
      
        if (FX < 0)
         {
           for (i = 0; i < size; i++) 
            arr[i] = FX;
          }
      }
0
 Аватар для newb_programmer
238 / 238 / 113
Регистрация: 03.09.2011
Сообщений: 558
09.10.2013, 19:14
Super GT, напишите что вы хотите от программы?

Добавлено через 3 минуты
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
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int size, k=0;
    float FX;
    cin >> size;
    float *arr;
    arr = new float [size];   
    for (float x = -2; x <= 2; x+=0.05)
      {
        FX = 35 * exp(-x) * cos(x);
         if (FX < 0) {
         arr[k] = FX;
         cout <<"Result: " << arr[k] << "\n";
         k++;
         }
         else
             cout<<"miss!\n";
    }
    delete arr;
    system("pause");
    return 0;
}
вот вывод
100
Result: -107.623
Result: -91.066
Result: -75.6518
Result: -61.3447
Result: -48.1073
Result: -35.9008
Result: -24.6851
Result: -14.4194
Result: -5.06198
miss!
...
miss!
Result: -0.206327
Result: -0.531823
Result: -0.823815
Result: -1.0841
Result: -1.31446
Result: -1.51665
Result: -1.69238
Result: -1.84335
Result: -1.97117
Для продолжения нажмите любую клавишу . . .
1
6 / 6 / 1
Регистрация: 23.12.2012
Сообщений: 131
09.10.2013, 19:14  [ТС]
В общем, программа вычисляет и отсеивает отрицательные значения выражения FX = 35 * exp(-x) * cos(x) в соответствии с указанными значениями аргумента x и шагом.
Потом эти значения надо скинуть в массив и вывести в консоль.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.10.2013, 19:14

Передача массива через указатель
Надо передать массив в функцию через указатель, я сделал, так но что то программа долго думаете #include &lt;iostream&gt; #include ...

Вызов функции из массива, через указатель
имею код #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;utility&gt; using namespace std; void Func() { cout&lt;&lt;&quot;pFunc()&quot;; } ...

Обращение к элементу массива через указатель
Здравствуйте, точно помню, что A и *(A+i) это одно и тоже то вот почему-то не хочет работать #include &quot;stdafx.h&quot; ...

Передача массива в функцию через указатель
В каких случаях массив обязательно передается в качестве указателя в функцию?

Доступ к элементу массива через указатель
надо осушествить следуюшие: pointerArr=21; когда: main.cpp #include &lt;QtCore/QCoreApplication&gt; #include &quot;Array.h&quot; ...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru