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

Получить массив, состоящий из отрицательных элементов исходного массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В массиве заменить отрицательное на положительное число и наоборот http://www.cyberforum.ru/cpp-beginners/thread1228396.html
Нужно в массиве заменить отрицательное на положительное число и наоборот!!! # include <iostream> # include <ctime> using namespace std; void sign_change (int *mas, int size) { srand (time(NULL)); for (int i=0; i<size; i++) { if (*mas<0||*mas>0)
C++ Написать функцию, которая получает дату и выводит название праздника Написать функцию, которая получает дату (день, месяц) и выводит название праздника, выпадающего на этот день (например, 7.01 - Рождество, 9.05 - День Победы). Запрограммировать реакцию программы на 4 - 5 праздников. Не успеваю совсем, помогите плз:( http://www.cyberforum.ru/cpp-beginners/thread1228394.html
Стек на шаблонах - оцените реализацию C++
просто хочу узнать чужое мнение, написал стек через шаблоны, оцените реализацию :) template <typename T> class Stack { private: size_t size; T* data; public: Stack(); void Push(T value);
Композиция и иерархия: класс "комната", "квартира" C++
(Композиция и иерархия). Создать класс комната, имеющая площадь. Определить конструктор и метод доступа. Создать класс однокомнатная квартира, содержащий комнату и кухню (их площадь), этаж (комната содержится в классе однокомнатная квартира). Определить конструкторы, методы доступа. Определить public-производный класс однокомнатных квартир разных городов (дополнительный параметр – название...
C++ Иерархия: класс "карта", "колода карт" http://www.cyberforum.ru/cpp-beginners/thread1228388.html
(Иерархия). Создать класс карта, имеющая ранг и масть. Карту можно перевернуть и открыть. Создать класс – колода карт, содержащий карты. Создать два производных класса от колоды карт, в одном карты могут доставаться только по порядку, в другом - вытаскиваться произвольно
C++ Написать функцию, которая сравнивает два целых числа Написать функцию, которая сравнивает два целых числа и возвращает результат сравнения в виде одного из знаков: < > или =. Это код второй, но не доделал: char f(int a, int b) { if (a>b)return '>'; if (a<b)return '<'; return '='; } подробнее

Показать сообщение отдельно
bazJaz
 Аватар для bazJaz
33 / 30 / 10
Регистрация: 11.07.2014
Сообщений: 388
17.07.2014, 01:27     Получить массив, состоящий из отрицательных элементов исходного массива
для чего getch(); ?

Надо создать функцию и передать ей масив, в ней будет
C++
1
2
3
4
5
6
7
8
cout<<"Vash massiv s otricatelbnumi: ";
 
    for(int i=0;i<kol;i++){
    
        if (mass[i]<0){
            cout<<mass[i];
        }
    }
Передача массива произвольного размера в функцию


Это можно сделать несколькими способами:

1. Использовать шаблоны. В таком случае заголовок функции будет выглядеть как
C++
1
template <int N> void trans (int (&matrix)[N][N]) // передача матрицы по ссылке
Использование:
C++
1
2
int m[5][5];
trans(m);
2. Использовать массив указателей на массивы:
C++
1
void trans (int **matrix, int n)
Использование:
1) Вариант 1 (статическое распределение памяти):
C++
1
2
3
int m1[5][5];
int* m[] = {m1[0], m1[1], m1[2], m1[3], m1[4]};
trans(m, 5);
2) Вариант 2 (динамическое распределение памяти):
C++
1
2
3
4
int** m = new int*[5];
for (int i=0; i<5; i++)
m[i] = new int[5];
trans(m, 5);
3. Использовать STL:
C++
1
2
3
4
#include <vector>
typedef std::vector<int> row;
typedef std::vector<row> matrix;
void trans(matrix& mat);
Использование:
C++
1
2
matrix m(5, row(5));
trans(m);
Достоинством первого метода является то, что компилятор сам определяет размеры массива (снижается число потенциальных ошибок).
Принципиальное достоинство второго метода - возможность работы с матрицами неуказанного при компиляции размера.
Третий метод обладает обоими достоинствами (безопасность и динамические размеры), но требует знания STL.

PS Первый и второй методы можно объединить:
C++
1
2
3
4
5
6
7
8
9
void trans (int **matrix, int n)
 
template <int N> inline void trans (int (&matrix)[N][N]) 
{
int *m[N];
for (int i=0; i<N; i++)
m[i] = matrix[i];
trans(m, N);
}
Здесь основная логика реализуется в функции, написанной по первому методу, но имеется также удобная шаблонная функция-обертка для статических матриц.

Добавлено через 5 минут
С функцией!
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
#include <iostream>
#include <stdlib.h>
using namespace std;
void f1(int mas[],int kol){
    for(int i=0;i<kol;i++){
        if (mas[i]<0){
            cout<<mas[i];
        }
    }
}
 
int main()
{ 
    int mass[100];
    int kol,min;
    cout<<"vvedite kolichestvo massiva: ";
    cin>>kol;
    for(int i=0;i<kol;i++)
    {
        cin>>mass[i];
    }
 
    cout<<"Vash massiv s otricatelbnumi: ";
    f1(mass,kol);
    
 
  return 0;
}
 
Текущее время: 23:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru