Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2013, 01:19   #1
mary1010
Пользователь
 
Регистрация: 16.09.2012
Сообщений: 14
Восклицание матрицы с++

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

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

У меня почему-то не получается вызвать функции и ошибки в 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
.....

вот собственно код:
Код:
//---------------------------------------------------------------------------
#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;
        }
 
}
mary1010 вне форума Ответить с цитированием
Старый 22.02.2013, 02:31   #2
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

1) DeleteColumn(int** inArray, int width); - что у вас значит эта строка? Разве так функции вызывают?
2) переменная i нигде не объявлена
3) переменная t объявлена, но нигде не используется
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 22.02.2013, 14:06   #3
mary1010
Пользователь
 
Регистрация: 16.09.2012
Сообщений: 14
По умолчанию

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
1) DeleteColumn(int** inArray, int width); - что у вас значит эта строка? Разве так функции вызывают?
2) переменная i нигде не объявлена
3) переменная t объявлена, но нигде не используется
я код "причесала"...НО! самое важное для меня сейчас - это понять как из findMax ПОЛУЧИТЬ номер столбца с макс. элементом и передать его в DeleteColumn!!!

вот код:
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#pragma argsused
#include <iostream>
#include <math.h>
#include <conio.h>
#include <stdio.h>
//---------------------------------------------------------------------------
using namespace std;

int** createMatrix(int);
void fillArray(int**, int);
void printArray(int**, int);
int DeleteColumn(int**,  int );
void findMax(int**,  int )  ;

int main()
{
        int** matrix;
        int length = 0;

        cout<<"enter matrix size" ;
        cin>>length;
        matrix = createMatrix(length);

        fillArray(matrix,length);
        cout << "Matrix which is filled manually:" << endl;
        printArray(matrix,length);

        findMax(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 findMax(int** inArray,  int width)
{
        int i=0, j=0;

        //searching max
        int max = inArray[i][j] ;

        for(i=0;i<width;i++)
        {
                for(j=0;j<width;j++)
                {
                        if(inArray[i][j]>max)
                        {
                                max=inArray[i][j];

                        }
                }
        }
        cout<<"max element=";
        cout<<max<<endl;
}

int DeleteColumn(int** inArray,  int  width)
{
        for(int i = 0; i < width; i++)
        {
                int* c = new int[width-1];
                for(int j = 0, k = 0; j < width; j++)
                {
                        if ( j != max[j]) //?????????????????????????????
                        {
                                c[k] = inArray[i][j];
                                k++;
                        }
                }
                int* old = inArray[i];
                inArray[i] = c;
                delete[] old;
        }
        return **inArray;
}
//-------------------------
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;
        }
}

Последний раз редактировалось mary1010; 23.02.2013 в 02:10.
mary1010 вне форума Ответить с цитированием
Старый 23.02.2013, 17:57   #4
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Как насчет сделать из
Код:
void findMax(int**,  int)
что-то вроде
Код:
int findMax(int**,  int)
Ввести там где-нибудь в функции переменную дополнительную.. сделать как-нибудь так:
Код:
int findMax(int** inArray,  int width)
...
         max=inArray[i][j];
         col_max = j;
...
return col_max;
}
Потом уже передавать это в DeleteColumn.

И что-то там, наверняка, в Вашей программе неправильно. Я не проверял, но.. эм.. шестое чувство подсказывает.
Μολὼν λαβέ
alexander13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перекодировать консолевкий код под оконное приложение в Билдер 6. Решаю матрицы Матрицы g.e.s Общие вопросы C/C++ 0 18.11.2012 20:21
В каждой строке матрицы А(n*n) найти наибольший и наименьший элементы матрицы и поменять их местами saha1994 Паскаль, Turbo Pascal, PascalABC.NET 2 15.05.2012 20:38
Первый элемент - размерность матрицы, остальные образуют строки этой матрицы Anastasiya_Pot Помощь студентам 2 10.04.2012 09:46
Ф-ия, определяющая сумму строк матрицы, если на главной диагонали матрицы имеется отрицательный эл-т. Volk_xD Помощь студентам 6 05.01.2011 13:39
На главную диагональ матрицы поместить наибольшие элементы этой матрицы mivel Помощь студентам 2 23.12.2009 21:19