Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
mary1010
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 32
#1

Матрицы. Программа, которая удаляет столбец матрицы, содержащий максимальный ее элемент

22.02.2013, 01:09. Просмотров 1472. Ответов 27
Метки нет (Все метки)

Я новичок в с++...поэтому оооочень нужна Ваша помощь!!!

Необходимо написать программу, которая удаляет столбец матрицы, содержащий максимальный ее элемент. Элементы
вводятся с клавиатуры и еще нужно использовать функции.

У меня почему-то не получается вызвать функции и ошибки в DeleteColumn типа:
1.[C++ Error] Unit1.cpp(29): E2188 Expression syntax
2.[C++ Error] Unit1.cpp(46): E2451 Undefined symbol 'i'
.....
3.[C++ Warning] Unit1.cpp(71): W8004 't' is assigned a value that is never used
.....

вот собственно код:
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 <vcl.h>
#pragma hdrstop
#pragma argsused
#include <iostream>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <ctime>
//---------------------------------------------------------------------------
using namespace std;
 
int** createMatrix(int);
void fillArray(int**, int);
void printArray(int**, int);
void DeleteColumn(int** inArray,  int width);
 
 int main()
{
int** matrix;
int length = 0;
 
matrix = createMatrix(length);
 
fillArray(matrix,length);
cout << "Matrix which is filled manually:" << endl;
printArray(matrix,length);
 
DeleteColumn(int** inArray,  int width);
cout << "New matrix:" << endl;
printArray(matrix,length);
system("pause");
}
 
int** createMatrix(int width)
{
int** matrix = new int*[width];
for (int i = 0; i < width; i++)
matrix [i] = new int[width];
return matrix;
}
//------------------------
void DeleteColumn(int** inArray,  int width )
{
 //searching max
 int l = inArray[i][j] ;
 int s=0;
 int t=0;
        for(i=0;i<width;i++)
           for(j=0;j<width;j++)
                if(inArray[i][j]>l)
                {
                l=inArray[i][j];
                t=i;
                s=j;
                }
        cout<<"max element=";
        cout<<l<<endl;
 
 //deleting column of a matrix
 for (j=0; j<width; j++)
   for (i=0;i<width; i++)
        if (inArray[i][j]=l)
               {
                       for (i=0; i<width; i1++)
                            for (i1=j; i1<(width-1); i1++)
                                 inArray[i][i1]=inArray[i][i1+1];
                       i=0;
                                         
                }
 }
//-------------------------
void fillArray(int** inArray, int width)
{
        for(int i = 0; i<width; i++)
           for(int j=0; j<width; j++)
{
 
cout << "Enter cell [" << i <<"," << j << "]"<< endl;
cin >> inArray[i][j];
}
 
}
 
void printArray(int** inArray, int width)
{
        for(int i = 0; i<width; i++){
          for(int j=0; j<width; j++)
{
cout << inArray[i][j] << " ";
}
cout << endl;
        }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2013, 01:09
Ответы с готовыми решениями:

Поменять местами столбцы матрицы: столбец, содержащий максимальный элемент матрицы, и столбец, содержащий минимальный элемент матрицы.
В матрице, состоящей из положительных действительных чисел поменять местами два...

Удалить столбец, содержащий максимальный элемент матрицы
Дана матрица размера M х N. Удалить столбец, содержащий максимальный элемент...

Удалить столбец, содержащий максимальный элемент матрицы.
Дана матрица размера M × N. Удалить столбец, содержащий максимальный элемент...

Удалить столбец, содержащий максимальный элемент матрицы
Дана матрица размера M × N. Удалить столбец, содержащий максимальный элемент...

Дана матрица размера 4х9. Обнулить столбец матрицы, содержащий ее максимальный элемент
Дана матрица размера 4х9. Обнулить столбец матрицы, содержащий ее максимальный...

27
Kuzia domovenok
Нарушитель
2243 / 2012 / 457
Регистрация: 25.03.2012
Сообщений: 7,088
Записей в блоге: 1
22.02.2013, 01:12 #2
Цитата Сообщение от mary1010 Посмотреть сообщение
DeleteColumn(int** inArray, *int width);
это что?
0
mary1010
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 32
22.02.2013, 01:14  [ТС] #3
Kuzia domovenok, функция, которая столбец удаляет и ищет максимальный элемент
0
vua72
417 / 417 / 166
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
22.02.2013, 01:14 #4
C++
1
int l = inArray[i][j] ;
у вас не поределены переменные i j
0
mary1010
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 32
22.02.2013, 01:18  [ТС] #5
vua72, поределены?...
типо не проинициализированы?а как это сделать?и почему это действие не требовалось в других функциях?
0
Kuzia domovenok
Нарушитель
2243 / 2012 / 457
Регистрация: 25.03.2012
Сообщений: 7,088
Записей в блоге: 1
22.02.2013, 01:22 #6
дружище, да ты походу не способен инициализировать массивы и вызывать функции. Как же ты написал весь этот код? Выделение памяти, например?
Лучше вместо того, чтобы заморачиваться со своей программой, потренируйся просто вызывать функции на более простом примере.
0
vua72
417 / 417 / 166
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
22.02.2013, 01:23 #7
не определены, вы их вообще не объявили.
напишите перед строкой int i=0, j=0;

Добавлено через 1 минуту
там вообще вся функция с необъявленными переменными.
1
mary1010
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 32
22.02.2013, 01:34  [ТС] #8
vua72,
Kuzia domovenok, а что все таки значит: [C++ Error] Unit1.cpp(29): E2188 Expression syntax?
что не так с синтаксисом?
0
Kuzia domovenok
Нарушитель
2243 / 2012 / 457
Регистрация: 25.03.2012
Сообщений: 7,088
Записей в блоге: 1
22.02.2013, 01:41 #9
это значит, что так
Цитата Сообщение от mary1010 Посмотреть сообщение
DeleteColumn(int** inArray, *int width);
не вызывают функции.
в функцию надо передать аргументы, а не просто копировать прототип.
1
vua72
417 / 417 / 166
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
22.02.2013, 01:44 #10
вы скопировали прототип, а нужно вызвать функцию, у вас матрица как в main зовется? А ее размер?
1
mary1010
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 32
22.02.2013, 02:07  [ТС] #11
vua72, значит правильно так?
C
1
DeleteColumn(matrix, length);
остается: [C++ Warning] Unit1.cpp(73): W8004 's' is assigned a value that is never used
[C++ Warning] Unit1.cpp(73): W8004 't' is assigned a value that is never used
0
vua72
417 / 417 / 166
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
22.02.2013, 02:12 #12
у вас объявлены в программе две переменные s и t, но никогда не используются
1
mary1010
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 32
22.02.2013, 02:13  [ТС] #13
vua72, спасибо)
но функции не вызываются...
0
vua72
417 / 417 / 166
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
22.02.2013, 02:15 #14
выкладывайте последний код
0
mary1010
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 32
22.02.2013, 02:19  [ТС] #15
vua72,
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
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#pragma argsused
#include <iostream>
#include <math.h>
#include <conio.h>
#include <stdio.h>
//#include <ctime>
//---------------------------------------------------------------------------
using namespace std;
 
int** createMatrix(int);
void fillArray(int**, int);
void printArray(int**, int);
void DeleteColumn(int**,  int );
 
 int main()
{
int** matrix;
int length = 0;
 
matrix = createMatrix(length);
 
fillArray(matrix,length);
cout << "Matrix which is filled manually:" << endl;
printArray(matrix,length);
 
DeleteColumn(matrix, length);
cout << "New matrix:" << endl;
printArray(matrix,length);
system("pause");
}
 
int** createMatrix(int width)
{
int** matrix = new int*[width];
for (int i = 0; i < width; i++)
matrix [i] = new int[width];
return matrix;
}
//------------------------
void DeleteColumn(int** inArray,  int width )
{ int i=0, j=0, i1=0;
 
 
 //searching max
 int l = inArray[i][j] ;
 int s=0;
 int t=0;
        for(i=0;i<width;i++)
           for(j=0;j<width;j++)
                if(inArray[i][j]>l)
                {
                l=inArray[i][j];
                t=i;
                s=j;
                }
        cout<<"max element=";
        cout<<l<<endl;
 
 //deleting column of a matrix
 for (j=0; j<width; j++)
   for (i=0;i<width; i++)
        if (inArray[i][j]==l)
               {
                       for (i=0; i<width; i++)
                            for (i1=j; i1<(width-1); i1++)
                                 inArray[i][i1]=inArray[i][i1+1];
                       i=0;
 
                }
 }
//-------------------------
void fillArray(int** inArray, int width)
{
        for(int i = 0; i<width; i++)
           for(int j=0; j<width; j++)
{
 
cout << "Enter cell [" << i <<"," << j << "]"<< endl;
cin >> inArray[i][j];
}
 
}
 
void printArray(int** inArray, int width)
{
        for(int i = 0; i<width; i++){
          for(int j=0; j<width; j++)
{
cout << inArray[i][j] << " ";
}
cout << endl;
        }
 
}
0
Kuzia domovenok
Нарушитель
2243 / 2012 / 457
Регистрация: 25.03.2012
Сообщений: 7,088
Записей в блоге: 1
22.02.2013, 02:28 #16
Цитата Сообщение от mary1010 Посмотреть сообщение
int length = 0;
matrix = createMatrix(length);
что ты тут делаешь? Объясни.
Ты хоть сам понимаешь, что пишешь? Или кто-то тебе написал отрывками, а ты копируешь себе.
0
vua72
417 / 417 / 166
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
22.02.2013, 02:39 #17
mary1010, проверьте свой код, напишите алгоритм словами на листике, иначе никак. Вы выделяете память под массив какого размера? И где?

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
for (j = 0; j < width; j++)
        for (i = 0; i < width; i++)
            if (inArray[i][j] == l) {
                for (i = 0; i < width; i++)
                    for (i1 = j; i1 < (width - 1); i1++)
                        inArray[i][i1] = inArray[i][i1 + 1];
                i = 0;
 
            }
и почему вы не можете выйти из этого цикла?
1
mary1010
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 32
22.02.2013, 02:45  [ТС] #18
Kuzia domovenok, length - размерность матрицы
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
matrix = createMatrix(length)
- создание матрицы с заданной размерностью....я так понимаю...
части кода писали на лекции и я включила их в программу, если что-то получается не совсем корректно, то прошу извинить, я только на 1 курсе и с преподавателем не очень повезло
0
Kuzia domovenok
Нарушитель
2243 / 2012 / 457
Регистрация: 25.03.2012
Сообщений: 7,088
Записей в блоге: 1
22.02.2013, 03:09 #19

Не по теме:

Цитата Сообщение от mary1010 Посмотреть сообщение
я только на 1 курсе и с преподавателем не очень повезло
ты только УЖЕ на первом курсе и преподаватель никому ничего не обязан


Впрочем, твоё дело.
По теме. Ты пытаешься создать матрицу нулевого размера. Где задаётся length?
1
mary1010
0 / 0 / 0
Регистрация: 17.09.2012
Сообщений: 32
22.02.2013, 03:13  [ТС] #20
Kuzia domovenok,
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
преподаватель никому ничего не обязан
знаю, что не обязан...но тяжело...
спасибо, буду разбираться
0
22.02.2013, 03:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2013, 03:13

Максимальный элемент матрицы заменить на нуль и вывести на печать угол матрицы, в котором расположен этот максимальный элемент
Помогите, пожалуйста, добить программу: -Максимальный элемент матрицы заменить...

Удалить столбец, содержащий минимальный элемент матрицы (как сократить код?)
Приветствую. Подскажите, можно ли как-то сократить код? Мне он кажется...

Дана матрица размера M × N. Продублировать столбец матрицы, содержащий ее минимальный элемент.
Дана матрица размера M × N. Продублировать столбец матрицы, содержащий ее...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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