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

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

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

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

20.11.2014, 06:13. Просмотров 195. Ответов 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++
Нужно чтобы пользователь ввел адрес в сам указатель: int *ptr; cin &gt;&gt; ptr; error C2678: бинарный &quot;&gt;&gt;&quot;: не найден оператор,...

Записать указатель на функцию, не используя typedef - C++
Имеется переменная - указатель на функцию fptr. Написать эту же переменную fptr, не используя typedef'ы /* Указатель на функцию void...

Создание копии объекта используя объявление через указатель - C++
Здравствуйте. Имеется такой код: #include &lt;iostream&gt; #include &lt;cstring&gt; using namespace std; class medicament { private: ...

код нужно сделать через указатель ! - C++
# include &lt;iostream.h&gt; # include &lt;conio.h&gt; # include &lt;stdlib.h&gt; const int n=3, m=3; int main() {int a; int i, j, maxzn; ...

Вычислить и распечатать сумму элементов массива, используя указатель и метод доступа через разименование - C++
В программе создайте массив из 10 элемента типа float с произвольными числовыми значениями, инициализировать его именем указатель....

Ввести адрес файла и разобрать его на части(строчки с++) - C++
Помогите,пожалуйста,решить следующую задачу. Ввести адресс файла и разобрать его на части розделённые знаком &quot;/&quot;. Каждую часть вывести в...

Подправить две строчки в задаче - C++
#include &lt;stdio.h&gt; #include &lt;clocale&gt; #include &lt;conio.h&gt; #include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; int...

Компилятор пропускает две строчки - C++
Здравствуйте! Вкратце о задании: нужно создать структуру, с помощью которой будет вводится информация о товаре. Два элемента структуры...

Объясните две строчки кода - C++
что значит вот это: имею вввиду каждые функциии: не могу найти if ( n.peek() == ifstream::traits_type::eof() ) ofstream n(...

Как связаны эти две строчки? - C++
Только начал изучать c++ и для закрепления основ решил написать программку для решения квадратных уравненй. И возникли небольшие проблемы...

Указатель на произвольный адрес - C++
Как можно заставить указатель указывать на адрес, который я сам введу. Например: int i = 10; /* я знаю её адрес и теперь я хочу...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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-го элемента двумерного массива. К сожалению мне немного непонятна логика работы программы. Поясните пожалуйста, что вы хотите сделать?
Ответ Создать тему
Опции темы

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