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

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

Войти
Регистрация
Восстановить пароль
 
Koshachek
3 / 3 / 1
Регистрация: 17.02.2012
Сообщений: 102
#1

Проверить решение задачи - C++

06.07.2013, 04:00. Просмотров 495. Ответов 6
Метки нет (Все метки)

Здравствуйте. Есть задача:
Напишите класс safearay, который использует массив типа int фиксированного размера (назовем его LIMIT) в качестве своей единственной переменной. В классе будет два метода. Первый, putel(), принимает индекс и значение типа int как аргументы и вставляет это значение в массив по заданному индексу. Второй, getel(), принимает индекс как аргумент и возвращает значение типа int, содержащееся в элементе с этим индексом.

safearay sa1; // описываем массив

int temp = 12345; // описываем целое

sa1.putel(7, temp); // помещаем значение temp в массив

temp = sa1.getel(7); // получаем значение из массива

Оба метода должны проверять индекс аргумента, чтобы быть уверенными, что он не меньше 0 и не больше,
чем LIMIT-1. Вы можете использовать этот массив без опаски, что запись будет произведена в другие части памяти.

Решить я ее решил, но не уверен что правильно. Вот мой код:
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
#include <iostream>
using namespace std;
class safearay
{
    private:
        int LIMIT[10];
    public:
         void putel(int index, int value)
         {
            LIMIT[index] = value;
         }
         
         int getel(int index)
         {
             return LIMIT[index];
         }
};
int main()
{
    system("chcp 1251 > nul");
    safearay sal;
    int temp = 1245345;
    sal.putel(7, temp);
    temp = sal.getel(7);
    cout << temp << endl;
    system( "pause" );
    return 0;
}
. Если можно, исправьте там где не верно и объясните почему. С++ изучаю самостоятельно
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2013, 04:00     Проверить решение задачи
Посмотрите здесь:

Проверить решение задачи - C++
Здравствуйте! Я С++ изучаю самостоятельно, по книге Р.Лафоре &quot;ООП в С++&quot;. В главе 7 &quot;Массивы и строки&quot; столкнулся с задачей Напишите...

Проверить 4 задачи - C++
Пишу не себе, а девушке. Сам немного знаком с Делфи и MQL . Решения вроде бы правильные. Проверьте пожалуйста. Просто у меня не на чем. ...

проверить решение - C++
Даны вещественные массивы A S.Для каждого массива определить количество элементов предшествующих первому отрицательному элементу массива. ...

Проверить решение - C++
Добрый вечер. Есть задание: Написать программу интерпретатор, которая переводит строку кода программы написанную на языке C++ в строку...

Непонятно решение задачи - C++
Во общем есть задача по теме классов и преобразование типов, долго думал не мог понять что надо сделать. Нашел решение, но некоторые...

Оцените решение задачи - C++
Наткнулся тут на задание по программированию, от нечего делать решил его сделать на C++. Человеку его задали в университете, а я там...

Деструкторы (решение задачи) - C++
Пусть класс Maket описан следующим образом: #include &lt;iostream.h&gt; class Maket { private: int m; public: Maket(int n) { m =...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2013, 05:17     Проверить решение задачи #2
Цитата Сообщение от Koshachek Посмотреть сообщение
Оба метода должны проверять индекс аргумента, чтобы быть уверенными, что он не меньше 0 и не больше,
чем LIMIT-1. Вы можете использовать этот массив без опаски, что запись будет произведена в другие части памяти.
А это?
artemmensk
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 3
06.07.2013, 05:44     Проверить решение задачи #3
Оба метода должны проверять индекс аргумента, чтобы быть уверенными, что он не меньше 0 и не больше,
чем LIMIT-1
это я бы добавил c помощью функции проверки на вхождение индекса в пределы массива

C++
1
2
3
4
5
6
7
8
9
10
11
12
         bool isArray(int index)
         {
             if ((index>=0)&&(index<=9))
             {
                 return true;
             }
             else
             {
               cout << "Range error!" << "\n";
               return false;
             }
         }
+ изменение в функциях putel

C++
1
2
3
4
5
6
7
8
//...
 
             if(isArray(index))
             {
                 LIMIT[index] = value;
             }
 
//...
и getel

C++
1
2
3
4
5
6
7
8
9
10
//...
 
              if(isArray(index))
             {
                 return LIMIT[index];
             }
 
                 return 0; //throw ...
 
//...
Всё вметсте

clac
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
#include <iostream>
using namespace std;
class safearay
{
    private:
        int LIMIT[10];
    public:
         void putel(int index, int value)
         {
             if(isArray(index))
             {
                 LIMIT[index] = value;
             }
         }
 
         int getel(int index)
         {
             if(isArray(index))
             {
                 return LIMIT[index];
             }
 
                 return 0; //throw ...
         }
 
         bool isArray(int index)
         {
             if ((index>=0)&&(index<=9))
             {
                 return true;
             }
             else
             {
               cout << "Range error!" << "\n";
               return false;
             }
         }
};
 
int main()
{
 
    safearay sal;
    int temp = 1245345;
    sal.putel(7, temp);
    temp = sal.getel(71); // осторожно! возвращает 0 (ноль) при некоректной подаче номера елемента
    cout << temp << endl;
 
    return 0;
}
.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2013, 06:12     Проверить решение задачи #4
Цитата Сообщение от artemmensk Посмотреть сообщение
это я бы добавил c помощью функции проверки на вхождение индекса в пределы массива
Тогда не по заданию:
Цитата Сообщение от Koshachek Посмотреть сообщение
В классе будет два метода.
Koshachek
3 / 3 / 1
Регистрация: 17.02.2012
Сообщений: 102
06.07.2013, 14:25  [ТС]     Проверить решение задачи #5
Спасибо, с условием у меня проблем не было, я специально его не писал сюда. Мне было важно, правильно ли я реализовал задачу.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2013, 23:33     Проверить решение задачи #6
Цитата Сообщение от Koshachek Посмотреть сообщение
я специально его не писал сюда.
А это тогда что?
Цитата Сообщение от Koshachek Посмотреть сообщение
Есть задача:
Напишите класс safearay, который использует массив типа int фиксированного размера (назовем его LIMIT) в качестве своей единственной переменной. В классе будет два метода. Первый, putel(), принимает индекс и значение типа int как аргументы и вставляет это значение в массив по заданному индексу. Второй, getel(), принимает индекс как аргумент и возвращает значение типа int, содержащееся в элементе с этим индексом.
Цитата Сообщение от Koshachek Посмотреть сообщение
Мне было важно, правильно ли я реализовал задачу.
Немного кривовато, из-за этого: "осторожно! возвращает 0 (ноль) при некоректной подаче номера елемента". Но при таком условии, не криво сделать - проблематично.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2013, 00:35     Проверить решение задачи
Еще ссылки по теме:

Подсобите с решение задачи - C++
Ребята программа работает, но дело в том что когда ввожу допустим 5/0 выбивает ошибку, что мол делить на ноль нельзя, но препод меня уже...

Рекурсия и решение задачи - C++
Здравствуйте. Хочу решить такую задачу. Человек вводит число, нужно определить факториал этого числа. Задачу хочу решить именно рекурсивно,...

Решение олимпиадной задачи (ч.2) - C++
i:= 1 j:= 257 Цикл i:= i + x; j:= j - x; x:= x - 1 выполнили 25 раз и стало i= j. Надо найти х.

Решение задачи (формула) - C++
http://i.imgur.com/XHRPCae.jpg Задания необходимо выкладывать в теме. Для формул внизу окна имеется специальный редактор.

Решение задачи по информатике - C++
Доброго времени суток! Суть задачи проста: дано кол-во спичек 1&lt;=N&lt;=100, них нужно составить минимальное и максимальное число. Спички...


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

Или воспользуйтесь поиском по форуму:
Koshachek
3 / 3 / 1
Регистрация: 17.02.2012
Сообщений: 102
07.07.2013, 00:35  [ТС]     Проверить решение задачи #7
Цитата Сообщение от alsav22 Посмотреть сообщение
А это тогда что?
мы друг друга не поняли, я говорил про условие "больше 0, но меньше чем LIMIT - 1".В свой код(который там, выше)я его не вставлял. Формулировку задачи ясное дело я писал. Ладно, спасибо за коменты.
Yandex
Объявления
07.07.2013, 00:35     Проверить решение задачи
Ответ Создать тему
Опции темы

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