Задача: Массивы, удаление столбца

Тема в разделе "C/C++/C#", создана пользователем Ponuliam, 28 дек 2009.

  1. Ponuliam

    Ponuliam New Member

    Регистрация:
    28 дек 2009
    Сообщения:
    1
    Симпатии:
    0
    Задание звучит следующим образом : Дано число k и матрица размера M x N. Удалить столбец матрицы с номером k.

    я создал это массив. кнопку которая задает мне размерность. ввожу числа в массив.
    сделал поле кужа ввожу это k. короче программа работает почти правильно, единственный касяк, который я не могу понять, как сделать так что бы послен удаление столбца в массиве, он не занулялся(как это получается у меня), а полностью затералсяю т.е что бы его больше не было в памяти программы. помогите мне пожалуйста очень нужно!!!! что я не так написпал или гже не дописал.




    Код (Text):
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    int i,j,k,a[100][100];
    int n, m;
    n=StrToInt(Edit2->Text);
    m=StrToInt(Edit3->Text);
    k=StrToInt(Edit1->Text);
    for(i=0;i<n;i++)
    {
    for(j=0;j<m;j++)
    {a[j][i]=StrToInt(StringGrid1->Cells[j][i]);    }

    }
    k--;
    for (i=0;i<=n;i++)
    {for (j=k;j<=m;j++)
    {a[j][i]=a[j+1][i];
    StringGrid1->Cells[j][i]=a[j][i];}
    StringGrid1->ColCount=m-1;

    }  
    }
     
  2. Гость

    Лучше массив а создавать динамически уже после ввода размерностей m и n.Затем переписать этот массив в другой ,допустим b с размерностью:b [m][n-1]. Присваивать будешь до k затем от k+1;
     
  3. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Код (C++):
    /*
    Дано число k и матрица размера M x N. Удалить столбец матрицы с номером k.
    */

    /*
    codeby.net
    Autor: DarkKnight125
    */


    #include <iostream>
    #include <time.h>

    using namespace std;

    void main(void)
    {
    int m,n;
    int k;
    int **Arr; //Наша матрица (указатель на массив указателей)
    int **Arr2; //Наша итоговая матрица без столбца
    setlocale(LC_ALL,".1251");// Поставим локаль в кодовую страницу 1251
    cout<<"Введите размерность 2-мерной матрицы(через пробел) : ";
    cin>> m >> n;
    cout<<"Введите номер удаляемого столбца k = ";
    cin>>k;
    srand(time(NULL)); //Инициализируем генератор случайной величины

    Arr = new int*[m]; //Выделим память под строки матрицы

    //Цикл заполнения матрицы случайными значениями и вывод ее на экран
    cout<< endl << "Искомая матрица :" << endl;
    for (int i = 0; i < m; i++)
    {
    Arr[i] = new int[n]; //Выделим память под столцы
    for (int j = 0; j<n; j++)
    {
    Arr[i][j] = rand()%100;
    cout<< Arr[i][j] << " ";
    }
    cout<< endl;
    }

    //Теперь к удалению столбца
    if (k > n) //Проверим не больше ли вообще k кол-ва наших столбцов в искомой матрице
    {
    cout<<"Error: Введенное значение K > N" << endl;
    return; //Если больше то выйдем
    }
    Arr2 = new int*[m]; //Выделим память кол-во строк у нас не поменялось
    cout<< endl << "Полученная матрица : " << endl;
    for (int i = 0; i < m; i++)
    {
    Arr2[i] = new int[n-1]; //Выделим память под столбцы на 1 меньше чем в искомой
    int pos = 0; //Позиция текущего столбца в новой матрице
    for (int j = 0; j < n; j++)
    {
    if (j != k-1) //Если j != k-1 то копируем элемент (k-1) используется потому что счет в массиве идет с нуля 0
    {
    Arr2[i][pos] = Arr[i][j];
    //сразу выводим на экран
    cout<<Arr2[i][pos]<< " ";
    pos++; //Увеличим позицию
    }  
    }
    cout<<endl;
    }

    //Почистим выделеную память
    for (int i = 0; i<m; i++)
    {
    delete Arr[i];
    delete Arr2[i];
    }
    delete[]Arr;
    delete[]Arr2;
    }
     

    Вложения:

Загрузка...
Похожие Темы - Задача Массивы удаление
  1. евгений311
    Ответов:
    0
    Просмотров:
    1.144
  2. Lizzz
    Ответов:
    1
    Просмотров:
    1.242
  3. filin94
    Ответов:
    1
    Просмотров:
    1.714
  4. Янчик
    Ответов:
    0
    Просмотров:
    478
  5. TrishaRay
    Ответов:
    1
    Просмотров:
    778

Поделиться этой страницей