Задание состоит в создании динамического многомерного массива, подобного матрице, найти номера строк, в которых есть положительные элементы, и знаки элементов предыдущей строки заменить на противоположные .
Второй массив, как я поняла, я создала для хранения номеров строк .И тот код, что у меня есть, иногда вместо номеров выдает левое значение .Со знаками строк тоже пыталась что-то сделать, но как-то безрезультатно и максимум, что у меня получилось, это заменять положительные элементы на отрицательные .
Сам код: https://onecompiler.com/cpp/3wf678p35
C/C++
Не получается создать алгоритм на с++
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
int main() {
// Вводите строк побольше, а колонок поменьше
cout << "Enter size of rows: ";
short rows;
cin >> rows;
cout << "Enter size of columns: ";
short columns;
cin >> columns;
// Выделение памяти
short** arr = new short* [rows];
for (short i = 0; i < rows; ++i) {
arr[i] = new short[columns];
}
// Заполнение матрицы случайными элементами
srand(unsigned(time(nullptr)));
for (short i = 0; i < rows; ++i) {
for (short a = 0; a < columns; ++a) {
arr[i][a] = rand() % 20 - 5;
}
}
// Вывод исходноой матрицы
cout << "\nThe first array:\n\n";
for (short i = 0; i < rows; ++i) {
for (short a = 0; a < columns; ++a) {
cout << setw(3) << arr[i][a];
}
puts("");
}
// Поиск и замена
for (short i = 1; i < rows; ++i) {
short count = 0;
for (short a = 0; a < columns; ++a) {
if (arr[i][a] > 0) {
++count;
}
}
if (count == columns) {
for (short j = 0; j < columns; ++j) {
arr[i - 1][j] *= -1;
}
}
}
// Вывод результатов поиска и замены
cout << "\nThe second array:\n\n";
for (short i = 0; i < rows; ++i) {
for (short a = 0; a < columns; ++a) {
cout << setw(3) << arr[i][a];
}
puts("");
}
// Освобождение ресурсов памяти
for (short i = 0; i < rows; ++i) {
delete[] arr[i];
}
delete[] arr;
system("pause > nul");
}
#include <ctime>
#include <iomanip>
using namespace std;
int main() {
// Вводите строк побольше, а колонок поменьше
cout << "Enter size of rows: ";
short rows;
cin >> rows;
cout << "Enter size of columns: ";
short columns;
cin >> columns;
// Выделение памяти
short** arr = new short* [rows];
for (short i = 0; i < rows; ++i) {
arr[i] = new short[columns];
}
// Заполнение матрицы случайными элементами
srand(unsigned(time(nullptr)));
for (short i = 0; i < rows; ++i) {
for (short a = 0; a < columns; ++a) {
arr[i][a] = rand() % 20 - 5;
}
}
// Вывод исходноой матрицы
cout << "\nThe first array:\n\n";
for (short i = 0; i < rows; ++i) {
for (short a = 0; a < columns; ++a) {
cout << setw(3) << arr[i][a];
}
puts("");
}
// Поиск и замена
for (short i = 1; i < rows; ++i) {
short count = 0;
for (short a = 0; a < columns; ++a) {
if (arr[i][a] > 0) {
++count;
}
}
if (count == columns) {
for (short j = 0; j < columns; ++j) {
arr[i - 1][j] *= -1;
}
}
}
// Вывод результатов поиска и замены
cout << "\nThe second array:\n\n";
for (short i = 0; i < rows; ++i) {
for (short a = 0; a < columns; ++a) {
cout << setw(3) << arr[i][a];
}
puts("");
}
// Освобождение ресурсов памяти
for (short i = 0; i < rows; ++i) {
delete[] arr[i];
}
delete[] arr;
system("pause > nul");
}
а зачем второй массив? просто выводи номер и делай замену
Садай *****
без понятия как еще организовать сохранение данных строк и вывода их отдельно без создания нового массива для них
Подправлено + чуть оптимизировано.
https://onecompiler.com/cpp/3wf6cckvv
Моменты:
Не знаю откуда такое пристрастие к short - вообще в качестве размеров принято использовать size_t, но оставил эту особенность.
В современных C++ компиляторах если нужно использовать библиотеку C time подключается не time.h, а ctime. Но не в этом компиляторе. Более того есть более совершенные генераторы псевдослучайных чисел. См. < random >, но оставил как есть. ( https://docs.microsoft.com/ru-ru/cpp/standard-library/random?view=msvc-160&viewFallbackFrom=vs-2019 )
Ручной ввод отключил т. к. лень. Надо - легко вернете.
https://onecompiler.com/cpp/3wf6cckvv
Моменты:
Не знаю откуда такое пристрастие к short - вообще в качестве размеров принято использовать size_t, но оставил эту особенность.
В современных C++ компиляторах если нужно использовать библиотеку C time подключается не time.h, а ctime. Но не в этом компиляторе. Более того есть более совершенные генераторы псевдослучайных чисел. См. < random >, но оставил как есть. ( https://docs.microsoft.com/ru-ru/cpp/standard-library/random?view=msvc-160&viewFallbackFrom=vs-2019 )
Ручной ввод отключил т. к. лень. Надо - легко вернете.
Садай *****
На счет short : выбираю его исключительно из-за количества занимаемой памяти .Где-то слышала, что её экономия только приветствуется.
На счет size_t : сейчас почитала и все равно очень смутно понимаю в чем его суть .Если правильно поняла, то использует максимально большое количество памяти, чтобы взаимодействовать при необходимости со всем .Так же где-то было сказано, что это результат sizeof оператора, получается, что он битовый.
Поправьте пожалуйста, если не правильно что-то говорю и спасибо за ответ.
На счет size_t : сейчас почитала и все равно очень смутно понимаю в чем его суть .Если правильно поняла, то использует максимально большое количество памяти, чтобы взаимодействовать при необходимости со всем .Так же где-то было сказано, что это результат sizeof оператора, получается, что он битовый.
Поправьте пожалуйста, если не правильно что-то говорю и спасибо за ответ.
Учись прилежнее.
Садай *****
Спасибо, это и пытаюсь делать
Похожие вопросы
- Создать алгоритм. Помогите пожалуйста
- Алгоритмы. Бинарная сортировка
- На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Алгоритмы STL, sort, первичный и вторичный ключи для сортировки.
- Помогите ускорить алгоритм
- Напишите алгоритм подсчета цифр. Помогите.
- Программирование, теория алгоритмов подсказать алгоритм действий.
- Разработать алгоритм и записать программу.
- Лабораторная работа по алгоритмам (C++)
- Составьте алгоритм и напишите программу вычисления суммы n членов ряда согласно условию задачи
Ни в коем разе не придираюсь.