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

Двусвязный список, не работает удаление в середине списка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как работать с тем что генерирует gSoap? http://www.cyberforum.ru/cpp-beginners/thread770136.html
Пытаюсь использовать gSoap. Скормил ему wsdl файл, он соответственно нагенерировал мне набор классов. Теперь начинаю разбираться. У сервиса есть метод login, у него параметры логин, пароль и пара...
C++ Написать программу, которая бы переводила слова «ДОБРЫЙ ДЕНЬ» по выбору на один из пяти языков Здравствуйте. Помогите пожалуйста написать задачи. 1.Написать программу, которая бы переводила слова «ДОБРЫЙ ДЕНЬ» по выбору на один из пяти языков. Заранее спасибо огромное. http://www.cyberforum.ru/cpp-beginners/thread770129.html
C++ Определить, попадает ли точка с вводимыми координатами (x,y) внутрь прямоугольника, заданного уравнениями
Здравствуйте. Помогите пожалуйста написать задачи. 3)Определить, попадает ли точка с вводимыми координатами (x,y) внутрь прямоуголь-ника, заданного уравнениями y=a, y=b, x=c, x=d (a>b, c>d).
C++ Проверьте что X ↓ Y (Функция Вебба, или стрелка Пирса) эквивалентна not (x) and not (y)
Здравствуйте. Помогите пожалуйста написать задачи. 2)Проверьте что X ↓ Y (Функция Вебба, или стрелка Пирса) эквивалентна not (x) and not (y)
C++ Сортировка символов http://www.cyberforum.ru/cpp-beginners/thread770112.html
Создать программу на С++, которая будет продуцировать цепочки(слова) в трехсимвольном алфавите с записью их в файл, причем длина L цепочек ограничена: 5<L<10 и для каждой цепочки, отобранной в файл,...
C++ Написать класс, описывающий эллипс Здравствуйте.. необходимо написать программу... столкнулся с трудностями.. помогите кто может.. Написать класс описывающий эллипс ( параметры - его полуоси). Описать след методы: конструктор,... подробнее

Показать сообщение отдельно
Малиновський
0 / 0 / 0
Регистрация: 26.12.2012
Сообщений: 2

Двусвязный список, не работает удаление в середине списка - C++

23.01.2013, 21:19. Просмотров 248. Ответов 0
Метки (Все метки)

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
121
122
123
124
// розрахункова(ПОП).cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#define n 4
 
typedef struct ocinky {
    int TIMS;
    int PrC;
    int SystP;
    int TA;
    int KSAK;
};
 
typedef struct student {
    char *prizv;
    char *name;
    unsigned long int nomer;
    ocinky baly;
    double s_b;
    student *prev,*next;
};
 
void fzapys(student *r);
void deleteEl(student *r,student *z);
 
int main()
{ char imja[n][10],prizvyshche[n][15],nomerst[n][10],tims[n][3],pro[n][3],sp[n][3],ta[n][3],ksak[n][3];
  char *s;
  student *p,*r,*start;
  double ser_b;
  int i,j,b[n],temp;
  for (i=0;i<n;i++) {
      printf("Vvedit prizvyshche studenta(%d): ",i+1); gets(prizvyshche[i]);
      printf("Vvedit imja studenta(%d): ",i+1); gets(imja[i]);
      printf("Vvedit nomer studentskogo kvytka(%d): ",i+1); gets(nomerst[i]);
      printf("Vvedit 5 ochinok studenta(%d)(TIMS,PrC,SystPr,TA,KSAK):\n",i+1); 
      gets(tims[i]); gets(pro[i]); gets(sp[i]); gets(ta[i]); gets(ksak[i]);
      b[i]=i;
      } 
  for (j=0;j<n-1;j++)
  for (i=0;i<n-1-j;i++) if(strcmp(prizvyshche[b[i]],prizvyshche[b[i+1]])>0)
                            { temp=b[i];
                              b[i]=b[i+1];
                              b[i+1]=temp;
                              }
  for (i=0;i<n;i++) 
      printf("%15s|%10s|%10s|%3s|%3s|%3s|%3s|%3s|\n",prizvyshche[b[i]],imja[b[i]],nomerst[b[i]],tims[b[i]],pro[b[i]],sp[b[i]],ta[b[i]],ksak[b[i]]);
  r=NULL;
  for (i=0;i<n;i++) {
      p=(struct student*)malloc(sizeof(struct student));
      p->prev=r;
      p->next=NULL;
      p->prizv=prizvyshche[b[i]];
      p->name=imja[b[i]];
      p->nomer=atoi(nomerst[b[i]]);
      p->baly.TIMS=atoi(tims[b[i]]);
      p->baly.PrC=atoi(pro[b[i]]);
      p->baly.SystP=atoi(sp[b[i]]);
      p->baly.TA=atoi(ta[b[i]]);
      p->baly.KSAK=atoi(ksak[b[i]]);
      p->s_b=(p->baly.TIMS+p->baly.PrC+p->baly.SystP+p->baly.TA+p->baly.KSAK)/5.0;
      r=p;
      p=NULL;
      }
  while((r->prev)!=NULL) {
      start=r;
      r=r->prev;
      r->next=start;
      }
  r->next=start;
  start=r;
  printf("\nSformovanyj spysok:\n");
  while(r!=NULL) {
      printf("|%15s|%10s|%10d|%3d|%3d|%3d|%3d|%3d|%6.2f|\n",r->prizv,r->name,r->nomer,r->baly.TIMS,r->baly.PrC,r->baly.SystP,r->baly.TA,r->baly.KSAK,r->s_b);
      r=r->next;
      }
  r=start;
  p=r;
  printf("\nVvedit serednij bal: "); scanf("%lf",&ser_b);
  for(i=0;i<n;i++) {
      r=p;
      if ((p->s_b)<ser_b) deleteEl(r,start);
      else p=p->next;
      }
  fzapys(start);
  system("pause");
}
 
void fzapys(student *r)
{ FILE* fp;
  char* fname="D:\\out.bin";
  fp=fopen(fname,"at");
  while(r!=NULL) {
      fprintf(fp,"%15s %10s %10d %3d %3d %3d %3d %3d %6.2f \n",r->prizv,r->name,r->nomer,r->baly.TIMS,r->baly.PrC,r->baly.SystP,r->baly.TA,r->baly.KSAK,r->s_b);
      r=r->next;
      }
  fclose(fp);
}
 
void deleteEl(student *r,student *z)
{ student *pr=r->prev;
  student *ne=r->next;
  if ((r->next==NULL)&&(r->prev!=NULL)) {
      r->prev->next=NULL; 
      free(r);
      return;
      }
  if ((r->next!=NULL)&&(r->prev==NULL)) {
      z=r->next;
      r->next->prev=NULL;
      free(r);
      }
  else { pr->next=r->next;
         ne->prev=pr;
         r->next=NULL;
         r->prev=NULL;
         free(r);
         }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru