Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
_StellS_
0 / 0 / 0
Регистрация: 09.11.2011
Сообщений: 9
#1

Перевернуть все нечётные строки матрицы - C++

12.12.2011, 00:39. Просмотров 2193. Ответов 4
Метки нет (Все метки)

Тема: Функции и массивы в С++
Задание: Перевернуть все нечётные строки матрицы

 Комментарий модератора 
Помоги срочно с задачей плиззз на завтра надо, заранее благодарен
Название темы, конечно, впечатляет, но в другой раз всё-таки поменьше эмоций, побольше смысла...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2011, 00:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевернуть все нечётные строки матрицы (C++):

Найти количество простых чисел в массиве. Перевернуть все нечетные строки матрицы. Перевернуть каждое четное слово в строке - C++
Ребята помогите разобраться в коде программы, написав подробные комменты к данной проге. Спасибо! Постановка задачи 1. Используя...

Перевернуть все четные строки матрицы - C++
1.Двумерный массив (Перевернуть все четные строки матрицы.) 2.работа со строками (Удалить каждое четное слово из строки.)

Перевернуть все четные строки матрицы - C++
Подскажите пожалуйста как перевернуть все четные строки матрицы. Заранее благодарю.

Перевернуть все нечетные строки матрицы - C++
Перевернуть все нечетные строки матрицы (Использовать функции).

Перевернуть все нечетные строки динамической матрицы через функцию - C++
Как правильно описать двумерный массив в main? Так-то программа работает, но после разделения на функции, появились ошибочки) int *...

Помогите дописать код: Перевернуть все нечетные строки матрицы - C++
Если что -то не правильно( а оно там есть) помогите исправить! Задача:Перевернуть все нечетные строки матрицы.(Использовать функции)! ...

4
-=ЮрА=-
Заблокирован
Автор FAQ
12.12.2011, 00:53 #2
Цитата Сообщение от _StellS_ Посмотреть сообщение
ема: Функции и массивы в С++
Задание: Перевернуть все нечётные строки матрицы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
using namespace std;
 
//Функция поповрачивает вектор наоборот
int * swapvec(int * vec, int n)
{
    for(int i = 0,buf; i < n/2; i++)
    {
        buf = vec[i];
        vec[i] = vec[n - i - 1];
        vec[n - i - 1] = buf;
    }
    return vec;
}
    
int main()
{
    int i,j,m,n;
    int ** arr;//Указатель на наш массив
    cout<<"Enter number of Rows : ";cin>>m;
    cout<<"Enter number of Cols : ";cin>>n;
    arr = new int * [m];//Память под указатели на строки
    for(i = 0; i < m; i++)
    {
        arr[i] = new int[n];//Память под элементы строки
        for(j = 0; j < n; j++)
        {
            cout<<"a["<<i + 1<<"]["<<j + 1<<"] = ";
            cin>>arr[i][j];
        }
        cout<<endl;
 
    }
    cout<<"Input matrix :\n";
    for(i = 0; i < m; i++)
    {
        for(j = 0; j < n; j++)
            cout<<arr[i][j]<<" ";
        cout<<endl;
    }
    cout<<"Matrix after swap :\n";
    for(i = 0; i < m; i++)
    {
        if(i%2 != 0)
            arr[i] = swapvec(arr[i], n);
        for(j = 0; j < n; j++)
            cout<<arr[i][j]<<" ";
        cout<<endl;
    }
    for(i = m - 1; 0 <= i; i--)
        delete [] arr[i];
    system("pause");
    return 0;
}
0
Миниатюры
Перевернуть все нечётные строки матрицы  
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
12.12.2011, 01:27 #3
Мой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
 
using namespace std;
#define my_dimm1 5 // количество строк
#define my_dimm2 6 // количество столбцов
 
// вывод массива на экран
void print_array( int[ my_dimm1 ][ my_dimm2 ] );
// заполнение массива псевдослучайными значениями
void fill_array( int[ my_dimm1 ][ my_dimm2 ] );
// инверсия строк матрицы
void inv_odd_rows( int[ my_dimm1 ][ my_dimm2 ] );
// обмен значений
void my_swap( int&, int& );
 
int main() {
    srand( time( NULL ) );
 
    int arr [ my_dimm1 ][ my_dimm2 ];
    fill_array( arr );
    cout << "Исходный массив: " << endl;
    print_array( arr );
 
    inv_odd_rows( arr );
 
    cout << "Преобразованный массив: " << endl;
    print_array( arr );
    return 0;
}
 
void print_array( int array[ my_dimm1 ][ my_dimm2 ] ) {
 
    for ( size_t i = 0; i < my_dimm1; ++i ) {
        for ( size_t j = 0; j < my_dimm2; ++j )
            cout << setw(5) <<  array[ i ][ j ];
 
        cout << endl;
    }
}
 
void fill_array( int array [ my_dimm1 ][ my_dimm2 ] ){
    for ( size_t i = 0; i < my_dimm1; ++i )
        for ( size_t j = 0; j < my_dimm2; ++j )
            array[ i ][ j ] = rand() % 201 - 100; //[ -100..100 ]
}
 
void inv_odd_rows( int array [ my_dimm1 ][ my_dimm2 ] ){
    size_t check = my_dimm2 / 2 - 1;
    for ( size_t i = 0; i < my_dimm1; ++i )
        for ( size_t j = 0; j < my_dimm2; ++j )
            if ( ( i % 2 )  && ( j <= check ) )
                my_swap( array[ i ][ j ], array[ i ][ my_dimm2 - j - 1 ] );
}
 
void my_swap( int& x, int& y ) {
    x += y;
    y = x - y;
    x -= y;
}
Консоль
Исходный массив:
-43 -33 3 42 50 -53
-92 -66 85 77 -79 -9
0 26 -29 -66 -59 -31
69 -29 11 59 -3 84
-72 15 -36 -28 44 82
Преобразованный массив:
-43 -33 3 42 50 -53
-9 -79 77 85 -66 -92
0 26 -29 -66 -59 -31
84 -3 59 11 -29 69
-72 15 -36 -28 44 82


Номера строк считаю с нуля

Добавлено через 5 минут
2 -=ЮрА=-
Насколько я понимаю Вы
C++
1
delete[] arr;
забыли
0
-=ЮрА=-
Заблокирован
Автор FAQ
12.12.2011, 11:13 #4
Цитата Сообщение от Roof Посмотреть сообщение
Насколько я понимаю Вы
Код C++
1
delete[] arr;
забыли
- ничего я не забыл, delete [] a осмысленно не приводил, т.к. мы и так чистим память под строки здесь
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
delete [] arr[i];
в результате arr[i] - уничтожается(удалиться указатель вместе с элементами строки), тогда если делать так delete [] arr мы будем пытаться удалить уже пустой объёкт!(Не нужно делать масло маслянным)

Не по теме:

PS:чистку памяти при 1-но кратном использовании программы можно вообще НЕ производить - система сама всё за exe почистит.

1
_StellS_
0 / 0 / 0
Регистрация: 09.11.2011
Сообщений: 9
12.12.2011, 16:37  [ТС] #5
Спасибо большое=), всё отлично работает)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2011, 16:37
Привет! Вот еще темы с ответами:

Текстовый файл. Напечатать все нечётные строки. - C++
Дан текстовый файл. Напечатать все нечётные строки.

Удалить все нечётные строки двумерного массива - C++
Задан двумерный массив чисел. Требуется написать программу: 1. Удалить все нечётные строки двумерного массива. 2. После той строки,...

В заданной матрице найти все положительные нечётные числа строки, у которой второй элемент не кратен 3 - C++
Доборого времени суток! Ребя помогите пожалуйста, нужно переделать код. Мне требуется найти все положительные нечетные числа строки, у...

Определить, что все элементы строки первой матрицы больше соответствующих элементов строки второй матрицы - C++
Помогите,пожалуйста,с решением массивов в с++.надо в статическом и динамическом варианте. Даны две целочисленные квадратные матрицы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
12.12.2011, 16:37
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru