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

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

Войти
Регистрация
Восстановить пароль
 
Shihmars
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 4
#1

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

26.01.2010, 22:53. Просмотров 272. Ответов 0
Метки нет (Все метки)

Привет) На этой неделе защита лабараторных простейшие я сделал - одну с Вашей помощью здесь
осталось две очень прошу помочь Задача Сортировка массивов
Вот та задача похожая, которую я пытался менять

ДВА ВАРИАНТА Я ПРИВЕЛ В ДОКУМЕНТЕ 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);
}
0
Вложения
Тип файла: doc 2.doc (20.5 Кб, 14 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2010, 22:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Немного переделать программу (C++):

Переделать программу немного... - C++
Привет. Извиняюсь если написал не в тот раздел. Проблема такая. Есть программа: модель преобразования виртуального адреса в физический. Но...

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

Нужно немного переделать программу нахождения компонент сильной связности в графе - C++
В общем задание такое, нужно переделать эту программу, я не знаю как это сделать, помогите люди добрые)) #include &lt;iostream&gt; ...

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

Немного переделать код - C++
Написать функцию замены всех русских символов в строке пробелами. Ввести и обработать две смешанные строки. #include&lt;iostream&gt; ...

Структуры(совсем немного переделать) - C++
#include &lt;iostream.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; struct TStudent{ char Name; int Balls; }; ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2010, 22:53
Привет! Вот еще темы с ответами:

меню функции нужно немного переделать - C++
следующая проблема... я сделал меню но у меня переменные не связаны между функциями где у меня ошибки? как можно исправить ...

Динамические переменные (нужно немного переделать) - C++
Нужно немного переделать здесь нужно найти для каждой строки количество элементов, кратные трем, и крупнейший из полученных результатов и...

немного иправить программу - C++
Программа Вводит класс для работы с объектом &quot;рациональная дробь&quot; и реализует: а)сложение(вычитание) двух дробей; б)приведение дроби к...

нужно немного изменить программу) - C++
подскажите, пожалуйста, что нужно изменить в программе, чтобы, например, вместо (5) + i(2) было 5 + 2i, а также вместо (2) + i (-1) ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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