Форум программистов, компьютерный форум CyberForum.ru

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

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

Нужно записать две строчки через указатель, не используя адрес - C++

20.11.2014, 06:13. Просмотров 183. Ответов 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
#include <iostream>
#include <iomanip> //setw
#include <cstdlib> // rand
#include <ctime> // time
using namespace std;
 
int sumPos(int a[], int size);
int sumNeg(int *a, int size);
int main() {
    const int N = 2;
    const int M = 14;
    int matr[N][M];
    srand(time(NULL));
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < M; ++j) {
            matr[i][j] = rand() % 100 - 50;
            cout << setw(5) << matr[i][j];
        }
        cout << endl;
    }
    int sumOfPos = 0;
    int sumOfNeg = 0;
    for (int i = 0; i < N; ++i) {
        sumOfPos += sumPos(&matr[i][0], M);
        sumOfNeg += sumNeg(&matr[i][0], M);
    }
    cout << "\nSumma polojitelnyx=" << sumOfPos;
    cout << "\nSumma otrizatelnyx=" << sumOfNeg;
    return 0;
}
 
int sumPos(int a[], int size) {
    int tmpSum = 0;
    for (int i = 0; i < size; ++i)
        if (a[i] > 0)
            tmpSum += a[i];
    return tmpSum;
}
 
int sumNeg(int *a, int size) {
    int tmpSum = 0;
    for (int i = 0; i < size; ++i)
        if (*(a + i) < 0)//Операция получения значения переменной, хранящейся по адресу, полученное в скобках
            tmpSum += *(a + i);
    return tmpSum;
}
Две строчки, которые нужно записать через указатель:
C++
1
2
sumOfPos += sumPos(&matr[i][0], M);
sumOfNeg += sumNeg(&matr[i][0], M);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2014, 06:13     Нужно записать две строчки через указатель, не используя адрес
Посмотрите здесь:

Как переставить две строчки матрицы не используя цикла? C++
C++ Как связаны эти две строчки?
Подправить две строчки в задаче C++
Как записать адрес в указатель во время работы программы C++
C++ В две строчки записать две цифры, а потом по закрытии программы и повторном открытии прочитать каждое число в отдельную переменную?
Вычислить и распечатать сумму элементов массива, используя указатель и метод доступа через разименование C++
C++ Записать указатель на функцию, не используя typedef
код нужно сделать через указатель ! C++
C++ Компилятор пропускает две строчки
Объясните две строчки кода C++
C++ Создание копии объекта используя объявление через указатель
Ввести адрес файла и разобрать его на части(строчки с++) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lss
921 / 851 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
20.11.2014, 07:13     Нужно записать две строчки через указатель, не используя адрес #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
#include <iostream>
#include <iomanip> //setw
#include <cstdlib> // rand
#include <ctime> // time
using namespace std;
 
int sumPos(int* a, int size);
int sumNeg(int* a, int size);
int main() {
    const int N = 2;
    const int M = 14;
    int matr[N][M];
    srand(time(NULL));
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < M; ++j) {
            matr[i][j] = rand() % 100 - 50;
            cout << setw(5) << matr[i][j];
        }
        cout << endl;
    }
    int sumOfPos = 0;
    int sumOfNeg = 0;
    for (int i = 0; i < N; ++i) {
        sumOfPos += sumPos(matr[i], M);
        sumOfNeg += sumNeg(matr[i], M);
    }
    cout << "\nSumma polojitelnyx=" << sumOfPos;
    cout << "\nSumma otrizatelnyx=" << sumOfNeg;
    return 0;
}
 
int sumPos(int* a, int size) {
    int tmpSum = 0;
    for (int i = 0; i < size; ++i)
        if (a[i] > 0)
            tmpSum += a[i];
    return tmpSum;
}
 
int sumNeg(int *a, int size) {
    int tmpSum = 0;
    for (int i = 0; i < size; ++i)
        if (*(a + i) < 0)//Операция получения значения переменной, хранящейся по адресу, полученное в скобках
            tmpSum += *(a + i);
    return tmpSum;
}
Добавлено через 3 минуты
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
#include <iostream>
#include <iomanip> //setw
#include <cstdlib> // rand
#include <ctime> // time
using namespace std;
 
int sumPos(int* a, int size);
int sumNeg(int* a, int size);
int main() {
    const int N = 2;
    const int M = 14;
    int matr[N][M];
    srand(time(NULL));
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < M; ++j) {
            matr[i][j] = rand() % 100 - 50;
            cout << setw(5) << matr[i][j];
        }
        cout << endl;
    }
    int sumOfPos = 0;
    int sumOfNeg = 0;
    for (int i = 0; i < N; ++i) {
        sumOfPos += sumPos(*(matr + i), M);
        sumOfNeg += sumNeg(*(matr + i), M);
    }
    cout << "\nSumma polojitelnyx=" << sumOfPos;
    cout << "\nSumma otrizatelnyx=" << sumOfNeg;
    return 0;
}
 
int sumPos(int* a, int size) {
    int tmpSum = 0;
    for (int i = 0; i < size; ++i)
        if (a[i] > 0)
            tmpSum += a[i];
    return tmpSum;
}
 
int sumNeg(int *a, int size) {
    int tmpSum = 0;
    for (int i = 0; i < size; ++i)
        if (*(a + i) < 0)//Операция получения значения переменной, хранящейся по адресу, полученное в скобках
            tmpSum += *(a + i);
    return tmpSum;
}
sone17
28 / 28 / 1
Регистрация: 23.02.2012
Сообщений: 104
20.11.2014, 07:16     Нужно записать две строчки через указатель, не используя адрес #3
У вас функции sumNeg и sumPos реализованы для работы с одномерными массивами, а на выход вы пытаетесь запихать адрес i-го элемента двумерного массива. К сожалению мне немного непонятна логика работы программы. Поясните пожалуйста, что вы хотите сделать?
Yandex
Объявления
20.11.2014, 07:16     Нужно записать две строчки через указатель, не используя адрес
Ответ Создать тему
Опции темы

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