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

структуры. упорядочение по алфавиту... - C++

Восстановить пароль Регистрация
 
ссветлана
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 3
13.05.2011, 22:44     структуры. упорядочение по алфавиту... #1
будьте добры, помогите упорядочить фамилии по алфавиту! что-то совсем не получается!!!
вот задание:
описать структуру PREPODAVATEL, содержащую слеующие поля:
фамилия и инициалы;должность;звание;зарплата;количество преподаваемых пар в неделю.
Написать программу, выполняющую:
ввод с клавиатуры данных в массив, состоящий из десяти структур типа PREPODAVATEL;записи должны быть упорядочены по алфавиту;
вывод на дисплей фамилий и количество преподаваемых пар в неделю больше 7.

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
#include <stdio.h>
#include <string.h>
#include<malloc.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
struct PREPODAVATEL
{
char familia[30],iniciali[4],dolznost[30],zvanie[30];
int zarplata,kolvo;
};
int main()
{
int w;
PREPODAVATEL*p=NULL;
PREPODAVATEL*l=NULL;
PREPODAVATEL a;
 
int i,j,s,r,t,n,q,k;
FILE*x=NULL;
M:
system("clear");
cout<<"\nViberite punkt menu:";
cout<<"\n1.Sozdanie faila.";
cout<<"\n2.Prosmotr faila.";
cout<<"\n3.Poisk po familii.";
cout<<"\n4.EXIT.\n";
cin>>n;
switch(n)
{
case 1:
{
system("clear");
 
if ((x=fopen("prog13.dat","rb"))!=NULL)
x=fopen("prog13.dat","wb");
system("clear");
cout<<"\nVvedite kol-vo novih elementov:";
cin>>s;
for(i=0;i<s;i++)
{
cout<<"\nVvedite familiu:";cin>>a.familia;
cout<<"\nVvedite iniciali:";cin>>a.iniciali;
cout<<"\nVvedite dolznost:";cin>>a.dolznost;
cout<<"\nVvedite zvanie:";cin>>a.zvanie;
cout<<"\nVvedite zarplatu:";cin>>a.zarplata;
cout<<"\nVvedite kolichestvo par v nedelu:";cin>>a.kolvo;
fwrite(&a,sizeof(PREPODAVATEL),1,x);
}
fclose(x);
goto M;
}
case 2:
{
system("clear");
if ((x=fopen("prog13.dat","rb"))==NULL)
{cout<<"\noshibka:takogo faila net."; goto M;}
else
{
system("clear");
fseek(x,0,SEEK_END);
r=ftell(x)/sizeof(PREPODAVATEL);
fseek(x,0,SEEK_SET);
p=(PREPODAVATEL*)malloc(sizeof(PREPODAVATEL)*r);
l=(PREPODAVATEL*)malloc(sizeof(PREPODAVATEL)*r);
 
 
 
 
вот тут должно было находиться упорядочение
 
 
 
 
 
{
fread(&a,sizeof(PREPODAVATEL),1,x);
p[i]=a;
cout<<"\nFamilia:"<<a.familia;
cout<<"\niniciali:"<<a.iniciali;
cout<<"\nkolvo:"<<a.kolvo;
}
fclose(x);
}
free(p);
free(l);
goto M;
}
case 3:
{
system("clear");
if ((x=fopen("prog13.dat","rb"))==NULL)
{cout<<"\noshibka:takogo faila net."; goto M;}
else
{
system("clear");
t=0;
cout<<"\nVvedite familiu:";
cin>>a.familia;
fseek(x,0,SEEK_END);
r=ftell(x)/sizeof(PREPODAVATEL);
fseek(x,0,SEEK_SET);
for(i=0;i<r;i++)
{
fread(&a,sizeof(PREPODAVATEL),1,x);
cout<<"\nVvedite familiu:";
if (a.kolvo>7)
{
cout<<"\nFamilia:"<<a.familia;
cout<<"\nIniciali:"<<a.iniciali;
cout<<"\nkolvo:"<<a.kolvo;
cout<<"\n";
t++;
}
}
if(t==0) cout<<"\nInformaciya ne naidena";
fclose(x);
goto M;
}
}
case 4:
{
system("clear");
}
 
return 0;
}
}

была бы очень, очень благодарна!!!!

 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2011, 22:44     структуры. упорядочение по алфавиту...
Посмотрите здесь:

Отсортировать элементы структуры по алфавиту. C++
C++ упорядочение элементов структуры по алфавиту
умножение матриц и упорядочение матрицы C++
Задача на упорядочение строк матрицы C++
C++ Упорядочение записей по убыванию расстояния
Сортировка по алфавиту структуры C++
Структуры: ввести данные о работниках и вывести их данные, отсортированные по алфавиту C++
C++ Упорядочение массива по возрастанию до первого отрицательного элемента

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
13.05.2011, 23:44     структуры. упорядочение по алфавиту... #2
Заверните код в тег [CPP] и добавьте комментарии.
Спасибо, пожалуйста.
adico
13 / 13 / 1
Регистрация: 24.02.2011
Сообщений: 64
14.05.2011, 00:39     структуры. упорядочение по алфавиту... #3
Недавно писал что то подобное код сохранил и под вашу структуру,
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
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include<malloc.h>
#include<stdlib.h>
#include<iostream>
 
 struct Prepod
 {
 char familia[30],iniciali[4],dolznost[30],zvanie[30];
 int zarplata,kolvo;
 void print(){std::cout<<familia<<std::endl;}
 };
 
 int main()
 {
    const int size=11;//для примера пару фамилий
    Prepod qwe[size],temp;
    setlocale( LC_ALL,"Russian" );
    strcpy(qwe[0].familia ,"иванов");
    strcpy(qwe[1].familia ,"петров");
    strcpy(qwe[2].familia ,"сидоров");
    strcpy(qwe[3].familia ,"херов");
    strcpy(qwe[4].familia ,"мышкин");
    strcpy(qwe[5].familia ,"пивкин");
    strcpy(qwe[6].familia ,"рыжкин");
    strcpy(qwe[7].familia ,"ложкин");
    strcpy(qwe[8].familia ,"сережкин");
    strcpy(qwe[9].familia ,"aрошкин");
    strcpy(qwe[10].familia ,"аркашкин");
 
    //это главный цикл в котором сравниваем скан коды первый буквы
    //если надо точнее отсоритировать, то добавте еще один цикл 
    //до длины фамилии 
     for(int i=0; i<size+1;i++){
            for(int j=0; j<size-1;j++){
                if(abs((int)qwe[j].familia[0])<abs((int)qwe[j+1].familia[0])){
                temp=qwe[j+1];//своп
                qwe[j+1]=qwe[j];
                qwe[j]=temp;
                }
            }
     }
 
      for(int i=0; i<size;i++)//вывод
          qwe[i].print();
 
   return 0;
 }
Yandex
Объявления
14.05.2011, 00:39     структуры. упорядочение по алфавиту...
Ответ Создать тему
Опции темы

Текущее время: 14:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru