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

Сортировка фамилий по алфавиту - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Использована неинициализированная локальная переменная http://www.cyberforum.ru/cpp-beginners/thread1132836.html
error C4700: использована неинициализированная локальная переменная "w". Даже если w объявлять как глобальную переменную то прога все равно не работает. #include "stdafx.h" #include <iostream>...
C++ Таблица перекрестных ссылок на основе использования динамических списков и деревьев Я знаю, что такое дин. списки и деревья, но вот "Таблица перекрестных ссылок" ставит меня в тупик. Что это такое? Я даже не знаю с чего начать. Подскажите литературу, информацию об этом. Задача:... http://www.cyberforum.ru/cpp-beginners/thread1132832.html
C++ Указатель на экземпляр шаблонного класса
Есть шаблон класса template <typename TBase> class TArray { ... };, есть некие объекты TArray <A> a; TArray <A> b; TArray <A> c;, далее есть строчка p=&b; (взять адрес объекта b и присвоить его...
Решения систем дифференциальных уравнений методом ФДН C++
Здравствуйте, форумчане! Нужно написать программу для решения систем дифференциальных уравнений методом ФДН (формула дифференцирования назад) желательно на языке С++ x'=x-y+1/cos(t) y'=2*x-y...
C++ Генератор паролей http://www.cyberforum.ru/cpp-beginners/thread1132822.html
нужно сгенерировать пароль хотя что бы большие латинские буквы, Коды английских символов - «A»=65,…,«Z»=90, «a»=97,…, «z» =122. #include <stdio.h> #include <stdlib.h> main() { int x; char...
C++ Указатель на функцию Здравствуйте! Есть вот такой элемент кода: SimpleCat* FunctionTwo (SimpleCat * theCat); int main() { .................... SimpleCat Frisky; ...................... ... подробнее

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

Сортировка фамилий по алфавиту - C++

29.03.2014, 10:54. Просмотров 1034. Ответов 13
Метки (Все метки)

В структуре (Рабочие), которая записана в двоичный файл, требуется отсортировать фамилии работников по алфавиту (ну еще найти кол-во молодых и пенсионеров но я это реализовал). Никак не могу придумать сортировку (даже не знаю как: через библиотеку string.h или еще каким-нибудь способом). Вот код:
Кликните здесь для просмотра всего текста
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
#include <locale.h>
#include <windows.h>
#define LENGTH 1024
 
using namespace std;
 
struct Rec1
{
   int nomer;
   char name[30];   
   char work[30];
   int year;
   int exper;
   float price;
};
 
int CreateFile (char *fileName)
{
    FILE *f;
    struct Rec1 workers;
    if ((f=fopen(fileName,"wb"))==NULL)
      return 1;
    workers.nomer=0;  
    printf("Фамилия, инициалы:");
    scanf("%s",workers.name);
    printf("Должность:");
    scanf("%s",workers.work);
    while (strcmp(workers.name,"000"))
    {
        workers.nomer++;
        printf("Год рождения:");
        scanf("%d",&workers.year);
        printf("Стаж:");
        scanf("%d",&workers.exper);
        printf("Заработная плата:");
        scanf("%f",&workers.price);
        fwrite(&workers,sizeof(workers),1,f);
        printf("Фамилия, инициалы:");
        scanf("%s",workers.name);
        printf("Должность:");
        scanf("%s",workers.work);
    }  
    fclose(f);
    return 0;
}
 
int ReadFile (char *fileName)
{
    FILE *f;
    int i,n;
    struct Rec1 workers;
    if ((f=fopen(fileName,"rb"))==NULL)
      return 1;
    n=workers.nomer;
    printf("  №");
    printf("      Ф.И.О.    ");
    printf("  Год рождения   ");
    printf("  Должность    ");
    printf("  Стаж  ");
    printf("  Зар. плата  ");
    printf("\n");
      while (fread(&workers,sizeof(workers),1,f))
      {
       
        printf ("%3d",workers.nomer);
        printf ("%15s",workers.name);
        printf ("%12d",workers.year);
        printf("%15s",workers.work);
        printf ("%12d",workers.exper);
        printf ("%12.2f\n",workers.price);
        
     }
      
   fclose(f);
   return 0;
}
long Size (char *fileName1)
{
    FILE *f1;
    long n;
    if ((f1=fopen(fileName1,"rb"))==NULL)
     return -1;
    fseek (f1,0,SEEK_END);
    n=ftell(f1);
    fclose(f1);
    return n; 
}
int AddFileIn (char *fileName)
{
    FILE *f;
    struct Rec1 workers;
    int n;
    if ((f=fopen(fileName,"ab"))==NULL)
      return 1;
     n=Size(fileName)/sizeof(struct Rec1); 
    workers.nomer=n;    
    printf("Фамилия, инициалы:");
    scanf("%s",workers.name);
    printf("Должность:");
    scanf("%s",workers.work);
    while (strcmp(workers.name,"000"))
    {
        workers.nomer++;
        printf("Год рождения:");
        scanf("%d",&workers.year);
        printf("Стаж:");
        scanf("%d",&workers.exper);
        printf("Заработная плата:");
        scanf("%f",&workers.price);
        fwrite(&workers,sizeof(workers),1,f);
        printf("Фамилия, инициалы:");
        scanf("%s",workers.name);
        printf("Должность:");
        scanf("%s",workers.work);
    }  
    fclose(f);
    return 0;
 
}
int Old_New(char *fileName)
{
    FILE *f;
    struct Rec1 workers; 
    int old=0,noobs=0;
    if ((f=fopen(fileName,"rb"))==NULL)
     return 1;
   while(fread(&workers,sizeof(workers),1,f))
    {
        if ((2014 - workers.year)>60)
         old++;
        else if ((2014 - workers.year)<25)
        noobs++;
    }
    cout<<"Number of retirees: "<<old<<"\nNumber of young workers: "<<noobs<<endl;
}
/*
int Sorting (char *fileName)
{
    FILE *f;
    struct Rec1 workers;
    struct Rec1 *a; 
    int n,i,j;
    if ((f=fopen(fileName,"rb"))==NULL)
      {
        fclose(f);
        return 1;
     }
    n=Size(fileName)/sizeof(struct Rec1);
    a=(struct Rec1 *)malloc(n*sizeof(struct Rec1));
    string tmp="";
    for(int i=0;i<n;i++)
       for(int j=i;j<n;j++)
       if(a[i].name>a[j].name) 
        {
         tmp=a[i].name; 
         a[i].name=a[j].name;
         a[j].name=tmp;
       }
}*/
int CreateFileOut(char *fileName)
{
    FILE *f;
 
    struct Rec1 workers;
    struct Rec1 *a;
    int n,i,j;
    if ((f=fopen(fileName,"rb"))==NULL)
      {
        fclose(f);
        return 1;
     }
    n=Size(fileName)/sizeof(struct Rec1);
    a=(struct Rec1 *)malloc(n*sizeof(struct Rec1));
    struct Rec1 swap;
    for(i = 0; i < n; i++){
    for(j = i + 1; j < n; j++)
    if (strcmp (a[i].name, a[j].name) > 0)
    {
        swap = a[i].name;
        a[i].name = a[j].name;
        a[j].name = swap;
    }
    }
    fwrite(a,sizeof(struct Rec1),n,f);
    cout<<"123\n";
    fclose(f);
    return 0;
    
    
}
 
/////////////////////////////////////////
int main()
{
    char *fileName="e:\\Inf\\a.data";
    char *fileName1="e:\\Inf\\a.data";
    char *fileName2="e:\\Inf\\b.data";
    setlocale(LC_CTYPE,"Russian");
    int z,i;
    printf("Меню:\n");
    printf("1. Create file\n2. Open file\n3. Add information\n4. Number of retirees and young workers; Sorting.");
    printf("\n");
    printf("\nВведите пункт меню:\n\n");
    scanf("%d",&z);
    switch(z)
      {
        case 1:system("cls"); CreateFile(fileName); break;
   
        case 2: system("cls");printf("\n");ReadFile(fileName); break;
 
        case 3:system("cls"); AddFileIn(fileName); break;
        
        case 4:system("cls"); Old_New(fileName); CreateFileOut(fileName); break;
        
      }
    
 
    getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru