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

C для начинающих

Войти
Регистрация
Восстановить пароль
 
Вероника99
5 / 5 / 1
Регистрация: 16.12.2013
Сообщений: 429
#1

Что с динамической памятью? - C (СИ)

18.01.2014, 22:06. Просмотров 401. Ответов 3
Метки нет (Все метки)

Прерывается работа программы, еще не научилась нормально выделять ДП. Есть структура и для ее элементов нужно выделить ДП. Выводит сообщение про стек.
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
typedef struct koordynaty
{
    double x,y;
}kd;
double *mas;
int main (void)
{
    setlocale(LC_ALL,"Russian");
    int i,k=0,l,v;
    double *xx,*yy;
    double min,max;
 
    puts("Введите кол-во точек:");
    scanf("%i",&l);
    /*mas=(mas*)calloc(l*2,sizeof(double));
    
    if(!mas)
        return NULL;*/
 
    kd mas[K];
    int size=8;
    for(i=0;i<l;i++)
        {
            puts("\nВведите координаты (x,y)");
            scanf("%lf %lf",&mas[i].x,&mas[i].y);   
        xx=(double*)malloc(size);
            if(!xx)
                return NULL;
            yy=(double*)malloc(size);
            if(!yy)
                return NULL;
    
    
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2014, 22:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что с динамической памятью? (C (СИ)):

Работа с динамической памятью - C (СИ)
Создаю указатели char *s,*p; s = (char *)malloc(sizeof(char)); потом p = (char *)realloc(s, 100) Что такое p и что такое...

Работа с динамической памятью - C (СИ)
Нужно наименьший элемент каждой строки, начиная со второй заменить наибольшим элементом предшествующей строки. Ошибка в том, что программа...

Работа со структурой и динамической памятью - C (СИ)
Как создать структуру типа typedef с двумерным массивом внутри, что бы потом можно было через маллок создать создать динамический ...

Утечки при работе с динамической памятью - C (СИ)
Здравствуйте, отправляю задачу на сервер, пишут:&quot;Утечки памяти&quot;. Для входных данных: 3 Вот код: #include &lt;stdio.h&gt; #include...

Нужен пример работы с динамической памятью - C (СИ)
Помогите пожалуйста сделать память под массив выделять динамически. Организовать в виде функций сохранение массива в файл и загрузку из...

В чем преимущества операций new и delete по сравнению с функциями для работы с динамической памятью - C (СИ)
Здравствуйте, совсем не знаю язык Си, подскажите отличая между С++. В чем преимущества операций new и delete по сравнению с функциями C...

3
MickeyBlueEyes
Студент
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
19.01.2014, 03:06 #2
kd mas[K]; а де K? Наверное если подставить место K значения l, то всё будет работать?
mas лежит на стеке, вот и ошибка о стеке, так шо чето с К.
0
zss
Модератор
Эксперт С++
6542 / 6104 / 2012
Регистрация: 18.12.2011
Сообщений: 15,882
Завершенные тесты: 1
19.01.2014, 10:56 #3
C
1
kd *mas=(kd*)malloc(l*sizeof(kd));
Добавлено через 1 минуту
и в конце программы удалить выделенную память
free(mas);

Добавлено через 3 минуты
Цитата Сообщение от Вероника99 Посмотреть сообщение
xx=(double*)malloc(size);
Не определено значение переменной size.
Если оно равно количеству элементов массива xx, то выделить надо
C
1
xx=(double*)malloc(size*sizeof(double));
0
Вероника99
5 / 5 / 1
Регистрация: 16.12.2013
Сообщений: 429
19.01.2014, 21:07  [ТС] #4
Все равно выдает ошибку, пишет не отправлять отчет...

Добавлено через 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
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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "locale" 
 
#define K 200
#define MIN(min) min+0,1
double arr[K];
 
typedef struct koordynaty
{
    double x,y;
}kd;
//double *mas;
int main (void)
{
    setlocale(LC_ALL,"Russian");
    int i,k=0,l,v;
    double *xx,*yy;
    double min,max;
 
    puts("Введите кол-во точек:");
    scanf("%i",&l);
    /*mas=(mas*)calloc(l*2,sizeof(double));
    
    if(!mas)
        return NULL;*/
 
    kd mas[K];
    int size=4;
    for(i=0;i<l;i++)
        {
            puts("\nВведите координаты (x,y)");
            scanf("%lf %lf",&mas[i].x,&mas[i].y);   
    
        kd* mas=(kd*)malloc(l*sizeof(kd));
           /* mas[i].x=(double*)malloc(size*sizeof(double));
            if(!mas[i].x)
                return NULL;
 
               mas[i].y=(double*)malloc(size*sizeof(double));
            if(!mas[i].y)
                return NULL;    
        */
    }
 
    max=mas[0].x;
        min=mas[0].x;
 
    for(int k=0;k<i;k++)
        {
        
            if(min>mas[k].x)    
                min=mas[k].x;   
                
            if(max<mas[k].x)
                max=mas[k].x;
            
        
        }
        printf("\nMAX X %f MIN X %f  ",max,min);
    double s[3];
                double *m=s;
    int n;
    puts("\nКоординати:");
    for(n=0;n<i;n++)
    {
        
        printf("(%lf ; %lf)\n",mas[n].x,mas[n].y);
    }
    
        double j=min,g=0,pro_k=0,pri_k=0;
        int q=0;
        double h=min;
        double *max_gip=arr,*min_gip=arr;
    
        for(min;min<max;MIN(min),q++)
        {
            for(k=0;k<i;k++)
        
        {
        
            pro_k=mas[k].y; 
            //printf("\nProtivoleg %lf", pro_k);
    
                
                if(min<0&&mas[k].x<0)
                    pri_k=min-mas[k].x;
            
                if(min>0&&mas[k].x>0)
                    pri_k=mas[k].x-min;
                if(min<0&&max>0)
                    pri_k=abs(min)+mas[k].x;
                
                //printf("\nprileg = %f",pri_k);        
                arr[q]=sqrt(pri_k*pri_k+pro_k*pro_k); // поиск гипотенузы-arr-массив гипотенуз
                
                //printf("\nГипотенуза %f ",arr[q]);
                
                if(*max_gip<arr[q])
                
            
                {   
                    *max_gip=arr[q];
                    
                    j=q-j;
                    //printf("Max_gip %lf",*max_gip);
            
                }   
                s[q]=*max_gip;
        
            if(*m>s[q])
            {
                *m=s[q];
                h=q-h;
            }
            
            }
            
    
        }
    
                printf("\nРасстояние = %lf, \n проходит от точки %lf по оси абцисс\n",*m,h);    
            
free(xx);
    //  free(yy);       */
            //  free(mas);
                system("pause");
            
}
Добавлено через 58 минут
Все,я нашла ошибку, оно почему-то выдавало ошибку из-за abs
0
19.01.2014, 21:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2014, 21:07
Привет! Вот еще темы с ответами:

Файл: при работе с динамической памятью возникает ошибка: "Cannot find bounds of current function" - C (СИ)
Хочу считать из файла строку(до точки), выделять под неё память кусками по 50, потом её вывести. При компиляции ошибок нет,...

Что то с памятью... - C (СИ)
#include&lt;iostream.h&gt; #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;math.h&gt; #include&lt;conio.h&gt; #define sqr(x) ((x)*(x)) ...

Работа с памятью, массивы строк - C (СИ)
Здравствуйте, столкнулась с такой проблемой: есть файл, из него считали текст в некий буффер buf, затем создали массив строк Massiv, чтобы...

Работа с памятью, выделенной malloc - C (СИ)
Доброго времени суток! Есть следующая проблема: Выделяем кусок памяти из кучи: void *alloc(size_t size_of_elem, size_t...


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

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

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