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

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

Войти
Регистрация
Восстановить пароль
 
vasilisa-9090
1 / 1 / 0
Регистрация: 30.03.2013
Сообщений: 108
#1

Вывести каждую вторую строку матрицы в обратном порядке - C++

24.04.2013, 19:21. Просмотров 518. Ответов 3
Метки нет (Все метки)

не могу найти ошибку в программе. программа должа решать задачу: Из одномерного массива, формировать квадратную матрицу порядка n по заданному образцу (матрица формируется методом повторения массива, причем каждая 2-я строка в обратном порядке). Вывод матрицы на экран оформить в виде процедуры.
но она выдает строки в обратном порядке с лишними числами, причем всегда с одной и той-же комбанацией цифр.
помогите найти ошибку. Заранее спасибо.
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
#include<iostream.h>
void main(){
int  n,i,j;
cout<<"VVedite n: "<<endl;
cin>>n;
 
int*mas=new int[n];
cout<<"Zapolnite matricu: "<<endl;
for(i=0;i<n;i++)
cin>>mas[i];
cout<<"Vacha matrica:"<<endl;
int z;
for(z=1;z<=n/2;z++)
{
cout<<endl;
 
for(i=0;i<n;i++)
cout<<mas[i]<<" ";
 
cout<<endl;
 
for(i=n;i>1;i--)
cout<<mas[i]<<" ";
}
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2013, 19:21     Вывести каждую вторую строку матрицы в обратном порядке
Посмотрите здесь:

Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую. - C++
Даны две строки. Вывести в порядке обратном алфавитному по одному разу все строчные буквы, входящие в первую строку, но не во вторую. ...

Прочитать в файле каждую строку в обратном порядке - C++
Прочитать в файле каждую строку в обратном порядке!

Вывести строку в обратном порядке - C++
нужно вывести строку в обратном порядку .где ошибка? #include &lt; iostream&gt; #include &lt;conio.h&gt; #include&lt;cstring&gt; using namespace...

Вывести строку в обратном порядке. - C++
БИЛЕТ №23 3. Напишите программу, которая позволяет ввести строку символов, и вывести ее в обратном порядке, заменяя одиночные пробелы ...

Вывести строку, содержащую те же символы, но расположенные в обратном порядке. - C++
Ввод и вывод строк осуществлять, используя функции gets и puts. При реализации программы использование функций для работы со строками...

Считать в строку три предложения и вывести их в обратном порядке - C++
Считать в строку три предложения и вывести их в обратном порядке #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
veverix
39 / 39 / 2
Регистрация: 14.09.2012
Сообщений: 85
24.04.2013, 20:15     Вывести каждую вторую строку матрицы в обратном порядке #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
using namespace std;
 
void out(int n, int **d2)
{
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
            cout<<d2[i][j]<<' ';
        cout<<endl;
    }
}
 
void main()
{
    int n;
    cin>>n;
    int *d1 = new int[n];
    for(int i=0; i<n; i++)
        cin>>d1[i];
    int **d2 = new int*[n];
    for(int i=0; i<n; i++)
    {
        d2[i] = new int[n];
        if(i%2 == 0) d2[i] = d1;
        else
        {
            for(int j=n-1; j>-1; j--)
                d2[i][j] = d1[n-1-j];
        }
    }
    cout<<endl;
    out(n, d2);
    system("pause");
}
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
24.04.2013, 23:28     Вывести каждую вторую строку матрицы в обратном порядке #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
vasilisa-9090, мой вариант

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
#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <iterator>
#include <time.h>
#include <cstdlib>
using namespace std;
 
//отключаем варнинг рандомизации
#pragma warning(disable:4244)
 
//перегруженный оператор вывода матрицы
ostream &operator<<(ostream &strm, vector<vector<int> > &coll){
    strm << "Matrix:\n";
    for(size_t i = 0; i < coll.size(); ++i){
        cout << "\n\t";
        //выводим матрицу с помощью алгоритмы и лямбды
        for_each(coll[i].begin(), coll[i].end(), [&strm](int &elem)
        {
            strm << setw(3) << elem << ' ';
        });
    }
 
    return strm;
}
 
int main(int argc, char* argv[])
{
    srand(time(NULL));      //для генерации случайных чисел
 
    int size(4);            //размер квадратной матрицы
    vector<int> tmp(size);  //массив для строк
 
    //рандомно заполняем с помощью алгоритма и лямбды
    for_each(tmp.begin(), tmp.end(), [](int &elem){ elem = rand() % 21; });
 
    //наша квадратная матрица
    vector<vector<int> > coll(size);
 
    for(int i = 0; i < size; ++i){
        if(i & 1)
            //если нечетная строка заполняем в обратном порядке
            copy(tmp.rbegin(), tmp.rend(), back_inserter(coll[i]));
        else
            //ну тут понятно
            copy(tmp.begin(), tmp.end(), back_inserter(coll[i]));
    }
 
    //вывод матрицы с помощью перегруженного оператора поместить в поток
    cout << coll;
 
    cout << "\n\n";
    return 0;
}
Добавлено через 16 минут
vasilisa-9090, и вот попроще вариант

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
#include <iostream>
#include <iomanip>
using namespace std;
 
void output(int mas[][4], int size){
    cout << "Matrix:\n";
    for(int i = 0; i < size; ++i){
        cout << "\n\t";
        for(int j = 0; j < size; ++j)
            cout << setw(3) << mas[i][j] << ' ';
    }
}
 
int main(int argc, char* argv[])
{
    const int size(4);
    int arr[size] = {1,2,3,4};
 
    int mas[size][size];
 
    for(int i = 0; i < size; ++i){
        if(i % 2 == 0){
            for(int j = size - 1, k = 0; j >= 0; --j, k++)
                mas[i][k] = arr[j];
        }
        else{
            for(int j = 0; j < size; ++j)
                mas[i][j] = arr[j];
        }
    }
 
    output(mas, size);
 
    cout << "\n\n";
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2013, 23:32     Вывести каждую вторую строку матрицы в обратном порядке
Еще ссылки по теме:

Считать в строку три предложения в вывести их в обратном порядке - C++
Считать в строку три предложения в вывести их в обратном порядке #include&lt;conio.h&gt; #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; ...

Стеки- Ввести строку и вывести его в обратном порядке - C++
Ввести строку и вывести его в обратном порядке через стеки.Очень срочно нада..

С клавиатуры вводиться строчка, строка символов, вывести строку в обратном порядке. - C++
Вообщем нужно сделать 3 задачи: 1)С клавиатуры вводиться строчка, строка символов, вывести строку в обратном порядке. 2)Дан массив из N...

Вывести строку, содержащую эти же слова, разделенные одним пробелом и расположенные в обратном порядке - C++
Здравствуйте. можете прокомментировать эту программу? #include &quot;stdafx.h&quot; #include &lt;string&gt; #include &lt;iostream&gt; using...

Преобразовать двумерный массив в одномерный, удаляя каждую вторую строку - C++
Подскажите пожалуйста как 2D массив преобразовать в 1D, при этом удаляя каждую 2рую строку. Прилагаю свой вариант кода... Мб подскажите...

Оставить первую половину текста без изменений, а вторую записать в обратном порядке - C++
Дан текст: оставить первую половину текста без изменений , а вторую записать в обратном порядке


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

Или воспользуйтесь поиском по форуму:
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
24.04.2013, 23:32     Вывести каждую вторую строку матрицы в обратном порядке #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
 
using namespace std;
 
void print(int** arr, size_t n)
{
    for (size_t i = 0; i != n; i++, cout << endl)
        for (size_t j = 0; j != n; j++)
            cout << arr[i][j] << " ";
}
 
int main()
{
    size_t  n;
    cout << "VVedite n: " << endl;
    cin >> n;
 
    int *mas = new int[n];
 
    cout << "Zapolnite matricu: " << endl;
 
    for(size_t i = 0; i != n; i++)
        cin >> mas[i];
    cout << "Vacha matrica:" << endl;
 
    int **arr = new int*[n];
 
    for(size_t i = 0; i != n; i++) {
        arr[i] = new int[n];
        if (i % 2)
            for (size_t j = n; j != 0; j--)
                arr[i][n - j] = mas[j - 1];
        else
            for (size_t j = 0; j != n; j++)
                arr[i][j] = mas[j];
    }
 
    print(arr, n);
 
    for (size_t i = 0; i!=n; i++)
        delete[] arr[i];
 
    delete[] arr;
 
    return 0;
}
Yandex
Объявления
24.04.2013, 23:32     Вывести каждую вторую строку матрицы в обратном порядке
Ответ Создать тему
Опции темы

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