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

Как проводить пошаговую отладку программы на СИ в среде Dev-C

19.04.2017, 12:50. Показов 10429. Ответов 7
Метки нет (Все метки)

Добрый день,

я до этого писал программки в VBA в Excel, но стало не хватать скорости для обсчета большого объема данных. Посоветовали перейти на СИ. Я установил Dev -C ++4.9.9.2, код алгоритма написал в Блокноте. В Dev открываю Файл - Создать - Новый. В поле вставляю код, потом нажимаю Скомпилировать - он компилирует. А когда я нажимаю Отладка - выдает, что "Ваша программа вызвала нарушение сегментации". Ничего она нес читает, никуда ничего не выводит. Поэтому у меня вопрос: можно ли пройти пошагово по программе чтобы посмотреть как она работает, берет ли из файлов что нужно и где у нее ошибки?? В VBA это просто делалось клавишей F8, а здесь ничего этого нет или я просто никак переключиться не могу.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.04.2017, 12:50
Ответы с готовыми решениями:

Как создавать программы с графическим интерфейсом в среде Dev-cpp?
Прошу, помогите, пожалуйста, сделать программу с графическим интерфейсом в Dev-cpp. Пока не могу...

Как выполнить пошаговую отладку?
#!/usr/bin/env python #coding: utf-8 def crypto(fin, fout, flag='code'): total= info...

Как сделать пошаговую отладку в С++ Builder?
Как сделать пошаговую отладку в С++ Builder?

Как в CRL среде при запуске консольной программы на отладку передать ей параметры
Простите за вроде тривиальный вопрос, но никак не найду ответ. Раньше писал консольные программы,...

7
Модератор
3338 / 2117 / 345
Регистрация: 13.01.2012
Сообщений: 8,255
19.04.2017, 13:15 2
Михаил2011, поставьте точку останова (нажатие на пустое место слева от нужной строки приводящее к выделению этой строки красным цветом), запустите отладку (F8) и когда она дойдет до точки останова выполняйте по шагам (F7 или Shift+F7)
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 8
19.04.2017, 13:37  [ТС] 3
Спасибо за ответ, кое-что сдвинулось. Учить приходиться на ходу. Поставил точку красную, вся строка выделилась красным, дальше нажал F8. Вышло черное окно и сообщение: Ваша программа вызвала нарушение доступа (ошибку сегментации). Остановил выполнение в окне отладка. Поставил красную точку выше: опять то же самое. Снова остановил, поставил точку на строке описания переменных int p, m и т.д. Появилась синяя линия на строке описания массивов. А сбоку в окне Проект вышло: fp=(FILE*)0*0. Я вызываю этот файл, чтобы взять из него данные. Файл txt. Он содержит 1 строку из 122 чисел, разделенных пробелами. Потом строк с данными должно стать более 70 тыс. (По этой причине VBA и не потянул). Подскажите что с файлом fp не так? Программа данных не видит?
0
Модератор
3338 / 2117 / 345
Регистрация: 13.01.2012
Сообщений: 8,255
19.04.2017, 13:41 4
Михаил2011, код где?
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 8
19.04.2017, 13:44  [ТС] 5
Извиняюсь, что торможу, пристегнуть код забыл.
Вложения
Тип файла: txt Текст прораммы РЅР° РЎРё.txt (4.1 Кб, 2 просмотров)
0
Модератор
3338 / 2117 / 345
Регистрация: 13.01.2012
Сообщений: 8,255
19.04.2017, 13:45 6
для удобства я помещу его на форум
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
const int N=10;
const int v=120;
const int Lon=49;
const int ro1=1300;
const int ro2=1900;
const int c1=980;
const int c2=1370;
const float e=0.95;
const float s=0.0000000567;
const float l1=0.02;
const float Fn=0.02;
const float Pi=3.1415;
const float k1=0.000922;
const float k2=0.0093;
const float ksi1=1.48;
const float ksi2=0.073;
main()
{
int p,m,n,y,pt, x, u, z, T, i;
float c, ro, maxtemp, mintemp, Tim, time1,  Tp, Tp1, Tup, Tup1, Delta, k22,k11, l,Lo,b, st, d0, a, roc, roc1, bems, F21, Fx, Fx1;
float k[120][50],z1[50], d[T][50], F3[120], f1[120],Temp[120][50],Temp1[120][50],Tnach[120][50],Tnach2[120][50], Temper[120][50],alfa[120][50],beta[120][50],beta1[120][50], aa[120][50], bb[120][50], ff[120][50];
FILE *fp, *fc;
fp=fopen("fp1.txt","r");
fc=fopen("res1.txt", "w");
 if (fp==NULL){
   printf("Нет файла данных");
   return 1;
}            
a=e*s;
for (u=1;u<=10;u++)
 {
 p=1;
 m=8;
 n=1;
 maxtemp=0;
 mintemp=100;
  for (z=1;z<=120;z++)
  {
   f1[z]=fscanf(fp,"%f", &f1[z]);
    if (f1[z]>0){
     Tup=pow(f1[z],0.25);
     Tup1=Tup;
     }
    else{
     Tup1=25;
     } 
     if (Tup1>maxtemp){
      maxtemp=Tup1;
      
       if (Tup1<mintemp){
        mintemp=Tup1;
      }
 
Delta=maxtemp-mintemp;
k22=k2*(1+(ksi2*(((100/350)^3))));
l=k22*Tim/pow((ro1*c1*Pi),0.5);
Lo=(-logf(0.1/Delta))*l;
b=l1/k22;
 
  for (T=1;T<=120;T++)
   {
    st=0;
    d0=0;
    p=p+1;
    n=n+1;
    y=T+2;
    pt=9;
     for (x=0;x<=Lon;x++)
      {
       st=st+1;
        if (x=0){
        d[T][x]=0.022;
         z1[x]=d[T][x];
         }
        else{
            
         d[T][x]=d[T][x-1]+0.022;
         z1[x]=d[T][x]-d[T][x-1];
         
         if (u=1){
          if (T=0)
           Tnach[0][x]=100;
          else
           Tnach[T][x]=Temp[T-1][x];
           }
        else
            if (T=0)
             Tnach[0][x]=Tnach2[120][x];
            else
             Tnach[T][x]=Tnach2[T-1][x]; 
             }
             }
       F3[y]=fscanf(fp,"%f", &F3[y]);      
       if (F3[y]>0){
        Tp=pow(F3[y],0.25);
        Tp1=Tp;
        Tnach[T][0]=Tp;
        }
       else
       Tp1=100;
    
       if (d[T][x]<0.02){
        k[T][x]=k1*(1+(ksi1*(pow((Tnach[T][x]/350),3))));
        c=c1;
        ro=ro1;
        }
       else
        k[T][x]=k2*(1+(ksi2*(pow((Tnach[T][x]/350),3))));      
        c=c2;
        ro=ro2;   
        }
        
     roc=ro*c/time1;
     aa[T][x]=k[T][x]/pow(z1[x],2);
     bb[T][x]=(2*k[T][x]/pow(z1[x],2))+roc;
     ff[T][x]=-roc*Tnach[T][x];
      if (x=0){
       alfa[T][x]=2*k[T][x]*time1/((2*k[T][x]*time1)+(pow(z1[x],2)*ro*c));
       k11=k1*(1+(ksi1*(pow((Tp1/350),3))));
       bems=2*k[T][x]*time1/((2*k[T][x]*time1)+(pow(z1[x],2)*ro*c));
       beta[T][0]=bems*((roc1*Tp1/(2*k[T][x]*time1))+(z1[x]*s*F3[y]/k[T][x])-(e*s*z1[x]*pow(Tnach[T][0],4)/k[T][x]));
       }
     else
       alfa[T][x]=aa[T][x]/(bb[T][x]-(aa[T][x]*alfa[T][x-1]));
       beta[T][x]=((aa[T][x]*beta[T][x-1])-ff[T][x])/(bb[T][x]-(aa[T][x]*alfa[T][x-1]));
      }
      m=m+1;
      }
      
      for (x=Lon; x<=0;x--)
       {
        if (x=Lon){
         Temp[T][x]=((k[T][x]*beta[T][x-1])-(z1[x]*Fn))/(k[T][x]*(1- alfa[T][x-1]));
         Tnach2[T][x]=Temp[T][x];
        }
        else{
         Temp[T][x]=(alfa[T][x]*Temp[T][x+1])+beta[T][x];
         Tnach2[T][x]=Temp[T][x];
         }
        m=m-1;
        }
       
       for (i=1;i<=100;i++)
        {
         F21=F3[y]*s;
         Fx=Temp[T][x]=(alfa[T][0]*Temp[T][1])-beta[T][0];
         Fx1=1+(8*e*s*z1[0]*time1*pow(Temp[T][0],3)/((2*k[T][0]*time1)+(pow(z1[0],2)*ro*c)));
         Temp1[T][0]=Tnach[T][0]-(Fx/Fx1);
          if (fabs(Temp[T][0]-Temp1[T][0])<0.1){
           break;
         Temp[T][0]=Temp1[T][0];
         }
         }
         fprintf(fc,"%f",Temp[T][x]);
         fclose (fc);
         fclose(fp);   
         }
         }
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 8
19.04.2017, 13:46  [ТС] 7
Название файла перекосилось, код писал по самоучителю http://kpolyakov.spb.ru/school/c.htm
0
Модератор
3338 / 2117 / 345
Регистрация: 13.01.2012
Сообщений: 8,255
19.04.2017, 13:49 8
Михаил2011, вы не инициализировали переменную T которая используется в качестве размерности массива d

Добавлено через 46 секунд
...не говоря уже о том что это должна быть константа - в противном случае нужно использовать динамический массив
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2017, 13:49

Как правильно проводить отладку кода
Добрый день. Как отследить место ошибки в программе написанная на на Visual Studio 2015 на сервере...

как в C++ Builder 5.0 под Windows XP запустить пошаговую отладку dll?
Помогите пожалуйста решить следующую проблему: как в C++ Builder 5.0 под Windows XP запустить...

Как работают условия в среде Dev-C++?
Я умоляю, подскажите, как работают условия - if - в среде DEV-C++. Не дублируйте вопросы в...

Как в среде Dev-C++ сделать доступными технологии OpenMP?
Доброго времени суток. Среда разработки: Dev-C++ 5.7.1 Полагаю, нужно параметры компилятора...


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

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

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