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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ [C++] декларация класса со статическим полем http://www.cyberforum.ru/cpp-beginners/thread401805.html
Не сингелтон, а класс со статическим именно полем, а не экземпляром. Как это пишется, я знаю, если у меня будет реальная задача на такое поле, я её решу. Просто сейчас не могу сочинить пример на эту тему, чтоб был и простым, и осмысленным, но не сингелтоновым, а надо сделать именно для примера фрагмент UML диаграммы классов с атрибутом, принадлежащим одновременно всем экземплярам, сингелтон же...
C++ Задача по struct 100 wmr in veterinary clinic exists log about pets, where are registered their age, health status and type(cat, dog ...). It is necessary to give information about pets, which age is less than 2 months and health status less than satisfactory (it is required to give the set of pets as dynamic array, the given definition you can expand as much necessary for you) в ветеринарной клинике... http://www.cyberforum.ru/cpp-beginners/thread401798.html
Произвести такое превращение матрицы, при котором последний столбец займет место первого C++
напишите пожалуйста код программы!! Произвести такое превращение матрицы А(m,n) (m<=5, n<7) при котором последний столбец займет место первого, а все остальные сместятся на один столбец вправо.
Задача про символы C++
помогите написать прогу В каждой строке текста найти символ, который встречается наименьшее количество раз.
C++ найти сумму максимальных элементов http://www.cyberforum.ru/cpp-beginners/thread401760.html
напишите пожалуйста код программы!! В матрице А(m,n) (m<=7, n<=5) найти сумму максимальных элементов ее строк и их индексов.
C++ Кружочки и прямоугольнички Парни у кого найдется свободная минутка или полчасика помогите плз! Задание Навстречу друг к другу движуться наборы кругов(слева) и прямоугольников(справа), все разного цвета, разного размера и с разной скоростью. При столкновении друг с другом они исчезают. подробнее

Показать сообщение отдельно
HaRuKy
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 290

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

08.12.2011, 08:44. Просмотров 584. Ответов 6
Метки (Все метки)

Приветствую всех.
Помогите найти и исправить причину не корректной работы программы.
Примечание: я еще новичок и решаю задачки на самом простом компиляторе Турбо Си.
Задание следующее: написать функцию, проверяющую, по возрастанию или убыванию упорядочена указанная строка двумерного массива. Упорядочить по возрастанию все строки двумерного массива, которые не упорядочены по убыванию.

Алгоритм следующий:

1.Формировка двумерного массива; Выполняется корректно.
2.Проверка двумерного массива на условия сортировки; Выполняет не корректно.
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include "iostream.h"
#include "stdlib.h"
#include "stdio.h"
#include "conio.h"
#define N 100
#define M 100
void main()
{ randomize();
  clrscr();
  int i,j,n,m,a[N][M];
\\ формирование двумерного массива
  printf("Vvedite massiv:\n");
  scanf("%d %d", &n, &m);
  printf("n=%d m=%d \n",n,m);
  for(i=0;i<n;i++)
  {for(j=0;j<m;j++)
  {a[i][j]=random(9);
  printf("%3d", a[i][j]); }
  cout<<endl; }
\\ проверка строк на условия сортировки
  int ps1=0,ps2=0,k=1,n_str,buf;
  printf("Vvedite nomer stroki = \n");
  scanf("%d", &n_str);
  int sort[N];
\\ сортирую выбранную строку
  for(j=0;j<m-1;j++)
    { if (a[n_str][j]>=a[n_str][j+1]) {ps1=1;k++;} else {ps1=0;k=1;};
      if (a[n_str][j]<=a[n_str][j+1]) {ps2=1;k++;} else {ps2=0;k=1;};};
      if ((ps1==1) && (k==m)) {printf("vozrastaet");} else
       if ((ps2==1) && (k==m)) {printf("ybivaet");} else
     printf("ne otsortirovana");
  cout<<"\n";
\\ проверяю сортировку всех строк + условие если строка отсортирована по возрастанию или убыванию то созданный одномерный массив(sort[i]) выдает 1 если не отсортирована строка то выдает -1 
  for(i=0;i<n;i++)
   {for(j=0;j<m-1;j++)
    { if (a[i][j]>=a[i][j+1]) {ps1=1; k++;}   else
       if (a[i][j]<=a[i][j+1]) {ps2=2;k++;};};
       if ((ps1==1) && (k==m)) {sort[i]=1;} else
       if ((ps2==2) && (k==m)) {sort[i]=1;} else
     sort[i]=-1; k=1;}
\\   Сортировка по возрастанию
printf("Sortirovka po vozrastaniu: \n");
   for(i=0; i<n; i++)
    { for(j=0; j<m; j++)
     { if ((sort[i]==-1)&&(a[i][j]>=a[i][j+1]))
      { buf=a[i][j];
    a[i][j]=a[i][j+1];
    a[i][j+1]=buf;
      }
     }
    } 
    for(i=0;i<n;i++) cout<<sort[i];
   for(i=0; i<n; i++)
    { for(j=0; j<m; j++)
      { printf("%3d", a[i][j]);
      } cout<<"\n";
    }
    getch();
}
Заранее благодарю
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru