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

Поиск наибольшего отрицательного элемента массива (c++) и его удаление, написал программу, где то косячек =/

Друзья.
По задумке программа переписывает все отрицательные числа из основного массива a[n] в массив otsev[n].
Потом она должна найти в основном массиве элемент равный этому числу и переписать себя же, только удалив это число.
Принцип удаления был придуман такой- массив заменит это число на число из следующей ячейки и так до конца программы. Потом уменьшится число элементов массива на 1. И где то закралась ошибка. Удаляет не правильно. Замещение происходит не верно.
Подскажите пожалуйста где ошибка, а то уже мозги кипят. Спасибо!

Вот код:
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <math.h>

using namespace std;

int main() {
int n=5,a[n],num=0,otsev[n],maximum=0,or_maximum,zn_maximum;

for(int j = 0; j<n;>\t"; cin >> a[j];
}

cout << "\n-ok\n\n";

for(int j=0; j<n;>otsev[maximum])
{
maximum = j;
zn_maximum = otsev[j];
}
else
{
zn_maximum = otsev[maximum];
}
}
cout << "\nMinus maximum = " << otsev[maximum];
for(int j=0;j<n;j++)>\t" << a[j] << "\n";
}

getch();
return 0;
}
> По задумке программа переписывает все отрицательные числа из основного массива a[n] в массив otsev[n].
> Потом она должна найти в основном массиве элемент равный этому числу и переписать себя же, только удалив это число.
> Принцип удаления был придуман такой- массив заменит это число на число из следующей ячейки и так до конца программы. Потом уменьшится число элементов массива на 1.

Бред и поток сознания!

Поиск наибольшего отрицательного элемента массива (c++) и его удаление:

#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
#define MAX 100
int main() {
    srand(time(0));
    int a[MAX], sz, c, nmc = -1;
    cout << "размер массива? ";
    cin >> sz;
    cout << "исходный массив: \n";
    for (c = 0; c < sz; ++c) cout << ' ' << (a[c] = rand() % 21 - 10);
    // ищем максимальное отрицательное
    for (c = 0; c < sz; ++c) if ( a[c] < 0 && (nmc == -1 || a[c] > a[nmc]) ) nmc = c;
    cout << "\nмаксимальное отрицательное число: " << a[nmc];
    // "удаляем" найденный элемент
    --sz;
    for (c = nmc; c < sz; ++c) a[c] = a[c + 1];
    cout << "\nпреобразованный массив: \n";
    for (c = 0; c < sz; ++c) cout << ' ' << a[c];
}

Вариант: удаление всех элементов равных максимальному отрицательному:

#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
#define MAX 100
int main() {
    srand(time(0));
    int a[MAX], sz, nsz = 0, c, nmx = 0;
    cout << "размер массива? ";
    cin >> sz;
    cout << "исходный массив: \n";
    for (c = 0; c < sz; ++c) cout << ' ' << (a[c] = rand() % 11 - 5);
    // ищем отрицательный максимум
    for (c = 0; c < sz; ++c) if ( a[c] < 0 && (nmx == 0 || a[c] > nmx) ) nmx = a[c];
    cout << "\nмаксимальное отрицательное число: " << nmx;
    // "удаляем" все элементы равные максимальному отрицательному
    for (c = 0; c < sz; ++c) if (a[c] != nmx) a[nsz++] = a[c];
    sz = nsz;
    cout << "\nпреобразованный массив: \n";
    for (c = 0; c < sz; ++c) cout << ' ' << a[c];
}
СР
Сергей Ромодин
85 493
Лучший ответ
Код выкладывай на pastebin.com, сюда - ссылку.
-----
Переформулируй условие, ничего не понятно.
> программа переписывает все отрицательные числа из основного массива a[n] в массив otsev[n].
ОК
> Потом она должна найти в основном массиве элемент равный этому числу
какому числу? Раньше речь шла о ЧИСЛАХ
> и переписать себя же,
Програма должна переписать себя же? Т. е. создать файл cpp с похожей программой?
>только удалив это число.
Какое? Это число в тексте программы или вводится?
1S
138 School Super
78 233

Похожие вопросы