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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2015, 06:12   #1
Vitalyas
Пользователь
 
Регистрация: 25.11.2014
Сообщений: 47
Восклицание Замена строк в матрице

Всем привет!
Задача такова:"Задан двумерный массив размерности MxN. Поменять в нем 0-ую строку с (n-1)-ой, 1-ю с (n-2)-ой и т.д. Значение элементов массива ввести с клавиатуры результат вывести на экран и в файл."

Проблема возникла с тем, что после обмена строк у почему-то обнулились первые элементы строк.




Код программы:
Код:
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
#pragma hdrstop
#pragma argsused
#define M 3
#define N 3

int main(int argc, char* argv[])
{
   int g,k,temp,i,j,a[M][N];
   l1:
   cout<<"Enter the elements of the matrix\n"; //Ввод элементов матрицы
   for (i=0; i<M; i++) //Цикл по переменной i, в котором перебираем строки матрица
      for (j=0; j<N; j++) //Цикл по переменной j, в котором перебираем элементы внутри строки
         cin>>a[i][j]; //Ввод очередного элемента матрицы
   cout<<"\nThe initial matrix:\n";
   for (i=0; i<M; i++) //Цикл по переменной i, в котором перебираем строки матрицы
      {
         for (j=0; j<N; j++) //Цикл по переменной j, в котором перебираем элементы внутри строки
            cout<<a[i][j]<<"\t"; //Вывод очередного элемента матрицы
         cout<<endl; //Переход на новую строчку
      }
   for (i=0; i<M; i++) //Цикл по переменной i, в котором перебираем строки матрицы
      for (k=0; k<(M-1)-i; k++) //Цикл сортировки
         for (j=0; j<N; j++) //Цикл по переменной j, в котором перебираем элементы внутри строки
            {
               temp=a[i][j]; //Сохраняем исходное значение в переменную
               a[i][j]=a[M-k][j]; //Обмениваемся значениями
               a[M-k][j]=temp; //Возврат исходного значения в конец
            }
   cout<<"\nThe sorted matrix:\n";
   for (i=0; i<M; i++) //Цикл по переменной i, в котором перебираем строки матрицы
      {
         for (j=0; j<N; j++) //Цикл по переменной j, в котором перебираем элементы внутри строки
            cout<<a[i][j]<<"\t"; //Вывод очередного элемента матрицы
         cout<<endl; //Переход на новую строчку
      }
   cout<<endl; //Переход на новую строчку
   char t[40];
   cout<<"Enter filename for output matrix: \n";
   cin>>t;
   ofstream f(t);
   f << M << " " << N << endl;
   for(i = 0; i < M; i++)
      {
         for (j = 0; j < N; j++)
         f << a[i][j] << " ";
         f << endl;
      }
   f.close();
   //Меню
   cout<<"\n1-Repeat\n0-Exit\n";
   cin>>g;
   if (g!=0 && g!=1) {cout<<"\nEntered an incorrect value. The program automatically closes\n"; getch();}
   else
       {
          if (g==1) {goto l1;}
          else {goto l2;};
       }
   l2:
   exit(0);
}

Последний раз редактировалось Stilet; 16.06.2015 в 09:13.
Vitalyas вне форума Ответить с цитированием
Старый 16.06.2015, 09:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
   for(i = 0; i < M/2; i++)
      {
         for (j = 0; j < N; j++){
          int v=a[i][j]; a[i][j]=a[M-i-1][j]; a[M-i][j]=v;
         }
      }
Не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.06.2015, 09:23   #3
Vitalyas
Пользователь
 
Регистрация: 25.11.2014
Сообщений: 47
По умолчанию

Нет, не подходит.
Проблема получается при обмене, но не знаю почему там проблема...

У вас там была небольшая ошибочка
Вот который подходит:
Код:
   for(i = 0; i < M/2; i++)
      {
         for (j = 0; j < N; j++){
          int v=a[i][j]; a[i][j]=a[M-i-1][j]; a[M-i-1][j]=v;
         }
      }

Последний раз редактировалось Vitalyas; 16.06.2015 в 10:56.
Vitalyas вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить номера строк в матрице... Wunschpunsch Помощь студентам 3 05.04.2014 21:00
Удаление строк в матрице. ONIS Паскаль, Turbo Pascal, PascalABC.NET 0 25.12.2011 14:27
Задача на исключение строк в матрице DRAG Помощь студентам 11 20.04.2011 21:31
посчитать количество строк в матрице M*N Таняпервокурсница Помощь студентам 4 03.06.2010 18:30
Перестановка строк матрице gotex Помощь студентам 1 24.11.2008 20:40