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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено через 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  [ТС] #10
Цитата Сообщение от accept Посмотреть сообщение
создай его в структуре, в которой заведи для него символьный массив для имени типа

Код
    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
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
28.04.2009, 00:50 #11
Код
    struct namedarray {
        int a[10];
        char name[100];
    } s, *p;

    s.a[0] = 1;
    strcpy(s.name, "A");
то есть, ты хранишь массив и его имя в одной структуре, которую можно потом передавать в функции (не всю, конечно, а указатель), можно вообще передавать в функцию не структуру, а элемент структуры (здесь элементом структуры может быть массив, может быть его имя, то есть у тебя может быть две функции, одна работает с массивом, другая с его "именем")
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2009, 00:50
Привет! Вот еще темы с ответами:

С++ создать функцию - C++
Написать программу которая обрабатывает матрицу с помощью функции Матрица в функция обрабатывается как параметр. С помощью 3...

создать функцию. - C++
Помогите создать функцию. Входной параметр - char Buffer. Но имя буффера будет постоянно разным. так же как и его размер. функция...

Создать функцию - C++
Даны две строки символов, которые состоят из слов, между которыми, – пробили. Создать функцию, которая печатает найдовше слово двух строк.

Как создать функцию - C++
char podstorka(char str1,char str2,int m,char str3) { size_t pos=m; size_t len1=strlen(str1); size_t...


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
28.04.2009, 00:50
Ответ Создать тему
Опции темы

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