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

Функция (параметр - одномерный массив). Вычислить разность между количеством отрицательных и положительных элементов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Книги C++ для программирования на Linux http://www.cyberforum.ru/cpp-beginners/thread772639.html
Всем привет! Подскажите пожалуйста книгу по C++ для программирования под Linux! Сколько смотрел попадались только книги по C ориентированные на Linux. А хотелось бы при программирование как можно меньше использовать C...
C++ Передача небольшой матрицы в функцию Если написать такой пример #include<stdio.h> #include<math.h> #include<conio.h> int FUNC(const int arg){ printf("\n Matrix:"); printf("\n\t%d\t%d",arg,arg); printf("\n\t%d\t%d",arg,arg); http://www.cyberforum.ru/cpp-beginners/thread772611.html
Функция не работает (максимальный элемент массива) C++
Нужно написать функцию, которая находила бы максимальный элемент массива. Мой код: #include <iostream> #include <conio.h> using namespace std; const int size = 10; int max_find(int *arr, int size, int max) {
C++ Расчет сложного процента
Ребят, подскажите почему не получается правильно подсчитать процент в конце каждого года? Суть задачи: вносим депозит в банк 1000$ под 5% годовых. Доход остается на депозите, нужно подсчитать сумму денег после каждого года на протяжении 10 лет. Желательно посчитать с помощью структуры "for" #include "stdafx.h" #include <iostream> #include <math.h>
C++ Кодировки, языки http://www.cyberforum.ru/cpp-beginners/thread772552.html
Здравствуйте. Не могу разобраться с тем как работать с файлами и строками на разных языках. Русский получилось писать с помощью локали вот так: wofstream out("test.html", ios::binary); wchar_t* somestring = L"Зеленый цвет"; out.write(somestring, wcslen(somestring)); Но пишет в ANSI. Хотелось бы узнать как менять кодировку и писать любые языки. Вот такое уже не катит:
C++ Что за ошибка? Доброго времени суток! Передо мной стоит ужасающая, но вместе с тем и потрясающая задача: за неделю освоить базы, основы плюсов. :umnik: Теорию прошла раз двадцать и, уверившись в том, что уж простенькую линейную смогу, с энтузиазмом принялась кодить, но тут же наткнулась на неизвестную проблему - которая, кстати, не предусмотрена ни в одном из пособий по плюсам, которыми я располагаю. ... подробнее

Показать сообщение отдельно
vua72
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
28.01.2013, 18:12     Функция (параметр - одномерный массив). Вычислить разность между количеством отрицательных и положительных элементов
Смотрите, я переделал свой пример, а вы по аналогии переделайте свою функцию

Добавлено через 16 секунд
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 kolPos(int a[], int size);
int kolNeg(int *a, int size);
int main() {
    const int N = 4;
    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 raznost=0;
    for (int i = 0; i < N; ++i) {
        raznost +=kolPos(&matr[i][0], M)-kolNeg(&matr[i][0], M);
    }
    cout << "\nRaznost = " << abs(raznost);
    // для вмей матрицы
    cout << "\nRaznost = " << abs(kolPos(&matr[0][0], N*M)-kolNeg(&matr[0][0], N*M));
    return 0;
}
 
int kolPos(int a[], int size) {
    int tmpSum = 0;
    for (int i = 0; i < size; ++i)
        if (a[i] > 0)
            tmpSum ++;
    return tmpSum;
}
 
int kolNeg(int *a, int size) {
    int tmpSum = 0;
    for (int i = 0; i < size; ++i)
        if (*(a + i) < 0) // указатели
            tmpSum ++;
    return tmpSum;
}
Добавлено через 4 минуты
Цитата Сообщение от kristina-lonsh Посмотреть сообщение
ну по условию задачи, я так полагаю, необходимо посчитать количество отрицательных элементов, количество положительных элементов и найти их разность.. Дурацкая задача, но что поделать. А насчет перепутала с точностью да наоборот - это как? одномерный массив просчитывает без проблем, а с двумерным не смогли бы прописать прямооо... Я просто зациклилась в каком то русле и не пойму, где ошибка происходит....

Добавлено через 3 минуты


ну там нужен двумерный массив, дабы продемонстрировать правильность работы на его строках
Задача: Вычислить разность между количеством отрицательных и количеством положительных элементов массива. Использовать функцию для каждой строки матрицы Р (4, 14).
Примечание: [создать функцию, параметром которой является одномерный массив и его размерность. Тело функции реализовать двумя способами: через обращение к элементам массива через указатели и обычным способом. Продемонстрировать возможность применения созданной функции к строкам двумерного массива. Элементы матрицы задать случайным образом, не забыв вывести их на экран.
У вас задан двумерный массив изначально, вы его обрабатываете по строкам, а потом обрабатываете массив целиком как дномерный

Добавлено через 6 минут
Заменить
C++
1
raznost +=kolPos(&matr[i][0], M)-kolNeg(&matr[i][0], M)
;
на
C++
1
raznost +=abs(kolPos(&matr[i][0], M)-kolNeg(&matr[i][0], M));
Добавлено через 2 минуты
Valli1, ваш код нечитаем, что вам мешает в среде разработки его отформатировать?

Добавлено через 55 секунд

Не по теме:

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
#include<iostream>
const int M=4;
void f(int (*a1)[M],int size);
 
 
#include<iostream>
const int M = 4;
void f(int (*a1)[M], int size);
 
int main() {
    int a[M][M] = { { 0, 1, 2, 3 }, { 4, -5, -6, 7 }, { 8, 9, 10, 11 }, { 12,
            13, 14, 15 } };
    f(a, 4);
    std::cin.get();
    std::cin.get();
 
    return 0;
}
void f(int ((*a1)[M]), int size) {
    int min = 0;
    int plus = 0;
    int sum = 0;
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < M; j++) {
            if (*(*(a1 + i) + j) < 0)
                min++;
            if (*(*(a1 + i) + j) > 0)
                plus++;
        }
        sum = -min + plus;
        std::cout << sum << '\n';
        min = 0;
        plus = 0;
        sum = 0;
    }
}

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