Форум программистов, компьютерный форум CyberForum.ru

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

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

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

07.05.2014, 11:04. Просмотров 874. Ответов 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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mimicria
return (true);
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
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];
Это еще более глупо, если значение известно заранее.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 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];
Dimomaas
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 47
07.05.2014, 11:45  [ТС]     Как передать массив в функцию? #4
Kuzia domovenok, при испраление выдает следующие Undefined symbol 'ad'
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
07.05.2014, 11:59     Как передать массив в функцию? #5
Dimomaas, В какой строчке говорит?
Dimomaas
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 47
07.05.2014, 12:05  [ТС]     Как передать массив в функцию? #6
Kuzia domovenok, в той которую вы написали.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
07.05.2014, 12:07     Как передать массив в функцию? #7
Dimomaas, а в твоём коде куда ты её вставил? Номер строки!
А главное, ещё напиши номер строки, в которой показывает ошибку!
Dimomaas
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 47
07.05.2014, 12:08  [ТС]     Как передать массив в функцию? #8
Kuzia domovenok, 45 строка и в ней же ошибка.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 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;
}
Dimomaas
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 47
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: -
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
08.05.2014, 00:49     Как передать массив в функцию? #11
и чо не так? Это warningи а не errorы!
я вообще не понимаю, такое чувство, что ты вообще программ не писал никогда... в лучшем случае теоретически ознакомился с С++.
Потому что такие вещи как дебаггинг программ нужно практиковать с самого начала изучения программирования: параллельно с усложнением изучаемых программ надо самому писать собственные примеры и на практике сталкиваться с сопутствующими ошибками, набираться опыта.
А так у тебя получается - ты кидаешься писать какую-то далеко не первую программу с указателями и динамическими массивами, однако, одновременно с этим не способен увидеть какие-то простые ошибки вроде перепутанных фигурных скобок.
А по-хорошему, ты уже эти ошибки(нарушены скобки, пропущена точка с запятой) должен щёлкать моментально, т.к. опыт по их устранению должен быть набит при написании хеллоуворлдов!Если у тебя нет этого опыта, значит ты невнимательно изучал программирование... если вообще изучал.
Dimomaas
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 47
08.05.2014, 08:49  [ТС]     Как передать массив в функцию? #12
Kuzia domovenok, На C++ не писал никогда в универе сказали сделать - я делаю
prog63
2 / 2 / 0
Регистрация: 24.11.2013
Сообщений: 77
08.05.2014, 09:00     Как передать массив в функцию? #13
Проект сохранял?
Dimomaas
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 47
08.05.2014, 09:04  [ТС]     Как передать массив в функцию? #14
prog63, в каком смысле, сохранял?
prog63
2 / 2 / 0
Регистрация: 24.11.2013
Сообщений: 77
08.05.2014, 09:12     Как передать массив в функцию? #15
Цитата Сообщение от Dimomaas Посмотреть сообщение
prog63, в каком смысле, сохранял?
если проект не сохранить, он будет записан во временную папку.
может быть, она у вас скрыта или недоступна,
поэтому и вылазит ошибка
Exepted a file name -
Dimomaas
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 47
08.05.2014, 09:15  [ТС]     Как передать массив в функцию? #16
prog63, Ды не, сохранен проект в папке на рабочем столе.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
08.05.2014, 12:53     Как передать массив в функцию? #17
пересоздай проект
Dimomaas
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 47
08.05.2014, 13:00  [ТС]     Как передать массив в функцию? #18
Kuzia domovenok, Пересоздал один раз скомпилировалось, после сохранения нет
monolit
180 / 180 / 21
Регистрация: 24.03.2011
Сообщений: 652
Завершенные тесты: 1
08.05.2014, 14:43     Как передать массив в функцию? #19
И еще автор как-то методично игнорирует форматирование кода (даже зачем-то убрал его из варианта в 9м посте))
А потом удивляются, почему программировать так сложно и не получается...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2014, 14:57     Как передать массив в функцию?
Еще ссылки по теме:

Как передать динамический массив в функцию? C++
Как передать в функцию массив символьных строк? C++
C++ Как правильно передать массив в функцию?
Как передать массив в функцию? C++
Как передать массив в функцию? C++

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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
08.05.2014, 14:57     Как передать массив в функцию? #20
создай заново новый пустой проект и напиши простейшую программу hello world.
Yandex
Объявления
08.05.2014, 14:57     Как передать массив в функцию?
Ответ Создать тему
Опции темы

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