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

Что не так с компилятором или почему программа рушится просто так?

07.05.2021, 13:11. Показов 1204. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не обращайте внимание на г*внокод, в котором смешаны и Си и Си ++, здесь это не играет никакой роли.
Вопрос в том, почему на онлайн компиляторе, например, все работает и результат выдается, а в Dev - нет, как только доходит до
первого if в двойном цикле, произвести вычисление, видимо, программа не может и дальше не идет (проверено через принты).
Dev Cpp 5.11 TDM-GCC 4.9.2
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
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
 
using namespace std;
 
int main() {
    int n = 5, si = 3;
    double x[n] = {1, 3, 5, 7, 9};
    double y[n] = {2, 5, 2, -1, 2};
    double S[2], Inp, h[n-1], M[si], C[si][si];
 
    printf(" Data: \n x : ");
    for (int i = 0; i < n; i++) printf("%2.4f ", x[i]);
    printf("\n y : ");
    for (int i = 0; i < n; i++) printf("%2.4f ", y[i]);
    cout << "\n" << endl;
    printf(" Input S(x1), S(x2): ");
    cin >> S[1] >> S[2];
    for (int i = 1; i<= n-1 ; i++) {
        h[i] = x[i] - x[i-1];
    }
    
    for (int i = 0; i<si; i++) {
        for (int j = 0; j<si ; j++) {
            if (j==i) C[i][j] = ((h[i+1]+h[i+2])/3);        
            if (j==i+1) C[i][j] = (h[i+2])/6;
            if (j==i-1) C[i][j] = h[i+1]/6;
            if (abs(i-j)>1) C[i][j] = 0;
        }
    }
    
    cout << "\n" << endl;
    for (int i = 0; i<si; i++) {
        for (int j = 0; j<si ; j++) {
            printf(" %2.4f", C[i][j]);
        }
        cout << endl;
    }
    return EXIT_SUCCESS;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2021, 13:11
Ответы с готовыми решениями:

Обьясните (или просто укажите) почему код так работает
В общем, есть такой вот код. Все работает отлично, кроме одного, проверка на корректность. Если я...

что то не так с компилятором?
есть класс, который переписан с книги Лафоре Р. #include &lt;cstdlib&gt; #include &lt;iostream&gt;...

Что то не так или почему не получается?
Всем привет! У меня есть проблема, а именно, мне нужно написать код, который бы скачивал...

Почему не собирается программа? Подскажите что не так?
File.h #define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace...

2
403 / 261 / 167
Регистрация: 13.01.2021
Сообщений: 1,162
07.05.2021, 13:18 2
Greggriny,
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
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define n 5
using namespace std;
 
int main() {
    int si = 3;
    double x[n] = {1, 3, 5, 7, 9};
    double y[n] = {2, 5, 2, -1, 2};
    double S[2], Inp, h[n-1], M[si], C[si][si];
 
    printf(" Data: \n x : ");
    for (int i = 0; i < n; i++) printf("%2.4f ", x[i]);
    printf("\n y : ");
    for (int i = 0; i < n; i++) printf("%2.4f ", y[i]);
    cout << "\n" << endl;
    printf(" Input S(x1), S(x2): ");
    cin >> S[1] >> S[2];
    for (int i = 1; i<= n-1 ; i++) {
        h[i] = x[i] - x[i-1];
    }
    
    for (int i = 0; i<si; i++) {
        for (int j = 0; j<si ; j++) {
            if (j==i) C[i][j] = ((h[i+1]+h[i+2])/3);        
            if (j==i+1) C[i][j] = (h[i+2])/6;
            if (j==i-1) C[i][j] = h[i+1]/6;
            if (abs(i-j)>1) C[i][j] = 0;
        }
    }
    
    cout << "\n" << endl;
    for (int i = 0; i<si; i++) {
        for (int j = 0; j<si ; j++) {
            printf(" %2.4f", C[i][j]);
        }
        cout << endl;
    }
    return EXIT_SUCCESS;
}
1
18822 / 9826 / 2401
Регистрация: 30.01.2014
Сообщений: 17,260
07.05.2021, 13:43 3
Лучший ответ Сообщение было отмечено Greggriny как решение

Решение

Цитата Сообщение от Greggriny Посмотреть сообщение
C++
1
cin >> S[1] >> S[2];
C++
1
cin >> S[0] >> S[1]; // т.к. S объявлено как double S[2]
Цитата Сообщение от kirigaua Посмотреть сообщение
C++
1
double S[2], Inp, h[n-1], M[si], C[si][si];
C++
1
2
    double S[2], Inp, h[n] // т.к. в h ниже записывается значение по индексу n-1
               , M[si], C[si][si];
Цитата Сообщение от Greggriny Посмотреть сообщение
C++
1
int n = 5, si = 3;
C++
1
const int n = 5, si = 3;
Цитата Сообщение от Greggriny Посмотреть сообщение
Вопрос в том, почему на онлайн компиляторе, например, все работает и результат выдается, а в Dev - нет
В программе ошибки, которые приводят к Undefined Behavior.

Цитата Сообщение от Greggriny Посмотреть сообщение
Что не так с компилятором
C компилятором все в порядке.
2
07.05.2021, 13:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2021, 13:43
Помогаю со студенческими работами здесь

Как сделать так чтоб работало? Что с компилятором?
ошибка: No such file or directory #include &lt;iostream&gt; using namespace std; int main()...

Какие индексы тут прописать или что я не так делаю? PRIMARY и просто INDEX разная скорость в десятки раз
Суть задачи в том, чтобы выбрать последние айди транзакций, сгруппированные по cat_id. created_at,...

подскажите что не так, почему программа не преобразует строку?
Дана строка - предложение. Проверить, начинается ли первое слово с прописной буквы, если нет, то...

Почему это так работает или я что-то не догоняю?
Вот есть у меня скрипт, который обрабатывает запросы по ajax. Приходит запрос q в формате: q - имя...

Что не так, почему так происходит?
Вот bat файл @echo off for /f %%A in ('wmic path Win32_NetworkAdapter where &quot;PNPDeviceID like...

BSOD всплывает просто так, как в играх, так и при нулевой нагрузке
BSOD с разным интервалом по времен: бывает один раз в неделю, бывает два дня подряд. Синий экран...


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

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

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