Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Dimomaas
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 48
#1

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

07.05.2014, 11:04. Просмотров 958. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2014, 11:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как передать массив в функцию? (C++):

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

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

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

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

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

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

20
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
07.05.2014, 11:17 #2
Цитата Сообщение от 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
1952 / 1805 / 140
Регистрация: 25.03.2012
Сообщений: 6,252
Записей в блоге: 1
07.05.2014, 11:39 #3
Цитата Сообщение от 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
Dimomaas
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 48
07.05.2014, 11:45  [ТС] #4
Kuzia domovenok, при испраление выдает следующие Undefined symbol 'ad'
0
Kuzia domovenok
1952 / 1805 / 140
Регистрация: 25.03.2012
Сообщений: 6,252
Записей в блоге: 1
07.05.2014, 11:59 #5
Dimomaas, В какой строчке говорит?
0
Dimomaas
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 48
07.05.2014, 12:05  [ТС] #6
Kuzia domovenok, в той которую вы написали.
0
Kuzia domovenok
1952 / 1805 / 140
Регистрация: 25.03.2012
Сообщений: 6,252
Записей в блоге: 1
07.05.2014, 12:07 #7
Dimomaas, а в твоём коде куда ты её вставил? Номер строки!
А главное, ещё напиши номер строки, в которой показывает ошибку!
0
Dimomaas
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 48
07.05.2014, 12:08  [ТС] #8
Kuzia domovenok, 45 строка и в ней же ошибка.
0
Kuzia domovenok
1952 / 1805 / 140
Регистрация: 25.03.2012
Сообщений: 6,252
Записей в блоге: 1
07.05.2014, 12:25 #9
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
Dimomaas
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 48
07.05.2014, 21:17  [ТС] #10
Добавлено через 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
1952 / 1805 / 140
Регистрация: 25.03.2012
Сообщений: 6,252
Записей в блоге: 1
08.05.2014, 00:49 #11
и чо не так? Это warningи а не errorы!
я вообще не понимаю, такое чувство, что ты вообще программ не писал никогда... в лучшем случае теоретически ознакомился с С++.
Потому что такие вещи как дебаггинг программ нужно практиковать с самого начала изучения программирования: параллельно с усложнением изучаемых программ надо самому писать собственные примеры и на практике сталкиваться с сопутствующими ошибками, набираться опыта.
А так у тебя получается - ты кидаешься писать какую-то далеко не первую программу с указателями и динамическими массивами, однако, одновременно с этим не способен увидеть какие-то простые ошибки вроде перепутанных фигурных скобок.
А по-хорошему, ты уже эти ошибки(нарушены скобки, пропущена точка с запятой) должен щёлкать моментально, т.к. опыт по их устранению должен быть набит при написании хеллоуворлдов!Если у тебя нет этого опыта, значит ты невнимательно изучал программирование... если вообще изучал.
0
Dimomaas
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 48
08.05.2014, 08:49  [ТС] #12
Kuzia domovenok, На C++ не писал никогда в универе сказали сделать - я делаю
0
prog63
2 / 2 / 0
Регистрация: 24.11.2013
Сообщений: 77
08.05.2014, 09:00 #13
Проект сохранял?
0
Dimomaas
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 48
08.05.2014, 09:04  [ТС] #14
prog63, в каком смысле, сохранял?
0
prog63
2 / 2 / 0
Регистрация: 24.11.2013
Сообщений: 77
08.05.2014, 09:12 #15
Цитата Сообщение от Dimomaas Посмотреть сообщение
prog63, в каком смысле, сохранял?
если проект не сохранить, он будет записан во временную папку.
может быть, она у вас скрыта или недоступна,
поэтому и вылазит ошибка
Exepted a file name -
0
08.05.2014, 09:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2014, 09:12
Привет! Вот еще темы с ответами:

Как передать массив в функцию? - C++
Вот код #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){ ...

Как передать такой массив в функцию - C++
Есть большой массив память для которого выделяеться динамически double *****massiv_resultatov = new double****; for(i = 0; i &lt; 25;...

Как передать двухмерный массив в функцию? - C++
Подскажите пожалуйста, как в функцию передать двухмерный массив? Пробовал так: void FuncArr(int** arr){ arr = 111111; } void...

Как правильно передать массив в функцию? - C++
Возникла такая загвоздка: написал три функции для работы с массивом. Вроде всё компилирует, кроме вызова этих функций, а конкретнее при...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru