0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 21
1

Неправильно работает сортировка

16.12.2013, 23:44. Показов 455. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
// Lab6.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "math.h"
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include <time.h>
#include <locale.h>
#define swap(A,B) {int Buf=A;A=B;B=Buf;}
 
void form( int *A, int str, int stl, int N)
{
    int i,j;
    for(i=0;i<str;i++){
        for(j=0;j<stl;j++)
            *(A+i*N+j)=-20+rand()%100;}
}
void print(int *A, int str, int stl,int N)
{
    int i,j;
    for(i=0;i<str;i++)
    {
        for(j=0;j<stl;j++)
        {
            printf("%5.2d",*(A+i*N+j));
        }
        printf("\n");
    }     
}   
void sort(int *A, int str, int stl, int mmax)
{
int k,i,j,flag=0;
for(k=0;k<stl;k++) 
{
for(i=0;i<str-1;i++){
    if(*(A+i*mmax+stl-1)<*(A+(i+1)*mmax+stl-1))
{
for(j=0;j<stl;j++)
{
swap(*(A+i*mmax+j),*(A+(i+1)*mmax+j)); 
flag=1;
}
    }
}
if(flag) continue;
else break;
}
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    srand(time(0));
    setlocale (LC_ALL,"russian_russia");
        int str,stl,max,h;
    int A[10][10];do    {
    do
    {
        printf("Введите размер матрицы: строки на столбцы\n");
        scanf("%d",&str);
        scanf("%d",&stl);
    }
    while(str>10||str<1||stl<1||stl>7);
        form(&A[0][0],str,stl,10);
        print(&A[0][0],str,stl,10);
        printf("\nНажмите любую клавишу для начала сортировки и вывода отсортированного массива\n");
        getch();
        sort(&A[0][0],str,stl,10);
        print(&A[0][0],str,stl,10);
        printf("Для выхода наберите 120");
scanf("%d",&h); 
    }
    while(h!=120);
}
Нужно отсортировать строки массива в порядке убывания по послденему элементу строки. обязательно с флагом.
проблема в том что если последняя строчка больше первой то она все равно ставится второй, а если больше первых двух то ставится третьей, дальше сортировка идет нормально, или если последняя строчка меньше первых двух то сортировка тоже идет нормально.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2013, 23:44
Ответы с готовыми решениями:

Сортировка работает неправильно
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; int main() {...

Неправильно работает сортировка вставками
Как я понял не работает функция Sort. int main() { FILE *fp=fopen(&quot;start.txt&quot;,&quot;r&quot;); int...

Быстрая сортировка работает неправильно
Здравствуйте! Разбираюсь с быстрой сортировкой и что-то пошло не так. Компилятор ни на что не...

Неправильно работает сортировка
Задание на сортировку четных элементов по убыванию, отрицательных по возрастанию Где ошибка в...

0
16.12.2013, 23:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2013, 23:44
Помогаю со студенческими работами здесь

Сортировка неправильно работает
сортировке первых 5-ти чисел по возрастанию меняет первый и последний элементы : program...

Неправильно работает сортировка
сортирует только первый столбец. в чём беда? заранее спасибо #include &quot;stdafx.h&quot; #include...

Почему неправильно работает сортировка?
сортировка: for i := 1 to n-1 do begin if gruppa1.grupa&gt;gruppa1.grupa then begin ...

Неправильно работает быстрая сортировка
Нашел на форуме код с сортировкой ( быстрая сортировка ) но он почему то не правильно отрабатывает...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru