0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 41
1

ошибка)

19.03.2013, 22:05. Показов 603. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите пожалуйста найти ошибку в коде)
код решает систему методом гаусса.
проблема в том, что программа останавливается на вводе матрицы а (ввод просто не заканчивается)
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
#include <iostream.h>
#include <math.h>
double a[5][5];
double b[5];
double x[5];
double m;
double s;
int i;
int j;
int k;
class Gauss
{
public: 
void iNput()
{
    cout << "vvedite massiv a"<<endl;
    for(i=1;i<=5;i++)
    for(j=1;j<=5;j++)
    cin >> a[i][j];
    cout << "vvedite massiv b"<<endl;
for(i=1;i<=5;i++)
    cin >>b[i] ;
}
 
void rAsschet()
{
for (i=1; i<5; i++)
for (j =i+1; j<=5;j++) 
{
    m=a[i][j]/a[i][i];
    b[j]=b[j]-m*b[i];
for(k=1;k<=5;k++)
    a[j][k]=a[j][k]-m*a[i][k];
}
    x[5]=b[5]/a[5][5];
for(i=4;i>0;i--)
{
    s=0;
for(j=i+1;j<=5;j++)
    s=s+a[i][j]*x[j];
    x[i]=(b[i]-s)/a[i][i];
}
}
void oUtput(){
for(i=1;i<=5;i++)
    cout<<"x"<<i<<"="<<x[i]<<endl;
}
};
void main()
{
    Gauss objiNput;
    Gauss objrAsschet;
    Gauss objoUtput;
    objiNput.iNput();
    objrAsschet.rAsschet();
    objoUtput.oUtput();
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.03.2013, 22:05
Ответы с готовыми решениями:

IIS- asp ошибка: HTTP 500.100 - Внутренняя ошибка сервера - ошибка ASP Internet Information Services
Привет! Конфигурация win2000pro sp2, стандартный IIS, IE 5. При попытке обратиться к...

Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка записи!
Доброго всем времени суток! подскажи пожалуйста как исправить ошибку: Ошибка при чтении изменений...

Ошибка при добавлении в файл. Ошибка 101: Ошибка записи на диск (Error 101: Disk write error).
Здравствуйте, возникла проблема такого плана. Нужно произвести добавление записи в файл, но после...

Ошибка разбора XML/ Ошибка при вызове метода контекста (Прочитать)
1C 8.2 Документооборот КОРП 1.2 Текст ошибки...

17
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.03.2013, 22:08 2
C++
1
2
3
4
5
6
7
8
9
10
void iNput()
{
    cout << "vvedite massiv a"<<endl;
    for(i=0;i<5;i++)
    for(j=0;j<5;j++)
    cin >> a[i][j];
    cout << "vvedite massiv b"<<endl;
    for(i=0;i<5;i++)
    cin >>b[i] ;
}
1
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
19.03.2013, 22:15 3
У меня что то считает и зацикливания нету, у вас массив 5 на 5 то есть 25 элементов.

Вот что у меня вывело
vvedite massiv a
1
2
3
4
5
6
7
8
9
4
5
6
1
2
3
4
5
6
4
7
8
99
6
5
4
vvedite massiv b
1
2
3
4
5
x1=-243.667
x2=68.8333
x3=-262.5
x4=237.5
x5=-12.5

Добавлено через 3 минуты
alsav22, вы предложили шило на мыло ?
от 1 до 5 = нет выхода за пределы массива
вы от 0 до 4 = результат тот же
1
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 41
19.03.2013, 22:15  [ТС] 4
хм, а в чем моет быть проблема?
не могу вникнуть никак

если что - Visual 6.0
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.03.2013, 22:20 5
Цитата Сообщение от egor2116 Посмотреть сообщение
alsav22, вы предложили шило на мыло ?
от 1 до 5 = нет выхода за пределы массива
Как это нету? Если массив объявлне как double b[5], то b[5] - выход за пределы массива.

Добавлено через 56 секунд
Цитата Сообщение от Hammer-On Посмотреть сообщение
не помогло, изменений нет(
Ввод проходит?
1
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
19.03.2013, 22:22 6
Если ошибку точно не какую не пишет, то могу посоветовать убрать ввод значений т.к. он утомительный и заменить кодом.
Убрать
C++
1
cin >> a[i][j];
заменить на что то типа этого
C++
1
a[i][j]=i*j;
тоже и с
C++
1
 cin >>b[i]
на
C++
1
b[i]=i*2
1
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 41
19.03.2013, 22:23  [ТС] 7
неа

Добавлено через 43 секунды
спасибо пробую
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
19.03.2013, 22:25 8
Как это нету? Если массив объявлне как double b[5], то b[5] - выход за пределы массива.
если бы был выход оно бы еще на этапе компиляции ругалось что то там Stack ....

Я код запускал без изменений, и все сработало, смотри выше в теме результат вывода
1
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 41
19.03.2013, 22:27  [ТС] 9
так, дело продвинулось) ввод пошел)
изменил массив на
C++
1
double a[6][6];
как и советовали и заработало
(не понимаю, почему до этого не заработало)
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
19.03.2013, 22:28 10
а я не понимаю как у меня работало?
1
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 41
19.03.2013, 22:31  [ТС] 11
вообще запутался как-то

Добавлено через 1 минуту
сейчас введу те же числа сверим ответы
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.03.2013, 22:32 12
Цитата Сообщение от egor2116 Посмотреть сообщение
если бы был выход оно бы еще на этапе компиляции ругалось
Это ошибка времени выполнения, компилятор не отслеживает выход за пределы массива.
1
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
19.03.2013, 22:34 13
да ты прав, но почему у меня сработало без ошибок или даже предупреждений, пойду пошагово запущу.
1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.03.2013, 22:35 14
Цитата Сообщение от Hammer-On Посмотреть сообщение
вообще запутался как-то
Проверяйте индексы, я вам только на вводе показал, где ошибка, у вас и дальше индексы неправильные. И заполнение массива начинается с нулевого индекса.

Добавлено через 1 минуту
Цитата Сообщение от egor2116 Посмотреть сообщение
или даже предупреждений
Предупреждения компилятор выдаёт, а он это не отслеживает.
1
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 41
19.03.2013, 22:39  [ТС] 15
ввел всё тоже. поменял только
C++
1
2
3
double a[6][6];
double b[6];
double x[6];
иксы кроме х1=1 по нулям

Добавлено через 39 секунд
ага, понял иду фиксить

Добавлено через 59 секунд
хотя, нет, теперь вроде нечего фиксить
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
19.03.2013, 22:47 16
Прикол, не замечал рань за IDE такого
выполняю код
C++
1
2
3
double a[5]={1,2,3,4,5};
for(int j=0;j<=10;j++)
    cout<<a[j]<<endl;
Вывод
1
2
3
4
5
6.64593e-316
-2.31103e-42
-1.33821
-1.49557e-41
-1.33816
1.59115e-314

Вообщем у меня не ругается при выходе за границы массива прикол
1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.03.2013, 22:53 17
Цитата Сообщение от egor2116 Посмотреть сообщение
Вообщем у меня не ругается при выходе за границы массива
И у меня не ругается, поэтому следить за этим - дело того, кто код пишет.
1
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 41
19.03.2013, 22:55  [ТС] 18
всем спасибо, заработало)
0
19.03.2013, 22:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2013, 22:55
Помогаю со студенческими работами здесь

Ошибка HTTP 500 - внутреняя ошибка сервера при отправке почты.
Я пытаюсь отправить почту и присоединяю к ней письма Вот часть страницы Dim myMail Set myMail =...

Django Ошибка доступа (403) Ошибка проверки CSRF. Запрос отклонён
На хостинге разместил сайт и не могу войти в админку, т.к. возникает 403 ошибка &quot;Ошибка доступа...

Загружается до окна приветствия и вылетает ошибка: isass.exe - Системная ошибка
Ребята, помогите кто может... весь день бьюсь безрезультатно... с утра пришёл на работу а сервак...

ASP: Response.Redirect - не работает, ошибка `500 - Внутренняя ошибка сервера'
Всем привет! Есть в ASP-сраничке такой код: Response.Redirect 'page1.asp?ReturnTo=page2.asp' ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru