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

Найти минимальный отрицательный элемент - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Pintelka
0 / 0 / 0
Регистрация: 24.10.2012
Сообщений: 17
24.10.2012, 12:47     Найти минимальный отрицательный элемент #1
Здравствуйте! Помогите пожалуйста!
Дан одномерный массив, состоящий из N целочисленных элементов.
5.1. Ввести массив с клавиатуры.
5.2. Найти максимальный отрицательный элемент.
5.3. Вычислить сумму отрицательных элементов массива.
5.4. Вывести положительные элементы на экран.
5.5. Отсортировать массив методом вставки и вывести отсортированный массив на экран.
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <windows.h>

using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
const int N=5;
int x[N]; //заводим массив
int i,j,maxmin,s,k;
//1.1. Ввести массив с клавиатуры.
for(int i=0;i<N;i++)
{
cout<<"Введите "<<i+1<<" элемент";
cin>>x[i];
}
//1.2. Найти максимальный отрицательный элемент.
maxmin=0;
for(i=0;i<N;i++)
if (x[i]<0)
{
maxmin=x[i];
}

if (maxmin==0) cout<<" все положительные ";
else
{
for(i=0;i<N;i++)
if (x[i]<0)
if (x[i]>maxmin)
maxmin=x[i];
}
//1.4. Вывести положительные элементы на экран.
cout<<"элемент:\t";
for(i=0;i<N;i++)
if (x[i]>0)
cout<<x[i]<<" ";
cout<<endl;
//1.5. Отсортировать массив методом вставки и вывести отсортированный массив на экран.
for (i = 1;i<N;i++)
{
k = x[i];
j = i - 1;
while (j >= 0 && x[j] > k)
{
x[j + 1] = x[j];
j--;
x[j + 1] = k;
}
}
cout<<"отсортировка x:\t";
for(i=0;i<N;i++)
cout<<x[i]<<" ";
}
Выводит два элемента и не отрицательных! Как можно переделать? Подскажите пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2012, 12:47     Найти минимальный отрицательный элемент
Посмотрите здесь:

В двухмерном массиве найти минимальный, отрицательный элемент массива C++
C++ Найти максимальный отрицательный и минимальный положительный элемент и поменять их местами
C++ Минимальный элемент одномерного массива A заменить на третий отрицательный элемент
Поменять местами минимальный элемент и первый отрицательный элемент массива целых чисел C++
C++ Массивы. Заполнить случайными числами. Найти минимальный отрицательный элемент. Вычислить среднеарифмитическое положительных
C++ Найти минимальный отрицательный элемент квадратной матрицы
C++ В массиве найти минимальный положительный и максимально отрицательный элемент и вычисляет их следующее значени
C++ Массивы: поменять местами минимальный по модулю элемент и максимальный отрицательный элемент

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
24.10.2012, 17:04     Найти минимальный отрицательный элемент #2
C++
1
2
3
4
5
6
7
//1.2. Найти максимальный отрицательный элемент.
 maxmin=0;
 for(i=0;i<N;i++)
 if (x[i]<0)
 {
 maxmin=x[i];
 }
Ну кто так ищет?
C++
1
2
3
4
5
6
maxmin=0;
for(i=0;i<N;i++)
if ((x[i]<0) && (x[i] > maxmin))
{
     maxmin = x[i];
}
Добавлено через 2 часа 35 минут
Ну и по традиции прилепим stl
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
47
48
49
50
51
52
53
54
55
56
/*
Дан одномерный массив, состоящий из N целочисленных элементов.
 5.1. Ввести массив с клавиатуры.
 5.2. Найти максимальный отрицательный элемент.
 5.3. Вычислить сумму отрицательных элементов массива.
 5.4. Вывести положительные элементы на экран.
 5.5. Отсортировать массив методом вставки и вывести отсортированный массив на экран.
*/
 
#include <iostream>
#include <algorithm>
#include <functional>
#include <numeric>
 
class THandSetArray
{
private:
    int _i;
public:
    THandSetArray(void) : _i(1) {}
    int operator()(void)
    {
        std::cout << _i << ": ";
        int X = 0;
        std::cin >> X;
        ++_i;
        return X;
    }
};
 
int main(void)
{
    setlocale(0, "rus");
 
    const int N = 5;
    int A[N];
    // 5.1. Ввести массив с клавиатуры.
    std::cout << "Введите " << N << " элементов массива:" <<'\n';
    std::generate(A, A + N, THandSetArray());
    // 5.2. Найти максимальный отрицательный элемент.
    int * M = std::partition(A, A + N, std::bind2nd(std::less<int>(), 0));
    std::cout << "Максимальный отрицательный элемент: " << *(std::max_element(A, M)) << '\n';
    // 5.3. Вычислить сумму отрицательных элементов массива.
    std::cout << "Сумма отрицательных элементов: " << std::accumulate(A, M, 0) << '\n';
    // 5.4. Вывести положительные элементы на экран.
    std::cout << "Положительные элементы: ";
    std::copy(M, A + N, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    // 5.5. Отсортировать массив методом вставки и вывести отсортированный массив на экран.
    std::sort(A, A + N);
    std::cout << "Отсортированный массив: ";
    std::copy(A, A + N, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    system("pause");
}
Добавлено через 1 минуту
Только сортировка не тем методом производится.
Yandex
Объявления
24.10.2012, 17:04     Найти минимальный отрицательный элемент
Ответ Создать тему
Опции темы

Текущее время: 21:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru