1 Востаннє редагувалося Андрій Зварич (02.04.2015 15:36:02)

Тема: Вказівники

Допоможіть скласти програму:

Напишіть програму яка вводить з клавіатури 20 дійсних чисел, організовує їх зберігання в одновимірному масиві, а потім
визначає індекс і значення максимального елементу масиву. Результат видається на екран користувача.

2

Re: Вказівники

А ви самі пробували?

Подякували: koala, yarko2

3 Востаннє редагувалося Betterthanyou (02.04.2015 16:27:38)

Re: Вказівники

Андрій Зварич написав:

Допоможіть скласти програму:

Напишіть програму яка вводить з клавіатури 20 дійсних чисел, організовує їх зберігання в одновимірному масиві, а потім
визначає індекс і значення максимального елементу масиву. Результат видається на екран користувача.

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    int arr[20];
    int max = 0,
    index = 0;
    for (int i = 0; i < 20; i++)
    {
        cin >> arr[i];
        if (arr[i]>max)
        {
            max = arr[i];
            index = i;
        }
    }
    cout << "max number = " << max << " index " << index;
    getch();
    return 0;
}

4 Востаннє редагувалося Arete (02.04.2015 16:55:26)

Re: Вказівники

2Betterthanyou
Якщо користувач введе 20 від’ємних чисел то результат програми буде невірним.


З.И. При чому тут до задачі вказівники в назві теми?

life is too short to remove usb safely
Подякували: quez1

5 Востаннє редагувалося Joker (02.04.2015 16:59:26)

Re: Вказівники

можна пит. не по темі?

З.И. При чому тут до задачі вказівники в назві теми?

Я так розумію З.И - це український аналог Post Scriptum. Можна почути повну версію.

6

Re: Вказівники

Joker написав:
можна пит. не по темі?

З.И. При чому тут до задачі вказівники в назві теми?

Я так розумію З.И - це український аналог Post Scriptum. Можна почути повну версію.

Прихований текст
Калька з російського З.Ы. - P.S. в російській розкладці. Українською було б З. І.
МАКЕ ЦКЯАІИЕ БЯЕАТ АБАІИ
Подякували: koala1

7 Востаннє редагувалося Joker (02.04.2015 17:14:49)

Re: Вказівники

quez написав:
Joker написав:
можна пит. не по темі?

З.И. При чому тут до задачі вказівники в назві теми?

Я так розумію З.И - це український аналог Post Scriptum. Можна почути повну версію.

Прихований текст
Калька з російського З.Ы. - P.S. в російській розкладці. Українською було б З. І.

Все одно моя фантазія виключена. Латинський варіант в перекладі на українську - Після Написаного. А як прочитати повнiстю З.І.?

8

Re: Вказівники

Joker написав:
quez написав:
Joker написав:
можна пит. не по темі?

Я так розумію З.И - це український аналог Post Scriptum. Можна почути повну версію.

Прихований текст
Калька з російського З.Ы. - P.S. в російській розкладці. Українською було б З. І.

Все одно моя фантазія виключена. Латинський варіант в перекладі на українську - Після Написаного. А як прочитати повнiстю З.І.?

P і S на клавіатурі відповідають українські З та І

Навчаюсь вчитись, щоб навчатись.
Подякували: Joker1

9

Re: Вказівники

З.И. При чому тут до задачі вказівники в назві теми?

В програмі мають використовуватися вказівники

10

Re: Вказівники

Прихований текст

Латинський варіант в перекладі на українську - Після Написаного. А як прочитати повнiстю З.І.?

*SCRATCH*
Закінчу Інакше
Згадав Іще
Завершальна Інформація
(може, ще щось придумаю) :)

py -3 -m pip install git+https://github.com/snoack/python-goto
∩⍴○⌈⍴⍺/∧\∨/⊢○ ⌿⍀⍴⌊
Подякували: Joker1

11

Re: Вказівники

Arete написав:

2Betterthanyou
Якщо користувач введе 20 від’ємних чисел то результат програми буде невірним.


З.И. При чому тут до задачі вказівники в назві теми?

Тоді можна якось так

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    int arr[20];
    cin >> arr[0];
    int max = arr[0],
    index = 0;

    for (int i = 1; i < 20; i++)
    {
        cin >> arr[i];
        if (arr[i]>max)
        {
            max = arr[i];
            index = i;
        }
    }
    cout << "max number = " << max << " index " << index;
    _getch();
    return 0;
}

12

Re: Вказівники

Betterthanyou написав:
Arete написав:

2Betterthanyou
Якщо користувач введе 20 від’ємних чисел то результат програми буде невірним.


З.И. При чому тут до задачі вказівники в назві теми?

Тоді можна якось так

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    int arr[20];
    cin >> arr[0];
    int max = arr[0],
    index = 0;

    for (int i = 1; i < 20; i++)
    {
        cin >> arr[i];
        if (arr[i]>max)
        {
            max = arr[i];
            index = i;
        }
    }
    cout << "max number = " << max << " index " << index;
    _getch();
    return 0;
}

а я буде з використанням вказівників

13 Востаннє редагувалося Betterthanyou (02.04.2015 22:05:09)

Re: Вказівники

Я не розумію причому тут вказівники, можна замінити

arr[i]

на

*arr

але це той самий масив

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    int arr[20];
    cin >> *arr;
    int max = *arr,
    index = 0;

    for (int i = 1; i < 20; i++)
    {
        cin >> *(arr+i);
        if (*(arr + i)>max)
        {
            max = *(arr + i);
            index = i;
        }
    }
    cout << "max number = " << max << " index " << index;
    getch();
    return 0;
}
Подякували: Андрій Зварич1

14

Re: Вказівники

Якщо С++ не потрібно вказівники вони лише для продвинутих.

15

Re: Вказівники

Оскільки тема вже не активна і я не хочу створювати нову.
Мої програми наче працюють, але я не впевнений що виконав умова правильно. Якщо є помилки, то вкажіть їх будь ласка. І підкажіть як виправити.
Отже, тут декілька простих завдань (після кожного мій розв'язок):
1) Через вказівники на вказівники підрахувати суму двох чисел і записати у третє.

Прихований текст

#include <iostream>
using namespace std;

int main()
{

    double a, b;
    cout << "Enter a, b --> ";
    cin >> a >> b;

    double *p_a = &a;
    double *p_b = &b;

    cout << *p_a + *p_b << endl;

    system("pause");
    return 0;
}

2) Написати примітивний калькулятор використовуючи тільки вказівники.

Прихований текст

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main()
{
    double a, b;
    char op;

    cout << "Enter a --> ";
    cin >> a;
    cout << "Enter symbol --> ";
    cin >> op;
    cout << "Enter b --> ";
    cin >> b;

    char *sm = &op;
    double *x = &a, *y = &b;

    switch (*sm)
    {
    case '+':
        cout << "\n" << "Result: " << *x + *y;
        break;
    case '-':
        cout << "\n" << "Result: " << *x - *y;
        break;
    case '*':
        cout << "\n" << "Result: " << *x * *y;
        break;
    case '/':
        cout << "\n" << "Result: " << *x / *y;
        break;
    default:
        cout << "\n" << "Sorry, error" << endl;
    }

    cout << endl;
    system("pause");
    return 0;
}

3) Знайти факторіал числа використовуючи тільки вказівники. (тут я ще пробував за допомогою посилань, але нічого путнього не отримав. Чекаю допомоги)

Прихований текст

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int Factorial(int *a)
{
    if (*a > 0)
        return Factorial(a - 1)* (*a);
    else
        return 1;
}

int main()
{
    int a;
    cout << "Enter a --> ";
    cin >> a;

    cout << "Result: " << Factorial(&a) << endl;

    system("pause");
    return 0;
}

4) Знайти задану степінь числа за допомогою вказівників.

Прихований текст

#include <iostream>
using namespace std;

int main()
{
    int a, b;
    cout << "Enter a and b (a^b) --> ";
    cin >> a >> b;

    int *x = &a, *y = &b;
    int res = 1;
    int *sum = &res;
    
    for (int i = 0; i < *y; i++)
        *sum *= *x;

    cout << "res = " << *sum << endl;

    system("pause");
    return 0;
}

5) Виконати перевірку ділення на 0 за допомогою вказівників.

Прихований текст

// Тільки ділення
#include <iostream>
using namespace std;

int main()
{
    double a, b;
    cout << "Enter a, b --> ";
    cin >> a >> b;

    double *x = &a, *y = &b;

    if (!(*y))
        cout << "Sorry, divide by 0 is prohibited!" << endl;
    else
        cout << "Result = " << *x / *y << endl;


    system("pause");
    return 0;
}

Чекаю допомоги, форумчани.

16

Re: Вказівники

0) у всіх цих завданнях вказівники використовуються не з якоюсь метою, а тільки тому, що так задали. Ви вже функції вивчали? Повертайте результат за вказівником, так хоч якась користь буде.
1) немає вказівників на вказівники.
2,3) є змінні, окрім вказівників.

17

Re: Вказівники

1 завдання
Ось так, здається, правильно

#include <iostream>
using namespace std;

int main()
{

    double a, b;
    cout << "Enter a, b --> ";
    cin >> a >> b;

    double *p_a = &a;
    double *p_b = &b;

    double *p_2a = p_a, *p_2b = p_b;

    cout << *p_2a + *p_2b << endl;

    system("pause");
    return 0;
}

У цьому всьому є якась користь? Чим це краще від простого використання змінних?

18

Re: Вказівники

2 і 3 завдання. Я не знаю як розв'язати їх без використання тих змінних.

19

Re: Вказівники

Вказівник на вказівник - це, вочевидь, int **ppa. Тобто

int a = 5;
int *pa = &a;
int **ppa = &pa;

От як його використати - складніше питання.

Ну і new та delete нам недарма дані :)

double *a = new double,
       *b = new double;
...
delete a;
delete b;
Подякували: Joker1

20

Re: Вказівники

4 виправив

#include <iostream>
using namespace std;

int main()
{
    int *a = new int;
    int *b = new int;    // Степінь
    int *res = new int;
    *res = 1;

    cout << "Enter a, b --> ";
    cin >> *a >> *b;

    for (int i = 0; i < *b; i++)
        *res *= *a;

    cout << "\n" << "Result = " << *res << endl;

    delete a;
    delete b;
    delete res;

    system("pause");
    return 0;
}