Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 23.05.2015, 17:10   #1
petz96
 
Регистрация: 23.05.2015
Сообщений: 4
По умолчанию Исправить код на С++

1) Дан массив x0, x1, x2,…, xn-1. Определить произведение значений положительных элементов массива, лежащих между элементами с максимальным по абсолютной величине значением и с минимальным значением.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов столбцов областей 3 и 4 (см. рисунок) с одинаковыми номерами.
Код:
#include <iostream>

using namespace std;

void negative_elements(int* array1, int n)
{
 int max, abs_min, res1, res2 = 0, result = 1, k=0;

	abs_min = abs(array10);
	for ( int i = 1; i < n; i++)
	{
		if (abs(array1[i]) < abs_min)
		{
			abs_min = array1[i];
			res1 = i;
		}
	}
	cout << " Минимальное по абсолютному значению: " << abs_min << endl;

	max = array1[0];

	for ( int i = 1; i < n; i++)
	{
		if (array1[i]  > max)
		{
			max = array1[i];
			res2 = i;
		}
	}

	cout << " Максимальное значение: "  << max << endl;

	for (int i = res1+1; i < res2; i++)
	{
		if (array1[i] < 0)
		{
			result = result * array1[i];
			k++;
		}
	}
		cout << " Количество отрицательных элементов на участке: " << k << endl;
		cout << " Их произведение: " << result << endl;
}

void swap_areas(int **array2, int N)
{
	int TEMP = N / 2;
	int TEMP2 = TEMP;

	for (int i = TEMP-1; i >= 0; i--)
	{
		for (int j = 0; j < TEMP2; j++)
		{
			int swap = array2[i][j];
			array2[i][j] = array2[N - i - 1][j];
			array2[N - i - 1][j] = swap;
		}
		TEMP2 = TEMP2 - 1;
	}

	cout << " Элементы массива " << N << "x" << N << " после перестановки\n";
	for (int i = 0; i < N; i++)
	{
	for (int j = 0; j < N; j++)
	{
	cout << array2[i][j] << " ";
	}
	cout << endl;
	}
}

int main()
{
	setlocale(LC_ALL, "Russian");

	int x;

	cout << " Выберите действие:\n";
	cout << " 1 - Произведение отрицательных чисел на участке массива.\n";
	cout << " 2 - Перестановка местами 2х областей 2х мерного массива.\n";

	cin >> x;

	switch (x)
	{
	case 1:
		int* array1;
		int n, i;

		cout << " Введите размер массива:\n";

		cin >> n;
		array1 = new int[n];

		cout << " Введите элементы массива :\n";
		for (i = 0; i < n; i++)
		{
			cin >> array1[i];
		}

		negative_elements(array1, n);
		break;

	case 2:
		int  j, N;

		cout << " Введите размер квадратной матрицы 2*N:\n";
		cin >> N;
		cout << endl;
		N = 2 * N;


		int **array2 = new int*[N];
		for (i = 0; i < N; i++)
		{
			array2[i] = new int[N];
		}

		cout << " Введите элементы массива " << N << "x" << N << endl;
		for (i = 0; i < N; i++)
		{
			for (j = 0; j < N; j++)
			{
				cin >> array2[i][j];
			}
		}


		swap_areas(array2, N);

	}
		system("pause");
}

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

1) А что именно исправлять?
2) Где рисунок то?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.05.2015, 19:07   #3
petz96
 
Регистрация: 23.05.2015
Сообщений: 4
По умолчанию

Программа написана для этой задачки: Дан массив y0, y1, y2,…, yn-1. Определить количество и произведение значений отрицательных элементов массива, лежащих между элементами с минимальным по абсолютной величине значением и с максимальным значением.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов столбцов областей 7 и 8 (см. рисунок) с одинаковыми номерами.
А надо для этой: 1) Дан массив x0, x1, x2,…, xn-1. Определить произведение значений положительных элементов массива, лежащих между элементами с максимальным по абсолютной величине значением и с минимальным значением.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов столбцов областей 3 и 4 (см. рисунок) с одинаковыми номерами.жжж.png
petz96 вне форума Ответить с цитированием
Старый 23.05.2015, 21:46   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

По видимому нужно делать так:
Код:
void swap_areas(int **array2, int N)
{
 int k=0;
	for (int i = 2*N; i >= N; i--,k++)
	{
		for (int j = k; j < N; j++)
		{
			int swap = array2[i][j];
			array2[i][j] = array2[N - i - 1][j];
			array2[N - i - 1][j] = swap;
		}

	}

	cout << " Элементы массива " << N << "x" << N << " после перестановки\n";
	for (int i = 0; i < N; i++)
	{
	for (int j = 0; j < N; j++)
	{
	cout << array2[i][j] << " ";
	}
	cout << endl;
	}
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.05.2015, 13:27   #5
petz96
 
Регистрация: 23.05.2015
Сообщений: 4
По умолчанию

Программа не находит произведение значений положительных элементов массива и не перестанавливает элементы массива. Помогите найти ошибку.
Код:
#include <iostream>
 
using namespace std;
 
void negative_elements(int* array1, int n)
{
    int min, abs_max, res1, res2 = 0, result = 1;
 
    abs_max = abs(array1[0]);
    for (int i = 1; i < n; i++)
    {
        if (abs(array1[i]) > abs_max)
        {
            abs_max = array1[i];
            res1 = i;
        }
    }
    cout << " Максимальное по абсолютному значению: " << abs_max << endl;
 
    min = array1[0];
 
    for (int i = 1; i < n; i++)
    {
        if (array1[i]  < min)
        {
            min = array1[i];
            res2 = i;
        }
    }
 
    cout << " Минимальное значение: " << min << endl;
 
    for (int i = res1 + 1; i > res2; i++)
    {
        if (array1[i] < 0)
        {
            result = result * array1[i];
        }
    }
    cout << " Произведение значений положительных элементов массива: " << result << endl;
}
 
void swap_areas(int **array2, int N)
{
    int k = 0;
    for (int i = 2 * N; i >= N; i--, k++)
    {
        for (int j = k; j < N; j++)
        {
            int swap = array2[i][j];
            array2[i][j] = array2[N - i - 1][j];
            array2[N - i - 1][j] = swap;
        }
 
    }
 
    cout << " Элементы массива " << N << "x" << N << " после перестановки\n";
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            cout << array2[i][j] << " ";
        }
        cout << endl;
    }
}
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int x;
 
    cout << " Выберите действие:\n";
    cout << " 1 - Произведение положительных чисел на участке массива.\n";
    cout << " 2 - Перестановка местами 2х областей 2х мерного массива.\n";
 
    cin >> x;
 
    switch (x)
    {
    case 1:
        int* array1;
        int n, i;
 
        cout << " Введите размер массива:\n";
 
        cin >> n;
        array1 = new int[n];
 
        cout << " Введите элементы массива :\n";
        for (i = 0; i < n; i++)
        {
            cin >> array1[i];
        }
 
        negative_elements(array1, n);
        break;
 
    case 2:
        int  j, N;
 
        cout << " Введите размер квадратной матрицы 2*N:\n";
        cin >> N;
        cout << endl;
        N = 2 * N;
 
 
        int **array2 = new int*[N];
        for (i = 0; i < N; i++)
        {
            array2[i] = new int[N];
        }
 
        cout << " Введите элементы массива " << N << "x" << N << endl;
        for (i = 0; i < N; i++)
        {
            for (j = 0; j < N; j++)
            {
                cin >> array2[i][j];
            }
        }
 
 
        swap_areas(array2, N);
 
    }
    system("pause");
}
Оформляйте ваш код в соответствии в рекомендациями и требованиями: http://www.programmersforum.ru/showp...23&postcount=4

Последний раз редактировалось Вадим Мошев; 24.05.2015 в 13:53.
petz96 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исправить код mishammm Помощь студентам 4 24.09.2013 00:54
исправить код Alekzinder Паскаль, Turbo Pascal, PascalABC.NET 0 28.03.2013 22:41
Исправить код саша40 Мультимедиа в Delphi 7 06.11.2012 21:01
исправить код seed92 Помощь студентам 0 21.02.2011 16:02
Исправить код IndividBezLica Помощь студентам 0 02.06.2009 08:41


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840