Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Lord007
0 / 0 / 1
Регистрация: 06.11.2014
Сообщений: 156
#1

Как правильно переделать данную программу используя указатели? - C++

19.03.2015, 22:04. Просмотров 297. Ответов 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
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    double array[15];
    double sg;
    cout << "Vvedite 15 elementov massiva: " << endl;
    double p = 1;
    double kol = 0;
    for (int i = 0; i < 15; i++) cin >> array[i];
    cout << "array = {";
    for (int i = 0; i < 15; i++)
        cout << array[i] << " ";
    cout << " } "<< endl;
    for (int i = 0; i < 15; i++) {
        if ((array[i] <= 15) && (array[i] >= 5)) {
            p *= array[i];
            kol++;
        }
    }
 
    sg = pow(p, 1 / kol);
    if (kol>0) {
        cout << "SG: " << sg << endl;
    }
    else
    {
        cout << "Положительных нет " << endl;
    }
 
    system("pause");
    return 0;
}
Вот мой вариант с указателями.

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
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
#define N 15
 
using namespace std;
 
int main(int argc, char* argv[])
{
    double array[N];
    double sg;
    cout << "Vvedite 15 elementov massiva: " << endl;
    double p = 1;
    double kol = 0;
    double *p1,*p2;
    p1 = &array[0];
    p2 = p1 + N - 1;
    for (int i = 0; i < N; i++) cin >> array[i];
    cout << "array = {";
    for (int i = 0; i < N; i++)
        cout << array[i] << " ";
    cout << " } " << endl;
 
    
 
    for (; p1 < p2; p1++,p2--) {
        if ((*p1 <= 15) && (*p1 >= 5)) {
            p *= *p1;
            kol++;
        }
    }
 
    sg = pow(p, 1 / kol);
    if (kol>0) {
        cout << "SG: " << sg << endl;
    }
    else
    {
        cout << "Положительных нет " << endl;
    }
 
    system("pause");
    return 0;
}

http://www.cyberforum.ru/cpp-beginners/thread513079.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2015, 22:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как правильно переделать данную программу используя указатели? (C++):

Как правильно переделать готовую программу под функции?
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;ctime&gt; using namespace...

Как правильно переделать программу с двумерным массивом под работу с указателями?
Как правильно переделать программу с двумерным массивом под работу с...

Переделать программу с индексов на указатели
Помогите пожалуйста переделать программу с индексов на указатели Вот код: ...

Переделать программу (Палиндром. Указатели)
Всем доброго времени суток. Написал программу на палиндром, но от меня тебуют...

переделать программу через указатели
очень нужна ваша помощь #include&lt;math.h&gt; #include&lt;stdio.h&gt; #include...

1
Nishen
456 / 279 / 154
Регистрация: 26.02.2015
Сообщений: 1,321
Завершенные тесты: 2
19.03.2015, 22:24 #2
Лучший ответ Сообщение было отмечено Lord007 как решение

Решение

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
#include <stdlib.h>
#include <iostream>
#include <math.h>
using namespace std;
 
const int N = 15;
 
int main(){
    double* Array = new double[N];
    double p = 1.0, sg = 0.0;
    int kol = 0;
    cout << "Введите " << N << " элементов массива: ";
    for(int i = 0; i < N; i++){
        cin >> *(Array + i);
    }
    cout << "\narray = {";
    for(int i = 0; i < N; i++){
        cout << *(Array + i);
        if(i != N - 1){
            cout << ", ";
        }
    }
    cout << "}" << endl;
    for(int i = 0; i < N; i++){
        if((*(Array + i) <= 15) && (*(Array + i) >= 5)){
            p *= *(Array + i);
            kol++;
        }
    }
    sg = pow(p, 1.0 / kol);
    if(kol > 0){
        cout << "SG: " << sg << endl;
    }else{
        cout << "Положительных нет " << endl;
        }
    delete[] Array;
 
    system("PAUSE");
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2015, 22:24
Привет! Вот еще темы с решениями:

Как правильно подключить данную библиотеку ?
Доброго времени суток подскажите пожалуйста как правильно подключить данную...

Переделать программу используя классы
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;cstdlib&gt; struct Dot{ ...

Написать программу копирования строки T в строку S, используя указатели.
Написать программу копирования строки T в строку S, используя указатели. В...


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

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

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