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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2011, 20:48   #1
EddieG
Пользователь
 
Регистрация: 18.09.2010
Сообщений: 42
По умолчанию Вывод обратной матрицы

Есть код. Когда заполняю матрицу нечетным количеством элементов работает правильно, а когда четным - не так как нужно!
пример: если мы вводим
1
2
3
4
5
6
то работа реверсивной функции должна вывести:
1
5
4
3
2
6

а выводит почему-то:
1
5
4
3
2
1
и удивляет почему с нечетным размером работает...

Прошу указать, что нужно исправить.

Код:
 #include <iostream>
#include <windows.h>
using namespace std;

const int Max = 20;
char  bufRus[255];

char *Rus(const char* text)
{
CharToOem(text,bufRus);
return bufRus;
}

int Fill_array(double mas[], int lim);
void Show_array(double mas[], int n);
void Reverse_array(double mas[], int n);


int main()
{
    double mas[Max];
    int size = Fill_array(mas, Max);
    Show_array(mas, size);
    cout << endl;
    Reverse_array(mas, size);

    return 0;
}

int Fill_array(double mas[], int lim)
{
    double t;
    int i;
    for (i=0; i < lim; ++i)
    {
        cout << Rus("Введите значение №") << (i + 1) << ": ";
        cin >> t;
        if(!cin)
        {
            cin.clear();
            while (cin.get() != '\n')
            continue;
            cout << Rus("Неправильный ввод, процесс ввода прекращен.\n");
            break;
        }
        else if (t < 0)
        break;
        mas[i] = t;
    }
    return i;
}

void Show_array(double mas[], int n)
{
    for (int i=0; i < n; ++i)
    {
        cout << "Element #" << (i + 1) << ": ";
        cout << mas[i] << endl;
    }
}

void Reverse_array(double mas[], int n)
{
    int w = n - 1;
    double t;
    for (int i=w; i >= 0; i--)
    {
       t = mas[w];
       mas[w] = mas[0];
       mas[0] = t;

        cout << mas[i] << endl;
    }
}
Допущение несогласованных и логически несовместимых представлений - часть человеческого мышления.

Последний раз редактировалось EddieG; 01.02.2011 в 20:50.
EddieG вне форума Ответить с цитированием
Старый 01.02.2011, 22:26   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Код:
void inverse(int *a, int size){
     int i, tmp;
     for(i=0; i<size/2; i++){
         tmp = a[size-i-1];
         a[size-i-1] = a[i];
         a[i] = tmp;
     }
}
NiCola999 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение обратной матрицы lecume Общие вопросы C/C++ 2 18.12.2009 00:06
Нахождение обратной матрицы произвольного размера Widow Maker Помощь студентам 0 10.05.2009 12:09
Вычисление обратной матрицы методом Гаусса Штудент Общие вопросы C/C++ 0 07.12.2008 14:17