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

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

Войти
Регистрация
Восстановить пароль
 
Bramme
0 / 0 / 0
Регистрация: 11.10.2012
Сообщений: 60
#1

Создание списка структур из структур исходного списка - C++

02.06.2013, 17:27. Просмотров 229. Ответов 0
Метки нет (Все метки)

Добрый день. В следующей программе, в функции nowaq не получается создать список из структур исходного списка(делаю по аналогии с функцией queue):
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
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <iostream>
 
#define Lmax 20
#define CLR while(fgetc(f)!='\n')
 
using namespace std;
 
struct ANK {char fam[Lmax], name[Lmax], otch[Lmax], pol[Lmax], date_of_birth[Lmax];};
struct ADD {char gosvo[Lmax], obl[Lmax], gor[Lmax], tel[Lmax];};
struct student {char fak[Lmax], group[Lmax]; ANK ank; ADD add; student *next,*last;};
 
student* queue(char name[]){
   student *tek,*queue=NULL,*posl;
   FILE *f;
   if (!(f=fopen(name,"r"))) puts("File not found");
   else
      {
       tek=(student*)malloc(sizeof(student));
       queue=tek;
      while(!feof(f)) {
            if(fgets(tek->fak,Lmax,f)) {
            tek->fak[strlen(tek->fak)-1]='\0';
            fgets(tek->group,Lmax,f);
            tek->group[strlen(tek->group)-1]='\0';
            fgets(tek->ank.fam,Lmax,f);
            tek->ank.fam[strlen(tek->ank.fam)-1]='\0';
            fgets(tek->ank.name,Lmax,f);
            tek->ank.name[strlen(tek->ank.name)-1]='\0';
            fgets(tek->ank.otch,Lmax,f);
            tek->ank.otch[strlen(tek->ank.otch)-1]='\0';
            fgets(tek->ank.pol,Lmax,f);
            tek->ank.pol[strlen(tek->ank.pol)-1]='\0';
            fgets(tek->ank.date_of_birth,Lmax,f);
            tek->ank.date_of_birth[strlen(tek->ank.date_of_birth)-1]='\0';
            fgets(tek->add.gosvo,Lmax,f);
            tek->add.gosvo[strlen(tek->add.gosvo)-1]='\0';
            fgets(tek->add.obl,Lmax,f);
            tek->add.obl[strlen(tek->add.obl)-1]='\0';
            fgets(tek->add.gor,Lmax,f);
            tek->add.gor[strlen(tek->add.gor)-1]='\0';
            fgets(tek->add.tel,Lmax,f);
            tek->add.tel[strlen(tek->add.tel)-1]='\0';
            posl=tek;
            tek=(student*)malloc(sizeof(student));
            tek->last=posl;
            posl->next=tek;
         }
      }
      posl->next=NULL;
      free(tek);
      }
   return(queue);
   }
 
student* nowaq(student *queue, char faks[][Lmax], int i){
    student *tek, *tek2, *queue2, *posl;
    tek=queue;
    tek2=(student*)malloc(sizeof(student));
    queue2=tek2;
    while(tek){
        if(strstr(tek->fak,faks[i])!=NULL){
            tek2=tek;
            posl=tek2;
            tek2=(student*)malloc(sizeof(student));
            posl->next=tek2;
        }
        tek=tek->next;
    }
    posl->next=NULL;
    free(tek2);
    printf("%s\n", queue2->group);
}
 
student* poiskmax(student *queue){
    student *tek;
    char faks[5][Lmax]; int i, j, tmp, kolf, kols[5]={0}; bool flag;
    tek=queue;
    strcpy(faks[0],tek->fak);
    tek=tek->next;
    kolf=1;
    i=1;
    while(tek){
        flag=true;
        for(j=0;j<kolf&&flag==true;j++)
            if(strstr(tek->fak,faks[j])!=NULL) flag=false;
        if(flag) {strcpy(faks[i++],tek->fak); kolf++; tek=tek->next;} else tek=tek->next;}
 
    for(i=0;i<kolf;i++){
        tek=queue;
        while(tek)
            if(strstr(tek->fak,faks[i])!=NULL) {kols[i]++; tek=tek->next;} else tek=tek->next;}
 
    for(i=0;i<kolf-1;i++){
        for(j=0;j<kolf-1;j++){
            if (kols[j + 1] > kols[j]){
                tmp = kols[j + 1]; kols[j + 1]=kols[j]; kols[j]=tmp;}}}
 
    nowaq(queue, faks, 0);
}
 
int main() {
setlocale(LC_ALL,"RUS");
student *first;
char name1[Lmax];
printf("Input file name: ");
gets(name1);
first=queue(name1);
poiskmax(first);
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2013, 17:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание списка структур из структур исходного списка (C++):

Привести пример реализации любого линейного списка списка с использованием лишь структур - C++
Буду благодарен, если кто-нибудь сможет привести пример реализации любого линейного списка списка с использованием лишь структур (то есть...

Класс односвязного списка структур - C++
сижу ломаю голову над тем, что есть класс односвязного списка стуктур... суть такова: структура данных - односвязный список структур ...

Вывести информацию о студенте из списка структур - C++
Всем доброго времени суток! У меня есть структура, что-то типо: struct Decanat { char *name; int group; int kurs; int...

Обработка линейного связного списка структур - C++
Доброго времени суток) Народ,помогите пожалуйста разобраться с такой задачей:-|: В сведениях об игрушках указывается название...

Списки структур. Указатель на узел другого списка внутри структуры - C++
Имеется следующий кусок кода: struct date { int day; int month; int year; }; /* Пациент */

Можно ли поменять местами значения структур связного динамического списка целиком? - C++
Можно ли поменять местами значения 2-х соседних структур связного динамического списка целиком? Чтобы не работать с каждым из полей этих...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2013, 17:27
Привет! Вот еще темы с ответами:

Использование динамических структур данных (вывести, сколько раз число совпадает с элементами списка) - C++
Есть задачка #include &lt;iostream&gt; # include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;stdlib.h&gt; using namespace std; void...

Блочная сортировка структур (Отсортировать массив структур по фамилии) - C++
Подскажите алгоритм блочной сортировки структур на языке С++. Мне нужно отсортировать массив структур по фамилии.

Массив структур, сохранение начала каждой из структур - C++
Я создал такую структуру class Lancuch { public: char cos; Lancuch * nastepny; }; Lancuch * poczatek=NULL; cin &gt;&gt;...

Написать код программы, выполняющей растяжку списка и вставку, удаление из списка и сжатие списка - C++
Люди ПОМОГИТЕ осталось совсем мало , мне нужна помощь!!! написать код программ: 1) Написать код программы, выполняющей растяжку...


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

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

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