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

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

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

Отсортируйте каждую строку массива по убыванию. Исправить код - C++

24.02.2014, 23:43. Просмотров 537. Ответов 4
Метки нет (Все метки)

Добрый вечер)
Помогите пожалуйста разобраться
вроде все норм должно быть, а выводит муть, уже крыша поехала((
Объявите двумерный вещественный массив, в котором n  m элементов. Заполните его числами, полученными по закономерности: (в проге есть) . Отсортируйте каждую строку массива по убыванию. Распечатайте его в виде таблицы с точностью до 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
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
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
 
int i,j;
void outArr(float **arr, int MAXM, int MAXN)
{
   for (i=0;i<MAXN;i++){
   for (j=0;j<MAXM;j++){
    printf("%4.0f",arr[i][j]," ");
   }
   printf("\n");
  }
}
//*************************************************
// generater
void generateArr(float **arr, int MAXM, int MAXN)
{
  float sum=0;
 
  for (i=0;i<MAXN;i++){
   for (j=0;j<MAXM;j++)
   {
    if (j==0) sum=0;
    arr[i][j]=(float)sum+(i+1)*(j+5)/(i+j+1);
    sum=(float)sum+arr[i][j];
 
    }
   }
   outArr(arr, MAXM,MAXN);
 
 
    }
 
 
 
//*******************************************8
//sortirovka
 
void bubbleSort(float **arr, int MAXM, int MAXN){
  float t;
  for (int k=0;k<MAXN;k++)
  {
  for (i=0;i<MAXM;i++)
  {
    for (j=MAXM-1; j>i;j--)
    {
     if (arr[k][j]<arr[k][j+1])
       {t=arr[k][j];
    arr[k][j]=arr[k][j+1];
    arr[k][j+1]=t;
       }
      }
    }
  }
 
  outArr(arr,MAXM,MAXN);
}
 
void main()
{
   int MAXM, MAXN;
   float **a;
   int b=1;
   clrscr();
// proverka na vvod
//********************************************************
printf ("vvedite rasryadnost' matricy\n");
do
{
b=1;
printf ("M\n");
cin >> MAXM;
if (MAXM <0) b=0;
}
while (b==0);
 
do
{
b=1;
printf ("N\n");
cin >> MAXN;
if (MAXN <0) b=0;
}
while (b==0);
//****************************************************
// proga
   cout<<"Generated array\n";
 
   generateArr(a,MAXM, MAXN);
    cout<<"After sorting\n";
   bubbleSort(a,MAXM,MAXN);
   getch ();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2014, 23:43     Отсортируйте каждую строку массива по убыванию. Исправить код
Посмотрите здесь:

Из промежутка [a;b) отсортируйте каждый столбец массива по убыванию методом Шелла - C++
Объявите двумерный вещественный массив, в котором n x m элементов. Выполните генерацию массива случайными вещественными числами. Из...

Матрица (упорядочить каждую строку по убыванию элементов) - C++
Помогите пожалуйста)) разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1&lt;n&lt;=100, 1&lt;m&lt;=500) и...

Отсортировать каждую строку матрицы по убыванию элементов методом пузырька - C++
I. Дана матрица размерностью nxn, содержащая целые числа. Отсортировать: 1. каждую строку матрицы по убыванию элементов методом пузырька ...

Дана матрица целых чисел N*M. Упорядочить каждую строку матрицы по убыванию элементов - C++
Дана матрица целых чисел N*M. Упорядочить каждую строку матрицы по убыванию элементов

Отсортируйте массив по убыванию и выведите на экран - C++
1. Напишите программу, которая принимает с клавиатуры число N, заполняет массив размера N случайными числами и выводит его на экран. Затем...

Отсортируйте в массиве положительные элементы по возрастанию, отрицательные – по убыванию - C++
Задание: Отсортируйте в массиве положительные элементы по возрастанию, отрицательные – по убыванию. Использовать три метода сортировки. ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
24.02.2014, 23:56     Отсортируйте каждую строку массива по убыванию. Исправить код #2
у меня ваш код на нормальном компиляторе вообще не работает
C++
1
float **a;
вы тут объявляете переменную типа указатель на массив указателей, но памяти не выделяете и обращаетесь по индексам которые в никуда указывают и пишете туда какие-то данные, от того и проблемы, отчасти.
Violetta
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 53
25.02.2014, 00:21  [ТС]     Отсортируйте каждую строку массива по убыванию. Исправить код #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
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
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
 
int i,j;
void outArr(float **arr, int MAXM, int MAXN)
{
   for (j=0;j<MAXN;j++){
   for (i=0;i<MAXM;i++){
    printf("%4.0f",arr[j][i]," ");
   }
   printf("\n");
  }
}
//*************************************************
// generater
void generateArr(float **arr, int MAXM, int MAXN)
{
  float sum=0;
 
  for (i=0;i<MAXN;i++){
   for (j=0;j<MAXM;j++)
   {
    if (j==0) sum=0;
    arr[i][j]=(float)sum+(i+1)*(j+5)/(i+j+1);
    sum=(float)sum+arr[i][j];
 
    }
   }
   outArr(arr, MAXM,MAXN);
 
 
    }
 
 
 
//*******************************************8
//sortirovka
 
void bubbleSort(float **arr, int MAXM, int MAXN){
 // float t;
  for (int k=0;k<MAXN;k++)
  {
  for (i=0;i<MAXM;i++)
  {
    for (j=MAXM-1; j>=i;j--)
    {
     if (arr[k][j]<arr[k][j+1])
       {float t=arr[k][j];
    arr[k][j]=arr[k][j+1];
    arr[k][j+1]=t;
       }
    }
     //  printf("%4.0f",arr[k][i]);
   }
 //  printf("\n");
    }
 
 
  outArr(arr,MAXM,MAXN);
}
 
void main()
{
   int MAXM, MAXN;
   float **a;
   int b=1;
   clrscr();
// proverka na vvod
//********************************************************
printf ("vvedite rasryadnost' matricy\n");
do
{
b=1;
printf ("M\n");
cin >> MAXM;
if (MAXM <0) b=0;
}
while (b==0);
 
do
{
b=1;
printf ("N\n");
cin >> MAXN;
if (MAXN <0) b=0;
}
while (b==0);
//****************************************************
// proga
   cout<<"Generated array\n";
 
   generateArr(a,MAXM, MAXN);
    cout<<"After sorting\n";
   bubbleSort(a,MAXM,MAXN);
   getch ();
}
Добавлено через 1 минуту
а как по другому??
я пишу на нетбуке 32x
на ноуте тоже не открывает(
TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
25.02.2014, 00:35     Отсортируйте каждую строку массива по убыванию. Исправить код #4
если windows, то советую программировать в Visual Studio Express(2008 даже регистрировать ненужно, для начала сойдет) Бесплатные среды (IDE) для программирования на С/С++

а так вот подправил слегка код, с памятью и выводом теперь все в порядке, генератор не менял:

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
#include <iostream>
using  namespace std;
 
void outArr(float **arr, int MAXM, int MAXN) {
    for (int i=0;i<MAXN;i++) {
        for (int j=0;j<MAXM;j++)
            printf("%4.3f ",arr[i][j]);
        printf("\n");
    }
}
void generateArr(float **arr, int MAXM, int MAXN) {
    float sum=0;
    for (int i=0;i<MAXN;i++) {
        for (int j=0;j<MAXM;j++) {
            if (j==0)
                sum=0;
            arr[i][j]=(float)sum+(i+1)*(j+5)/(i+j+1);
            sum=(float)sum+arr[i][j];
        }
    }
}
void bubbleSort(float **arr, int MAXM, int MAXN){
    float t;
    for (int k=0;k<MAXN;k++) {
        for (int i=0;i<MAXM;i++) {
            for (int j=MAXM-1; j>=i;j--) {
                if (arr[k][j]<arr[k][j+1]) {
                    t=arr[k][j];
                    arr[k][j]=arr[k][j+1];
                    arr[k][j+1]=t;
                }
            }
        }
    }
}
 
int main() {
   int MAXM, MAXN;
   float **a;
   int b=1;
// proverka na vvod
//********************************************************
    printf ("vvedite rasryadnost' matricy\n");
    do {
        b=1;
        printf ("M\n");
        cin >> MAXM;
        if (MAXM <1)
            b=0;
    } while (b==0);
 
    do {
        b=1;
        printf ("N\n");
        cin >> MAXN;
        if (MAXN <1)
            b=0;
    } while (b==0);
    // выделение памяти
    a=new float* [MAXN];
    for(int i=0; i<MAXN; i++)
        a[i]=new float[MAXM];
//****************************************************
// proga
    cout<<"Generated array\n"; 
    generateArr(a,MAXM, MAXN);
    outArr(a, MAXM,MAXN);
 
    cout<<"After sorting\n";
    bubbleSort(a,MAXM,MAXN);
    outArr(a, MAXM,MAXN);
 
    // освобождение памяти
    for(int i=0; i<MAXN; i++)
        delete [] a[i];
    delete [] a;
    getchar();
    getchar();
}
проверял для 5*5
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2014, 22:44     Отсортируйте каждую строку массива по убыванию. Исправить код
Еще ссылки по теме:

Отсортируйте в массиве нечетные элементы по убыванию различными сортировками - C++
Общее задание: Реализовать все алгоритмы сортировки, оформив решение в виде функций ввода, вывода и обработки массивов. 1) Отсортируйте...

Записать каждую строку из файла в элементы двумерного массива - C++
как записывать каждую строку из файла в элементы двумерного массива? есть файл zero.in в котором до 100000 строк длиной до 256 символов,...

Прокомментировать каждую строку кода (или хотя бы каждую функцию) - C++
нашел программу в интернете, только ничего не понял) можете прокомментировать каждую строку (ну или хотя бы каждую функцию) #include...

Код пузырьковой сортировки массива по убыванию - C++
Исходный массив -2.4 10.5 49.9 -49.9 -25.3 35.8 Написать код пузырьковой сортировки данного массива на убывание

сортировка массива (исправить код) - C++
Нужно отсортировать массив по убыванию bals, но даже не компилируется! #include &lt;iostream&gt; #include &lt;iomanip.h&gt; using namespace...

Исправить код сортировки массива - C++
Добрый вечер) Обращаюсь к вам за помощью. Есть программа, которая должна сортировать массив, а также выводить соответствующие данные из...


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

Или воспользуйтесь поиском по форуму:
Violetta
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 53
04.03.2014, 22:44  [ТС]     Отсортируйте каждую строку массива по убыванию. Исправить код #5
TrueBit, спасибо )
только теперь например если ввести матрицу 20*20 то он плохо выводит(
а cout не работает почему -то(
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
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
 
int i,j;
void outArr(float **arr, int MAXM, int MAXN) //pechat massiva
{
   for (j=0;j<MAXM;j++){
   for (i=0;i<MAXN;i++){
    printf("%7.3f",arr[j][i]," ");
   }
   printf("\n");
  }
}
//*************************************************
// generater
void generateArr(float **arr, int MAXM, int MAXN)
{
  float sum=0;
 
  for (i=0;i<MAXM;i++){
   for (j=0;j<MAXN;j++)
   {
    if (j==0) sum=0;
    arr[i][j]=(float)sum+(i+1)*(j+5)/(i+j+1);
    sum=(float)sum+arr[i][j];
 
    }
   }
   outArr(arr, MAXM,MAXN);
 
 
    }
 
 
 
//*******************************************8
//sortirovka
 
void bubbleSort(float **arr, int MAXM, int MAXN){
 // float t;
  for (int k=0;k<MAXM;k++)
  {
  for (i=0;i<MAXN;i++)
  {
    for (j=MAXN-2; j>=i;j--)
    {
     if (arr[k][j]<arr[k][j+1])
       {float t=arr[k][j];
    arr[k][j]=arr[k][j+1];
    arr[k][j+1]=t;
       }
    }
       }
     }
 
 
  outArr(arr,MAXM,MAXN);
}
 
void main()
{
   int MAXM, MAXN;
   float **a;
   int b=1;
   clrscr();
// proverka na vvod
//********************************************************
printf ("vvedite rasryadnost' matricy\n");
 
printf ("M ne bolee 20\n");
while ((!(cin>>MAXM)) || (MAXM<=0)|| (MAXM>20))
{
cin.clear();
while (cin.get()!='\n');
printf ("Oshibka vvoda!\n");
printf ("Povtorite vvod\n");
}
 
printf("N ne bolee 20\n");
while ((!(cin>>MAXN)) || (MAXN<=0)|| (MAXN>20))
{
cin.clear();
while (cin.get()!='\n');
printf ("Oshibka vvoda!\n");
printf ("Povtorite vvod\n");
}
 
 
//****************************************************
// proga
   cout<<"Generated array\n";
 
   generateArr(a,MAXM, MAXN);
    cout<<"After sorting\n";
   bubbleSort(a,MAXM,MAXN);
   getch ();
}
Yandex
Объявления
04.03.2014, 22:44     Отсортируйте каждую строку массива по убыванию. Исправить код
Ответ Создать тему
Опции темы

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