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

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

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

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

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

Постановка задачи.

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

Решите пожалуйста кому не сложно и если можно с объяснением.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2011, 19:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Упорядочивание элементов массива (C++):

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

С++ упорядочивание массива - C++
ребят, в чём дело, упорядочиваю массив, а вылезают одинаковые числа, в чём ошибка? #include &lt;iostream&gt; using namespace std; int...

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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;
}
вот тебе ввод матрицы, а сортировку написать не успеваю, мне бежать пора..
0
RIcolette
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 17
12.06.2011, 21:14  [ТС] #3
Что то не работает =(
Выводит 2 ошибки, нет библиотеки stdafx.h
и в 7 строчке ) expected
0
grizlik78
Эксперт С++
1912 / 1444 / 112
Регистрация: 29.05.2011
Сообщений: 3,001
12.06.2011, 21:17 #4
Это код для Visual C.
Надо удалить этот инклюд, а так же префиксы _t и _T в функции main.
0
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
0
Mиxaил
533 / 438 / 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
}
0
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[])
Все равно та же ошибка.
0
grizlik78
Эксперт С++
1912 / 1444 / 112
Регистрация: 29.05.2011
Сообщений: 3,001
12.06.2011, 21:30 #8
Ну про _T это я погорячился
вместо _TCHAR должно быть просто char
А лучше, действительно, просто пустые скобки
1
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 минут
Ребят помоги пожалуйста
0
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%
0
RIcolette
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 17
14.06.2011, 19:52  [ТС] #11
Упорядочивание элементов массива

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

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

Добавлено через 1 минуту
писал в Visual Studio 2010 ( C++ )
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2011, 22:44
Привет! Вот еще темы с ответами:

Упорядочивание всего массива по убыванию - C++
Что нужно сделать чтобы упорядочить этот массив по убыванию? #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; main() { ...

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

Задачи на упорядочивание двумерного массива - C++
Нужно упорядочить все элементы двумерного массива по возрастанию. Программа не запускается, никак не могу найти ошибку. void z7 (int m,...

Упорядочивание столбцов матрицы и их элементов - C++
Всем привет. Нужно реализовать программу следующего плана: Дана матрица. Упорядочить элементы столбцов матрицы по неубыванию, а сами...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.06.2011, 22:44
Ответ Создать тему
Опции темы

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