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

Немного переделать программу - C++

Восстановить пароль Регистрация
 
Shihmars
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 4
26.01.2010, 22:53     Немного переделать программу #1
Привет) На этой неделе защита лабараторных простейшие я сделал - одну с Вашей помощью здесь
осталось две очень прошу помочь Задача Сортировка массивов
Вот та задача похожая, которую я пытался менять

ДВА ВАРИАНТА Я ПРИВЕЛ В ДОКУМЕНТЕ 2.Doc Первый текс программы которой я скину и второй мой)
Надежда умирает последней - надеюсь кому то из АСов станет интересно разобраться и кто то выручит меня)

Общее Задание
Для формирования матрицы A(n,n) предусмотреть функцию (с условным названием form_matr(a, n), внутри которой предусмотреть вызов функции a[i,j]=elem(i,j). Внутри функции elem предусмотрен вызов других необходимых функций (см. табл.). Внимательно следите за типами передаваемых и возвращаемых значений.
Программа должна содержать несколько функций. В главной функции предусмотреть резервирование памяти для динамического массива a(n,n), в зависимости от введенного размера n. Для печати исходной и отсортированной матрицы полезно предусмотреть универсальную подпрограмму. Для оценки скорости работы разных методов сортировки предусмотреть глобальные счетчики числа операций проверки и обмена.

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
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
 
int o=0,p=0;
 
void main()
    {
        int n,v,k=0;
        double **A;
        void create(double **A, int n);
        void print_(double **A,int n);
        void sort_mmx(double **a, int n, int k);
        void sort_puz(double **a, int n, int k);
        void sort_qck(double **a, int l, int r, int k);
        clrscr();
 
        printf("VVedite Razmernost Kvadratnoy MATRICY:");
        scanf("%d",&n);
        A=(double**)malloc(n*sizeof(double));
        for(int i=0;i<n;i++)
            A[i]=(double *)malloc(n*sizeof(double));
        create(A,n);
        print_(A,n);
 
printf("\n BBedite Nomer Stolbca ");
        scanf("%d",&k);
        k--;
printf("Vyberite Metod Sortirovki:\n1-Vyborom minimuma\n2-Metod PUZYRKA \n3-Metod Bystroy sortirovki\\n\r");
scanf("%d", &v);
switch (v)
{
    case 1: goto l1;
    case 2: goto l2;
    case 3: goto l3;
    default:
        printf("Nepravilnyi VVOD");
}
l1:    printf("\n Vyborom minim maxim\n");
        sort_mmx(A, n, k);
        goto q;
l2:    printf("\n Metod PUZYRKA\n");
        sort_puz(A, n, k);
        goto q;
l3:    printf("\n METOD Bystroy sortirovki\n");
        if(n%2)
          sort_qck(A, 0, n-1, k);
        else
          sort_qck(A, 0, n-2, k);
        printf(" so=%5d         sp=%5d\n",o,p);
        goto q;
q:  for (i=0;i<n;i++) printf("%9.4lf ",A[i][k]);
        for (i=0;i<n;free(A[i]),i++);
        getch();
    }
 
double Sh(double x)
    {
        double y=(exp(x)-exp(-x))/2;
        return y;
    }
 
double Ch(double x)
    {
        double y=(exp(x)+exp(-x))/2;
        return y;
    }
 
void create(double **A, int n)
    {
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
            A[i][j]=fabs(Sh(0.1*i)-Ch(0.2*j));
    }
void print_(double **A,int n)
    {
        textcolor(14);
        for(int i=0;i<n;i++)
            {
                for(int j=0;j<n;j++)
                    cprintf("%9.4lf",A[i][j]);
                printf("\n\r");
            }
    }
 
void sort_mmx(double **a, int n, int k)
{ int i,j,t,so=0,sp=0;
    double c;
    for (i=0;i<n-2;i+=2)
        if (a[i][k]>0)
        {
            t=i;
            for(j=i+2;j<n;j+=2)
            {
                sp++;
                if ((a[t][k]>a[j][k])&&(a[j][k]>0)) t=j;  //**室Ё¬ ¬Ё*Ё¬г¬
            }
            c=a[i][k]; a[i][k]=a[t][k]; a[t][k]=c;  so++; //бв*ўЁ¬ ¬Ё*Ё¬г¬ ** 1 ¬Ґбв®
        }
    printf(" so=%5d         sp=%5d\n",so,sp);
}
 
void sort_puz(double **a, int n, int k)
{ int i,t=0,so=0,sp=0;
    double c;
    do
    {
        t=0;
        for (i=0;i<n-2;i+=2)
        {
            sp++;
            if (a[i][k]>a[i+2][k])
            { t++;
            so++;
            c=a[i][k]; a[i][k]=a[i+2][k]; a[i+2][k]=c;
            }
        }
    }
    while (t>0);
    printf(" so=%5d         sp=%5d\n",so,sp);
}
 
void sort_qck(double **a, int l, int r, int k)
{ int i, j,so=0,sp=0;
  double s,c;
    i=l; j=r;
    s=a[(l+r)/2][k];
//    for (k=0; k<n; k++){
//        i=l; j=r; s=a[k][(l+r)/2];
    do {
        while (a[i][k]<s) i=i+2;
        while (a[j][k]>s) j=j-2;
        p++;
        if (i<j) {
        c=a[i][k]; a[i][k]=a[j][k];  a[j][k]=c;     j=j-2;   i=i+2; so++; o++;
       }
    }
    while (i<j);
    if ((l<j) && (so!=0))
        sort_qck(a,l,j,k);
    if ((r>i) && (so!=0)) sort_qck(a,i,r,k);
//    printf(" so=%5d         sp=%5d\n",so,sp);
}
Вложения
Тип файла: doc 2.doc (20.5 Кб, 14 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2010, 22:53     Немного переделать программу
Посмотрите здесь:

Переделать программу немного... C++
C++ нужно немного переделать!!!
C++ меню функции нужно немного переделать
Нужно немного переделать программу нахождения компонент сильной связности в графе C++
Структуры(совсем немного переделать) C++
Надо переделать немного программу C++
Немного переделать код C++
Нужно немного переделать программу: использовать функции и динамическое выделение памяти C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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