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

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

Войти
Регистрация
Восстановить пароль
 
triish
1 / 1 / 0
Регистрация: 16.01.2014
Сообщений: 44
#1

где ошибка в коде? - C++

02.02.2014, 20:40. Просмотров 285. Ответов 9
Метки нет (Все метки)

видимо неправильно работает функция симметричности матрицы.
потому что ввожу не симметричную матрицу, а она все равно сдвигает строку.

где ошибка?

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
#include <iostream>
using namespace std;
 
const int N = 3;           //объявляем константу, выражающую количество строк и столбцов
void outM(int [N][N]);      //объявляем функцию вывода матрицы на экран
void sdvig(int [N][N]);     //объявляем функция сдвига строки с максимальным элементом
bool compareSim(int [N][N]);    //объявляем функцию, сравнивающую исходную матрицу и транспонированную
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int z[N][N] = {{1, 2, 3},    //инициализация матрицы
                   {2, 5, 6,},    //
                   {3, 6, 9}};   //
                      //
    bool sim;          //переменная, которая скажет нам, симметрична матрица или нет
 
    cout << "исходная матрица: " << endl << endl;
    outM(z);            // вызов функции(вывод матрицы на экран)
 
    sim = compareSim(z);       //вызов ф-ции(сравнение исходной матрицы и транспонированной)
    if ( sim == 1)
        cout << "Матрица симметрична" << endl << endl;
    else
        cout << "Матрица не симметрична" << endl << endl;
 
    if (sim == 1)
    sdvig(z);     //вызов ф-ции(если матрица симметрична, сдвигает строку с максимальным значением)
 
    system("pause");
    return 0;
}
 
void outM(int z[N][N])       // обычный вывод на экран
{
    for (int i = 0; i < N; i ++)
    {
        for (int j = 0; j < N; j++)
            cout << z[i][j] << ' ';
        cout << endl << endl;
    }
}
 
 
bool compareSim(int z[N][N])            
{                                       // сравниваем каждый элемент исходной
    for (int i = 0; i < N; i++)         // матрицы c  симметричным ему элементом 
        for (int j = 0; j < N; j++)     // транспонированной матрицы
        {                               
            if (z[i][j] != z[j][i])     // возвращаем 0, если хотя бы 2 симметричных 
                return 0;               // элемента не равны
        }
    return 1;               
}
 
void sdvig(int z[N][N])             //ф-ция, сдвигающая строки с максимальным элементом
{                                   
    int temp;
    int max = z[0][0];      
    int imax[N], n = 0, M;  // объявляем массив(если будет несколько макс. значений),
    imax[0] = 0;            // где будет храниться номер строки с макс. элементом
 
    for (int i = 0; i < N; i++)         //ищем макс. элемент и 
        for (int j = 0; j < N; j++)     // запоминаем номер строки
            if (max < z[i][j])
            {
                max = z[i][j];
                imax[n] = i;
            }
 
    for (int i = 0; i < N; i++)         // перебираем все элементы 
        for (int j = 0; j < N; j++)     // и запоминаем все строки, в которых
            if (max == z[i][j])         // встречается макс. значение
                if (imax[n] != i)
                {
                    n++;
                    imax[n] = i;
                }
 
    M = n + 1;   // количество строк с макс. элементом
    for (n = 0; n < M; n++)  // сдвигаем поочередно нужные строки
    {
    temp = z[imax[n]][N - 1];  // запоминаем значение последнего элемента в строке, чтобы не потерять его
    for (int j = N - 1; j >= 0; j--)    // сам сдвиг( начинается с конца строки)
        z[imax[n]][j] = z[imax[n]][j-1];
    z[imax[n]][0] = temp;
    }
 
    cout << "конечная матрица: " << endl << endl;
    outM(z);
 
}
Добавлено через 17 минут
все равно никто не ответит.

все правильно работает, прога лаганула.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2014, 20:40     где ошибка в коде?
Посмотрите здесь:

Где ошибка в коде ? - C++
задача Треугольный ряд чисел : первое число 1 второе на 2 больше чем первое , 3е на 3 больше чем второе итд.......

Где то в коде ошибка - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #define TRUE 1 #define FALSE 0 #define XRY 8 //Количество вершин графа. typedef int...

Где ошибка в коде? - C++
Написал код , в нем вводятся 15 чисел , числа входящие в диапозон от 0 до 10 возводит в квадрат , и подсчитывает кол-во отрицательных чисел...

Где ошибка в коде? - C++
Задание такое: Дан одномерный массив с большим количеством нулей. Заменить в нем каждую группу из подряд идущих нулей на два элемента:...

Где ошибка в коде - C++
по запросу строки программа должна выдавать строку с увеличением на 2 .Например запрашиваю 1 строку он выдает 3 строку { ...

Ошибка где-то в коде - C++
Не могу найти ошибку в коде. Выдает: недопустимо , правый оператор имеет тип int. #include &quot;stdafx.h&quot; #include&lt;iostream&gt; using...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fene4ka_
89 / 89 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
02.02.2014, 20:49     где ошибка в коде? #2
мой совет - не объявляйте глобальных переменных ...
triish
1 / 1 / 0
Регистрация: 16.01.2014
Сообщений: 44
02.02.2014, 20:58  [ТС]     где ошибка в коде? #3
раз уж вы отписались, может быть поможете мне сделать трассировку?
завтра срочно надо все сдавать, а у меня уже который день не получается ее сделать.


Цитата Сообщение от Fene4ka_ Посмотреть сообщение
мой совет - не объявляйте глобальных переменных ...
Fene4ka_
89 / 89 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
02.02.2014, 21:45     где ошибка в коде? #4
Цитата Сообщение от triish Посмотреть сообщение
раз уж вы отписались, может быть поможете мне сделать трассировку?
завтра срочно надо все сдавать, а у меня уже который день не получается ее сделать.
ну давайте попробуем
triish
1 / 1 / 0
Регистрация: 16.01.2014
Сообщений: 44
02.02.2014, 23:10  [ТС]     где ошибка в коде? #5
ну вот код есть.
трассировку надо сделать в 50 строк, избегая ввода и вывода переменных.
помогите пожалуйста.
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
ну давайте попробуем
Добавлено через 1 час 19 минут
не поможете,да?
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
ну давайте попробуем
Fene4ka_
89 / 89 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
02.02.2014, 23:19     где ошибка в коде? #6
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
int main()
{
    int z[N][N] = { { 1, 2, 3 },    { 2, 5, 6, },   { 3, 6, 9 } };   //
    bool sim;          //переменная, которая скажет нам, симметрична матрица или нет
    cout << "Matrica: " << endl << endl;
    outM(z);            // вызов функции(вывод матрицы на экран)
    sim = compareSim(z);       //вызов ф-ции(сравнение исходной матрицы и транспонированной)
    (sim == 1)? cout << "Matrica simetri4na" << endl << endl :  cout << "Matrica ne semitri4na" << endl << endl;
    if (sim == 1) sdvig(z);     //вызов ф-ции(если матрица симметрична, сдвигает строку с максимальным значением)
    system("pause");
    return 0;
}
void outM(int z[N][N])       // обычный вывод на экран
{
    for (int i = 0; i < N; i++, cout << endl)
        for (int j = 0; j < N; j++)
            cout << z[i][j] << ' ';
}
bool compareSim(int z[N][N])
{                                       // сравниваем каждый элемент исходной
    for (int i = 0; i < N; i++)         // матрицы c  симметричным ему элементом 
    for (int j = 0; j < N; j++)     // транспонированной матрицы
    {
        if (z[i][j] != z[j][i])     // возвращаем 0, если хотя бы 2 симметричных 
            return 0;               // элемента не равны
    }
    return 1;
}
void sdvig(int z[N][N])             //ф-ция, сдвигающая строки с максимальным элементом
{
    int temp, max = z[0][0], imax[N], n = 0, M;  // объявляем массив(если будет несколько макс. значений),
    imax[0] = 0;            // где будет храниться номер строки с макс. элементом
    for (int i = 0; i < N; i++)         //ищем макс. элемент и 
    for (int j = 0; j < N; j++)     // запоминаем номер строки
    if (max < z[i][j])
    {
        max = z[i][j];
        imax[n] = i;
    }
    for (int i = 0; i < N; i++)         // перебираем все элементы 
    for (int j = 0; j < N; j++)     // и запоминаем все строки, в которых
    if (max == z[i][j])         // встречается макс. значение
    if (imax[n] != i)
    {
        n++;
        imax[n] = i;
    }
    M = n + 1;   // количество строк с макс. элементом
    for (n = 0; n < M; n++)  // сдвигаем поочередно нужные строки
    {
        temp = z[imax[n]][N - 1];  // запоминаем значение последнего элемента в строке, чтобы не потерять его
        for (int j = N - 1; j >= 0; j--)    // сам сдвиг( начинается с конца строки)
            z[imax[n]][j] = z[imax[n]][j - 1];
        z[imax[n]][0] = temp;
    }
    cout << "New matrica: " << endl << endl;
    outM(z);
}
ну если делать более или менее четабельно 53 строки
triish
1 / 1 / 0
Регистрация: 16.01.2014
Сообщений: 44
02.02.2014, 23:39  [ТС]     где ошибка в коде? #7
что это?
оу.. спасибо конечно большое за проделанную работу. но это не то, что я имела ввиду.

может быть я неправильно выразилась..

вот это я имела ввиду(пикчи кинула)

Цитата Сообщение от Fene4ka_ Посмотреть сообщение
ну если делать более или менее четабельно 53 строки
triish
1 / 1 / 0
Регистрация: 16.01.2014
Сообщений: 44
02.02.2014, 23:44  [ТС]     где ошибка в коде? #8
вот так мне и надо сделать.


Цитата Сообщение от Fene4ka_ Посмотреть сообщение
[CPP]int main()

ну если делать более или менее четабельно 53 строки
Миниатюры
где ошибка в коде?  
Fene4ka_
89 / 89 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
03.02.2014, 00:20     где ошибка в коде? #9
вы мне сказали сделать с тем кодом, это условие вы мне не кидали ...

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
int main()
{
    int A, B;
    std::cout << "Vvedite A and B : ";
    std::cin >> A >> B;
    while (A != B)
        A > B ? A -= B : B -= A;
    std::cout << A << std::endl;
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2014, 00:35     где ошибка в коде?
Еще ссылки по теме:

Где ошибка в коде? - C++
Доброго времени суток! Я недавно начал учиться писать программы на С++, сайчас возникла такая проблема, по условиям задания надо так,...

где ошибка в коде - C++
// Урок 9. C++ Игра Угадай число.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include...

Где ошибка в програмном коде - C++
Вычислить Z=(x+y)/(k*n),где x и k- сумма и количество положительных элементов массива А(40), где y и n - сумма и количество отрицательных...

Не пойму где ошибка в коде - C++
Задача: (В задаче можно использовать только такие библиотеки и решить надо только через условные операторы.) Все проходит и решение...


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

Или воспользуйтесь поиском по форуму:
triish
1 / 1 / 0
Регистрация: 16.01.2014
Сообщений: 44
03.02.2014, 00:35  [ТС]     где ошибка в коде? #10
ну да. так и нужно было, просто по примеру этого условия.

ладно. спасибо вам большое.

Цитата Сообщение от Fene4ka_ Посмотреть сообщение
вы мне сказали сделать с тем кодом, это условие вы мне не кидали ...
Yandex
Объявления
03.02.2014, 00:35     где ошибка в коде?
Ответ Создать тему
Опции темы

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