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

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

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

Visual C++ тема матрицы - C++

29.03.2010, 22:15. Просмотров 814. Ответов 12
Метки нет (Все метки)

определить является ли заданная квадратная матрица симметричная относительно главной диагонали.

Добавлено через 1 час 15 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// lab4.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
    int m[5][5],i,j;
    for (i=0;i<5;i++)
    for (j=0;j<5;j++)
        cin>>m[i][j];
            for (i=0;i<5;i++)
    for (j=0;j<5;j++)
    {
        if m[i][j]==m[j][i] 
 
    }
    cout<<1;
 
 
 
    return 0;
}
вот я написал но відаёт ошибку кто знает в чём проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2010, 22:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Visual C++ тема матрицы (C++):

Visual C++ тема функции. Построить последовательность чисел Фибоначчи. - C++
Для заданного числа N&gt;1 построить последовательность чисел фибоначчи А(0), А(1), .... А(n), которые изменяются по закону...

тема: C++ Visual Studio 2013 ПОМОЩИ ПРОШУ! А то уже сломаю голову скоро! - C++
тема: C++ Visual Studio 2013 ПОМОЩИ ПРОШУ! А то уже сломаю голову скоро! Всем Здравствуйте и спасибо, что откликнулись на мои крики о...

Какую среду программирования лучше выбрать для обучения языку C++ ? Visual Studio,Visual Basic или Visual C++? - C++
И напишите,чем рекомендуемая вами среда программирования лучше других? Насколько я понял из Википедии они все поддерживают язык...

Visual Studio C++. Вылетает ошибка при компиляции. Задание на матрицы - C++
// dz325.11.13.cpp : Defines the entry point for the console application. // #include &quot;stdafx.h&quot; #include&lt;iostream&gt; using...

Microsoft Visual Studio: Для каждой строки матрицы с нулевым элементом на главной диагонали вывести номер наибольшего элемента - C++
Здравствуйте, прошу помощи. Вопрос жизни и смерти. В программировании вообще что-то тяжко. С горем попалам сдаю. 1 курс... тяжело... ...

Visual Studio: Вывести номера столбцов матрицы, элементы которых образуют монотонно убывающую или монотонно возрастающую последовательность - C++
Здравствуйте, прошу помощи. Вопрос жизни и смерти. В программировании вообще что-то тяжко. С горем попалам сдаю. 1 курс... тяжело... ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
neske
1482 / 849 / 76
Регистрация: 26.03.2010
Сообщений: 2,917
30.03.2010, 01:13 #2
если меня никто РЅРµ опередит, завтра утром напиС?Сѓ.
РџРЎ. Р·Р° следующее сообщение РїСЂРёРЅРѕС?Сѓ извинения, СЃ телефона.
axi
22 / 15 / 0
Регистрация: 26.01.2010
Сообщений: 305
30.03.2010, 01:15 #3
значение сравнения if нужно брать в скобочки!!!!!, if(сравнение) действие;
neske
1482 / 849 / 76
Регистрация: 26.03.2010
Сообщений: 2,917
30.03.2010, 08:47 #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
#include <stdafx.h>
#include <cstdlib>
#include <iostream>
using namespace std ;
 
int main ()
{
        int MAS[5][5];
        int i,j;
 
        for (i=0;i<5;i++)           // заполнение массива с клавиатуры.
        for (j=0;j<5;j++)                
        {
            cout << "MAS[" << i << "][" << j << "]:";  
            cin >>MAS[i][j];
        }
 
            int n=0; // счетчик.
            for (i=0;i<5;i++)
            for (j=0;j<5;j++)
            {
                if ( MAS[i][j] == MAS[j][i] )   
                n+=1;
            }
system("cls");
    if ( n==i*j ) cout << "Massiv simmetrichen\n" << endl;  
    else cout << "Massiv ne simmetrichen\n";
 
 
        cout << "Proverka!" << endl; // вывод массива.
        for (i=0;i<5;i++)
        {
            for (j=0;j<5;j++)                
            cout << MAS[i][j] << " ";
        cout << endl;
        }
        
    return 0;
}
Программа работает правильно, проверил на маленьком массиве.

ПС- за прошлое мое сообщение прошу прощение
сщьфтср
1 / 1 / 0
Регистрация: 28.03.2010
Сообщений: 21
30.03.2010, 10:39  [ТС] #5
спасибо всё работает)))))))) ура

Добавлено через 39 секунд
можещь объяснить как работает n?
neske
1482 / 849 / 76
Регистрация: 26.03.2010
Сообщений: 2,917
30.03.2010, 10:43 #6
C++
1
2
3
4
for (i=0;i<5;i++)
       for (j=0;j<5;j++)
           if ( MAS[i][j] == MAS[j][i] )   
           n+=1;
Цикл for проходит 25 раз, то есть если массив полностью симметричен, конечное значение n будет 25, что в свою очередь равно i*j.
Я просто не придумал другого способа
Понял?)
ggmann
20 / 20 / 1
Регистрация: 06.10.2008
Сообщений: 173
30.03.2010, 11:13 #7
кстати вместо n+=1; можно юзать n++;

это так, на будущье)
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
30.03.2010, 11:14 #8
neske, алгоритм не очень красивый:
  1. Надо сравнивать половинки матрицы, чтобы каждая пара элементов (кроме диагональных, которые вообще не должны проверяться) сравнивалась только один раз
  2. Если в твоей программе какая-нибудь пара сравниваемых элементов не удовлетворяет условию, у тебя продолжается проверка матрицы, что неэффективно
У меня для того, чтобы убедиться, что матрица порядка k является симметричной, нужно 0.5*k*(k-1) операций сравнения (или меньше, если она несимметричная):
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>
 
bool isSymm(int** mat, size_t size)
{
    for(size_t i=0; i<size; ++i)
        for(size_t j=i+1; j<size; ++j)
            if(mat[i][j]!=mat[j][i])
                return false;
    return true;
}
 
int main()
{
    size_t size;
    int** matrix;
    std::cout << "Input the size of the matrix: ";
    std::cin >> size;
    //Создание и заполнение матрицы
    matrix=new int*[size];
    for(size_t i=0; i<size; ++i)
    {
        matrix[i]=new int[size];
        for(size_t j=0; j<size; ++j)
        {
            std::cout << "matrix[" << i << "][" << j << "]=";
            std::cin >> matrix[i][j];
        }
    }
    std::cout << "Matrix is " << (isSymm(matrix, size) ? "" : "not ") << "symmetric" << std::endl;
    //Уничтожение матрицы, высвобождение памяти
        for(size_t i=0; i<size; ++i)
                delete[] matrix[i];
        delete[] matrix;
    system("pause");
    return 0;
}
neske
1482 / 849 / 76
Регистрация: 26.03.2010
Сообщений: 2,917
30.03.2010, 11:17 #9
Можно, как и ++n

Добавлено через 2 минуты
Nameless One, я не спорю, что твое решение красивее, но я пока не могу так
axi
22 / 15 / 0
Регистрация: 26.01.2010
Сообщений: 305
30.03.2010, 19:23 #10
Цитата Сообщение от neske Посмотреть сообщение
Можно, как и ++n

Добавлено через 2 минуты
Nameless One, я не спорю, что твое решение красивее, но я пока не могу так
все же инкремент писать правильно n++ ))
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
30.03.2010, 19:33 #11
Цитата Сообщение от axi Посмотреть сообщение
все же инкремент писать правильно n++ ))
Штоа? n++ (постфиксный инкремент) и ++n (префиксный инкремент) - это разные вещи, и обе формы записи являются правильными. Разница вот в чем:
C
1
2
int i=5;
int j=i++;//j равно 5, i=6
- постфиксный инкремент - возвращается значение переменной i, и уже после этого i увеличивается на единицу.
C
1
2
int i=15;
int j=++i;//j=16, i=16
- префиксный инкремент - значение i увеличивается на единицу, и возвращается уже увеличенное значение

Вся соль как раз и состоит в этом различии. "Правильность", т.е. корректность выбора постфиксной или префиксной формы записи определяется только в контексте задачи, и для данной программы обе формы равнозначны.
neske
1482 / 849 / 76
Регистрация: 26.03.2010
Сообщений: 2,917
30.03.2010, 19:34 #12
Это я и имел в виду
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
30.03.2010, 19:37 #13
Кстати, префиксная форма записи (теоретически) работает быстрее, т.к. для нее не тратится время для создания временного объекта, который возвращается в постфиксной форме записи. Другое дело, что ты этой разницы в скорости и не заметишь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2010, 19:37
Привет! Вот еще темы с ответами:

В Чем разница между MS Visual C++ 2011 vs MS Visual C++2012 - C++
Здравствуйте Купил книгу по программированию Бориса Пахова С/С++ и MS Visual C++ 2012 для начинающих В данной книге программы...

Написать программу. Задания нужно выполнять на языке Visual C++ в среде Microsoft Visual Studio 2008 - C++
Можете написать программу? Задание по номером 3.24 (2 рисунок).

Насколько лучше Visual Studio2012 Visual Studio2010 - C++
Подскажите кто уже работает с последней версией VC , сильно ли она отличаеться от прежней

Сильно ли отличается Visual C++ 2003 от Visual C++ 6 ? - C++
Начал читать книгу Харви М. Дейтел, Пол Дж. Дейтел - Как программировать на C++ - 2008 и ,как я понял из того,что написано в ведении,а...


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

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

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