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

Перегруз функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как избавиться от ошибки компоновщика? http://www.cyberforum.ru/cpp-beginners/thread46733.html
Как избавиться от ошибки компоновщика в vs2008? Сначала вылезала в мфц проектах, а теперь уже везде. Переустановка не помогает
C++ Error LNK2019 + упрощенный вариант консольной графики Программка из книги Лафоре "ОПП в С++", Глава 10. Закинул я msoftcon.h и msoftcon.срр в папку к исходникам.. #include "stdafx.h" #include <iostream> using namespace std; #include <ctime> #include <cstdlib> #include "msoftcon.h" const int CPF = 5; const int maxHorses = 7; http://www.cyberforum.ru/cpp-beginners/thread46664.html
Программа работает не так как заявлено, нужен комментарий. C++
Привет. Ещё одна проблемка. Списал ещё одну прогу у Дэвиса, продолжаю учить по его книге. Программу дополнил командой удержания панели после вычислений, кириллическим отображением и #include <iostream> using namespace std;. На этот раз обошлось без errors, но программа не производит заявленных операций, а сразу закрывается после попытки внести данные. Я так понимаю, что программа считает, что она...
Как организовать передачу данных между объектами разных классов? C++
Есть объект doc в нутрии него создается еще два объекта ui и engine, engine в свою очередь создает еще один объект obj. Вопрос, как из ui вызвать функцию объекта obj, да и вообще организовать обмен значениями? Вариант с передачи ссылок через конструктор не подходит поскольку код пишу под symbian, а там реализован механизм двухфазного конструирования(для создании объекта вызывается статик функция)
C++ Как записать Z в трёхмерном массиве http://www.cyberforum.ru/cpp-beginners/thread46632.html
ребята, простите за дурной вопрос, но не могу разобраться. есть массив const int Y = 2, X = 2, Z = 2; int a = {1,1,1, 2,2,2, }; куда записывать Z? судя из C++. Бархатный путь. Часть 1
C++ Периодическое чтение файла Здравствуйте.Моя задача состоит в том, чтобы создать простую программу , которая бы просматривала текстовый файл и выполняла бы определенные действия, при этом файл будет постоянно пополнятся новыми данными. Эту задачу как я вижу можно решить открывая файл, читая из него символьные данные, сверяя с шаблоном и выполняя действия.Для этого я использовал таймер , который раз в три секунды запускает... подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
13.08.2009, 17:46     Перегруз функции
crashc, перегрузка функций подразумевает использование функций с одинаковым именем, при этом аргументы функции различны, тогда это действительно перегрузка

Вот что у меня получилось по этой проблеме (кстати использовал свои же материалы http://www.cyberforum.ru/cpp-beginne...ost237890.html)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
#include <windows.h>
#include <shlobj.h>//Подключаем SHL Dialog - диалог выбора файла или каталога
#include <stdio.h>
 
//SHL Dialog, использую для считывания строк из файла, 
//удобней ввести строки в txt-шнике чем каждій раз их вбивать в консоли
//под строкой понимаю текст между символами '\n' [строка] '\n'
 
//функцию, вычисляющую максимальный элемент :
 
//- в одномерном числовом массиве, состоящем из целых чисел;
int findmax(int nCount, int * mass);
//- в одномерном числовом массиве, состоящим из вещественных чисел;
float findmax(int nCount, float * mass);
//- в массиве строк (для этого массива функция должна находить строку с максимальной длиной).
int findmax(int nCount, char ** mass);
 
LPTSTR SelectFile();//Выбор файла с текстом
 
//Подсчёт числа строк в текстовом блоке
//под строкой понимаю текст между символами '\n' [строка] '\n'
//iPos - содержит индексы символов '\n' в блоке str
int GetNumStrings(LPTSTR str);
 
 
int * imass = (int *)malloc(sizeof(int));
float * fmass = (float *)malloc(sizeof(float));
 
char * str = (char *)malloc(sizeof(char));
int * iPos = (int *)malloc(sizeof(int));
 
void main()
{
    FILE *f;char ** smass;
    printf("Enter num elements of int vector\r\n");
    int iCount,i;scanf("%d",&iCount);
    if(0 < iCount)
    {
        imass = (int *)realloc((void *)imass,iCount*sizeof(int));
        for(i = 0; i < iCount; i++)
        {
            printf("mass[%d] : ",i + 1);
            scanf("%d",&imass[i]);
        }
    }
    printf("Enter num elements of float vector\r\n");
    int fCount;scanf("%d",&fCount);
    if(0 < fCount)
    {
        fmass = (float *)realloc((void *)fmass,fCount*sizeof(float));
        for(i = 0; i < fCount; i++)
        {
            printf("mass[%d] : ",i + 1);
            scanf("%f",&fmass[i]);
        }
    }
    int nStrings, sLen;
    char sPath[MAX_PATH];sPath[0] = '\0';
    if(sprintf(sPath,SelectFile()))
    {
        if((f = fopen(sPath,"rb+")))
        {
            fseek(f,0,SEEK_END);
            sLen = ftell(f);
            fseek(f,0,SEEK_SET);
            str = (char *)realloc(str,sLen);
            fread(str,1,sLen,f);
            str[sLen - 1] = '\0';
            fclose(f);
            nStrings = GetNumStrings(str);
            smass = new char * [nStrings];
            for(int i = nStrings - 1; 0 <= i; i--)
            {
                sLen = strlen((LPCTSTR)(str + (iPos[i] + 1)));
                //Копируем строки из блока str в массив smass
                smass[nStrings - (i + 1)] = (char *)malloc(sLen*sizeof(int));
                strcpy(smass[nStrings - (i + 1)], str + (iPos[i] + 1));
                str[iPos[i]] = '\0';
            }
            iPos = (int *)realloc((void *)iPos,sizeof(int));
            if(str)
                str = (char *)realloc(str,sizeof(char));
        }
    }
    int iMAX = -1;
    if(0 < iCount)
        iMAX = findmax(iCount, imass);
    else
        iCount = -1;
    
    float fMAX = -1;
    if(0 < fCount)
        fMAX = findmax(fCount, fmass);
    else
        fCount = -1;
    
    int sMAX_INDEX = -1;
    if(0 < nStrings)
        sMAX_INDEX = findmax(nStrings, smass); 
 
    printf("\r\nMaximal element in int vecor : ");
    if(-1 < iCount)
        printf("%d",iMAX);
    else
        printf("Cann't be computed!");
 
    printf("\r\nMaximal element in float vecor : ");
    if(-1 < fCount)
        printf("%f",fMAX);
    else
        printf("Cann't be computed!");
 
    printf("\r\nMaximal element in string vecor : ");
    if(-1 < sMAX_INDEX)
        printf("%s",smass[sMAX_INDEX]);
    else
        printf("Cann't be computed!");
 
    //Чистим память
    imass = (int *)realloc((void *)imass,sizeof(int));
    fmass = (float *)realloc((void *)fmass,sizeof(float));
    for(i = nStrings - 1; 0 <= i; i--)
        free(smass[i]);
    printf("\r\nEnter NUM1 to enter new massivs\r\n");
    scanf("%d",&i);
    if(i == 1)
        main();
}
 
int findmax(int nCount, int * mass)
{
    int RetVal = mass[0];
    for(int i = 1; i < nCount; i++)
    {
        if(RetVal < mass[i])
            RetVal = mass[i];
    }
    return RetVal;
}
 
float findmax(int nCount, float * mass)
{
    float RetVal = mass[0];
    for(int i = 1; i < nCount; i++)
    {
        if(RetVal < mass[i])
            RetVal = mass[i];
    }
    return RetVal;
}
 
int findmax(int nCount, char ** mass)
{
    int RetVal = 0,sLen;
    for(int i = 0; i < nCount; i++)
    {
        sLen = strlen(mass[RetVal]);
        if(sLen < strlen(mass[i]))
            RetVal = i;
    }
    return RetVal;//Здесь возвращаем индекс строки а не саму строку!!!
}
 
LPTSTR SelectFile()
{
    char sPath[MAX_PATH];sPath[0] = '\0';
    LPCITEMIDLIST lpItemDList;
    BROWSEINFO bi = {NULL, NULL, sPath,
       "Выберите файл для обработки",
        BIF_DONTGOBELOWDOMAIN|BIF_BROWSEINCLUDEFILES,
        NULL,
        NULL,
        0
    };
    if((lpItemDList=SHBrowseForFolder(&bi)))
    {
        if(SHGetPathFromIDList(lpItemDList, sPath))
            GetShortPathName((LPCTSTR)sPath,sPath,strlen(sPath));
    }
    return &sPath[0];
}
 
int GetNumStrings(LPTSTR str)
{
    int RetVal = 0;
    //Вдруг вначале текста идут символы новой строки
    while(str[0] == '\n')
        str++;
    char * chBuf = strchr(str,'\n');
    //На случай если в файле всего 1 строка
    if(!chBuf && strlen(str))
    {
        iPos[RetVal] = 0;
        RetVal++;
    }
    while(chBuf)
    {
        iPos[RetVal] = strlen(str) - strlen(chBuf);
        RetVal++;
        chBuf++;
        if(chBuf)
            chBuf = strchr(chBuf,'\n');
        iPos = (int *)realloc((void *)iPos,sizeof(int)*(RetVal + 1));
    }
    return RetVal;
}
Миниатюры
Перегруз функции   Перегруз функции  
Вложения
Тип файла: txt text_block.txt (101 байт, 23 просмотров)
 
Текущее время: 19:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru