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

Функции с переменным числом параметров - C++

Восстановить пароль Регистрация
 
Alucaro
0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 3
26.05.2013, 16:06     Функции с переменным числом параметров #1
Написать функцию days с переменным числом параметров, которая нахо-дит количество дней, прошедших между двумя датами (параметрами функции являются даты в формате «дд.мм.гг». Написать вызывающую функцию main, которая обращается к функции days не менее трех раз с количеством параметров 3, 5, 8
Есть такой пример:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
int sum (int k, . . .)
{
int *p = &k; //настроили указатель на параметр k
int s=0;
for ( ; k!=0;k--)
s+=*(++p);
return s;
}
void main( )
{
cout<<”\nСумма(2,4,6)=<<sum(2,4,6); //находит сумму 4+6
cout<<”\nСумма(4,1,2,3,4)=<<sum(4,1,2,3,4); //находит сумму 1+2+3+4
}
Я написал следующую программу, но у меня возникла проблема, как переходить через указатель по строковым переменным. В примере по интовским переходит легко, но как быть со строковой? Я пытался сначала реализовать при помощи string, но понял, что это плохая затея. В итоге с горем по полам сделал через чар. Но я не могу перепрыгивать по этим переменным. Помогите, люди добрые!

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
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
string a,b;
int day(char *aa,char *bb)
{
    a=aa;
    b=bb;
    int n,n1,n2;
    string ad,am,ay;
    string bd,bm,by;
    ad.insert(0,a,0,2); bd.insert(0,b,0,2);
    am.insert(0,a,3,2); bm.insert(0,b,3,2);
    ay.insert(0,a,6,2); by.insert(0,b,6,2);
    int a1 = atoi(ad.c_str()); int b1 = atoi(bd.c_str());
    int a2 = atoi(am.c_str()); int b2 = atoi(bm.c_str());
    int a3 = atoi(ay.c_str()); int b3 = atoi(by.c_str());
    if (a3==b3)
        n=0;
    else 
        if (a3>b3)
            n=365*(a3-b3);
        else
            n=365*(b3-a3);
    if (a2==b2){
        n1=0; n2=abs(a1-b1);}
    else
        if (a2>b2){
            n1=a2-b2; n2=(n1*31)-(a1+b1);}
        else
        {n1=b2-a2; n2=(n1*31)-(a1+b1);}
    return n+n2;
}
void days(int k,char *aa,...)
{
    char *p=&(*aa);
    for(;k!=0;k--)
    cout<<day(p,++p)<<endl;
}
int main(){
    char *s1="21.12.12";
    char *s2="12.12.12";
    char *s3="03.04.12";
    char *s4="05.05.12";
    char *s5="06.09.11";
    char *s6="03.04.10";
    char *s7="01.01.13";
    cout<<"\nDays: "<<endl;
    days(3,s1,s2,s3);
    cout<<"\nDays: "<<endl;
    days(7,s1,s2,s3,s4,s5,s6,s7);
    cout<<endl;
system("pause");
return 0;
}
Функция Days служит просто как функция с переменным числом параметров, которая должна выводить кол-во дней между датами.(1 и 2, 2 и 3, ...). Функция Day непосредственно рассчитывает кол-во дней(сделал через стринг, потому что как копировать через чаровский не разобрался. Копирование идет, просто помогите как реализовать переход по переменным в функции Days).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 16:06     Функции с переменным числом параметров
Посмотрите здесь:

C++ функции с переменным числом параметров
C++ функции, с переменным числом параметров
C++ Функции с переменным числом параметров
Функции с переменным числом параметров C++
Работа функции с переменным числом параметров C++
C++ Функции с переменным числом параметров
Функции с переменным числом параметров C++
C++ Функции с переменным числом параметров

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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