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

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

Восстановить пароль Регистрация
 
Koshachek
3 / 3 / 1
Регистрация: 17.02.2012
Сообщений: 100
06.07.2013, 04:00     Проверить решение задачи #1
Здравствуйте. Есть задача:
Напишите класс 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++ проверить решение
Решение задачи C++
C++ Решение задачи
Проверить 4 задачи C++
C++ Решение задачи
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 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
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2013, 06:12     Проверить решение задачи #4
Цитата Сообщение от artemmensk Посмотреть сообщение
это я бы добавил c помощью функции проверки на вхождение индекса в пределы массива
Тогда не по заданию:
Цитата Сообщение от Koshachek Посмотреть сообщение
В классе будет два метода.
Koshachek
3 / 3 / 1
Регистрация: 17.02.2012
Сообщений: 100
06.07.2013, 14:25  [ТС]     Проверить решение задачи #5
Спасибо, с условием у меня проблем не было, я специально его не писал сюда. Мне было важно, правильно ли я реализовал задачу.
alsav22
5282 / 4801 / 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++ Решение задачи
Проверить решение задачи C++
Проверить решение C++

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

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

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