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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,930
Записей в блоге: 1
#1

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

06.06.2012, 10:47. Просмотров 687. Ответов 9
Метки нет (Все метки)

Не работает код из книги страуструп - программирование принципы и практика С++ Глава 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
что тут не правильно? проверял код из книги
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2012, 10:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не работает код из страуструп - программирование принципы и практика (C++):

Не работает код из страуструп - программирование принципы и практика - C++
Вот код его калькулятор почему то он не работает компилировал в VS 2010 #include &lt;iostream&gt; #include &lt;locale.h&gt; using namespace std; ...

Книга Страуструп Программирование Принципы и практика - C++
У кого есть книга Страуструп Программирование Принципы и практика? сбросьте пожалуйста 333 страницу из книги

Обучение по книге Страуструп Б. - Программирование. Принципы и практика с использованием C++ - C++
Всем, добрый день! Изучаю язык С++ по книге Страструпа, до этого никогда не занимался программированием. В ходе изучения книги возникает...

Ответы на книгу Бьерн Страуструп Программирование - Принципы и практика с помощью C + + - C++
Вот хотел есть ли книга с ответами на упражнения в книги Бьерн Страуструп Программирование - Принципы и практика с помощью C + + . Просто...

Бьярне Страуструп Программирование: принципы и практика использования C++ кто читал - C++
Нам посоветовали книгу( в универи посоветовал препод), Бьярне Страуструп Программирование: принципы и практика использования C++, взял...

книгa "Программирование: принципы и практика использования C++, исправленное издание, Бьярне Страуструп; - C++
а в этой книги &quot;Программирование: принципы и практика использования C++, исправленное издание, Бьярне Страуструп;&quot; описанно про циклы....

9
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;
}
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,930
Записей в блоге: 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;
}
а что ты исправил в коде ?
0
Lordif
21 / 21 / 1
Регистрация: 18.04.2010
Сообщений: 87
06.06.2012, 11:14 #4
Вместо
C++
1
v[i]
надо
C++
1
v.at(i)
1
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
06.06.2012, 11:21 #5
13 строчку замени вот на эту:
Код
cout << "v[" << i << "]= " << v.at(i) << endl;
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,930
Записей в блоге: 1
06.06.2012, 11:25  [ТС] #6
Цитата Сообщение от Lordif Посмотреть сообщение
Вместо
C++
1
v[i]
надо
C++
1
v.at(i)
ты не понял мне надо проверить как работает исключение. там должна быть ошибка , ее должен перехватить блок catch()
0
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().
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,930
Записей в блоге: 1
06.06.2012, 11:41  [ТС] #8
Цитата Сообщение от g-h Посмотреть сообщение
Так оно будет правильно работать. Проверь. Замени v[i] на v.at(i). Исключение out_of_range генерируется функцией at().
ясно, а не надо создавать класс исключений ?
0
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
06.06.2012, 11:48 #9
Да нет, вроде. Зачем свой класс писать. Оно и так перехватится.
0
Lordif
21 / 21 / 1
Регистрация: 18.04.2010
Сообщений: 87
06.06.2012, 11:48 #10
Он уже создан специально для этой цели
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2012, 11:48
Привет! Вот еще темы с ответами:

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

Б. Страуструп "Программирование.Принципы и практика использования С++" - C++
Домашнее задание из главы 3. Напишите программу, которая предлагает ввести три целых числа и выводит их на экран в порядке возрастания....

Не работает кот с книги Страуструп Программирование и практика на С++ - C++
Написал код как в книги Страуструп Программирование и практика на С++, а он не работает. Можете исправить и уточнить почему он не работает ...

Страуструп - принципы и практика программирования. Ошибки компиляции - C++
При компиляции примеров из книги, 12 главы (графика), получаю ошибки: Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ...


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
06.06.2012, 11:48
Ответ Создать тему
Опции темы

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