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

сортировка двумерного массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Память не может быть "written" http://www.cyberforum.ru/cpp-beginners/thread32091.html
Помогите найти ошибку в следующем коде: На этапе вхождения в функцию "vvod_vseh", а именно при вводе первой фамилии - выскакивает ошибка памяти. "Память не может быть written." Как исправить?...
C++ Статический массив Привет ВСЕММММ)))Помогите с написанием кода,чет я торможу((( Водномерном массиве,состоящем из n вещественных элементов,вычислить: 1)номер минемального элемента массива; 2)сумму элементов... http://www.cyberforum.ru/cpp-beginners/thread32075.html
C++ считывание с файла
файл содержит data.txt: 200 185 170 160 76 54.9 39 27 7.5 10.7 12.9 15.9 6.5 7.9 12 12 9 12 17 21.5 Romat=7200 Вопрос, как считать правильно число с...
Задачка на строки C++
'Необходимо определить число входящих в строку цифр' Что то даже мыслей нет помогите пожалуйста с кодом
C++ Сумма цифр в данном числе http://www.cyberforum.ru/cpp-beginners/thread32054.html
Составить алгоритм определения количества 2N-значных чисел из которых сумма N первых цифр равна сумме N последних. N - произвольное натуральное число
C++ Задача с последовательностью Дана последовательность натуральных чисел. Найти наименьшее натуральное число которое отсутствует в последовательности и определить его делители подробнее

Показать сообщение отдельно
Salamnov
4 / 4 / 0
Регистрация: 29.03.2009
Сообщений: 37

сортировка двумерного массива - C++

29.04.2009, 20:26. Просмотров 1438. Ответов 4
Метки (Все метки)

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
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<conio.h>
 
int i,j,n,k,co,cp;
//----------------------------------------------------
void form_matr(double **a,int n){ //формирование матрицы
    int i,j;
    for(i=0;i<n;i++){
        for(j=0;j<n;j++)
            a[i][j]=sinh(i)+sinh(j)-2*sinh((i+j)/2)*cosh((i-j)/2)+i+j;
    }
}//----------------------------------------------------
void print_matr(double **a,int n){ //печать матрицы
    int i,j;
    for(i=0;i<n;i++){
        for(j=0;j<n;j++)
            printf("%8.2f ",a[i][j]);
        printf("\n");
    }
}//----------------------------------------------------
void selsort(double **a, int n, int k) { // сортировка методом простого выбора
double x; int v,i,j;
    co=0; cp=0;
     for(i=0;i<n;i++){
            v=i; x=a[k][i];
             for(j=i+1;j<n;j++)
                if (fabs(a[k][j])<fabs(x)){v=j; x=a[k][j]; cp++;};
                                 }
        a[k][v]=a[k][j];
        a[k][j]=x;
        co++;
        }
 
 
//----------------------------------------------------
void bubsort(double **a, int n,int k){ ..сортировка пузырьком
double x; int i,j;
    co=0; cp=0;
     for(i=0;j<n;j++){
            for(j=n-1;j>i;j--){
                 cp++;
                 if(fabs(a[k][j-1])<fabs(a[k][j])){
                 x=a[k][j-1];
                 a[k][j-1]=a[k][j];
                 a[k][j]=x;
                 co++;
                }
             }
         }
 
}//----------------------------------------------------
void qusort(double **a, int l,int r){ //рекурсивная сортировка
    int i, j;
    double c, s;
    co=0; cp=0;
    i=l; j=r;
    s=fabs(a[k][(l+r)/2]);
    do{
            while(a[k][i] < s) {i++ ; cp++;}
            while(a[k][j] > s) {j-- ; cp++;}
            if (i<=j){
            c=a[k][i];
            a[k][i]=a[k][j];i++;
            a[k][j]=c;j--;
            co++;  }
     } while (i<=j);
 if (l<j)qusort(a,l,j);
 if (r>i)qusort(a,i,r);
}//----------------------------------------------------
 main() {
 double **a;
    int num;   cp=co=0;
    printf("\n введите n => "); scanf("%d",&n);
    printf("\n введите k => "); scanf("%d",&k);
    printf("\nупорядочивание методом:");
    printf("\n   1 : простого выбора*");
    printf("\n   2 : пузырька*");
    printf("\n   3 : рекурсивным ");
    printf("\n  => ");scanf("%i",&num);
    a=(double**)malloc(n*sizeof(double*));
    for(i=0;i<n;i++)    //
        a[i]=(double*)malloc(n*sizeof(double)); // ўл¤Ґ«Ґ*ЁҐ *г¦*®Ј® Є®«-ў* Ї*¬пвЁ
 
    printf("\nисходнные данные: n= %i",n);
    printf("\nk= %i",k=k-1);
    printf("\n\n  матрица :\n");
    form_matr(a,n);
    print_matr(a,n);
    switch(num){  //--ўлЎ®а Ё§ бЇЁбЄ*--
        case(1) : selsort(a,n,k); break; 
        case(2) : bubsort(a,n,k); break;
        case(3) : qusort(a,0,n-1); break;}
    if(num==1) printf("\nметод простого выбора* :\n");
        else
        if(num==2) printf("\nметод пузырька* :\n");
            else printf("\n рекурсивный метод:\n");
    print_matr(a,n);
    printf("\n число обменов = %i",co);
    printf("  число проверок = %i \n",cp);
    free(a);
    for(i=0;i<n;i++) free(a[i]);
    getchar();
    getchar();
}//---------------------------------------------------
Добавлено через 1 минуту 49 секунд
не могу понять почему не сортирует, помогите найти ошибку в коде. необходимо рассортировать по возрастанию заданную k строку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru