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

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

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

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

06.07.2013, 04:00. Просмотров 531. Ответов 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;
}
. Если можно, исправьте там где не верно и объясните почему. С++ изучаю самостоятельно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2013, 04:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить решение задачи (C++):

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

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

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

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

Решение задачи - C++
Как решить задачу: поменять местами второй четный со вторым нечетным в одномерном массиве

Решение задачи - C++
Помогите, пожалуйста =) Решить задачу в С++ Задано три символа. Напишите программу, которая выводит символы в порядке возрастания их...

6
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2013, 05:17 #2
Цитата Сообщение от Koshachek Посмотреть сообщение
Оба метода должны проверять индекс аргумента, чтобы быть уверенными, что он не меньше 0 и не больше,
чем LIMIT-1. Вы можете использовать этот массив без опаски, что запись будет произведена в другие части памяти.
А это?
0
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;
}
.
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2013, 06:12 #4
Цитата Сообщение от artemmensk Посмотреть сообщение
это я бы добавил c помощью функции проверки на вхождение индекса в пределы массива
Тогда не по заданию:
Цитата Сообщение от Koshachek Посмотреть сообщение
В классе будет два метода.
0
Koshachek
3 / 3 / 1
Регистрация: 17.02.2012
Сообщений: 107
06.07.2013, 14:25  [ТС] #5
Спасибо, с условием у меня проблем не было, я специально его не писал сюда. Мне было важно, правильно ли я реализовал задачу.
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2013, 23:33 #6
Цитата Сообщение от Koshachek Посмотреть сообщение
я специально его не писал сюда.
А это тогда что?
Цитата Сообщение от Koshachek Посмотреть сообщение
Есть задача:
Напишите класс safearay, который использует массив типа int фиксированного размера (назовем его LIMIT) в качестве своей единственной переменной. В классе будет два метода. Первый, putel(), принимает индекс и значение типа int как аргументы и вставляет это значение в массив по заданному индексу. Второй, getel(), принимает индекс как аргумент и возвращает значение типа int, содержащееся в элементе с этим индексом.
Цитата Сообщение от Koshachek Посмотреть сообщение
Мне было важно, правильно ли я реализовал задачу.
Немного кривовато, из-за этого: "осторожно! возвращает 0 (ноль) при некоректной подаче номера елемента". Но при таком условии, не криво сделать - проблематично.
0
Koshachek
3 / 3 / 1
Регистрация: 17.02.2012
Сообщений: 107
07.07.2013, 00:35  [ТС] #7
Цитата Сообщение от alsav22 Посмотреть сообщение
А это тогда что?
мы друг друга не поняли, я говорил про условие "больше 0, но меньше чем LIMIT - 1".В свой код(который там, выше)я его не вставлял. Формулировку задачи ясное дело я писал. Ладно, спасибо за коменты.
0
07.07.2013, 00:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2013, 00:35
Привет! Вот еще темы с ответами:

Решение задачи - C++
Помогите, пожалуйста! Решить задачу в С++, только с использованием цикла. Вывести на экран: 1111111 222222 33333 4444 555 66 ...

Решение задачи - C++
При решении задачи, столкнулся наверное с самой непреодолимой!!! z1 = 2 * (1 - cos(2 * (3 * pi - 2 * alpha)) / 2) * (1 + cos(2 * ( 5 *...

Решение задачи - C++
Нужна помощь в решении задачи. Прошу помочь надеюсь в вашей поддержке:( прошу решить задачу

Решение задачи c++ - C++
Написать программу вычисляющую значение функции y=√(9-x*x) на задонном орезке с заданным шагом H=0.25 помогите пожалйста а то я...


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

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

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