0 / 0 / 0
Регистрация: 12.01.2017
Сообщений: 9
1

Работа с массивом через пользовательские функции через указатели

22.01.2017, 16:21. Показов 2248. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не хочет работать ( Выводит только последний элемент массива ) Help!

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
#include <iostream>
using namespace std;
void vvod(int x, int *);
void vyvod(int y, int *);
int result(int z, int *);
 
int main(void)
{
    int n, massiv[40], *g;
    g = massiv;
    setlocale(0, "rus");
    cout << "\t\tПрактическая №5 \t\t\n";
    cout << "\tОписание: Ввести в память машины одномерный целочисленный массив,\n";
    cout << "\tразмером не менее 30 элементов.Ввод осуществить с клавиатуры.\n";
    cout << "\tПроизвести манипуляции с массивом данных согласно условию, предложенному в варианте задания.\n";
    cout << "\tВывести на экран исходный массив и данные, полученные согласно заданию в варианте.\n";
    cout << "\tВвод массива, манипуляции с массивом, вывод данных произвести через отдельные пользовательские функции.\n";
    cout << "\tПервый вариант решения должен использовать обычную адресацию элементов массива.\n";
    cout << "\tВторой вариант решения должен использовать адресацию элементов массива через указатели.\n\n";
    cout << "\t\tПервый вариант\t\t\n";
    cout << "Введите колличество элементов : ";
    cin >> n;
    while (n < 5)
    {
        cout << "Ошибка! Количество элементов должно быть не менее 30 элементов\n";
        cout << "Введите колличество элементов : ";
        cin >> n;
    }
    vvod(n, g);
    vyvod(n, g);
    cout << "\nКоличество 3-x значных отрицательных элементов массива равно = " << result(n, g);
    cout << "\n";
    g = &massiv[0];
 
}
 
void vvod(int x, int *a)
{
    cout << "\nВведите элементы массива :\n";
    for (int i = 0; i<x; i++)
        cin >> *a;
    a++;
 
}
 
void vyvod(int y, int *a)
{
    cout << "\nВы ввели массив :";
    for (int i = 0; i<y; i++)
        cout << *a << " ";
    a++;
}
int result(int z, int *b)
{
    int res = 0;
    for (int i = 0; i<z; i++)
    if (*b>-1000 && *b<-99)
        res++;
    b++;
    return res;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2017, 16:21
Ответы с готовыми решениями:

Функции работаты с массивом структур или с отдельной структурой через указатели
Всем доброго времени суток. Я вот переписал код, но прога не работает. Не пойму почему. Помогите,...

Работа со структурами через указатели
Приветствую, форумчане. Не могу разобраться в следующем: есть массив структур. В структуре два...

Переписать через функции и указатели
Помогите пожалуйста сделать эту программу чтобы состояло из функции и использовало указатели. ...

Указатели на функцию. Вызов функции через указатель
Вот у меня имеется функция int *f(int *) и имеется вот такой указатель int *(*f1)(int *) я...

4
2021 / 1620 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
23.01.2017, 00:08 2
Цитата Сообщение от Maxgrek Посмотреть сообщение
C++
1
2
3
for (int i = 0; i<x; i++)
     cin >> *a;
a++;
Вы инкрементируете указатель за пределами цикла, а следовательно на каждой итерации обрабатываете первый элемент массива.
C++
1
2
3
4
5
for (int i = 0; i < x; i++)
{
    cin >> *a;
    a++;
}
1
0 / 0 / 0
Регистрация: 12.01.2017
Сообщений: 9
23.01.2017, 10:31  [ТС] 3
Огромное спасибо ! А можете подсказать что в этом коде не так , считает только первый отрицательный элемент , а дальше не идет по массиву ??

Добавлено через 45 секунд
rangerx, Огромное спасибо ! А можете подсказать что в этом коде не так , считает только первый отрицательный элемент , а дальше не идет по массиву ??
0
Нарушитель
1168 / 855 / 251
Регистрация: 30.06.2015
Сообщений: 4,457
Записей в блоге: 50
23.01.2017, 11:04 4
Вот только язык в этом разделе форума не с++...
0
2021 / 1620 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
23.01.2017, 20:47 5
Цитата Сообщение от Maxgrek Посмотреть сообщение
А можете подсказать что в этом коде не так , считает только первый отрицательный элемент , а дальше не идет по массиву ??
То же, что и в первом случае: строки 57-59 должны быть заключены в фигурные скобки.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2017, 20:47
Помогаю со студенческими работами здесь

Работа с двухмерным динамическим массивом через указатель - исправить код
Натупил здесь наверное сильно, подскажите ребят, а то долго уже сиджу над этим... Где ошибки?...

Указатели в функции с одномерным массивом
Разработать функцию, которая находит количество положительных, отрицательных и равных нулю...

Работа с массивом, содержащим указатели на начала строк
Всем доброго времени суток! Вообщем дан массив указателей на строки char *mas = { &quot;AZA&quot;,...

Составить две функции - одна возвращает значение через свое имя, вторая через аргумент
Нужно составить две функции. Одна возвращает значение через свое имя, вторая через аргумент. ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru