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

сортировка по фамилии - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить,является ли количество отрицательных элементов числом нечетных http://www.cyberforum.ru/cpp-beginners/thread198396.html
Помогите кто нибудь пожалуйста написать программы в С++... Используя массивы: 1.)Дан массив a(n).Определить,является ли количество отрицательных элементов числом нечетных. 2.)Дан массив а(n).Найти сумму цифр каждого элемента массива. Используя цикл с параметром: 1.)Вывести на экран все четные трехзначные числа. Используя цикл с предусловием: 1.)Дано число найти сумму нечетных цифр. ...
C++ Работа с строками в с++ Помогите пожалуйста!!!! Контрольная на носу….. Не могу решить одну задачу: Надо составить программу преобразование строки, представляющую запись целого десятичного числа, в целое десятичное числа, в целое десятичное число… С использование стандартных функций isdigit(), isspace() http://www.cyberforum.ru/cpp-beginners/thread198391.html
Вычислить количество элементов массива, равных 0 C++
C++. Одномерные массивы. Помогите пожалуйста с заданием в С++. В одномерном массиве,состоящем из n вещественных элементов,вычислить: 1)количество элементов массива,равных 0. 2)сумму элементов массива,расположенных после минимального элемента. упорядочить элементы массива по возрастанию модулей элементов. Если можно ещё начертите блок-схему.!! заранее всем СПАСИБО!!!
Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы C++
Задан массив из k символов.Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы. Помогите пожалуйста.
C++ Определить с точностью до 0,2 точку пересечения функции http://www.cyberforum.ru/cpp-beginners/thread198341.html
Определить с точностью до 0,2 точку пересечения функции y=x-exp(-ax2) с осью x при изменении аргумента x от b0 до bm с шагом 0,2. Значения a, b0, bm вводятся с клавиатуры. Сначала не обходимо определить знак функции y при x=b0. Изменение знака функции свидетельствует о пересечении оси x.
C++ три двунаправленных списка помогите решить задачу на зачет.... даны два файла, содержащие числовые данные 1.создать два двунаправленных упорядоченных списка, заполненный данными из файла 2. создать новый двунаправленный список, содержащий данные из двух существующих с сохранением упорядоченности 3.записать содержимое нового списка в третьем файле подробнее

Показать сообщение отдельно
straus
0 / 0 / 0
Регистрация: 18.10.2010
Сообщений: 45
27.11.2010, 22:45     сортировка по фамилии
написал программу которая сортирует по году и по фамилии, но вот только по фамилии не сортирует прекращает работу, в чем тут ошибки не пойму уже все перепробовал-помогите пожалуйста
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
// Spisok.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <cctype>
using namespace std;
 
struct anketa {
            char *fam;
            unsigned int god;
            //BOOL pol;
            anketa *next;
};
 
anketa *first=NULL;
 
anketa *getAnketa(int k){//получение элемента списка
        if (k == 0){
        return first;
    }
    anketa * Cur = first;
    for (int i = 0; i<k; i++){
        if (!Cur){
            return NULL;
        }
        Cur = Cur->next;
    }
    return Cur;
}
 
void add(char *fam, int god){//, bool pol){
    anketa *a = new anketa;
    a->fam = new char[30];
    strcpy(a->fam, fam);
    a->god = god;
    //a->pol = pol;
    a->next = NULL;
    if (!first){
        first = a;
    }
    else{
        anketa *Curr = first;
        while (Curr->next)
            Curr = Curr->next;
            Curr->next = a;
    }   
}
 
 
 
void show() {
    if (!first){
        return;
    }
    anketa *curr=first;
    while (curr){
         cout <<"Фамилия "<<curr->fam<<endl;
         cout <<"Год рождения "<<curr->god<<endl;
         //cout <<"Пол "<<curr->pol<<endl;
         curr=curr->next;
    }
}
 
void drop (){
    if (!first){
        return;
    }
    anketa *curr;
    anketa *delEl=first;
    while (curr=delEl->next) {
        delete delEl;
        delEl=curr;
    }
   first = NULL;
}
 
void sortirovkaGod(){
    if (!first){
        return;
    }
    if (!first->next){
        return;
    }
    anketa *t;
    anketa *Cur;
    Cur = first;
    anketa *k = first;  
    if (k->next->god < first->god){
        t = k->next;
        k->next = first;
        first = t;
        t = first->next;
        first->next = k->next->next;
        k->next->next = t;
    }
    bool s;
    do{
        s = true;
        Cur = first;
        while (Cur->next->next){
            if (Cur->next->god > Cur->next->next->god){
                s = false;
                t = Cur->next->next;
                Cur->next->next = t->next;
                t->next = Cur->next;
                Cur->next = t;
            }
            Cur = Cur->next;
        }       
    }while (!s);    
    return;
}       
 
void SortirovkaFam(){
    
    if (!first){
        return;
    }
    if (!first->next){
        return;
    }
    anketa *t;
    anketa *Cur;
    Cur = first;
    anketa *k = first;  
 
    for(int i=0; i<255;i++){
    
        if (k->next->fam[i] < first->fam[i]){
        t = k->next;
        k->next = first;
        first = t;
        t = first->next;
        first->next = k->next->next;
        k->next->next = t;
    }
    bool s;
    do{
        s = true;
        Cur = first;
        while (Cur->next->next){
            if (Cur->next->fam[i] > Cur->next->next->fam[i]){
                s = false;
                t = Cur->next->next;
                Cur->next->next = t->next;
                t->next = Cur->next;
                Cur->next = t;
            }
            Cur = Cur->next;
        }       
    }while (!s);    
}
 
}
 
 
int _tmain(int argc, _TCHAR* argv[]){
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        cout<<"Введите количество анкет "<<endl;
        anketa *A=new anketa[100];
        int n; //количество анкет      
        cin>>n;
        char *fam = new char[255];
        int god;
       // bool pol;
        for (int i = 0; i<n; i++) {
              cout<<"Анкета № "<<i+1<<endl;
              cout <<"Введите Фамилию "<<endl;
              cin>>fam;
              cout <<"Введите Год "<<endl;
              cin>>god;
              //cout <<"Введите Пол "<<endl;
              //char m[100];
             // cin>>m;
              //if(m[0]=='ж') pol=true;
              //if(m[0]=='м') pol=false;    
              add(fam, god); //, pol);
        }     
    
        cout<<"    !!!!!!!!!!   Cортировка анкет по году рождения : "<<endl;
        sortirovkaGod();
        show();
        
            cout<<"    !!!!!!!!!!   Cортировка анкет по фамилии: "<<endl;
        SortirovkaFam();
        show();
        drop();
        
}
Добавлено через 10 часов 10 минут
хотя бы напишите как сортировку по фамилии сделать в данном случае???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru