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

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

Войти
Регистрация
Восстановить пароль
 
salvafion
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 193
#1

работа с файоами таблицами и со списками - C++

21.06.2009, 11:45. Просмотров 504. Ответов 0
Метки нет (Все метки)

нужно вместо этой строчки
strcpy(table_reis[j].viezd_data[i]->data_viezda,tmp);
написать код для того чтобы была не таблица а односвязный список.. причем каждому table_reis[j] должен соответсвовать список..
как это осуществить ?
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
int Put_Reis(FILE *f_reis, MAP *new_marsh,char*tek_data)
{
   int i, j,  reis_count,reis_max,chislo_int,god_int,mesyac_int;
   char chislo[3], god[3],mesyac[3], tmp[15];
   I_REIS table_reis[REIS_SZ];
 
   rewind(f_reis);
   fread(&reis_count,sizeof(int),1,f_reis);
   fread(&reis_max,sizeof(int),1,f_reis);
   if(reis_count==reis_max) return 1;//Если файл переполнен
   fread(table_reis,sizeof(table_reis),1,f_reis);//Загрузка в память таблицы из базы данных
 
   //Поиск места для вставки и добавление нового элемента
   j=0;
   while(j<reis_count && strcmp(new_marsh->name_marsh[0],table_reis[j].name_marsh[0])>0) j++;
   while(j<reis_count && strcmp(new_marsh->name_marsh[1],table_reis[j].name_marsh[1])>0) j++;
   if(reis_count!=0 || strcmp(new_marsh->name_marsh[0],table_reis[reis_count-1].name_marsh[0])>0)
   {
      for(i=reis_count;i>j;i--)table_reis[i]=table_reis[i-1];
   }
   reis_count++;
 
//Запись информации в файл
   table_reis[j].num=new_marsh->n_marsh;
   table_reis[j].price=new_marsh->price;
   table_reis[j].period=new_marsh->period;
//   table_reis[j].pos=EOF;
 
   strcpy(table_reis[j].vr_viezda,new_marsh->vr_viezda);
   strcpy(table_reis[j].name_marsh[0],new_marsh->name_marsh[0]);
   strcpy(table_reis[j].name_marsh[1],new_marsh->name_marsh[1]);
   table_reis[j].k_mest=new_marsh->k_mest;
   table_reis[j].time=new_marsh->time;
   table_reis[j].period=new_marsh->period;
   strcpy(table_reis[j].dat_update,tek_data);
//generirovanie dat
 strncpy(god,&tek_data[6],2); god[2]='\0';
 strncpy(mesyac,&tek_data[3],2); mesyac[2]='\0';
 strncpy(chislo,tek_data,2); chislo[2]='\0';
 god_int=atoi(god);//perevodim is char v int
 mesyac_int=atoi(mesyac);
 chislo_int=atoi(chislo);
 i=0;
 
 while(i!=REIS_SZ)
   {
 
    if(chislo_int>=31) {mesyac_int++;chislo_int=1;}
    if(mesyac_int>=13){god_int++;mesyac_int=1;}
    if(new_marsh->period==0)
      {
       itoa(chislo_int,chislo,10);//perevodim is int v char
       itoa(mesyac_int,mesyac,10);
       itoa(god_int,god,10);
       if(chislo_int<10) {strcpy(tmp,"0"); strcat(tmp,chislo);}
       else strcpy(tmp,chislo);
       strcat(tmp,".");
       if(mesyac_int<10) strcat(tmp,"0");
       strcat(tmp,mesyac);
       strcat(tmp,".");
       if(god_int<10) strcat(tmp,"0");
       strcat(tmp,god);
       strcat(tmp," ");
       strcat(tmp,new_marsh->vr_viezda);
       strcpy(table_reis[j].viezd_data[i]->data_viezda,tmp);
       i++;
       chislo_int++;
       continue;
      }
    if(new_marsh->period==1)
      {
       if(chislo_int%2==0) {chislo_int++; continue; }
       itoa(chislo_int,chislo,10);
       itoa(mesyac_int,mesyac,10);
       itoa(god_int,god,10);
       if(chislo_int<10) {strcpy(tmp,"0");strcat(tmp,chislo);}
       else strcpy(tmp,chislo);
       strcat(tmp,".");
       if(mesyac_int<10) strcat(tmp,"0");
       strcat(tmp,mesyac);
       strcat(tmp,".");
       if(god_int<10) strcat(tmp,"0");
       strcat(tmp,god);
       strcat(tmp," ");
       strcat(tmp,new_marsh->vr_viezda);
       strcpy(table_reis[j].viezd_data[i]->data_viezda,tmp);
       i++;
       chislo_int++;
       continue;
      }
    if(new_marsh->period==2)
      {
       if(chislo_int%2!=0) {chislo_int++;continue;}
       itoa(chislo_int,chislo,10);
       itoa(mesyac_int,mesyac,10);
       itoa(god_int,god,10);
       if(chislo_int<10) {strcpy(tmp,"0");strcat(tmp,chislo);}
       else strcpy(tmp,chislo);
       strcat(tmp,".");
       if(mesyac_int<10) strcat(tmp,"0");
       strcat(tmp,mesyac);
       strcat(tmp,".");
       if(god_int<10) strcat(tmp,"0");
       strcat(tmp,god);
       strcat(tmp," ");
       strcat(tmp,new_marsh->vr_viezda);
       strcpy(table_reis[j].viezd_data[i]->data_viezda,tmp);
       i++;
       chislo_int++;
       continue;
      }
   }
 
 
   rewind(f_reis);
   fwrite(&reis_count,sizeof(int),1,f_reis);
   fwrite(&reis_max,sizeof(int),1,f_reis);
   fwrite(table_reis,sizeof(table_reis),1,f_reis);
   return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2009, 11:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос работа с файоами таблицами и со списками (C++):

Работа со списками - C++
Помогите пожалуйста!Днем сдавать зачет! Разработать программу формирования и вывода на печать двунаправленного списка....

Работа со списками - C++
Здравствуйте! Нужно реализовать много разных функций по работе со списками. Все работает кроме одной. Есть однонаправленный...

Работа со списками - C++
Что за алгоритм обмена?

Работа со списками - C++
Помогите решить задание. Описати функцію, яка друкує у зворотному порядку значення елементів списку. Тип даних - double

Работа со списками - C++
Помогите пожалуйста с лабораторной работой: &quot;Файл содержит следующую информацию (построчно): фамилия, имя, отчество. Считать файл в...

Работа со списками - C++
Создайте программно два списка персон, в каждом из которых будет по три человека. как это сделать чтобы потом можно было с ними работать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2009, 11:45
Привет! Вот еще темы с ответами:

Работа со списками - C++
Дан список из n целых чисел a1, a2,. . .,an. Последовательно переместить все отрицательные элементы списка в его начало, а все...

Работа со списками - C++
Немножко понял принцип создания списков , но прога не работает... Что это могут быть за ошибки ? я не пойму...и как юзать геттеры и...

Работа со списками - C++
Разработать программу, которая создает список, элементами которого являются целые числа. Для заданных чисел a,b, выводит в порядке...

Работа со списками - C++
Работа со списками(обьеденение, добавление и т.п.), при запуске выбивает такие ошибки. :-| С++, Builder 6 ...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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