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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
RIcolette
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 17
12.06.2011, 19:34     Упорядочивание элементов массива #1
Постановка задачи.

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

Решите пожалуйста кому не сложно и если можно с объяснением.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
prootq
 Аватар для prootq
8 / 8 / 0
Регистрация: 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;
}
вот тебе ввод матрицы, а сортировку написать не успеваю, мне бежать пора..
RIcolette
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 17
12.06.2011, 21:14  [ТС]     Упорядочивание элементов массива #3
Что то не работает =(
Выводит 2 ошибки, нет библиотеки stdafx.h
и в 7 строчке ) expected
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
12.06.2011, 21:17     Упорядочивание элементов массива #4
Это код для Visual C.
Надо удалить этот инклюд, а так же префиксы _t и _T в функции main.
RIcolette
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 17
12.06.2011, 21:19  [ТС]     Упорядочивание элементов массива #5
Цитата Сообщение от grizlik78 Посмотреть сообщение
Это код для Visual C.
Надо удалить этот инклюд, а так же префиксы _t и _T в функции main.
int _tmain(int argc, _TCHAR* argv[])

Все равно тут показывает ошибку ) expected
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 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
}
RIcolette
0 / 0 / 0
Регистрация: 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[])
Все равно та же ошибка.
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
12.06.2011, 21:30     Упорядочивание элементов массива #8
Ну про _T это я погорячился
вместо _TCHAR должно быть просто char
А лучше, действительно, просто пустые скобки
RIcolette
0 / 0 / 0
Регистрация: 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 минут
Ребят помоги пожалуйста
prootq
 Аватар для prootq
8 / 8 / 0
Регистрация: 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%
RIcolette
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 17
14.06.2011, 19:52  [ТС]     Упорядочивание элементов массива #11
Упорядочивание элементов массива

А можно сделать чтоб вот такой ответ выходил сразу без ввода данных с клавиатуры
RIcolette
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 17
15.06.2011, 21:40  [ТС]     Упорядочивание элементов массива #12
Помогите плиззиккк
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 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;
}
RIcolette
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 17
15.06.2011, 22:41  [ТС]     Упорядочивание элементов массива #14
На борланд с++ пойдет прога? или вы какую то другую программу си используете?
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
15.06.2011, 22:44     Упорядочивание элементов массива #15
Цитата Сообщение от RIcolette Посмотреть сообщение
Вложение 83727

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

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

Не по теме:

нет глючит

Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
15.06.2011, 23:18     Упорядочивание элементов массива #18
RIcolette, Вы запускали мой код на борланде? или вы заранее думаете, что работать не будет?

Цитата Сообщение от RIcolette Посмотреть сообщение
а ничего что у меня задание по убыванию надо сделать?
в 35 строке
измените знак
C++
1
if ( matr [ k ][ i ] > matr [ j ][ i ])
RIcolette
0 / 0 / 0
Регистрация: 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 минут
Помогите плизз =( сегодня сдавать =(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2011, 03:07     Упорядочивание элементов массива
Еще ссылки по теме:

С++ упорядочивание массива C++
C++ Упорядочивание массива c++. Объясните код программы
C++ Упорядочивание массива

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

Или воспользуйтесь поиском по форуму:
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
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 реализовать. Остальное, кажется, должно работать. Может чего не заметил.
Yandex
Объявления
16.06.2011, 03:07     Упорядочивание элементов массива
Ответ Создать тему
Опции темы

Текущее время: 11:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru