Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 14.01.2011
Сообщений: 17
1

Упорядочивание элементов массива

12.06.2011, 19:34. Показов 3696. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Постановка задачи.

Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1<n<=100, 1<m<=50) и упорядочивает элементы матрицы. Правило упорядочивания определяется вариантом.
Вариант. Упорядочить каждый столбец по убыванию элементов.

Решите пожалуйста кому не сложно и если можно с объяснением.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2011, 19:34
Ответы с готовыми решениями:

Упорядочивание элементов массива методом пузырька
1. Дан линейный массив целых чисел (рандом). Разделить его на два новых массива так, чтобы в одном...

Присвоение элементов одного массива другому и упорядочивание их в конкретном алгоритме
Дано: есть массив X из 10 элементов всегда рандомных чисел, элементы массива X присвоить массиву Y...

С++ упорядочивание массива
ребят, в чём дело, упорядочиваю массив, а вылезают одинаковые числа, в чём ошибка? #include...

Упорядочивание массива
Что не так?((( #include &lt;iostream&gt; using namespace std; int main() { int n,i,j,c;...

20
8 / 8 / 2
Регистрация: 09.06.2011
Сообщений: 72
12.06.2011, 21:08 2
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
#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
int m,n;
int **Z;
printf ("Input m");
scanf("%d",&m);
printf ("Input n");
scanf("%d",&n);
  
 
Z=(int**)malloc(m*sizeof(int*));
for (int i=0;i<m;i++)
{
   *(Z+i)=(int*)malloc(n*sizeof(int));
}
 
 
 
for (int i=0;i<m;i++)
{ 
    for (int j=0;j<n;j++)
    {  printf ("Input Z[%d][%d]",i,j);
       scanf("%d",&Z[i][j]);
    }
 
}
 
    return 0;
}
вот тебе ввод матрицы, а сортировку написать не успеваю, мне бежать пора..
0
0 / 0 / 1
Регистрация: 14.01.2011
Сообщений: 17
12.06.2011, 21:14  [ТС] 3
Что то не работает =(
Выводит 2 ошибки, нет библиотеки stdafx.h
и в 7 строчке ) expected
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
12.06.2011, 21:17 4
Это код для Visual C.
Надо удалить этот инклюд, а так же префиксы _t и _T в функции main.
0
0 / 0 / 1
Регистрация: 14.01.2011
Сообщений: 17
12.06.2011, 21:19  [ТС] 5
Цитата Сообщение от grizlik78 Посмотреть сообщение
Это код для Visual C.
Надо удалить этот инклюд, а так же префиксы _t и _T в функции main.
int _tmain(int argc, _TCHAR* argv[])

Все равно тут показывает ошибку ) expected
0
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
12.06.2011, 21:23 6
написали же, удалите...
Для ленивых
C
1
2
3
4
5
6
7
#include <stdlib.h>
#include <stdio.h>
 
int main()
{
    //code
}
0
0 / 0 / 1
Регистрация: 14.01.2011
Сообщений: 17
12.06.2011, 21:27  [ТС] 7
Цитата Сообщение от Mиxaил Посмотреть сообщение
написали же, удалите...
Для ленивых
C
1
2
3
4
5
6
7
#include <stdlib.h>
#include <stdio.h>
 
int main()
{
    //code
}
изменила вот:
C
1
2
3
4
#include "stdlib.h"
#include "stdio.h"
 
int main(int argc, TCHAR* argv[])
Все равно та же ошибка.
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
12.06.2011, 21:30 8
Ну про _T это я погорячился
вместо _TCHAR должно быть просто char
А лучше, действительно, просто пустые скобки
1
0 / 0 / 1
Регистрация: 14.01.2011
Сообщений: 17
12.06.2011, 23:19  [ТС] 9
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
//Упорядочивание матрицы
#pragma hdrstop
#pragma argsused
 
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <iomanip.h>
 
//Функция упорядочивания матрицы
/* Программа начинает просматривать матрицу по столбцам из левого верхнего угла, находя неположительный элемент, она меняет его местом с последним на данном проходе элементом, и сдвигает индекс последнего элемента на единицу влево (вверх
по столбцам из правого нижнего угла), начиная новый проход с начала матрицы. Проходы прекращаются при совпадении индекса просматриваемого элемента и индекса последнего на данном проходе элемента (если до этого не было найдено ни одного неположительного элемента*/
void sort(int a[][50], int n, int m)
{
    int count=0,i=0,k,b; bool p;
    do
    {
        p=false;
        for (k=0;k<(n*m-1);k++)
        {
            if ((((n-1)-count%n)==k%n) && (((m-1)-count/n)==k/n))
            {
                p=true;
                break;
            }
            if (a[k%n][k/n]<0)
            {
                b=a[k%n][k/n];
                a[k%n][k/n]=a[(n-1)-count%n][(m-1)-count/n];
                a[(n-1)-count%n][(m-1)-count/n]=b;
                count++;
                break;
            }
        }
        i++;
    }
    while (p!=true);
}
 
//Функция заполнения матрицы
void fill(int a[][50], int n, int m)
{
    int i,j;
    randomize();
    for (i=0;i<n;i++)
        for (j=0;j<m;j++)
        {
            //cout<<"a["<<(i+1)<<','<<(j+1)<<"]=";
            //cin>>a[i][j];
            a[i][j]=random(100)-50;
        }
}
 
//Функция вывода матрицы на экран
void print(int a[][50], int n, int m)
{
    int i,j;
    for (i=0;i<n;i++)
    {
        for (j=0;j<m;j++)
            cout<<setw(4)<<a[i][j];
        cout<<endl;
    }
    cout<<endl;
}
 
//Основная программа
void main(void)
{
        //объявление переменных
        int a[100][50],i,j,n,m;
        //ввод числа строк и столбцов
        cout<<"Rows (from 1 to 100) >"; cin>>n;
        cout<<"Cols (from 1 to 50) >"; cin>>m;
        cout<<endl;
        //заполнение матрицы
        fill(a,n,m);
        //вывод матрицы на экран
        print(a,n,m);
        //упорядочивание
        sort(a,n,m);
        //вывод упорядоченной матрицы на экран
        print(a,n,m);
        //задержка
        getch();
}
Есть вот такой пример можно его как то изменить под мою задачку

Добавлено через 1 час 46 минут
Ребят помоги пожалуйста
0
8 / 8 / 2
Регистрация: 09.06.2011
Сообщений: 72
13.06.2011, 03:58 10
Элементы каждого столбца прямоугольной матрицы упорядочить в порядке убывания.



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

Добавлено через 2 часа 15 минут
и Ricollette - не пишите сюда всякий левый код и ради бога читайте что вам пишут. Вам три раза сказали функцию main сделать в виде main() а не как у меня..

Добавлено через 30 минут
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
// ы.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"
#include "iostream"
#include "conio.h"
 
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int m,n,temp;
int i,j;
int **Z;
printf ("Input m");
scanf("%d",&m);
printf ("Input n");
scanf("%d",&n);
  
 
Z=(int**)malloc(m*sizeof(int*));
for (i=0;i<m;i++)
{
   *(Z+i)=(int*)malloc(n*sizeof(int));
}
 
 
 
for (i=0;i<m;i++)
{ 
    for (j=0;j<n;j++)
    {  printf ("Input Z[%d][%d]",i,j);
       scanf("%d",&Z[i][j]);
    }
 
}
 
 
for(j=0; j<n; j++)
{
for(i=0; i<m-1; i++)
{
    int temp_i=i;
    for(int y=i; y<m; y++)
        if(Z[temp_i][j]<Z[y][j])
            temp_i=y;
    temp=Z[i][j]; Z[i][j]=Z[temp_i][j]; Z[temp_i][j]=temp;
}
 
}
 
 
 
for (i=0;i<m;i++)
{  printf ("\n");
    for (int j=0;j<n;j++)
    {  printf (" Z[%d][%d]=%d\t",i,j,Z[i][j]);
 
    }
 
}
 
 
_getch();
 
 
    return 0;
}
Я все таки не выдержал и решил дописать свою версию.ОТлажено и работает.Инфа 100%
0
0 / 0 / 1
Регистрация: 14.01.2011
Сообщений: 17
14.06.2011, 19:52  [ТС] 11
Упорядочивание элементов массива


А можно сделать чтоб вот такой ответ выходил сразу без ввода данных с клавиатуры
0
0 / 0 / 1
Регистрация: 14.01.2011
Сообщений: 17
15.06.2011, 21:40  [ТС] 12
Помогите плиззиккк
0
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
15.06.2011, 22:36 13
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
#include <iostream>
#include <string>
#include <ctime>
#include <iomanip>
#include <algorithm>
 
#define StringSize 5
#define ColumnSize 5
 
void FillingMatrix ( int ** matr )
{
    srand ( time ( 0 ) );
    for ( int i = 0; i < StringSize; i++ )
        for ( int j = 0; j < ColumnSize; j++ )
            matr [ i ][ j ] = rand() % 15 - 4;
}
 
void PrintingMatrix ( int ** matr )
{
    for ( int i = 0; i < StringSize; i++ )
    {
        for ( int j = 0; j < ColumnSize; j++ )
            std::cout << std::setw( 3 ) << matr [ i ][ j ];
        std::cout << std::endl;
    }
    std::cout << std::endl;
}
 
void SortingColumnsOfMatrix ( int ** matr )
{
    for ( int i = 0; i < ColumnSize; i++ )
    {
        for ( int k = 0; k < StringSize - 1; k++ )
            for ( int j = k + 1; j < StringSize; j++ )
                if ( matr [ k ][ i ] < matr [ j ][ i ])
                    std::swap ( matr [ k ][ i ], matr [ j ][ i ] );
    }   
}
 
 
int main()
{
    int ** Matrix;
    Matrix = new int * [ StringSize ];
    for ( int index = 0; index < ColumnSize; index++ )
        Matrix [ index ] = new int [ StringSize ];
    
    FillingMatrix          ( Matrix );
    PrintingMatrix         ( Matrix );
    SortingColumnsOfMatrix ( Matrix );
    PrintingMatrix         ( Matrix );
 
    delete [] Matrix;
    std::cin.get();
    return 0;
}
0
0 / 0 / 1
Регистрация: 14.01.2011
Сообщений: 17
15.06.2011, 22:41  [ТС] 14
На борланд с++ пойдет прога? или вы какую то другую программу си используете?
0
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
15.06.2011, 22:44 15
Цитата Сообщение от RIcolette Посмотреть сообщение
Вложение 83727

А можно сделать чтоб вот такой ответ выходил сразу без ввода данных с клавиатуры
Что нужно сделать для данного случая? - странно как - то сортирует... (или я что - то не догоняю)
Прилагаю свой скрин программы, которая сортирует элементы каждого столбца по возрастанию:

Добавлено через 1 минуту
писал в Visual Studio 2010 ( C++ )
0
0 / 0 / 1
Регистрация: 14.01.2011
Сообщений: 17
15.06.2011, 22:54  [ТС] 16
а где скрин? а ничего что у меня задание по убыванию надо сделать? у нас в универе стоит только борланд =( а я ничего не поняла как делать... можно как то исправить если вам это труда не составит
0
Mиxaил
15.06.2011, 23:09
  #17

Не по теме:

нет глючит

0
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
15.06.2011, 23:18 18
RIcolette, Вы запускали мой код на борланде? или вы заранее думаете, что работать не будет?

Цитата Сообщение от RIcolette Посмотреть сообщение
а ничего что у меня задание по убыванию надо сделать?
в 35 строке
измените знак
C++
1
if ( matr [ k ][ i ] > matr [ j ][ i ])
0
0 / 0 / 1
Регистрация: 14.01.2011
Сообщений: 17
16.06.2011, 01:55  [ТС] 19
Я же говорила куча ошибок будет=(

•Compiling KONT1.CPP:
Error KONT1.CPP 1: Unable to open include file 'IOSTREAM'
Error KONT1.CPP 2: Unable to open include file 'STRING'
Error KONT1.CPP 3: Unable to open include file 'CTIME'
Error KONT1.CPP 4: Unable to open include file 'IOMANIP'
Error KONT1.CPP 5: Unable to open include file 'ALGORITHM'
Error KONT1.CPP 12: Function 'srand' should have a prototype
Error KONT1.CPP 12: Function 'time' should have a prototype
Error KONT1.CPP 15: Function 'rand' should have a prototype
Error KONT1.CPP 23: Type qualifier 'std' must be a struct or class name
Error KONT1.CPP 23: Statement missing ;
Error KONT1.CPP 24: Type qualifier 'std' must be a struct or class name
Error KONT1.CPP 24: Statement missing ;
Error KONT1.CPP 26: Type qualifier 'std' must be a struct or class name
Error KONT1.CPP 26: Statement missing ;
Warning KONT1.CPP 27: Parameter 'matr' is never used
Error KONT1.CPP 36: Type qualifier 'std' must be a struct or class name
Error KONT1.CPP 36: Statement missing ;
Error KONT1.CPP 54: Type qualifier 'std' must be a struct or class name
Error KONT1.CPP 54: Statement missing ;

Добавлено через 2 часа 6 минут
Помогите плизз =( сегодня сдавать =(
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
16.06.2011, 03:07 20
Заголовки такие:
C++
1
2
3
4
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#include <iomanip.h>
algorithm убрать. std:: убрать. наверняка придётся ещё и функцию swap реализовать. Остальное, кажется, должно работать. Может чего не заметил.
0
16.06.2011, 03:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2011, 03:07
Помогаю со студенческими работами здесь

Упорядочивание массива
дан массив вещественных чисел требуется написать функции, которые 1. упорядочивают по убыванию...

Упорядочивание массива
Дан массив размера N. Вывести вначале его элементы с четными1|нечетными2 индексами, а затем — с...

Упорядочивание стобцов массива
Дана целочисленная прямоугольная матрица размера m x n: A, i=1,2,...m, j=1,2...n. Упорядочить...

Преобразование (упорядочивание) массива
Добрые люди! Написала код, каждое задание лабораторной надо оформить в виде функции, первые 2...


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

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