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

Диалог да/нет в - C++

Восстановить пароль Регистрация
 
krooglov
0 / 0 / 0
Регистрация: 16.06.2014
Сообщений: 5
16.06.2014, 18:00     Диалог да/нет в #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
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#include <iostream>
#include <iomanip>
#include <cmath>
#include <cstdio>
#include <fstream>
#include <string>
 
void readMatrixFromFile( std::string name, double **a, double *b, int &n )
{
    std::ifstream in( name.c_str(), std::ios::in );
    if ( in.is_open() )
    {
        in >> n;
        for( int i = 0; i < n; ++i )
            for( int j = 0; j <= n; ++j )
            {
                if ( j < n )
                    in >> a[ i ][ j ];
                else
                    in >> b[ i ];
            }
        in.close();
    }
    else
        printf( "Fayl ne znayden!\n" );
}
 
void readMatrix( double **a, double *b, int n )
{
    for( int i = 0; i < n; ++i )
    {
        for( int j = i; j < n; ++j )
        {
            std::cout << "A[ " << i + 1 << ", " << j + 1 << " ] = ";
            std::cin >> a[ i ][ j ];
            a[ j ][ i ] = a[ i ][ j ];
        }
        std::cout << "B[ " << i + 1 << " ] = ";
        std::cin >> b[ i ];
    }
}
 
void printMatrix( double **a, double *b, int n,  bool flag )
{
    for( int i = 0; i < n; ++i )
    {
        for( int j = 0; j < n; ++j )
            printf( "%7.4f ", a[ i ][ j ] );
        if ( flag )
            printf( " | %7.4f", b[ i ] );
        printf( "\n" );
    }
}
 
bool checkMatrix( double **a, int n )
{
    for( int i = 0; i < n; ++i )
        for( int j = i; j < n; ++j )
            if ( a[ i ][ j ] != a[ j ][ i ] )
                return false;
    return true;
}
 
void getMatrixS( double **a, double **s, double *b, int n )
{
    double s1;
 
    for( int i = 0; i < n; ++i )
    {
        s1 = 0.0;
        for( int k = 0; k < i; ++k )
            s1 = s1 + s[ k ][ i ] * s[ k ][ i ];
        s[ i ][ i ] = std::sqrt( a[ i ][ i ] - s1 );
        for( int j = i; j < n; ++j )
        {
            s1 = 0.0;
            for( int k = 0; k < i; ++k )
                s1 = s1 + s[ k ][ i ] * s[ k ][ j ];
            s[ i ][ j ] = ( a[ i ][ j ] - s1 ) / s[ i ][ i ];
        }
    }
}
 
void getVectorY( double **s, double *y, double *b, int n )
{
    double s1;
    for( int i = 0; i < n; ++i )
    {
        s1 = 0.0;
        for( int k = 0; k < i; ++k )
            s1 += s[ k ][ i ] * y[ k ];
        y[ i ] = ( b[ i ] - s1 ) / s[ i ][ i ];
    }
}
 
void gettVectorX( double **s, double *y, double *x, int n )
{
    double s1;
    for( int i = n - 1; i >= 0; --i )
    {
        s1 = 0.0;
        for( int k = i; k < n; ++k )
            s1 += s[ i ][ k ] * x[ k ];
        x[ i ] = ( y[ i ] - s1 ) / s[ i ][ i ];
    }
}
 
void printVector( double *v, int n )
{
    for( int i = 0; i < n; ++i )
        printf( "%7.4f ", v[ i ] );
    printf( "\n" );
}
 
int main()
{
    const int M = 10;
    int n;
 
    double **a = new double *[ M ],
           **s = new double *[ M ],
            *b = new double [ M ],
            *y = new double [ M ],
            *x = new double [ M ];
 
    for( int i = 0; i < M; ++i )
    {
        a[ i ] = new double [ M ];
        s[ i ] = new double [ M ];
    }
 
    int k;
    printf( "Vvesty matricy z failu? " );
    scanf("%d", &k);
    if (k="y")
    {
        readMatrixFromFile( "input", a, b, n );
    }
    else
    {
        printf( "Vvedit' rozmir matricy: " );
        scanf( "%d", &n );
        readMatrix( a, b, n );
    }
    printMatrix( a, b, n, true );
 
    if ( checkMatrix( a, n ) )
    {
        getMatrixS( a, s, b, n );
        std::cout << "Matricya S: " << std::endl;
        printMatrix( s, b, n, false );
        getVectorY( s, y, b, n );
        gettVectorX( s, y, x, n );
        std::cout << "Vector X: ";
        printVector( x, n );
    }
    else
    {
        std::cout << "Nemae rozv'yazku" << std::endl;
    }
 
    return 0;
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4301 / 3722 / 1255
Регистрация: 14.04.2014
Сообщений: 14,556
16.06.2014, 18:32     Диалог да/нет в #2
В 134-й строке вводишь число, потом анализируешь как строку и к тому же неправильно.
krooglov
0 / 0 / 0
Регистрация: 16.06.2014
Сообщений: 5
16.06.2014, 18:41  [ТС]     Диалог да/нет в #3
Можете подсказать как правильно?
nmcf
4301 / 3722 / 1255
Регистрация: 14.04.2014
Сообщений: 14,556
16.06.2014, 18:44     Диалог да/нет в #4
Например, 1 - да, 0 - нет. И проверяй
C++
1
if(k == 1)
krooglov
0 / 0 / 0
Регистрация: 16.06.2014
Сообщений: 5
16.06.2014, 20:00  [ТС]     Диалог да/нет в #5
Кто-то может написать как должен выглядеть код уже с работающим диалогом?
Пожалуйста!
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,180
Завершенные тесты: 1
16.06.2014, 20:11     Диалог да/нет в #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от krooglov Посмотреть сообщение
int k;
printf( "Vvesty matricy z failu? " );
scanf("%d", &k);
if (k="y")
Заменяем на
C++
1
2
3
4
char k;
    printf( "Vvesty matricy z failu? " );
    scanf("%c", &k);
if (k=='y')
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2014, 00:04     Диалог да/нет в
Еще ссылки по теме:

C++ Диалог с пользователем. Консольные команды
Диалог с компьютером C++
C++ Многократный диалог с пользователем

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

Или воспользуйтесь поиском по форуму:
krooglov
0 / 0 / 0
Регистрация: 16.06.2014
Сообщений: 5
17.06.2014, 00:04  [ТС]     Диалог да/нет в #7
Спасибо огромное!!
Yandex
Объявления
17.06.2014, 00:04     Диалог да/нет в
Ответ Создать тему
Опции темы

Текущее время: 16:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru