10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 194
1

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

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

Author24 — интернет-сервис помощи студентам
нужно вместо этой строчки
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2009, 11:45
Ответы с готовыми решениями:

Работа с двумя списками связанными с разными таблицами
Может кто сможет помочь... На форме находятся два списка: 1. Список районов города - связан с...

Работа со списками
Нужна помощь в написании некоторых процедур по работе со списками: 1)ПРоцедура вывода на экран...

Работа со списками
Организовать список, который будет содержать подсписки: имена столбцов и все остальные - значения...

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

0
21.06.2009, 11:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.06.2009, 11:45
Помогаю со студенческими работами здесь

Работа со списками
Помогите разобраться с ошибками, не работает ничего c:Char; x:Integer; f:TextFile; head: PElem;...

Работа со списками
Дан список из последовательности натуральных чисел. Добавь в список после максимального элемента...

Работа с списками в Си
Всем привет. Есть такая задача. С клавиатуры читается выражение в польской нотации, которое...

Работа со списками
Добавить обработку вложенных подсписков (defun delmn (sp m n) (cond ((null sp) nil) ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru