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

Найдите ошибку в задаче: "дана матрица, если выполняется условие, то следует исполнить преобразование.." - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нарисовать прямоугольник http://www.cyberforum.ru/cpp-beginners/thread224530.html
Всем привет! Подскажите как нарисовать прямоугольник с помощью void bar (int x1, int y1, int x2, int y2); И покажите в программе уже, чтобы понять как эту ф-ю использовать.
C++ Размещение объекта в памяти Возможно ли размещение объекта в заранее выделенной памяти, например в массиве? Тоесть не просто скопировать, а так чтобы создание объекта было корректным - с вызовом соответствующего конструктора. http://www.cyberforum.ru/cpp-beginners/thread224528.html
C++ Коммивояжер
Доброго времени суток! Для полного графа и n <= 20 нужно написать программу для задачи коммивояжера за приемлемое время Какой алгоритм - возможен ли полный перебор, ветвей и границ или ? Спасибо за любую идею или ссылку!
C++ Виртуальные функции
Здрасте! вот задачка, какбэ сделал, но нужны виртуальные функции. даже не знаю как их сделать. #include <iostream.h> #include <math.h> class Root {public: int a,b,c; float x,x1,x2; Root();
C++ Помочь исправить http://www.cyberforum.ru/cpp-beginners/thread224516.html
Здравствуйте, в с++ я новичок, программирую 2 день, дошел до одномерных массивов, помогите разобраться в чем ошибка. Задача: В одномерном массиве из н элементов, вычислить: 1. произведение элементов с четным индексом 2. сумму между первым нулевым и последним элементам Прошу не исправлять, а на словах объянить в чем ошибка!При отладке указывает на строку 45! #include <iostream.h> #include...
C++ Как проверить какой тип данных вводится? Доброго времени суток. Подскажите пожалуйста!С клавиатуры вводится два целых числа.Как после ввода проверить,что было введено именно int,а не что-то другое?Вопрос не сложный,я думаю. Спасибо. подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.01.2011, 14:32
Вот код, почитайте там мои коментарии.
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <string.h>
#include <fstream>
#include <clocale>
using namespace std;
const int N=8;
ofstream fout;
ifstream fin;
 
bool yslovie(int n,int a[N][N])
// проверяет область 1-2, что существует четный столбец, где каждый элемент  нулевой.
 {
        int j,i; bool GoodStlb; bool GoodElem;int imax;
        i=0;
        GoodStlb=false;
        imax=n/2;
        while (!GoodStlb && i<imax)
        {
                j=i;
                GoodElem=true;              
                while ((GoodElem)&&(j<n-i))
                {
                        if (a[i][j]==0)
                                GoodElem=false;
                        j++;
                }
                GoodStlb=!GoodElem;
                i+=2;
        }
return GoodStlb;
}
 
void preobraz3(int n,int a[N][N])
//отражает относительно центра области 3-4
{
        int c, temp=a[N/2-1][N-1]; 
        for (int i=0; i<n/2; i++)
        { 
                for (int j=n-i-1; j<n; j++)
                {
                        c=a[i][j];
                        a[i][j]=a[n-i-1][j];
                        a[n-i-1][j]=c;
                }
                a[n-i-1][n-i-1]=temp;
        }
}
/*void preobraz3i(int n,int a[N][N]) // и эта функция вообще не нужна
//отражает относительно центра области 3-4
{
        int c; 
        for (int i=0; i<n/2; i++)
        { 
                for (int j=n-i-1; j<n; j++)
                {
                        c=a[i][j];
                        a[i][j]=a[n-i][j];
                        a[n-i][j]=c;
                }
        }
}*/ 
 
void vivod(int a[N][N], int n)// вывод матрицы
{
        for(int i=0; i<n;i++)
        {
          for(int j=0;j<n;j++)
                {
                        if(j!=(n-1))
                          fout << a[i][j] << " ";
                        else 
                          fout << a[i][j] << endl;
                }
        }
  fout << endl;
}
 
int main()
{
        int n;int a[N][N];
        setlocale( LC_ALL,"Russian");
        fin.open("input.txt");
        fin >> n;
        for(int i=0;i<N;i++)
        {
        for(int j=0;j<N;j++)
        fin >> a[i][j];
        }
    fout.open("output.txt");
        fout << "Исходная матрица" << endl;
        vivod(a,n);
                char choise = '0';
                system("cls");
            while (choise != '3')
    {           system("cls");
                        cout << "Работа с матрицей" << "\n\n";
                        cout << "1.Вывод матрицы на экран" << "\n";
                        cout << "2.Преобразование матрицы при условии" << "\n";
                        cout << "3.Выход из меню" << "\n";
 
                cin >> choise;
                switch (choise)
                {
                        case '1':
                                cout<<" Вывод матрицы на экран "<<endl;
                 for(int i=0;i<N;i++)
                    {
                       for(int j=0;j<N;j++)
                                                  {
                                                        if(j!=(n-1))
                            cout << a[i][j];
                                                        else
                                                        cout << a[i][j] << endl;
                                                   }
                     }
                        cout<<endl;    
                                cin.get();cin.get();
                                break;
                        case '2':
                                if (n%2==0)
                        {
                                if (yslovie(n,a))
                                {
                                preobraz3(n,a);
                                }
                        }
                          /*      else 
                                        if (yslovie(n,a))
                                                 preobraz3i(n,a);*/ // тогда этот кусок кода вообще не нужен
                                fout << "Результат" << endl;
                                vivod(a,n);
 
                                break;
                        case '3':
                                return 1;
                                break;
                                
        
                }
        }
 
        return 1;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru