Форум программистов, компьютерный форум CyberForum.ru

Не работает код из страуструп - программирование принципы и практика - C++

Восстановить пароль Регистрация
 
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
06.06.2012, 10:47     Не работает код из страуструп - программирование принципы и практика #1
Не работает код из книги страуструп - программирование принципы и практика С++ Глава 5,6,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
#include <iostream>
#include <vector>
using namespace std;
int main()
{
  try
  {
     int temp;
     vector <int> v;
     while(cin >> temp)
     v.push_back(temp);
     for (int i=0; i<=v.size(); i++)
      cout << "v[" << i << "]= " << v[i] << endl; 
  
  }
  catch(out_of_range)
  {
   cout << "ГЋГёГЁГЎГЄГ* Гў äèГ*ïîçîГ*ГҐ" << endl;
   return 1;
 }
 
system("pause");
return 0;
}
вот ошибки в DEV C++
C:\Users\111\Desktop\Eror.cpp In function `int main()':
16 C:\Users\111\Desktop\Eror.cpp `out_of_range' has not been declared
16 C:\Users\111\Desktop\Eror.cpp invalid catch parameter
16 C:\Users\111\Desktop\Eror.cpp `...' handler must be the last handler for its try block
что тут не правильно? проверял код из книги
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2012, 10:47     Не работает код из страуструп - программирование принципы и практика
Посмотрите здесь:

C++ книгa "Программирование: принципы и практика использования C++, исправленное издание, Бьярне Страуструп;
C++ Ответы на книгу Бьерн Страуструп Программирование - Принципы и практика с помощью C + +
C++ Не работает кот с книги Страуструп Программирование и практика на С++
Кто читал Бьярне Страуструп Программирование: принципы и практика использования C++, исправленное издание C++
C++ Бьярне Страуструп Программирование: принципы и практика использования C++ кто читал
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
06.06.2012, 10:58     Не работает код из страуструп - программирование принципы и практика #2
Цитата Сообщение от Sylar9 Посмотреть сообщение
for (int i=0; i<=v.size(); i++)
Здесь выход за границы массива
Нужно вот так
Код
for (int i=0; i<v.size(); i++)
Стоп. Все понял. Здесь нужно функцию at() использовать для генерации исключения
Код
#include <iostream>
#include <vector>
using namespace std;
int main()
{
  try
  {
     int temp;
     vector <int> v;
     while(cin >> temp)
     v.push_back(temp);
     for (int i=0; i<=v.size(); i++)
      cout << "v[" << i << "]= " << [B]v.at(i)[/B] << endl; 
  
  }
  catch(out_of_range)
  {
   cout << "Ошибка в диапозоне" << endl;
   return 1;
 }
 
system("pause");
return 0;
}
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
06.06.2012, 11:10  [ТС]     Не работает код из страуструп - программирование принципы и практика #3
Цитата Сообщение от g-h Посмотреть сообщение
Здесь выход за границы массива
Нужно вот так
Код
for (int i=0; i<v.size(); i++)
Стоп. Все понял. Здесь нужно функцию at() использовать для генерации исключения
Код
#include <iostream>
#include <vector>
using namespace std;
int main()
{
  try
  {
     int temp;
     vector <int> v;
     while(cin >> temp)
     v.push_back(temp);
     for (int i=0; i<=v.size(); i++)
      cout << "v[" << i << "]= " << [B]v.at(i)[/B] << endl; 
  
  }
  catch(out_of_range)
  {
   cout << "Ошибка в диапозоне" << endl;
   return 1;
 }
 
system("pause");
return 0;
}
а что ты исправил в коде ?
Lordif
 Аватар для Lordif
21 / 21 / 1
Регистрация: 18.04.2010
Сообщений: 87
06.06.2012, 11:14     Не работает код из страуструп - программирование принципы и практика #4
Вместо
C++
1
v[i]
надо
C++
1
v.at(i)
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
06.06.2012, 11:21     Не работает код из страуструп - программирование принципы и практика #5
13 строчку замени вот на эту:
Код
cout << "v[" << i << "]= " << v.at(i) << endl;
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
06.06.2012, 11:25  [ТС]     Не работает код из страуструп - программирование принципы и практика #6
Цитата Сообщение от Lordif Посмотреть сообщение
Вместо
C++
1
v[i]
надо
C++
1
v.at(i)
ты не понял мне надо проверить как работает исключение. там должна быть ошибка , ее должен перехватить блок catch()
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
06.06.2012, 11:30     Не работает код из страуструп - программирование принципы и практика #7
Цитата Сообщение от Sylar9 Посмотреть сообщение
ты не понял мне надо проверить как работает исключение. там должна быть ошибка , ее должен перехватить блок catch()
Так оно будет правильно работать. Проверь. Замени v[i] на v.at(i). Исключение out_of_range генерируется функцией at().
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
06.06.2012, 11:41  [ТС]     Не работает код из страуструп - программирование принципы и практика #8
Цитата Сообщение от g-h Посмотреть сообщение
Так оно будет правильно работать. Проверь. Замени v[i] на v.at(i). Исключение out_of_range генерируется функцией at().
ясно, а не надо создавать класс исключений ?
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
06.06.2012, 11:48     Не работает код из страуструп - программирование принципы и практика #9
Да нет, вроде. Зачем свой класс писать. Оно и так перехватится.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2012, 11:48     Не работает код из страуструп - программирование принципы и практика
Еще ссылки по теме:

C++ Не работает код из страуструп - программирование принципы и практика
Книга Страуструп Программирование Принципы и практика C++
Б. Страуструп "Программирование.Принципы и практика использования С++" C++

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

Или воспользуйтесь поиском по форуму:
Lordif
 Аватар для Lordif
21 / 21 / 1
Регистрация: 18.04.2010
Сообщений: 87
06.06.2012, 11:48     Не работает код из страуструп - программирование принципы и практика #10
Он уже создан специально для этой цели
Yandex
Объявления
06.06.2012, 11:48     Не работает код из страуструп - программирование принципы и практика
Ответ Создать тему
Опции темы

Текущее время: 09:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru