Другие языки программирования и технологии

помогите пожалуйста, я запуталась в задаче..((по программированию в С++

В каждой строке переставить первый отрицательный и последний положительный элементы. Если таких нет, то вывести сообщение об этом.
Где код, в котором вы запутались? )
При заполнение массива как только введётся отрицательный элементи переменная равна -1, запоминаете его позицию в массиве в эту переменую, при каждом положительном элементе тоже запоминаете позицию в другую переменную. После окончания строки, меняете в массиве местами элементами с запомнеными двумя индексами) И если какой-то из индексов остался равен -1, то выводите сообщение о том, что таких нет=)
Роман Смольняков
Роман Смольняков
15 838
Лучший ответ
// _70010820
#include <iostream>
#include <ctime>
#define N 12
#define M 4
using namespace std;

int main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
srand((unsigned) time(NULL));
int a[N][M], indexNeg, indexPos, temp;
bool flag;

for (int n = 0; n < N; n++, cout << endl)
{
for (int m = 0; m < M; m++)
{
a[n][m] = rand() % 199 - 99;
cout << a[n][m] << '\t';
}
}
cout << endl;

for (int n = 0; n < N; n++)
{
indexNeg = indexPos = -1;
flag = true;

for (int m = 0; m < M; m++)
{
if (a[n][m] < 0 && flag)
{
indexNeg = m;
flag = false;
}
if (a[n][m] >= 0) indexPos = m;
}

if (indexNeg >= 0 && indexPos >= 0)
{
temp = a[n][indexNeg];
a[n][indexNeg] = a[n][indexPos];
a[n][indexPos] = temp;
}
else cout << "\ В строку " << n + 1 << " менять нечего! \n";
}
cout << endl;

for (int n = 0; n < N; n++, cout << endl)
for (int m = 0; m < M; m++)
cout << a[n][m] << '\t';

cin.get();
return 0;
}
Ulan Kydyrgychov
Ulan Kydyrgychov
73 035
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>

using namespace std;

int main() {
#define n 7
#define m 5
int a[n][m];
srand(time(0));
cout << "исходный массив: \n";
for (int r = 0; r < n; ++r) {
for (int c = 0; c < m; ++c) {
cout << setw(4) << (a[r][c] = rand() % 101 - 50);
}
cout << endl;
}
cout << "преобразованный массив: \n";
for (int r = 0; r < n; ++r) {
int pm = -1;
int pp = -1;
for (int c = 0; c < m; ++c) {
if (pm < 0 && a[r][c] < 0) {
pm = c;
}
if (a[r][c] > 0) {
pp = c;
}
}
if (pm != -1 && pp != -1) {
int tmp = a[r][pm];
a[r][pm] = a[r][pp];
a[r][pp] = tmp;
}
for (int c = 0; c < m; ++c) {
cout << setw(4) << a[r][c];
}
if (pm == -1 || pp == -1) {
cout << " чисел для перестановки нет";
}
cout << endl;
}
return 0;
}
Алиппаев Букен
Алиппаев Букен
99 487
Ну берешь массив, проходишь по первой строке с начала, ищешь первый отрицательный. Затем идешь с конца, ищешь положительный. Нашла, поменяла. Не нашла, на экран и следующую строчку проверять.
EF
E.ldar Fatullayev
595