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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2015, 06:01   #1
admokep
Новичок
Джуниор
 
Регистрация: 10.01.2015
Сообщений: 3
По умолчанию Поменять местами первый и последний столбец

Помогите пожалуйста поменять местами первый и последний столбец массивов (их два) изначально программа написана для инвертирования каждой строки двумерного массива
Код:
#include <stdio.h>
#include <iostream.h>
#include <windows.h>
#include <winuser.h>
#pragma hdrstop
 
#pragma argsused
char* rus(const char* text) {
  char* bufRus = new char[strlen(text)];
  CharToOem(text, bufRus);
  return bufRus;
}
int main(int argc, char* argv[]) {
  int** matrix, N = 0, M = 0;
  int** matrix1;
  int i, j, c, n, g;
  cout << rus("Введите количество массивов: ");
  cin >> n;
  for (g = 0; g < n; g++) {
    {
      printf(rus("Количество строк= "));
      scanf("%d", &N);
      printf(rus("Количество столбцов= "));
      scanf("%d", &M);
    }
    if (N > 1 && M > 1) {
      c = M - 1;
      matrix = new int* [N];
      for (i = 0; i < N; i++) matrix[i] = new int[M];
      /*Ввод массива*/
      for (i = 0; i < N; i++) {
        for (j = 0; j < M; j++) {
          matrix[i][j] = rand() % 100;  // случайные числа от нуля до 99
        }
      }
      cout << rus("Исходная матрица") << endl;
      for (int i = 0; i < N; ++i) {
        for (int j = 0; j < M; ++j) cout << matrix[i][j] << " ";
        cout << endl;
      }
      matrix1 = new int* [N];
      for (i = 0; i < N; i++) matrix1[i] = new int[M];
      for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
          matrix1[i][j] = matrix[i][c - j];
        }
      }
      for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) matrix[i][j] = matrix1[i][j];
      }
      cout << rus("Матрица с инвертированными строками") << endl;
      for (int i = 0; i < N; ++i) {
        for (int j = 0; j < M; ++j) cout << matrix1[i][j] << " ";
        cout << endl;
      }
    } else {
      if (N <= 0 || M <= 0) {
        cout << rus("Матриц ") << N << ("X") << M << rus(" не существует")
             << endl;
      } else {
        cout << rus("Данная матрица не двумерный массив") << endl;
      }
    }
    cout << endl;
  }
  system("pause");
  return 0;
}
admokep вне форума Ответить с цитированием
Старый 12.01.2015, 07:39   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
поменять местами первый и последний столбец массивов
Код:
for(int i=0;i<N;i++) {
 int q=matrix[0][i]; matrix[0][i]=matrix[N-i-1][i]; matrix[N-i-1][i]=q;
     q=matrix1[0][i]; matrix1[0][i]=matrix1[N-i-1][i]; matrix1[N-i-1][i]=q;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.01.2015, 15:22   #3
admokep
Новичок
Джуниор
 
Регистрация: 10.01.2015
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
for(int i=0;i<N;i++) {
 int q=matrix[0][i]; matrix[0][i]=matrix[N-i-1][i]; matrix[N-i-1][i]=q;
     q=matrix1[0][i]; matrix1[0][i]=matrix1[N-i-1][i]; matrix1[N-i-1][i]=q;
}
Выходит вот это после замены
заменил с 43-46
что это? я что-то не дозаменял? подскажите пожалуйста!
admokep вне форума Ответить с цитированием
Старый 12.01.2015, 16:12   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

да кто ж вас всех учит пихать весь код в main()?! вы задолбали, читать же трудно!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 12.01.2015, 16:25   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
// ff.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <windows.h>
#include <winuser.h>
#pragma hdrstop
 
#pragma argsused
char* rus(const char* text) {
  char* bufRus = new char[strlen(text)];
  CharToOemA(text, bufRus);
  return bufRus;
}

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
 int** matrix, N = 0, M = 0;

  int i, j, c, n, g;

      printf(rus("Количество строк= "));
      scanf("%d", &N);
      printf(rus("Количество столбцов= "));
      scanf("%d", &M);

      c = M - 1;
      matrix = new int* [N];
      for (i = 0; i < N; i++) matrix[i] = new int[M];
      /*Ввод массива*/
      for (i = 0; i < N; i++) {
        for (j = 0; j < M; j++) {
          matrix[i][j] = rand() % 100; cout << matrix[i][j] << "\t";
        }; cout << endl;
      }cout << endl;


	  for(int i=0;i<M;i++) {
		 int q=matrix[i][0]; matrix[i][0]=matrix[i][M-1]; matrix[i][M-1]=q;
		}

      for (int i = 0; i < N; ++i) {
        for (int j = 0; j < M; ++j) cout << matrix[i][j] << "\t";
        cout << endl;
      }

  system("pause");
  return 0;
}
Для наглядности убрал лишнее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана матрица m на m,поменять первую строку и последний столбец местами Never_Die Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 13.05.2013 13:42
Turbo Pascal. В каждом нечетном по порядку слове поменять местами первый и последний символы cdc Помощь студентам 0 08.11.2012 14:21
Поменять в двумерном массиве местами первый и последний столбец }|{eka Паскаль, Turbo Pascal, PascalABC.NET 6 21.06.2012 20:19
Pascal.поменять местами первый и последний символ в последнем слове Kris92 Помощь студентам 5 07.07.2010 14:00
Задача на СИ в заданной матрице поменять местами первую строку и первый столбец %( defol-777 Помощь студентам 2 14.01.2009 09:59