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

Массив. Узнать число, ближайшее нулю - C++

Восстановить пароль Регистрация
 
Outmee
 Аватар для Outmee
2 / 2 / 0
Регистрация: 26.01.2014
Сообщений: 56
02.02.2014, 00:32     Массив. Узнать число, ближайшее нулю #1
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
#include <iostream>
 
using namespace std;
 
const int size = 5;
 
int main()
{
    int mas[size];
    int max = mas[0];
    int min = mas[0];
    int near = mas[0];
    
    for (int i = 0; i < size; i++)
    {
        cout << " vvedite chislo" << i + 1 << endl;
        cin >> mas[i];
    }
    
    for (int i = 0; i < size; i++)
    {
        if (max < mas[i]) max = mas[i];
        if (min > mas[i]) min = mas[i];
    }
 
    cout << "max =" << max << "\nmin =" << min << endl;
 
    system("pause");
        
}
собственно не понятный косяк с "min"
Выводит ~-85000 а должен 1,

Еще вопрос как узнать число ближайшее нулю

Оригинал задачи гласит так:
2. Пользователь вводит 5 чисел, вывести на экран:
- самое большое число из введенных.
- самое маленькое число из введенных.
*- число, которое ближе всего к 0.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2014, 00:32     Массив. Узнать число, ближайшее нулю
Посмотрите здесь:

C++ Передать в функцию целое число. Функция заменяет его на ближайшее простое число, которое больше или меньше исходного. Вернуться в main( ) и распечатат
C++ Дано натуральное число. Найти ближайшее простое число
C++ Написать программу, которая считывает число с клавиатуры и находит ближайшее справа число, которое равно сумме кубов своих цифр
C++ Программа, которая считывает число с клавиатуры и находит ближайшее справа число, которое является квадратом натурального числа
C++ Определить ближайшее нечетное число
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Меорн
74 / 59 / 29
Регистрация: 01.02.2014
Сообщений: 201
02.02.2014, 01:33     Массив. Узнать число, ближайшее нулю #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Инициализируй переменные min, max, near после того как инициализирован массив:
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
#include <iostream>
 
using namespace std;
 
const int size = 5;
 
int main()
{
    int mas[size];
 
    for (int i = 0; i < size; i++)
    {
        cout << " vvedite chislo" << i + 1 << endl;
        cin >> mas[i];
    }
 
    int max = mas[0];
    int min = mas[0];
    int near = mas[0];
 
 
    for (int i = 0; i < size; i++)
    {
        if (max < mas[i]) max = mas[i];
        if (min > mas[i]) min = mas[i];
    }
 
    cout << "max =" << max << "\nmin =" << min << endl;
 
    system("pause");
 
}
Bretbas
22 / 17 / 1
Регистрация: 05.08.2013
Сообщений: 467
Завершенные тесты: 1
02.02.2014, 02:08     Массив. Узнать число, ближайшее нулю #3
Число самое близкое к нулю,это минимальный элемент массива по модулю
Outmee
 Аватар для Outmee
2 / 2 / 0
Регистрация: 26.01.2014
Сообщений: 56
02.02.2014, 03:16  [ТС]     Массив. Узнать число, ближайшее нулю #4
Цитата Сообщение от Bretbas Посмотреть сообщение
Число самое близкое к нулю,это минимальный элемент массива по модулю
-1 тоже может быть близким к нулю

Так как лучше сделать
vovacreme
-16 / 61 / 13
Регистрация: 14.01.2014
Сообщений: 145
02.02.2014, 03:47     Массив. Узнать число, ближайшее нулю #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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
 
using namespace std;
 
const int size = 5;
 
int findNearestValue(int arr[], int n, int findVal = 0)
{ 
    int temp = abs( findVal - arr[0] );
    int res = arr[0]; 
 
    for (int i = 1; i < n; i++)
    {
        if( abs( findVal - arr[i] ) < temp )
        {
            temp = abs( findVal - arr[i] ); 
            res = arr[i];
        }
    }
    return res;
}
 
int main()
{
    int mas[size];  
    for (int i = 0; i < size; i++)
    {
        cout << " vvedite chislo" << i + 1 << endl;
        cin >> mas[i];
    }
    int max = mas[0], min = mas[0];
    for (int i = 1; i < size; i++)
    {
        if (mas[i] > max) max = mas[i];
        if (mas[i] < min) min = mas[i];
    }
    
    cout << "max =" << max << "\nmin =" << min << endl;
    cout << "nearest value to 0 = " << findNearestValue(mas, size) << endl;
    system("pause");
        
}
Outmee
 Аватар для Outmee
2 / 2 / 0
Регистрация: 26.01.2014
Сообщений: 56
02.02.2014, 04:03  [ТС]     Массив. Узнать число, ближайшее нулю #6
Реализовал с помощью модуля.
Вот что вышло.
Всем спасибо!
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
#include <iostream>
 
using namespace std;
 
const int size = 5;
 
int main()
{
    int mas[size];
 
    for (int i = 0; i < size; i++)
    {
        cout << " vvedite chislo" << i + 1 << endl;
        cin >> mas[i];
    }
    
    
    int max = mas[0];
    int min = mas[0];
    int near = mas[0];
 
    for (int i = 0; i < size; i++)
    {
        if (max < mas[i]) max = mas[i];
        if (min > mas[i]) min = mas[i];
        if (near > abs(mas[i])) near = mas[i];
    }
 
    cout << "max =" << max << "\nmin =" << min << endl;
    cout << "bligyshee k 0 chislo = " << near << endl;
 
    system("pause");
        
}
Добавлено через 1 минуту
vovacreme,
Как вариант, но у меня короче))
Bretbas
22 / 17 / 1
Регистрация: 05.08.2013
Сообщений: 467
Завершенные тесты: 1
03.02.2014, 01:10     Массив. Узнать число, ближайшее нулю #7
Я бы сделал как:
вначале все элементы взял по модулю,и нашел из них минимальный - это и был бы элемент самый близкий к нулю
Outmee
 Аватар для Outmee
2 / 2 / 0
Регистрация: 26.01.2014
Сообщений: 56
03.02.2014, 13:29  [ТС]     Массив. Узнать число, ближайшее нулю #8
Цитата Сообщение от Bretbas Посмотреть сообщение
Я бы сделал как:
вначале все элементы взял по модулю,и нашел из них минимальный - это и был бы элемент самый близкий к нулю
А если я ввожу -1? он будет минимальным и самым близким к нулю.
Его выведет как близкий к 0, а минимальным - нет.
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
03.02.2014, 14:09     Массив. Узнать число, ближайшее нулю #9
Outmee, возможно я уже поздно, но все же, мой код:
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
#include<conio.h>
#include<iostream>
#include<cmath>
using namespace std;
 
void InPut(double n[], int N){
    for (int i(0); i < N; i++){
        cout << "Введите " << i + 1 << " элемент массива: ";
        cin >> n[i];    
    }
    system("cls");
    return;
}
double Min_Mass(double n[], int N){
    double min = n[0];
    for (int i(0); i < N; i++)
    if (n[i] < min)
        min = n[i];
    return min;
}
double Max_Mass(double n[], int N){
    double max = n[0];
    for (int i(0); i < N; i++)
    if (n[i] < max)
        max = n[i];
    return max;
}
double Zero_Mass(double n[], int N){
    double min = n[0];
    for (int i(0); i < N; i++)
    if (abs(n[i]) < abs(min))
        min = n[i];
    return min;
}
int main(){
    setlocale(LC_ALL, "Russian");
    const int N = 5;
    double Mass[N];
    InPut(Mass, N);
    for (int i(0); i < N; i++)
        cout << "Mass[" << i << "] =" << Mass[i] << endl;
    cout << "Минимальный элемент массива: " << Min_Mass(Mass, N) << endl;
    cout << "Максимальный элемент массива: " << Max_Mass(Mass, N) << endl;
    cout << "Ближний к нулю элемент массива: " << Zero_Mass(Mass, N) << endl;
    cout << "\n\nДля выхода нажмите любую клавишу...";
    _getch();
    return 0;
}
Добавлено через 1 минуту
Outmee,

Не по теме:

зачем вы константу size задаете вне главной функции(делаете глобальной), ведь у вас нет дополнительных функций?

C++
1
2
3
const int size = 5;
 
int main()

Outmee
 Аватар для Outmee
2 / 2 / 0
Регистрация: 26.01.2014
Сообщений: 56
03.02.2014, 18:34  [ТС]     Массив. Узнать число, ближайшее нулю #10
Цитата Сообщение от Xopecc Посмотреть сообщение
Outmee,

Не по теме:

зачем вы константу size задаете вне главной функции(делаете глобальной), ведь у вас нет дополнительных функций?

C++
1
2
3
const int size = 5;
 
int main()

Спасибо пусть за поздний но ответ.
На данных парах мне так легче ориентироваться.
Спасибо за совет, учту.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
03.02.2014, 18:51     Массив. Узнать число, ближайшее нулю #11
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
#include <iostream>
 
int abs (int x)
{
 if (x<0)
 {
  return -x;
 }
 return x;
}
int main()
{
 size_t size;
 int *mas;
 int *max;
 int *min;
 int *near;
 int *p;
 std::cin>>n; std::cout<<std::endl;
 mas=new int [size];
 for (p=mas; p < mas+size; ++p)
 {
  std::cout << " vvedite chislo" << (p-mas + 1) << std::endl;
  cin >> *p;
 }  
 for (p=mas, min=mas, max=mas, near=mas; p < mas+size; ++p)
 {
  if (*max < *p)
  {
   max = p;
  }
  if (*min > *p)
  {
   min = p;
  }
  if (abs(*near)<abs(*p))
  {
   near = p;
  }
 }
 std::cout << "max =" << *max << "\nmin =" << *min<<"\nnear="<<*near<< std::endl;
 system("pause");
 delete [] mas;
 return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2014, 23:22     Массив. Узнать число, ближайшее нулю
Еще ссылки по теме:

Написать программу, которая вычисляет целую степень, в которую необходимо возвести число 2, чтобы получить число, ближайшее меньшее либо равное числу, C++
C++ Ближайшее число в массива (линейный поиск)
C++ Найти ближайшее число

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

Или воспользуйтесь поиском по форуму:
Bretbas
22 / 17 / 1
Регистрация: 05.08.2013
Сообщений: 467
Завершенные тесты: 1
03.02.2014, 23:22     Массив. Узнать число, ближайшее нулю #12
Не понимаю,как понять вы вводите -1?
ну вот к примеру вы вводите элементы массива:
5 9 6 -7 -1 2
минимальный мы сразу можем найти: -7
а вот близкий к нулю мы ищем так: берем модуль от всех элементов,получаем массив: 5 9 6 7 1 2
теперь ищем здесь минимальный,это будет число 1 - в данном случае это и будет самое близкое число к нулю
Yandex
Объявления
03.02.2014, 23:22     Массив. Узнать число, ближайшее нулю
Ответ Создать тему
Опции темы

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