С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Aqua77
25 / 25 / 19
Регистрация: 13.07.2015
Сообщений: 433
1

Где поставить вторую точку останова отладчика?

15.08.2015, 00:05. Просмотров 1106. Ответов 23
Метки нет (Все метки)

Поставьте точку останова Отладчика на оператор j=i и в цикле работы getline().

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
getline(char s[],int lim)
{
 int c,i;
 static int j;
  for(i=0;i<max-1&&(c=getchar())!=eof&&c!='\n';i++)
   s[i]=c;
   i++;
  s[i]='\0';
  j=i;     //Вот оператор j=i. Сюда ставим точку. Куда вторую точку? "в цикле работы getline()."- это где?
return(i);
}
 
int main()
{
 
  char s[max];
  for(int i=0; i<3; i++)
   {
  getline (s,max);
  static int b;
  b=1;
   }
getchar();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2015, 00:05
Ответы с готовыми решениями:

ОС Windows инициировала точку останова
Здравствуйте, помогите устранить ошибку при выполнении программы #include...

ОС Windows инициировала точку останова в программе
Писал программу для нахождения минимального пути из точки start(Х) в точку...

Странная ошибка ОС Windows инициировала точку останова
Что могло вызвать такую ошибку ? При нажатии кнопки продолжить программа...

ОС Windows инициировала точку останова в stroki.exe
#include&lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;string&gt; #include&lt;stdio.h&gt;...

Надо установить точку останова в gdb в cygwin
Привет!Скомпилировал интерпритатор python с отладочной инфо в cygwin. Теперь...

23
John Prick
838 / 769 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
Завершенные тесты: 3
15.08.2015, 00:12 2
Строка 19, не?
0
Aqua77
25 / 25 / 19
Регистрация: 13.07.2015
Сообщений: 433
15.08.2015, 00:15  [ТС] 3
Почему не 5? там тоже цикл
0
John Prick
838 / 769 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
Завершенные тесты: 3
15.08.2015, 00:28 4
В таком случае нужно более конкретная трактовка, что есть "цикл работы getline". По-моему, цикл внутри getline под это определение не подходит. Внутри getline могло бы быть и 100500 циклов.
0
ValeryS
Модератор
7375 / 5575 / 708
Регистрация: 14.02.2011
Сообщений: 18,950
15.08.2015, 00:35 5
Цитата Сообщение от Aqua77 Посмотреть сообщение
getline(char s[],int lim)
Цитата Сообщение от Aqua77 Посмотреть сообщение
for(i=0;i<max-1
и кто такой max?и зачем нам lim?
0
Aqua77
25 / 25 / 19
Регистрация: 13.07.2015
Сообщений: 433
15.08.2015, 01:11  [ТС] 6
Цитата Сообщение от ValeryS Посмотреть сообщение
и кто такой max?и зачем нам lim?
в библиотеке это константная переменная размер 1000
0
Горелый
70 / 44 / 17
Регистрация: 20.03.2014
Сообщений: 197
15.08.2015, 01:15 7
"в цикле работы getline()."
Я думаю что имеется в виду в тело цикла, тогда это будет строчка 6-ть
0
Aqua77
25 / 25 / 19
Регистрация: 13.07.2015
Сообщений: 433
15.08.2015, 01:15  [ТС] 8
И кстати чтобы не создавать новую тему. Я знаю что такое стековая память, это когда компилятор отводит конкретный объём памяти, которая определяется типом данных. А что такое регистры?
0
John Prick
838 / 769 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
Завершенные тесты: 3
15.08.2015, 01:17 9
Лучший ответ Сообщение было отмечено Aqua77 как решение

Решение

Цитата Сообщение от Aqua77 Посмотреть сообщение
А что такое регистры?
Регистры процессора. Физически находятся в самом процессоре, а не в оперативной памяти. Доступ быстрее, как правило.
1
ValeryS
Модератор
7375 / 5575 / 708
Регистрация: 14.02.2011
Сообщений: 18,950
15.08.2015, 01:19 10
Цитата Сообщение от Aqua77 Посмотреть сообщение
А что такое регистры?
прочитай что такое процессоры,
регистры оне у них внутри
Цитата Сообщение от Aqua77 Посмотреть сообщение
в библиотеке это константная переменная размер 1000
а зачем в функцию передается lim который в ней не используется
0
Aqua77
25 / 25 / 19
Регистрация: 13.07.2015
Сообщений: 433
15.08.2015, 01:27  [ТС] 11
Цитата Сообщение от ValeryS Посмотреть сообщение
а зачем в функцию передается lim
Просто это код из учебника, где в в функции getchar, продемонстрирована работа static. Он мне говорит"Поставьте точку останова Отладчика на оператор j=i и в цикле работы getline()." Я и не пойму где что ставить.
0
ValeryS
Модератор
7375 / 5575 / 708
Регистрация: 14.02.2011
Сообщений: 18,950
15.08.2015, 01:37 12
Лучший ответ Сообщение было отмечено Aqua77 как решение

Решение

Цитата Сообщение от Aqua77 Посмотреть сообщение
и в цикле работы getline().
Цитата Сообщение от Aqua77 Посмотреть сообщение
продемонстрирована работа static.
ну скорее всего в
Цитата Сообщение от Aqua77 Посмотреть сообщение
s[i]=c;
и обрати внимание на j
она не обнуляется при каждом вызове функции, а сохраняет свое значение
статическая переменная ведет себя так же как глобальная, с той лишь разницей, что видна только внутри блока где объявлена
например в функции main ты её не прочитаешь
1
Aqua77
25 / 25 / 19
Регистрация: 13.07.2015
Сообщений: 433
15.08.2015, 01:48  [ТС] 13
Цитата Сообщение от ValeryS Посмотреть сообщение
сохраняет свое значение
Кстати, может я позже сам пойму но, зачем сохранять значение переменной, если она видна только в 1 функции.
0
ValeryS
Модератор
7375 / 5575 / 708
Регистрация: 14.02.2011
Сообщений: 18,950
15.08.2015, 01:53 14
Цитата Сообщение от Aqua77 Посмотреть сообщение
Кстати, может я позже сам пойму но, зачем сохранять значение переменной, если она видна только в 1 функции.
например в твоем примере(во каламбурчик) можно узнать длину всех строк
или вот например
C++
1
2
3
4
5
6
7
int func()
{
static int a=0;
a++;
....................
return a;
}
функция вернет сколько раз её вызывали
0
Aqua77
25 / 25 / 19
Регистрация: 13.07.2015
Сообщений: 433
15.08.2015, 02:07  [ТС] 15
Цитата Сообщение от ValeryS Посмотреть сообщение
можно узнать длину всех строк
Для этого нужена точка останова отладчик? Я не врублюсь никак.
Вот весь код:
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
#include <stdio.h>
#include <conio.h>
#define eof 26
#define max 100
 
getline(char s[],int lim)
{
 int c,i;
 static int j;
  for(i=0;i<max-1&&(c=getchar())!=eof&&c!='\n';i++)
   s[i]=c;
   i++;
  s[i]='\0';
  j=i;
return(j);
}
 
int main()
{
 
  char s[max];
  for(int i=0; i<3; i++)
   {
  getline (s,max);
  static int b;
  b=i;
   }
getchar();
}
Что вообще делает эта программа. Как я должен понять работу static из этого кода?
0
ValeryS
Модератор
7375 / 5575 / 708
Регистрация: 14.02.2011
Сообщений: 18,950
15.08.2015, 02:14 16
Цитата Сообщение от Aqua77 Посмотреть сообщение
Для этого нужена точка останова отладчик?
нет
точка останова нужна чтобы посмотреть как работает программа, изнутри так сказать
Цитата Сообщение от Aqua77 Посмотреть сообщение
Что вообще делает эта программа.
три раза считывает строку с клавиатуры
Цитата Сообщение от Aqua77 Посмотреть сообщение
Как я должен понять работу static из этого кода?
так и понять, заметить что j остается прежней при новом заходе в функцию, в отличии от i, которая каждый раз создается заново
0
lss
930 / 859 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
15.08.2015, 02:18 17
Цитата Сообщение от Aqua77 Посмотреть сообщение
Что вообще делает эта программа.
Откуда ты её взял?
0
Aqua77
25 / 25 / 19
Регистрация: 13.07.2015
Сообщений: 433
15.08.2015, 02:18  [ТС] 18
Цитата Сообщение от ValeryS Посмотреть сообщение
заметить что j остается прежней при новом заходе в функцию
Как мне это заметить?) Я просто ввожу 3 строки и программа закрывается...
0
ValeryS
Модератор
7375 / 5575 / 708
Регистрация: 14.02.2011
Сообщений: 18,950
15.08.2015, 02:25 19
Цитата Сообщение от Aqua77 Посмотреть сообщение
Как мне это заметить?)
наверно, когда срабатывает точка останова
ты вообще отладчиком пользоваться умеешь?
в какой среде пишешь?
0
Aqua77
25 / 25 / 19
Регистрация: 13.07.2015
Сообщений: 433
15.08.2015, 02:31  [ТС] 20
Вот-вот в этом вся и соль, с отладчиком недели разбираюсь, несколько тем создал. Понятия не имею как пользоваться, умею только точки поставить и всё, какие-то F8 понятия не имею что за. Borland C++ Builder...

Добавлено через 29 секунд
Цитата Сообщение от ValeryS Посмотреть сообщение
в какой среде пишешь?
Borland C++ Builder
0
15.08.2015, 02:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2015, 02:31

Ошибка. ОС Windows инициировала точку останова в файле
Доброго всем времени суток. Есть задание : Найти самое большое слово в файле и...

ОС Windows инициировала точку останова в kursach.exe
Доброго времени суток! Проблема распространенная конечно, но в этом...

Ошибка компиляции:ОС Windows инициировала точку останова
Доброго времени суток! Обращаюсь с наверняка очень распространенной проблемой....


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

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

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