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

Как передать массив в функцию?

07.05.2014, 11:04. Показов 2402. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int func(float arrcos[], float arrsin[])
{
 
int f=5000;
int fd=20000;
float p=0;
 
for(int n=0; n<10000; n++)
{
 
p=2*f/fd*n;
 
if ((p>=2) && (p<=0))
{
arrcos[n]=cos(M_PI*p);
arrsin[n]=sin(M_PI*p);
}
else
 
{
 
while (p<2)
 
{
 
p=p-2;
 
}
 
arrcos[n]=cos(M_PI*p);
arrsin[n]=sin(M_PI*p);
 
}
 
 
int adect(float arrcos[], float arrsin[], float ad[]);
{
for(int n=0; n<10000; n++)
{
float ad[n]=arrcos[n]*arrcos[n]+arrsin[n]*arrsin[n];
}
 
 
}
 
int chedect(float arrcos[], float arrsin[], float ad1[]);
{
for(int n=0; n<10000; n++)
 
{
float ad1[n]=1/tan(arrcos[n]/arrcos[n]);
}
 
 
}
 
int main()
{
float* arcos = new float[10000];
float* arsin = new float[10000];
float* add = new float[10000];
float* add1 = new float[10000];
func (arcos, arsin);
adect(arcos, arsin, add);
chedect(arcos, arsin, add1)
// âûâîä
for(int n=0; n<10000; n++)
{
cout << arcos[n] << endl;
}
}
return 0;
}
Выдаются следующие ошибки не могу понять что не так

Build
[C++ Error] Unit1.cpp(45): E2313 Constant expression required
[C++ Error] Unit1.cpp(45): E2034 Cannot convert 'float' to 'float[1]'
[C++ Warning] Unit1.cpp(46): W8004 'ad' is assigned a value that is never used
[C++ Error] Unit1.cpp(56): E2313 Constant expression required
[C++ Error] Unit1.cpp(56): E2034 Cannot convert 'float' to 'float[1]'
[C++ Warning] Unit1.cpp(57): W8004 'ad1' is assigned a value that is never used
[C++ Error] Unit1.cpp(63): E2141 Declaration syntax error
[C++ Error] Unit1.cpp(78): E2134 Compound statement missing }
[C++ Warning] Unit1.cpp(78): W8070 Function should return a value
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.05.2014, 11:04
Ответы с готовыми решениями:

Не могу разобраться как передать корректно передать массив из функции в функцию
//--------------------------------------------------------------------------- #pragma hdrstop ...

Как передать массив структур в функцию в качестве параметра, чтобы изменения в функции меняли исходный массив?
Допустим есть структура struct Base { int a; int b; int c; }; В основном методе main() объявим массив...

Как передать массив в функцию?
Вот код #include&lt;iostream&gt; #include&lt;ctime&gt; #include &lt;cstdlib&gt; #include &lt;iomanip&gt; using namespace std; int F(int a,int* nn){ ...

20
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
07.05.2014, 11:17
Цитата Сообщение от Dimomaas Посмотреть сообщение
float ad1[n]=1/tan(arrcos[n]/arrcos[n]);
1. Так нельзя объявлять массивы. Тем более, что он передаётся функции в качестве параметра.
2. Он будет недоступен за пределами цикла
Цитата Сообщение от Dimomaas Посмотреть сообщение
if ((p>=2) && (p<=0))
Бессмысленное условие
Цитата Сообщение от Dimomaas Посмотреть сообщение
float* arcos = new float[10000];
Это еще более глупо, если значение известно заранее.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
07.05.2014, 11:39
Цитата Сообщение от Dimomaas Посмотреть сообщение
float ad[n]=arrcos[n]*arrcos[n]+arrsin[n]*arrsin[n];
C++
1
ad[n]=arrcos[n]*arrcos[n]+arrsin[n]*arrsin[n];
0
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 48
07.05.2014, 11:45  [ТС]
Kuzia domovenok, при испраление выдает следующие Undefined symbol 'ad'
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
07.05.2014, 11:59
Dimomaas, В какой строчке говорит?
0
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 48
07.05.2014, 12:05  [ТС]
Kuzia domovenok, в той которую вы написали.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
07.05.2014, 12:07
Dimomaas, а в твоём коде куда ты её вставил? Номер строки!
А главное, ещё напиши номер строки, в которой показывает ошибку!
0
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 48
07.05.2014, 12:08  [ТС]
Kuzia domovenok, 45 строка и в ней же ошибка.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
07.05.2014, 12:25
Dimomaas, у тебя в программе {фигурные скобки} все перепутаны. Проверяй всё подряд, или перепиши всё заново - программа небольшая, но ты её (крайне вероятно) писал копипастом.

Добавлено через 4 минуты
+ плюс к этому у тебя после объявления функций стоит точка с запятой - убери. Где ты видел такое?

Добавлено через 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
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int func(float arrcos[], float arrsin[]){
  int f=5000;
  int fd=20000;
  float p=0;
 
  for(int n=0; n<10000; n++){
    p=2*f/fd*n;
 
    if ((p>=2) && (p<=0)){
      arrcos[n]=cos(M_PI*p);
      arrsin[n]=sin(M_PI*p);
    }
    else{
      while (p<2){
        p=p-2;
      }
      arrcos[n]=cos(M_PI*p);
      arrsin[n]=sin(M_PI*p);
    }
  }
}
 
int adect(float arrcos[], float arrsin[], float ad[]){
  for(int n=0; n<10000; n++){
    ad[n]=arrcos[n]*arrcos[n]+arrsin[n]*arrsin[n];
  }
}
 
int chedect(float arrcos[], float arrsin[], float ad1[]){
  for(int n=0; n<10000; n++){
    ad1[n]=1/tan(arrcos[n]/arrcos[n]);
  }
}
 
int main(){
  float* arcos = new float[10000];
  float* arsin = new float[10000];
  float* add = new float[10000];
  float* add1 = new float[10000];
  func (arcos, arsin);
  adect(arcos, arsin, add);
  chedect(arcos, arsin, add1)
  // вывод
  for(int n=0; n<10000; n++){
    cout << arcos[n] << endl;
  }
  delete[] arcos;
  delete[] arsin ;
  delete[] add ;
  delete[] add1 ;
  return 0;
}
0
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 48
07.05.2014, 21:17  [ТС]
Добавлено через 1 минуту
Kuzia domovenok,
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int func(float arrcos[], float arrsin[])
{
 
int f=5000;
int fd=20000;
float p=0;
 
for(int n=0; n<10000; n++)
{
 
p=2*f/fd*n;
 
if ((p>=2) && (p<=0))
{
arrcos[n]=cos(M_PI*p);
arrsin[n]=sin(M_PI*p);
}
else
 
{
 
while (p<2)
 
{
 
p=p-2;
 
}
 
arrcos[n]=cos(M_PI*p);
arrsin[n]=sin(M_PI*p);
}
}
}
int adect(float arrcos[], float arrsin[], float ad[])
{
 
for(int n=0; n<10000; n++)
{
ad[n]=arrcos[n]*arrcos[n]+arrsin[n]*arrsin[n];
}
}
 
int chedect(float arrcos[], float arrsin[], float ad1[])
{
for(int n=0; n<10000; n++)
{
ad1[n]=1/tan(arrcos[n]/arrcos[n]);
}
 
 
}
 
int main()
{
float* arcos = new float[10000];
float* arsin = new float[10000];
float* add = new float[10000];
float* add1 = new float[10000];
 
func (arcos, arsin);
adect(arcos, arsin, add);
chedect(arcos, arsin, add1);
 
 
for(int i=0; i<10000; i++)
{
cout << arcos[i] << endl;
}
return 0;
}
Переделанный код ошибки другие

[C++ Warning] Unit1.cpp(39): W8070 Function should return a value
[C++ Warning] Unit1.cpp(47): W8070 Function should return a value
[C++ Warning] Unit1.cpp(57): W8070 Function should return a value
[Linker Fatal Error] Fatal: Expected a file name: -
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
08.05.2014, 00:49
и чо не так? Это warningи а не errorы!
я вообще не понимаю, такое чувство, что ты вообще программ не писал никогда... в лучшем случае теоретически ознакомился с С++.
Потому что такие вещи как дебаггинг программ нужно практиковать с самого начала изучения программирования: параллельно с усложнением изучаемых программ надо самому писать собственные примеры и на практике сталкиваться с сопутствующими ошибками, набираться опыта.
А так у тебя получается - ты кидаешься писать какую-то далеко не первую программу с указателями и динамическими массивами, однако, одновременно с этим не способен увидеть какие-то простые ошибки вроде перепутанных фигурных скобок.
А по-хорошему, ты уже эти ошибки(нарушены скобки, пропущена точка с запятой) должен щёлкать моментально, т.к. опыт по их устранению должен быть набит при написании хеллоуворлдов!Если у тебя нет этого опыта, значит ты невнимательно изучал программирование... если вообще изучал.
0
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 48
08.05.2014, 08:49  [ТС]
Kuzia domovenok, На C++ не писал никогда в универе сказали сделать - я делаю
0
 Аватар для prog63
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
08.05.2014, 09:00
Проект сохранял?
0
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 48
08.05.2014, 09:04  [ТС]
prog63, в каком смысле, сохранял?
0
 Аватар для prog63
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
08.05.2014, 09:12
Цитата Сообщение от Dimomaas Посмотреть сообщение
prog63, в каком смысле, сохранял?
если проект не сохранить, он будет записан во временную папку.
может быть, она у вас скрыта или недоступна,
поэтому и вылазит ошибка
Exepted a file name -
0
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 48
08.05.2014, 09:15  [ТС]
prog63, Ды не, сохранен проект в папке на рабочем столе.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
08.05.2014, 12:53
пересоздай проект
0
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 48
08.05.2014, 13:00  [ТС]
Kuzia domovenok, Пересоздал один раз скомпилировалось, после сохранения нет
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
08.05.2014, 14:43
И еще автор как-то методично игнорирует форматирование кода (даже зачем-то убрал его из варианта в 9м посте))
А потом удивляются, почему программировать так сложно и не получается...
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
08.05.2014, 14:57
создай заново новый пустой проект и напиши простейшую программу hello world.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.05.2014, 14:57
Помогаю со студенческими работами здесь

Как передать массив в функцию?
добрый день сначал написал программу(код представлен ниже), а потом оказалось что все действия надо было сделать функцией, как сделать...

Как передать массив в функцию?
Добрый вечер! Задание следующие: Реализовать функцию, которая сдвигает содержимое массива влево на заданное число позиций (циклический...

Как передать массив в функцию?
передайте, пожалуйста, массив у функцию #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; ...

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

Как передать в функцию char массив?
Стараюсь сделать консольную змейку. Вообще не понимаю ничего с этими char. #include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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