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

Матрица

28.03.2011, 14:56. Показов 834. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста с программой, даже не знаю как это сделать (((
Программу нужно написать на С с использованием функций.
Задание: Сформировать матрицу M на N. Задать прямоугольник, который будит передвигаться по матрице слева на право. Следует пересчитывать сумму элементов, попадающих в прямоугольник и когда она будит максимальной, удалить элементы.

Пример:
Вводим n=9 m=4

2 3 4 5 6 7 3 2 1
9 3 2 8 3 2 3 5 6
2 3 7 8 9 0 1 2 6
3 4 5 7 8 0 1 0 0


Прямоугольник: k=3
Результат после удаления:

2 3 7 3 2 1
9 3 2 3 5 6
2 3 0 1 2 6
3 4 0 1 0 0

Помогите очень прошу!!!!!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2011, 14:56
Ответы с готовыми решениями:

Дана матрица целых чисел, из n строк и n столбцов (n < = 100).Определить является ли матрица нулевой (состоит из одних нулей)
#include &lt;iostream.h&gt; #include &lt;iomanip.h&gt; #include &lt;stdlib.h&gt; int main(int argc, char* argv) {...

Дана матрица целых чисел, из n строк и n столбцов (n < = 100).Определить является ли матрица нулевой (состоит из одних нулей)
#include &lt;iostream.h&gt; #include &lt;iomanip.h&gt; #include&lt;conio.h&gt; void main() { int mas; int N;...

Нужны преобразования: список смежных вершин -> список инцидентных ребер -> матрица инцидентности -> матрица смежности
Нужны такие преобразования: список смежных вершин -&gt; список инцидентных ребер -&gt; матрица...

Шаблон функции матрица-матрица
не понимаю как сделать шаблон для этого функции. Нужно написать для типа int и float. Операция...

10
Заблокирован
28.03.2011, 16:00 2
Матрица: строк m=4, столбцов n=9
Прямоугольник: строк m=4, столбцов k = 3.

Я правильно понимаю?
0
2 / 2 / 0
Регистрация: 04.03.2010
Сообщений: 57
29.03.2011, 12:34  [ТС] 3
Ага))) А вообще сами задаем! )))

Добавлено через 46 минут
Размерность может быть любая )))

Добавлено через 18 часов 21 минуту
Помогите!!!!!!
0
Заблокирован
29.03.2011, 14:28 4
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 setArray(int** mass,int rows,int cols)
{   cout<<"Input array elements\n";
    for (int i=0; i<rows; i++)
        for (int j=0; j<cols; j++)
                cin>>mass[i][j];
}
 
int sumWithin(int** mass,int rows,int colStart, int colEnd)
{   int i,j,s=0;
    for(i=0;i<rows;i++)
        for(j=colStart;j<colEnd;j++)
            s+=mass[i][j];
    return s;
}
 
void getResult(int**res,int** mass,int rows,int cols, int colStart, int width)
{   int i,j,k;
    for(i=0;i<rows;i++)
        for(j=0,k=0;j<cols;j++)
            if(j<colStart || j>colStart+width-1)
            { res[i][k]=mass[i][j];
                k++;
            }
}
 
void showArray(int** mass,int rows,int cols)
{   for (int i=0; i<rows; i++)
    {   for (int j=0; j<cols; j++)
                cout<<mass[i][j];
        cout<<"\n";
    }
}
 
int main()
{   int m,n,k,i,s,cur;
    cout<<"m = ";
    cin>>m;
    cout<<"n = ";
    cin>>n;
    do
    {   cout<<"(k<n)  k = ";
        cin>>k;
    }while(k>=n);
 
    int** matrix = new int*[m];
        for (i=0; i<m; i++)
               matrix[i] = new int [n];
    setArray(matrix,m,n);
 
    int max=INT_MIN, maxPos;
    for(s=0;s<n-k+1;s++)
    {   cur = sumWithin(matrix,m,s,k+s);
        if(cur>max) 
        {   max = cur;
            maxPos = s;
        }
    }
 
    int** result = new int*[m];
        for (i=0; i<m; i++)
               result[i] = new int [n-k];
    getResult(result,matrix,m,n,maxPos,k);
 
    cout<<"\n\nThe initial array:\n";
    showArray(matrix,m,n);
 
    cout<<"The maximum sum: "<<max<<" from column "<<maxPos<<" to "<<maxPos+k-1<<"\n";
    cout<<"\n\nThe result array:\n";
    showArray(result,m,n-k);
 
    delete []matrix;
    delete []result;
 
    cin.sync();cin.get();
    return 0;
}
Результат выполнения:
Миниатюры
Матрица  
1
2 / 2 / 0
Регистрация: 04.03.2010
Сообщений: 57
29.03.2011, 17:03  [ТС] 5
Огромное вам спасибо. Только не могли бы вы немного объяснить, я хочу разобраться.

Добавлено через 10 минут
Чет у меня не работает. Что может быть не так???
0
Заблокирован
29.03.2011, 17:30 6
Что может быть не так???
Другие заголовочные файлы и вместо cin/cout scanf/printf.

Сбросьте какую-нибудь ма-аленькую программку, которая у вас работает. Или скажите, если знаете, какой у вас компилятор.
1
2 / 2 / 0
Регистрация: 04.03.2010
Сообщений: 57
29.03.2011, 17:39  [ТС] 7
У меня Dev C++
0
Заблокирован
29.03.2011, 17:44 8
У меня MSVS - работает.
И у вас должно.

Аккуратно нажимайте кнопочки ^C / ^V.
1
2 / 2 / 0
Регистрация: 04.03.2010
Сообщений: 57
29.03.2011, 18:11  [ТС] 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
#include <math.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
        int i, nmax2, nmax;
        int max2, max, s, n;
        int mas1[n];
        time_t t;
        srand((unsigned) time(&t));
        printf("\n Vvedite n ");
    scanf("%d",&n);
        printf("\n -------------------------------------------------- ");
        printf("\n V E K T O R\n");
        printf("\n --------------------------------------------------\n ");
        for (i=0; i<n ;i++)
        {
                mas1[i]=rand()%20-10;
            printf(" %3d",mas1[i]);
            if ((i+1)%n==0)printf("\n");
        }
        max=-30;
        max2=-30;
        for (i=0; i<n ;i++)
        {
                
                if (mas1[i]>max)
                {
                        max=mas1[i];
                    nmax=i;
        }
        }
        {
                mas1[nmax]=-40;
                }
        
        for (i=0; i<n ;i++)
        {
            if (mas1[i]>max2)
        {
                        max2=mas1[i];
                    nmax2=i;
        }
        }
        printf("\n --------------------------------------------------\n ");
        printf("\n max=%2d\t        nmax=%2d\n",max,nmax);
        printf("\n max2=%2d\tnmax2=%2d\n",max2,nmax2);
        printf("\n -------------------------------------------------- ");
        s=max+max2;
        printf("\n smax=%2d\n",s);
        printf("\n --------------------------------------------------\n ");
         printf("\n");
        system("PAUSE"); 
        return EXIT_SUCCESS;
}
0
Заблокирован
30.03.2011, 01:44 10
Elena0602,
возможно для вас это будет новостью, но вы программируете на Си, а не на С++.
Это - на будущее. Когда будете задачки заказывать, указывайте: мне на Си.
0
2 / 2 / 0
Регистрация: 04.03.2010
Сообщений: 57
30.03.2011, 14:50  [ТС] 11
Так я же в задании писала
Программу нужно написать на С с использованием функций.
0
30.03.2011, 14:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2011, 14:50
Помогаю со студенческими работами здесь

Даны квадратная матрица A порядка n и вектор с n элементами. Получить вектор: (A=E)b, где E единичная матрица порядка n
Даны квадратная матрица A порядка n и вектор с n элементами. Получить вектор: (A=E)b, где...

Определить базовый класс "Матрица" и класс-потомок "Треугольная матрица"
Нужно определить класс &quot;матрица&quot; с возможностью динамического выделения и освобождения памяти,...

матрица
помогите решить задачку,препод запарывает по полной дана матрица n*n(n-четное),в которой каждый...

Матрица
короче вот такая хрень)) Дана целочисленная квадратная матрица. Определить: 1). произведение...


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

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