С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Ошибка с присвоением значений к массивам - C++

04.05.2014, 01:09. Просмотров 394. Ответов 18
Метки нет (Все метки)

Значение функции дроби,не могу присвоить к массиву... не получается подсчет ..Помогите плиз..с этим кусочком....
Код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
double drob(int a, int b) {
    return static_cast<double>(a)/b;
}
 
void readvec(char *name, int n) {
    int a,b;
 
    std::cout << "Vvesti vektor " << name << " razmera " << n << "\n";
    for (int i=0; i < n;i++) {
        std::cout << " " << name << "[" << i << "]=";
        std::cin >> a >> b;
        std::cout << "Poluchivsshazsa drob: " << drob(a,b) << "\n";
        x[i] = drob(a,b);
    }
    std::cout << "\n";
}
void writevec(double x[10], char *name, int n) {
    std::cout << "Vivesti vektor " << name << " razmera " << n << "\n";
    for (int i = 0; i<n; i++) {
        std::cout << " " << name << "[" << i << "]=" << x[i] << "\n";
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2014, 01:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка с присвоением значений к массивам (C++):

Присвоение значений многомерным массивам - C++
Одномерному массиву значения присваивать совсем просто: int A={0,1,2,3,4}; A=73;Двумерному уже сложнее: int B={ {0,1,2,3,4}, ...

Ошибка в коде, по массивам - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstring&gt; using namespace std; int main() { char array1; char array2; int...

проблема с присвоением - C++
Возникла такая проблема, нужно к элементу вектора прибавить число, но у меня проблема с перегрузкой оператора, подскажите как лучше это...

Конструктор с присвоением - C++
вот есть в моем классе поле ссылка, но она не инициализирована, ее нужно инициализировать в конструкторе.Подскажите как ? class myclass ...

Загвоздка с присвоением - C++
подскажите в чем загвоздка, а именно в условии не присваивает значение и его позицию #include &lt;iostream&gt; using namespace std; ...

не понятная ошибка ввода значений - C++
#include &lt;math.h&gt; #include &lt;iostream&gt; using namespace std; void main() { int x,y,z,w,s,d,e,r,n; x = 4; y = 8; ...

18
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 01:13 #2
Покажи определение перемен ной x
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
04.05.2014, 01:17 #3
да это массив даблов. при вызове функции readvec в нее нужно передать указатель на первый элемент массива:
void readvec(char *name, int n, double* x) {
...
0
diegovoin
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
04.05.2014, 01:22  [ТС] #4
Цитата Сообщение от stawerfar Посмотреть сообщение
Покажи определение перемен ной x
// VEC
double x[10], x_1[10];

Добавлено через 58 секунд
Вот такая программка...
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#include <iostream>;
# include <math.h>;
 
// VEC
double x[10], x_1[10], ax[10], ax_1[10], c[10];
 
// MATR
double e[10][10], a[10][10], a_1[10][10], b[10][10], b_1[10][10], br[10][10], br_1[10][10];
 
double drob(int a, int b) {
    return static_cast<double>(a)/b;
}
 
void readvec(char *name, int n) {
    int a,b;
 
    std::cout << "Vvesti vektor " << name << " razmera " << n << "\n";
    for (int i=0; i < n;i++) {
        std::cout << " " << name << "[" << i << "]=";
        std::cin >> a >> b;
        std::cout << "Poluchivsshazsa drob: " << drob(a,b) << "\n";
        x[i] = drob(a,b);
    }
    std::cout << "\n";
}
void writevec(double x[10], char *name, int n) {
    std::cout << "Vivesti vektor " << name << " razmera " << n << "\n";
    for (int i = 0; i<n; i++) {
        std::cout << " " << name << "[" << i << "]=" << x[i] << "\n";
    }
}
void readmatr(char *name, int n, int m, char *type) {
    int c,b;
 
    std::cout << "Vvesti matricu " << name << " razmera " << n << "x" << m <<"\n";
    for (int i=0; i < n;i++) {
        for (int j=0; j < m;j++) {
        std::cout << " " << name << "[" << i << ", " << j << "]=";
        std::cin >> c >> b;
        std::cout << "Poluchivsshazsa drob: " << drob(c,b) << "\n";
        if (strcmp(type,"A") == 0)
        a[i][j] = drob(c,b);
        if (strcmp(type,"B") == 0)
        a_1[i][j] = drob(c,b);
        }
    }
    std::cout << "\n";
}
void writematr(double y[10][10], char *name, int n, int m) {
    std::cout << "Vivesti matricu " << name << " razmera " << n << "x" << m << "\n";
    for (int i = 0; i<n; i++)
    for (int j = 0; j<m; j++) {
        std::cout << " " << name << "[" << i << ", " << j << "]=" << y[i][j] << "\n";
    }
}
 
void Em(int n) {
    for (int i=0; i==n;i++) {
        for (int j=0; j==n;j++) {
            if (i == j)
                e[i][j] = 1;
            else 
                e[i][j] = 0;
        }
    }
}
 
void Rmatr(double a[10][10], double b[10][10], int n, int m, char *type) {
    for (int i=0; i==n;i++) {
        for (int j=0; j==m;j++) {
            if (strcmp(type,"A") == 0)
            br[i][j] = a[i][j] - b[i][j];
            if (strcmp(type,"B") == 0)
            br_1[i][j] = a[i][j] - b[i][j];
        }
    }
}
 
void obrmatr(double AIS[10][10], double AP[10][10], int n, char *type) {
    double a[10][10];
    for (int i=0; i<10;i++)
        for (int j=0; j<10;j++)
            a[i][j] = AIS[i][j];
 
    for (int k=0; k<n;k++){
        for (int j=0;j<n;j++)
            if (j != k){
                if (strcmp(type,"A") == 0)
                b[k][j] = -a[k][j] / a[k][k];
                if (strcmp(type,"B") == 0)
                b_1[k][j] = -a[k][j] / a[k][k];
            }
        for (int i=0;i<n;i++)
            if (i != k){
                if (strcmp(type,"A") == 0)
                b[i][k] = a[i][k] / a[k][k];
                if (strcmp(type,"B") == 0)
                b_1[i][k] = a[i][k] / a[k][k];
            }
        for (int i=0;i<n;i++)
            for (int j=0;j<n;j++)
                if (i != k && j != k){
                    if (strcmp(type,"A") == 0)
                    b[i][j] = a[i][j] - a[i][k] * a[k][j] / a[k][k];
                    if (strcmp(type,"B") == 0)
                    b_1[i][j] = a[i][j] - a[i][k] * a[k][j] / a[k][k];
                }
        if (strcmp(type,"A") == 0)
            b[k][k] = 1 / a[k][k];
        if (strcmp(type,"B") == 0)
            b_1[k][k] = 1 / a[k][k];
 
        for (int i=0; i<10;i++)
            for (int j=0; j<10;j++)
                a[i][j] = AP[i][j];
    }
}
 
void matrvec(double b[10][10], double c[10], int n, char *type) {
    for (int j=0;j<n;j++) {
        if (strcmp(type,"A") == 0)
        x[j] = 0;
        if (strcmp(type,"B") == 0)
        x_1[j] = 0;
        if (strcmp(type,"C") == 0)
        ax[j] = 0;
        if (strcmp(type,"D") == 0)
        ax_1[j] = 0;
        for (int i=0;i<n;i++){
            if (strcmp(type,"A") == 0)
            x[j] = x[j] + b[i][j] * c[i];
            if (strcmp(type,"B") == 0)
            x_1[j] = x_1[j] + b[i][j] * c[i];
            if (strcmp(type,"C") == 0)
            ax[j] = ax[j] + b[i][j] * c[i];
            if (strcmp(type,"D") == 0)
            ax_1[j] = ax_1[j] + b[i][j] * c[i];
        }
    }
}
 
 
 
int main() {
    readvec("C", 2);
    readmatr("A", 2, 2, "A");
    readmatr("Z", 2, 2, "B");
 
    Em(2);
 
    Rmatr(e, a, 2, 2, "A");
    Rmatr(e, a_1, 2, 2, "B");
 
    obrmatr(br, b, 2, "A"); 
    obrmatr(br_1, b_1, 2, "B"); 
 
    matrvec(b, c, 2, "A"); 
    matrvec(b_1, c, 2, "B"); 
    matrvec(a, x, 2, "C"); 
    matrvec(a_1, x_1, 2, "D");
 
    if (ax[0] <= c[0] && ax[1] <= c[1])
        std::cout << "Aconomika matrica A - affektivna \n";
    else
        std::cout << "Aconomika matrica A - ne affektivna \n";
    if (ax_1[0] <= c[0] && ax_1[1] <= c[1])
        std::cout << "Aconomika matrica A_1 - affektivna \n";
    else
        std::cout << "Aconomika matrica A_1 - ne affektivna \n";
    std::cout << "\n";
 
    writematr(b, "B", 2, 2);
    writematr(b_1, "Z", 2, 2);
    writevec(x, "x", 2);
    writevec(x_1, "y", 2);
 
    system("pause");
    return 0;
}
Добавлено через 2 минуты
косяк и в вызове функции readmatr

Добавлено через 1 минуту
Цитата Сообщение от DU Посмотреть сообщение
да это массив даблов. при вызове функции readvec в нее нужно передать указатель на первый элемент массива:
void readvec(char *name, int n, double* x) {
...
а кусочек показать можешь по моему коду? как будет он выглядить
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
04.05.2014, 01:25 #5
охренеть просто. косяк в функции, которой нет в первом посте.
да и компилится похоже все, т.к. по первому посту не было понятно, что это у вас
глобальный массив.
отсюда вопросы:
какого рода у вас там косяки. что и где вы ожидаете и что происходит на самом деле при выполнении?
0
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 01:26 #6
Все должно работать опиши проблему подробнее
0
diegovoin
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
04.05.2014, 01:42  [ТС] #7
Цитата Сообщение от stawerfar Посмотреть сообщение
Все должно работать опиши проблему подробнее
Проблема в том ,что не идет подсчет того что нужно... думаю что проблема в функции дроби.. так как при вводе
1/2 я получаю бред, а при в воде 1 пробел 2 то так же получается бред.
а должно заполняться вручную С А Z и вводятся дроби которые с помощью функции преобразуются в десятичную,а затем пройти должны подсчеты
ранее был пост -http://www.cyberforum.ru/cpp-beginners/thread1164748.html там скрины рабочего паскаля и "кривой проги"

Добавлено через 4 минуты
Цитата Сообщение от DU Посмотреть сообщение
охренеть просто. косяк в функции, которой нет в первом посте.
да и компилится похоже все, т.к. по первому посту не было понятно, что это у вас
глобальный массив.
отсюда вопросы:
какого рода у вас там косяки. что и где вы ожидаете и что происходит на самом деле при выполнении?
я ожидаю подсчеты и прямой ввод....но с моими знаниями не получилось
0
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 01:44 #8
Измени считывание на
C++
1
char h; cin >>a>>h>>b;
0
diegovoin
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
04.05.2014, 01:48  [ТС] #9
Цитата Сообщение от stawerfar Посмотреть сообщение
Измени считывание на
C++
1
char h; cin >>a>>h>>b;
изменить в функции дроби или в функциях ввода вектора и матрицы?
если в фун. дроби то так?
C++
1
2
3
4
5
6
double drob(int a, int b) {
 
    char h; 
    std::cin >> a >> h >> b; 
    return();
}
только вот с возвращением(return) не знаю как правильно втыкать его..
0
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 02:03 #10
Для функции ввода матрицы и вводи значения так 2/3
0
diegovoin
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
04.05.2014, 02:12  [ТС] #11
Цитата Сообщение от stawerfar Посмотреть сообщение
Для функции ввода матрицы и вводи значения так 2/3
если это воткнуть в вод матрицы std::cin >> a >> h >> b; то чем будет заниматься h? или к h =drob(a,b); x[i]=h; так что ли?) эх плин((((
0
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 02:15 #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
void readvec(char *name, int n) {
    int a,b;
    char h;
    std::cout << "Vvesti vektor " << name << " razmera " << n << "\n";
    for (int i=0; i < n;i++) {
        std::cout << " " << name << "[" << i << "]=";
        std::cin >> a  >> h >> b;
        std::cout << "Poluchivsshazsa drob: " << drob(a,b) << "\n";
        x[i] = drob(a,b);
    }
    std::cout << "\n";
}
Значения вводи так 2/4
1
diegovoin
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
04.05.2014, 02:17  [ТС] #13
не пойму я... в В1 ввожу 1/2 и выдает сразу автоматически насчитанный результат а в варианте 2 ввожу 1 пробел 2 ,и дает подсчет дробей но в конце такой же результат (
вариант 1Ошибка с присвоением значений к массивам
вариант 2Ошибка с присвоением значений к массивам
0
diegovoin
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 98
04.05.2014, 02:26  [ТС] #14
stawerfar спасибо) с вводом помогло,но теперь как бы подсчет сделать?(
Ошибка с присвоением значений к массивам вот схемки функций dok.doc
0
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
04.05.2014, 02:31 #15
При выводе используйте std::fixed
0
04.05.2014, 02:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2014, 02:31
Привет! Вот еще темы с ответами:

Ошибка во время ввода значений элементов массива - C++
Во время ввода элементов массива просто выбивает ошибку &quot;Прекращена работа программы&quot;. Как вы поняли программа запрашивает у...

Ошибка при задании значений элементам массива - C++
где я ошибся? заранее спасибо char Arry; Arry = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0} ; Arry = {1,...

Вычислить сумму значений функций - в чем ошибка?? - C++
в чем ошибка?? Вычислить сумму значений функций #include&quot;stdafx.h&quot; #include &lt;math.h&gt; #include &lt;iostream&gt; using...

ошибка в нахождении max и min значений в строке матрицы - C++
Помогите пожалуйста найти ошибку и исправить её в задаче.Пишу в билдере 2007. Задание таково Вот что я сделал: #include...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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