С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для Dezman666
1 / 1 / 0
Регистрация: 09.04.2009
Сообщений: 18

немогу создать функцию

23.04.2009, 16:28. Показов 1054. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вообщем стоит задача создать функцию к которой я буду обращаться след образом:
int i1=0, i2=1, i3=10;
Open(i1, i2, i3);
и в итоге получать масив чисел 0#1#10[500], в свою очередь у меня храняться все файлы в папке BD\ с именами 0#4#15.txt
первая часть функции у меня есть
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
void __fastcall Open(int i1, int i2, int i3)
{
 
long fLenx;
AnsiString FName="BD/"+IntToStr(i1)+"#"+IntToStr(i2)+"#"+IntToStr(i3)+".txt";
FILE *fx;
char* file_namex = FName.c_str();
char * chBufx;
char *chNumx;
if(fx = fopen(file_namex,"rb+"))
{
    fseek(fx,0,SEEK_END);
    fLenx = ftell(fx);
    fseek(fx,0,SEEK_SET);
    chBufx = (char *)malloc(fLenx);
    fread((void *)chBufx,1,fLenx,fx);
    fclose(fx);
    int ix = 0, nx = 500;
    while(chNumx = strrchr(chBufx,'\t'))
{
    masx[nx - ix - 1] = atof(chNumx++);
    chBufx[strlen(chBufx) - strlen(chNumx) - 2] = '\0';
     ix++;
}
}
}
поскольку я очень несилен в функциях, у меня первая же проблма я немогу вернуть какоето значение, тоесть если я даже дописываю в конце return 0; билдер выдает ошибку что непральное возвращаемое значение и пишет имя с параметрами __fastcall Open(int i1, int i2, int i3), поэтому для впроверки правельности открытия файла я покаиспользовал масив double masx[500]; глобально... вообщем я бы хотел чтобы в функции как-то создавался масив с именем IntToStr(i1)+"#"+IntToStr(i2)+"#"+IntToS tr(i3) и этот массив возвращался мне в основной цикл программы, сампока разобраться нмогу помогите плиз...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.04.2009, 16:28
Ответы с готовыми решениями:

Немогу понять задание (Написать рекурсивную функцию обращения списка)
есть задание "Написать рекурсивную функцию обращения списка.", как понять ф-ця обращения списка?

Создать функцию, сортирующую данную структуру, и функцию для поиска нужного значения в структуре
задание: Создать массив, элементами которого являются структуры – список журналов и газет (название, тираж, фамилия главреда, год...

Как создать функцию, принимающую в качестве аргумента иную функцию, в которой есть параметры по умолчанию?
У меня имеется функция msk с параметрами по умолчанию double msk(double a = 0.0, double b = 1.0) И имеется функция test, в которую мне...

10
28 / 27 / 11
Регистрация: 12.03.2009
Сообщений: 85
23.04.2009, 16:30
Напиши return [Value];
0
 Аватар для Dezman666
1 / 1 / 0
Регистрация: 09.04.2009
Сообщений: 18
23.04.2009, 16:42  [ТС]
опять же cannot return a value
может я нетуда пишу?
0
 Аватар для Deicider
98 / 54 / 3
Регистрация: 18.03.2009
Сообщений: 273
23.04.2009, 17:16
Проблема вот тут:
void __fastcall Open(int i1, int i2, int i3)

void означает, что значение возвращаться не будет.

Чтобы "вернуть" массив, нужно создать его динамически и вернуть указатель на его начало. Потом нужно не забыть освободить выделенную динамически память.
1
 Аватар для Dezman666
1 / 1 / 0
Регистрация: 09.04.2009
Сообщений: 18
24.04.2009, 16:44  [ТС]
ладно это я сделаю, а вот главный вопрос как мне сделать имя массива в зависимости от моих i1 i2 i3 по типу 0#4#15 ?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
25.04.2009, 01:10
Code
1
0#1#10[500]
в имени могут быть только буквы, цифры и знак _, который считается буквой, начинаться с цифры идентификатор не может, а большие и маленькие буквы считаются разными
0
 Аватар для Dezman666
1 / 1 / 0
Регистрация: 09.04.2009
Сообщений: 18
25.04.2009, 02:11  [ТС]
ну хотябы как i1 i2 i3 по типу 0_4_15 как?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
25.04.2009, 11:14
создай его в структуре, в которой заведи для него символьный массив для имени типа

Code
1
2
3
4
    struct {
        int a[10];
        char name[100];
    } s;
0
 Аватар для Dezman666
1 / 1 / 0
Регистрация: 09.04.2009
Сообщений: 18
25.04.2009, 16:23  [ТС]
полез разбираться в структурах, а то непонял что ты имел ввиду...

Добавлено через 1 час 47 минут 52 секунды
зашел в тупик=( немогу создать динамический масив под свой пример, вообще проблема с тем что неполучается работать с массивом в функции через указатель
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
//---------------------------------------------------------------------------
void __fastcall Open(int i1, int i2, int i3, double* pmasx);
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
double masx[500];
double massivx[20][20][500];
 
int i1=0, i2=1, i3=10;
Open(i1, i2, i3, &masx);
for (int g=0, g<500, g++)
{massivx[i1][i3][h]=masx[h];}
Edit1->Text=masx[i1][i3][499];
}
//---------------------------------------------------------------------------
 
void __fastcall Open(int i1, int i2, int i3, double* pmasx)
{
 
long fLenx;
AnsiString FName="BD/"+IntToStr(i1)+"#"+IntToStr(i2)+"#"+IntToStr(i3)+".txt";
FILE *fx;
char* file_namex = FName.c_str();
char * chBufx;
char *chNumx;
if(fx = fopen(file_namex,"rb+"))
{
    fseek(fx,0,SEEK_END);
    fLenx = ftell(fx);
    fseek(fx,0,SEEK_SET);
    chBufx = (char *)malloc(fLenx);
    fread((void *)chBufx,1,fLenx,fx);
    fclose(fx);
    int ix = 0, nx = 500;
    while(chNumx = strrchr(chBufx,'\t'))
{
    *pmasx[nx - ix - 1] = atof(chNumx++);
    chBufx[strlen(chBufx) - strlen(chNumx) - 2] = '\0';
     ix++;
}
}
 
}
вообщем понятно что тут непрально и какие ошибки возникают говорить небуду, а сам немогу создать динамический массив, если что и видел то в книге как создач кучу и сней работать, но тоже непойму как ее в мою задачу вставить. да и в инете ничего подходящего никак ненайду, nt[] arr = new int[10]; низнаю куда пихать, да и описания нигде норм нет что такое vector, map, list! и как их едять...
0
 Аватар для Dezman666
1 / 1 / 0
Регистрация: 09.04.2009
Сообщений: 18
27.04.2009, 14:39  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
создай его в структуре, в которой заведи для него символьный массив для имени типа

Code
1
2
3
4
    struct {
        int a[10];
        char name[100];
    } s;
непонимаю что ты мне хотел предложить?!
попробовал так
C++
1
2
3
4
5
6
7
8
9
10
struct MYSTRUCTURE
{
char sName[100];
};
 
MYSTRUCTURE MyStructure;
AnsiString SSName="P"+IntToStr(i1)+"P"+IntToStr(i2)+"P"+IntToStr(i3);
char* SSSName=SSName.c_str();
strcpy(MyStructure.sName, SSSName );
double MyStructure.sName;
поучил ошибку мультипл диклорайшен, это так к слову...
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
28.04.2009, 00:50
Code
1
2
3
4
5
6
7
    struct namedarray {
        int a[10];
        char name[100];
    } s, *p;
 
    s.a[0] = 1;
    strcpy(s.name, "A");
то есть, ты хранишь массив и его имя в одной структуре, которую можно потом передавать в функции (не всю, конечно, а указатель), можно вообще передавать в функцию не структуру, а элемент структуры (здесь элементом структуры может быть массив, может быть его имя, то есть у тебя может быть две функции, одна работает с массивом, другая с его "именем")
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.04.2009, 00:50
Помогаю со студенческими работами здесь

Дали курсач,создать морской бой. Нужно создать функцию
Нужна функция с помощью которой можно размещать 1местные корабли #include &lt;iostream&gt; #include&lt;conio.h&gt; using namespace...

Создать программу,которая находит минимальное из 3х чисел. Для нахождения минимального числа создать функцию
Создать функцию - double mini (double a, double b, double c), где a,b,c - задание числа. Спасибо за помощь!

Перегрузка операций (Создать класс вещественных чисел (double); определить оператор +, как функцию-элемент и – как дружественную функцию)
помогите решить пожалуйста Задание 2. Бинарная операция Создать класс вещественных чисел (double).. Определить оператор +, как...

Классы и наследование (Создать класс 3D фигура, и производные классы шар, конус, цилиндр и куб. Создать функцию вычисления объёма.)
Уважаевые, помогите написать прожку на экзамене: Создать класс 3D фигура, и производные классы шар, конус, цилиндр и куб. Создать функцию...

Не могу создать указатель на функцию. ошибка: нестандартный синтаксис; используйте "&", чтобы создать указатель на член
Выбивает ошибку, когда хочу присвоить переменной адрес какой то функции. Ошибка в строке 28(если убрать комментарии: 30-33) class...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru