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

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

Войти
Регистрация
Восстановить пароль
 
Fedor Alifirenk
1 / 1 / 0
Регистрация: 23.10.2010
Сообщений: 35
#1

вывод сортировки по алфавиту (ошибка) - C++

11.11.2010, 19:52. Просмотров 488. Ответов 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
#include<iostream>
using namespace std;
struct Student{
        char name[30];
        char facult[30];
}ob[10];
void Show(Student *obj,char str[30]){
        for(int i=0;i<10;i++){
                if(!(strcmp(str,ob[i].facult)))              
                cout<<obj[i].name<<" - "<<obj[i].facult<<"\n";
        }
}
void SortName(Student *ob,char str[30])
{
        int n=10;
        for(int i=1;i<n-1;i++){
                if(!(strcmp(str,ob[i].facult))){           
                for(int j=n-1;j>=i;j--){
                        if(ob[j].name[0]>ob[j+1].name[0]){
                                char temp[30];
                                strcpy(temp,ob[j].name);
                                strcpy(ob[j].name,ob[j+1].name);
                                strcpy(ob[j+1].name,temp);
                        }
                }
                }
        }
 
 
}
int main(){
        char kaf[30];
        for(int i=0;i<10;i++){
                cout<<"Vedite FIO "<<i<<" studenta: ";
        gets(ob[i].name);
        cout<<"Vvedite kafedru: ";
        gets(ob[i].facult);
        }
        cout<<"Vvedite kafedru dlya pokaza: ";
        gets(kaf);
        SortName(ob,kaf);
        Show(ob,kaf);
        cin.get(); 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2010, 19:52     вывод сортировки по алфавиту (ошибка)
Посмотрите здесь:

Дописать функцию сортировки по алфавиту в базе данных - C++
Есть программа база данных. я ее уже расписал. все кроме одной функции sort . в этой функции должна происходить сортировка переменных...

Написать программу для сортировки методом прямых включений латинских букв по алфавиту - C++
Здравствуйте! Помогите написать программу для сортировки методом прямых включений латинских букв по алфавиту. Сортировка простыми...

вывод сортировки пузырьком - C++
Привет всем кто кликнул мою тему!) Есть программа которая сортирует элементы методом пузырька #include &quot;stdafx.h&quot; #include...

Вывод структуры после сортировки - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;string.h&gt; #include &lt;windows.h&gt; using namespace std; const...

Поэтапный вывод сортировки массива - C++
C меня за помощь 100 рублей на webmoney. скайп komarov.deen icq 3556353 Нужно поэтапно вывести сортировку массива, код имеется: ...

Вывод результата быстрой сортировки - C++
Доброго времени суток, возникла проблема с быстрой сортировкой, не знаю как реализовать вывод отсортированного массива. Сам код: #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт CЭксперт С++
9467 / 5480 / 927
Регистрация: 25.07.2009
Сообщений: 10,504
13.11.2010, 01:56     вывод сортировки по алфавиту (ошибка) #2
На С++ всё-таки лучше стандартные контейнеры использовать, а на С вот:
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
 
#define NAME_LEN 32
#define NAME_MASK "%31[^\n]%*c"
 
char * win2dos(const char * str){
    static char buf[NAME_LEN];
    CharToOemA(str, buf);
    return buf;
}
 
char * dos2win(const char * str){
    static char buf[NAME_LEN];
    OemToCharA(str, buf);
    return buf;
}
 
typedef struct {
    char name[NAME_LEN];
    char facult[NAME_LEN];
} student_t;
 
int cmp_asc(const void * a, const void * b){
    int ret;
    
    if ( ! ( ret = strcmp(((student_t*)a)->facult, ((student_t*)b)->facult) ) )
        return strcmp(((student_t*)a)->name, ((student_t*)b)->name);
    
    return ret;
}
 
int main(void){
    student_t * students;
    size_t size, i;
    char buf[NAME_LEN];
    
    printf("%s: ", win2dos("Количество студентов"));
    scanf("%u%*c", &size);
    if ( ( students = (student_t*)calloc(size, sizeof(student_t)) ) == NULL ){
        fprintf(stderr, win2dos("Ошибка выделения памяти!\n"));
        exit(1);
    }
    
    for ( i = 0; i < size; ++i ){
        printf("%s #%u\n", win2dos("Студент"), i + 1);
        printf("%s:   ", win2dos("Фамилия"));
        scanf(NAME_MASK, buf);
        strcpy(students[i].name, dos2win(buf));
        printf("%s: ", win2dos("Факультет"));
        scanf(NAME_MASK, buf);
        strcpy(students[i].facult, dos2win(buf));
    }
    
    printf("\n%s:\n", win2dos("Сортированный список"));
    printf("%s\n------------------------------\n", win2dos("Фамилия              Факультет"));
    qsort(students, size, sizeof(student_t), cmp_asc);
    for ( i = 0; i < size; ++i ){
        printf("%-20s ", win2dos(students[i].name));
        printf("%s\n", win2dos(students[i].facult));
    }
    
    free(students);
    exit(0);
}
На самом деле далеко не лучший вариант - сортировать нужно массив указателей, а не сами структуры, но тогда и код сложнее... а так вроде работает
вывод сортировки по алфавиту (ошибка)
Fedor Alifirenk
1 / 1 / 0
Регистрация: 23.10.2010
Сообщений: 35
14.11.2010, 19:39  [ТС]     вывод сортировки по алфавиту (ошибка) #3
спасибо конечно вам, но мне как для уровня первого курса сложно во всем коде разобраться

Добавлено через 4 часа 59 минут
help me please
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2010, 19:14     вывод сортировки по алфавиту (ошибка)
Еще ссылки по теме:

Вывод массива после сортировки - C++
У меня не работает правельно вывод массива после сортировки, он такой же как и вводил, помогите. #include &lt;iostream.h&gt; #include ...

Вывод отсортированного массива с индексами элементов до сортировки - C++
ЗАДАЧА: известны номера пловцов от 0 до n. Необходимо определить по результатам соренований, какое место занял каждый спортсмен. Считается,...

Алгоритм сортировки,ошибка! - C++
У меня алгоритм сортировки вставками но вот только не сортирует почему то #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include...

Priority_queue и ошибка сортировки - C++
Привет, ребят :) Должна получиться программа, которая формирует очередь по половому и возрастному признаку (вперед идут женщины и старики,...


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

Или воспользуйтесь поиском по форуму:
Fedor Alifirenk
1 / 1 / 0
Регистрация: 23.10.2010
Сообщений: 35
18.11.2010, 19:14  [ТС]     вывод сортировки по алфавиту (ошибка) #4
народ помогите!!!!!!!!!
Yandex
Объявления
18.11.2010, 19:14     вывод сортировки по алфавиту (ошибка)
Ответ Создать тему
Опции темы

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