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

> Внимание!

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

 
 Ответить  Открыть новую тему 
> функции для работы с датой, Borland С++
Mishan33
сообщение 4.11.2007 20:46
Сообщение #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 - 4.11.2007 20:48
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.11.2007 20:54
Сообщение #2


Гость






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





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

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


ок,спасибо большое, сейчас попробую!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Mishan33
сообщение 5.11.2007 1:35
Сообщение #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 - 5.11.2007 1:36
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 7.11.2007 0:31
Сообщение #5


Гость






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

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

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

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

 

- Текстовая версия 20.07.2025 0:24
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"