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

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

Войти
Регистрация
Восстановить пароль
 
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
#1

Переделать код так, чтобы использовались диапазоны значений с помощью указателей - C++

10.05.2013, 13:18. Просмотров 480. Ответов 1
Метки нет (Все метки)

Мне уже стыдно сюда писать ей богу . Но есть задача переделать Код№1 так чтобы использовались диапазоны значений с помощью указателей. А функция fill_array() должна возвращать следующий адрес после последнего введенного значения, и это значение должны принимать другие функции как количество элементов функций которые они должны обработать. Код№2 это что я пробовал, но там выводятся адреса вместо значений, в общем все неправильно.

Код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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// arrfun3.cpp -- array functions and const
#include <iostream>
const int Max = 5;
 
// function prototypes
int fill_array(double ar[], int limit);
void show_array(const double ar[], int n);  // don't change data
void revalue(double r, double ar[], int n);
 
int main()
{
    using namespace std;
    double properties[Max];
 
    int size = fill_array(properties, Max);
    show_array(properties, size);
    if (size > 0)
    {
        cout << "Enter revaluation factor: ";
        double factor;
        while (!(cin >> factor))    // bad input
        {
            cin.clear();
            while (cin.get() != '\n')
                continue;
           cout << "Bad input; Please enter a number: ";
        }
        revalue(factor, properties, size);
        show_array(properties, size);
    }
    cout << "Done.\n";
    // cin.get();
    // cin.get();
    return 0;
}
 
int fill_array(double ar[], int limit)
{
    using namespace std;
    double temp;
    int i;
    for (i = 0; i < limit; i++)
    {
        cout << "Enter value #" << (i + 1) << ": ";
        cin >> temp;
        if (!cin)    // bad input
        {
            cin.clear();
            while (cin.get() != '\n')
                continue;
           cout << "Bad input; input process terminated.\n";
           break;
        }
        else if (temp < 0)     // signal to terminate
            break;
        ar[i] = temp;
    }
    return i;
}
 
// the following function can use, but not alter,
// the array whose address is ar
void show_array(const double ar[], int n)
{
    using namespace std;
    for (int i = 0; i < n; i++)
    {
        cout << "Property #" << (i + 1) << ": $";
        cout << ar[i] << endl;
    }
}
 
// multiplies each element of ar[] by r
void revalue(double r, double ar[], int n)
{
    for (int i = 0; i < n; i++)
        ar[i] *= r;
}
Код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
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
const int Max = 5;
 
// function prototypes
int * fill_array(int * begin, int * end);
void show_array(int * begin, int * end);  // don't change data
void revalue(int r, int * begin, int * end);
 
int main()
{
    using namespace std;
    int properties[Max];
 
    int * size = fill_array(properties, properties + Max);
    show_array(properties, size);
    if (size > 0)
    {
        cout << "Enter revaluation factor: ";
        int factor;
        while (!(cin >> factor))    // bad input
        {
            cin.clear();
            while (cin.get() != '\n')
                continue;
           cout << "Bad input; Please enter a number: ";
        }
        revalue(factor, properties, size);
        show_array(properties, size);
    }
    cout << "Done.\n";
    // cin.get();
    // cin.get();
    return 0;
}
 
int * fill_array(int * begin, int * end)
{
    using namespace std;
    int * temp;
    for (begin; begin < end; begin++)
    {
        cout << "Enter value #" << begin << ": ";
        cin >> begin;
        if (!cin)    // bad input
        {
            cin.clear();
            while (cin.get() != '\n')
                continue;
           cout << "Bad input; input process terminated.\n";
           break;
        }
        else if (temp < 0)     // signal to terminate
            break;
    }
    return begin + 1;
}
 
// the following function can use, but not alter,
// the array whose address is ar
void show_array(int * begin, int * end)
{
    using namespace std;
    for (begin; begin < end; begin++)
    {
        cout << "Property #" << (begin + 1) << ": $";
        cout << begin << endl;
    }
}
 
// multiplies each element of ar[] by r
void revalue(int r, int * begin, int * end)
{
    for (begin; begin<end; begin++)
        *begin *= r;
}
Добавлено через 3 часа 36 минут
ап

Добавлено через 15 часов 22 минуты
Так что, это нельзя реализовать данным методом?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2013, 13:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переделать код так, чтобы использовались диапазоны значений с помощью указателей (C++):

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

Переделать код программы так, чтобы решалась через указатели и функцию - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; void main() { char st; int i; printf(&quot;\nEnter the string&quot;); printf(&quot;-&gt;&quot;); ...

Исправить код,чтобы использовались и указатели.(С++) - C++
Решить эту задачу через указатели #include&lt;stdio.h&gt; #include&lt;time.h&gt; #include&lt;stdlib.h&gt; #include&lt;iostream&gt; #define S 30 int...

Переделать код с использованием указателей - C++
Всем доброго времени суток. Подскажите как еще можно написать программу к следующему заданию через указатели, сказали что указатели...

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

Переделать код с помощью шаблонных функций - C++
нужно переделать этот кд и написать с помощью шаблон функций (template) . помогите пожалуйста #include &quot;stdafx.h&quot; #include...

1
gr0mazeka
5 / 2 / 1
Регистрация: 28.05.2014
Сообщений: 8
12.06.2014, 10:58 #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
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
const int Max = 5;
// function prototypes
double * fill_array(double * begin, double * end);
void show_array(const double * begin, const double * end); // don't change data
void revalue(double r, double * begin, double * end);
int main()
{
    using namespace std;
    double properties[Max];
    double * size = fill_array(properties, properties + Max);
    show_array(properties, size);
    if (size > properties)
    {
        cout << "Enter revaluation factor: ";
        double factor;
        while (!(cin >> factor)) // bad input
        {
            cin.clear();
            while (cin.get() != '\n')
                continue;
            cout << "Bad input; Please enter a number: ";
        }
        revalue(factor, properties, size);
        show_array(properties, size);
    }
    cout << "Done.\n";
    cin.get();
    cin.get();
    return 0;
}
double * fill_array(double * begin, double * end)
{
    using namespace std;
    double temp;
    int i = 0;
    for (begin; begin < end; begin++)
    {
        cout << "Enter value #" << (i + 1) << ": ";
        cin >> temp;
        if (!cin)  // bad input
        {
            cin.clear();
            while (cin.get() != '\n')
                continue;
            cout << "Bad input; input process terminated, \n";
            break;
        }
        else if (temp < 0)  // signal to terminate
            break;
        *begin = temp;
        i++;
    }
    return  begin;
}
// the following function can use, but not alter,
// the array whose address is ar
void show_array(const double * begin, const double * end)
{
    using namespace std;
    int i = 0;
    for (begin; begin < end; begin++)
    {
        cout << "Property #" << (i + 1) << ": $";
        cout << *begin << endl;
        i++;
    }
}
// multiplies each element of ar[] by r
void revalue(double r, double * begin, double * end)
{
    for (begin; begin < end; begin++)
        *begin *= r;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2014, 10:58
Привет! Вот еще темы с ответами:

Переделать фрагмент кода так, чтобы использовался оператор goto - C++
Ребяяяят!! Помогите переделать в goto данный фрагмент программы! Все плохо... for (int i = 0; i&lt;n; i++) { for (int j =...

Переделать программу так, чтобы можно было сохранить результат обработки - C++
есть код, который убирает комментарии в коде, но можно ли сделать так, чтобы она брала файл txt, обрабатывала и сохраняла готовый результат...

Переделать программу под класс. Т.е. чтобы она работала так же, но с классом - C++
Дано вещественное число а и натуральное число n. Вычислить : а^1,a^2,a^3,..a^n. Операцию возведения в степень не использовать. ...

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


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

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

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