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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2012, 20:53   #1
Geneva
Новичок
Джуниор
 
Аватар для Geneva
 
Регистрация: 16.11.2012
Сообщений: 3
По умолчанию Массивы и матрицы (С++)

Здравствуйте, очень нуждаюсь в вашей помощи.
У меня есть программный код с описанием, но мне говорят что описание надо максимально подробное. Увы не знаю что еще написать
Код:
#include <iostream>
using namespace std;

int main()
{
	int n;                             // размер массива
                               
  int a;                               // резервное хранилище
  cout << "введите количество чисел: ";
  cin >> n;                            // происходит считывание размера массива 
                                       // так объявлять массив int arr[n] нельзя, потому что нужно выделять не стековую, а динамическую память
  char *arr= new char [n+1];           // объявляем массив больше на 1
  cout << "введите " <<n<< "целых чисел:";
  for (int i=0; i<n; ++i)
	  cin >> arr[i];                   // происходит считывание массива
  arr[n]='\0';                         // считываться будут только мои значения
  for (int i=0; i<n-3; i+=4)
  {
	  a=arr[i];
	  arr[i]=arr[i+2];
	  arr[i+2]=a;
	  a=arr[i+1];
	  arr[i+1]=arr[i+3];
	  arr[i+3]=a;
  };
  for (int i=0; i<n; ++i)
	  cout << arr[i] << " ";          // происходит вывод массива на экран
  cout << endl;                       // курсор перемещается на новую строчку
	return 0;
}

Последний раз редактировалось Geneva; 16.11.2012 в 23:55.
Geneva вне форума Ответить с цитированием
Старый 16.11.2012, 21:00   #2
Axrik
Форумчанин
 
Аватар для Axrik
 
Регистрация: 17.12.2011
Сообщений: 111
По умолчанию

Код:
for (int i=0; i<n-3; i+=4)
  {
	  a=arr[i];            // запоминаем arr[i]
	  arr[i]=arr[i+2];   // присваиваем пер-ой arr[i] значение, хранящееся в ячейке arr[i+2]
	  arr[i+2]=a;        // a пер-ой arr[i+2] предыдущее значение пер-ой arr[i]
	  a=arr[i+1];
	  arr[i+1]=arr[i+3];
	  arr[i+3]=a;
  };
Вообщем прокомментируйте этот кусок кода, он всё-таки не самый "левый" в проге.
Какие именно слова использовать это лучше знать вам, вы ведь знаете своего препода лучше, чем я
Axrik вне форума Ответить с цитированием
Старый 16.11.2012, 22:44   #3
Geneva
Новичок
Джуниор
 
Аватар для Geneva
 
Регистрация: 16.11.2012
Сообщений: 3
По умолчанию

Axrik, спасибо)
Geneva вне форума Ответить с цитированием
Старый 16.11.2012, 23:56   #4
Geneva
Новичок
Джуниор
 
Аватар для Geneva
 
Регистрация: 16.11.2012
Сообщений: 3
По умолчанию

а подскажите пожалуйста еще, какие комментарии можно дополнить вот здесь
Код:
#include <iostream>
int main()
{
int a[2][2]; int b[2][2]; int r[2][2];
a[0][0]=1;
a[0][1]=1;
a[1][0]=1;
a[1][1]=0;

b[0][0]=1;
b[0][1]=0;
b[1][0]=0;
b[1][1]=1;

int n=5;				     // объявляем n, n- степень возведения
r[0][0]=0;
r[0][1]=0;
r[1][0]=0;
r[1][1]=0;

cout << r;
  while ( n != 0 )                           // до тех пор пока n не равно 0
  {
   if (n%2==0)                               // если n - четное
   { cout <<"then";
     n=n/2;                                  // делим n на 2
     for (int i=0; i<2; ++i)                      
     {                                       // возводим матрицу а в квадрат
       for (int j=0; j<2; ++j)
        { 
          int s=0;        
          for (int l=0; l<2; ++l)            //  параметр возрастания
           {          
             s+=a[i][l]* a[l][j];
           }
             r[i][j]=s;                      // помещаем результат в r
        }
     } 
for (int i=0; i<2; ++i)                      // происходит обновление a
     {
       for (int j=0; j<2; ++j)
        { 
         a[i][j]=r[i][j]; 
        }
     }
   }   
else                                         // в противном случае, когда n - нечетно
{ cout <<"else";
  n=n-1;                                     // производим вычитание n-1
  for (int i=0; i<2; ++i)
   {                                         // перемножаем b и a
     for (int j=0; j<2; ++j)
      { 
        int s=0;        
        for (int l=0; l<2; ++l)
          {          
           s+=b[i][l]* a[l][j];
          }
           r[i][j]=s;                        // результат опять помещаем в r
          
      }
   }
 
for (int i=0; i<2; ++i)                      // теперь происходит обновление b
     {                                                 
       for (int j=0; j<2; ++j)
        { 
         b[i][j]=r[i][j]; 
        }
     }   
  }

}
 
cout<<b;                                     // выводим конечный результат b 
}
Geneva вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы поиск элементов танкек Паскаль, Turbo Pascal, PascalABC.NET 2 28.02.2012 10:11
Перенос элементов массива McFrey Помощь студентам 2 10.12.2011 23:49
массивы строк. перенос в таблицы deathz0r Помощь студентам 1 23.11.2011 21:48
Перенос отельных элементов табл. Exel в Word Mirck Microsoft Office Excel 2 17.11.2011 12:53
Си. перенос элементов одного массива в другой Денни Помощь студентам 7 07.02.2010 15:34