IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> функции для работы с датой, Borland С++
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


дана массив структур, в каждой из которых есть элемент bday[3] - массив из 3-х элементов целого типа:
1-й элемент - это день
2-й - месяц
3-й - год


struct note {
char name[30];
unsigned long int tele;
unsigned int bday[3];
};
note blocknote[7];



Вопрос: есть ли какая-нибудь функция сравнения времени (кроме как тупо условиями по каждому элементу), или функция, которая преобразовает дату в одно число (помнится в делфи была такая)

Сообщение отредактировано: Mishan33 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Есть dostounix(), которая преобразует дату/время в число секунд, прошедших с полуночи 1 Января 1970 но для этого надо пользоваться типами struct date и struct time, а не самодельными велосипедами...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


ок,спасибо большое, сейчас попробую!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


вообщем забил я на эту функцию и сделал тупо условиями, но вот только почему то результат оставляет желать лучшего, никак не поддается, помогите найти ошибку...
ах да, собсна сама задача:

Описать структуру с именем Note, содержащую следующие поля: name-фамилия и имя, tele- номер телефона, bday-день рождения (массив из 3 чисел). Написать программу, выполняющую ввод с клавиатуры данных в массив Blocknote, состоящий из 8 элементов типа Note. Записи должны быть упорядочены по датам дней рождения. Вывести на экран полученный результат.

а вот мое решение (Dev C++):

#include <cstdlib>
#include <iostream>

using namespace std;

struct note {
char name[30];
unsigned long int tele;
int b_day[3];
};
const int msize=2;
note blocknote[msize];
char *tmp;
int minc,minn,mmounth,mday,myear,mtele;
char mname[30];
int main(int argc, char *argv[])
{
for(int i=0;i<msize+1;i++)
{
cout<<"\nEnter name "<<" ["<<i+1<<"]\n";
cin>>blocknote[i].name;
strcat(blocknote[i].name,"\0");
cout<<"Enter tel\n";
cin>>blocknote[i].tele;
cout<<"Enter day of bd\n";
cin>>blocknote[i].b_day[0];
cout<<"Enter mounth of bd\n";
cin>>blocknote[i].b_day[1];
cout<<"Enter year of bd\n";
cin>>blocknote[i].b_day[2];
}

for (int i=0;i<msize+1;i++)
{
mday=blocknote[i].b_day[0];
mmounth=blocknote[i].b_day[1];
myear=blocknote[i].b_day[2];
mtele=blocknote[i].tele;
strcpy(mname,blocknote[i].name);
minn=i;
for(int j=i+1;j<msize+1;j++)
{
if (blocknote[j].b_day[2]<myear)
{
mday=blocknote[j].b_day[0];
mmounth=blocknote[j].b_day[1];
myear=blocknote[j].b_day[2];
mtele=blocknote[j].tele;
strcpy(mname,blocknote[j].name);
minn=j;
}

if (blocknote[j].b_day[2]=myear)
{
if (blocknote[j].b_day[1]<mmounth)
{ mday=blocknote[j].b_day[0];
mmounth=blocknote[j].b_day[1];
myear=blocknote[j].b_day[2];
mtele=blocknote[j].tele;
strcpy(mname,blocknote[j].name);
minn=j;
}
if (blocknote[j].b_day[1]=mmounth)
{
if (blocknote[j].b_day[0]<mday)
{ mday=blocknote[j].b_day[0];
mmounth=blocknote[j].b_day[1];
myear=blocknote[j].b_day[2];
mtele=blocknote[j].tele;
strcpy(mname,blocknote[j].name);
minn=j;
}
}
}
}
blocknote[minn].b_day[2]=blocknote[i].b_day[2];
blocknote[minn].b_day[1]=blocknote[i].b_day[1];
blocknote[minn].b_day[0]=blocknote[i].b_day[0];
blocknote[minn].tele=blocknote[i].tele;
strcpy(blocknote[minn].name,blocknote[i].name);

blocknote[i].b_day[2]=myear;
blocknote[i].b_day[1]=mmounth;
blocknote[i].b_day[0]=mday;
blocknote[i].tele=mtele;
strcpy(blocknote[i].name,mname);
}
for(int i=0;i<msize+1;i++)
{
cout<<blocknote[i].name<<" "<<blocknote[i].tele<<" "<<blocknote[i].b_day[0]<<"/"<<blocknote[i].b_day[1]<<"/"<<blocknote[i].b_day[2]<<"\n";
}

system("PAUSE");
return EXIT_SUCCESS;
}


Сообщение отредактировано: Mishan33 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата
сделал тупо условиями
Вот расскажи мне, ты на каком языке вообще пишешь программу? На С++, или на С, но с использованием плюсовых (почему-то) потоков? Если на С, то делай на С все, а не часть. Если на С++, то опиши класс TMyTime, для которого определи операции сравнения и вывода в поток, и будешь работать с этим классом как с любым другим встроенным типом.

А "спагетти"... Не хочется разбираться в нем, ибо для тебя это все равно, сдать и забыть...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 22:32
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name