Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C (СИ) Нужно написать программу, которая подсчитывает и выводит число букв в самом длинном слове http://www.cyberforum.ru/c-beginners/thread1841145.html
#include <stdio.h> int main() { int c; int i; i = 0; while ((c = getchar()) != EOF) {
C (СИ) Кодблокс выдаёт ошибку undefinied reference to "SetConsole" #include <stdio.h> #include <stdlib.h> #include <locale.h> ... int main() { setlocale(LC_CTYPE, "rus"); http://www.cyberforum.ru/c-beginners/thread1841086.html
Ввести строку и слово; вставить введенное слово перед самым длинным словом в строке C (СИ)
Ввести строку и слово. Вставить введенное слово перед самым длинным словом в строке. Написать программу с использованием библиотеки <stdio.h>
Упорядочить массив по возрастанию C (СИ)
Упорядочить массив по возрастанию Подскажите, как реализовать
C (СИ) Вычисление значения функции по заданному значению аргумента http://www.cyberforum.ru/c-beginners/thread1841017.html
Написать программу для вычисления значения Y для заданного X:
C (СИ) Сортировка массива структур Введение массивов структур с клавиатуры и их вывода на экран в виде таблиц Сформировать массив структур данным о книгах библиотеки: автор, название книги, издательство, год издания. Отсортировать... подробнее
IVAN1234
45 / 45 / 40
Регистрация: 31.08.2015
Сообщений: 147
0

Ошибка сегментации

02.11.2016, 23:37. Просмотров 298. Ответов 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
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
#include <stdio.h>
#include <stdlib.h>
void founddells(double a, double *c,double m) //Поиск и запись всех делителей 0 коэффициента
{
    double i;
    a = fabs(a);
    int k = (int)a;
    int z;
    for(i = 1; i <= a*2 ;i++) {
        z = (int)i;
        if(!(k % z)) {*c = i/m;c++;*c = -i/m; c++;}
    }
}
void clean(double *c, double n) //Очистка массива для последующей записи
{
    int i;
    for(i = 0; i < n; i++) c[i] = 0;
}
double pow(double a, int n) //Возведение в степень
{
    if(n > 0)return a*pow(a, n-1);
    else return 1;
}
int main()
{
    int i;
    printf("Write vishuy stepen'\n");
    int p;
    scanf("%d", &p);
    double *n = (double*)malloc(sizeof(double) * p+4);
    printf("Write koeffs:\n");
    for(i = 0; i <p ; i++) { //Сканируем коеффициенты
        scanf("%lf", &n[i]);
    }
    for(i = 0; i < p; i++) { //Выводим исходное уравнение
        printf("x^%d*%.1f %c", p-i-1,fabs(n[i]), (n[i+1] > 0) ? (i == p-1) ? 0 : '+' :(i == p-1) ? 0 : '-');
    }
    double j = n[p-1]; //Коеффициент при 0 степени
    putchar('\n');
    double *r = (double *) malloc(100*4); //Память под коэффициенты
    double viraj = 0; // Храним здесь значение уравнения
    int m = 0; //Счетчик
    double std = 0; //В схеме горнера
    double count = 0; //Нужный делитель
    for(;p > 3;p--) { //Поехали, пока не дойдем до квадратного уравнения
        clean(r,100);//Полностью чистим массив
        founddells(j,r,n[0]); //Ищем делители коэффициента при 0
        for(i = 0; *r != 0 ; i++,r++) { //Перебираем все делители
            for(m = 0; m < p; m++)
                viraj =viraj + pow(*r, p-m-1) * n[m]; //Считаем значение при таком то делителе
            if(viraj == 0) {count = *r;break;} //Если равно 0 то подходит
            viraj = 0;//Обнуляем для последующих вычислений
        }
        std = n[0]; //Снимаем первый коэффициент при самой старшей степени
        n[p-1] = 0; //Сразу же скидываем остаток на 0 , так как мы просто упращаем уравнение
        for(i = 1; i < p-1; i++) {
            n[i] = count * std + n[i]; //Записываем последующие коэффициенты по правилу : предыдущий * выбраный делитель + нынешний
            std = n[i]; //Записываем нынешний делитель что бы в следующий раз его применить
        }
        for(i = 0; i < p-1; i++) { //Опять выводим уравнение
            printf("x^%d*%.1f %c", p-i-2, fabs(n[i]), (n[i+1] > 0) ? (i == p-2) ? 0 : '+' :(i == p-2) ? 0 : '-');
        }
        putchar('\n');
    }
}


Вернуться к обсуждению:
Ошибка сегментации
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2016, 23:37
Готовые ответы и решения:

Ошибка сегментации
всем здраствуйте. double power(double n, int p) //определение функции 22 { 23 if (n...

Ошибка сегментации
собственно прикрепляю проект (code::blocks). при запуске вылетает ошибка. почему - хз.

Ошибка сегментации
Задача: В двух файлах дано 2 массива. Вывести эти 2 массива в третий файл в отсортированном виде....

Ошибка сегментации
# include &lt;sys/types.h&gt; # include &lt;sys/times.h&gt; # include &lt;sys/socket.h&gt; # include &lt;stdio.h&gt; #...

Непонятная ошибка сегментации
Собственно код #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;unistd.h&gt; #include &lt;stdlib.h&gt;...

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