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

Найти номер наименьшего положительного числа в заданной последовательности. Если в ней отсутствуют положительные числа, ответом должно быть -1 - C++

Восстановить пароль Регистрация
 
Anwer
 Аватар для Anwer
0 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 49
02.01.2014, 02:14     Найти номер наименьшего положительного числа в заданной последовательности. Если в ней отсутствуют положительные числа, ответом должно быть -1 #1
Условие:
Дано натуральное число n (n < 100) и действительные числа 1a, 2a, ..., na. Найти
номер наименьшего положительного числа в заданной последовательности. Если в ней
отсутствуют положительные числа, ответом должно быть значение -1.
Решение:
И так я все сделал, нашел минимум. все работает. но есть одно но а именно
Если в ней отсутствуют положительные числа, ответом должно быть значение -1.
Я ввожу числа к примеру n = 4. Ввожу -4, 9, 8, -2. и программа грубо говоря работает некорректно, т.е. ищем минимум среди отрицательных чисел, а в условии говорится что нужно найти минимум наименьшего положительного. Помогите новичку исправить пожалуйста. Буду очень очень благодарен P.S. дополнительно нашел максимум.
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
#include<iostream>
#include<math.h>
 
using namespace std;
int main ()
{
    setlocale(0, "rus");
    int n;
    cout << "Введите количество елементов: ";
    cin >> n;
    double a [100];
    double min = 0, max = 0;
    for (int i = 0; i < n; i++)
    {
        cout << "Введите а["<< i+1 <<"]: ";
        cin >> a[i];
    }
    min = a[0];
    for (int i = 0; i < n; i++)
    {
        if (a[i] < min)
        {
            min = a[i];
        }
    }
    max = a[0];
    for (int i = 0; i < n; i++)
    {
        if (a[i] > max)
        {
            max = a[i];
        }
    }
     while (min, max > 0)
     {
         cout << "Найменьшее положительное числo: " << min << endl;
     break;
     }
     while (max <= 0)
     {
        cout << "Ответ: -1" << endl;
        break;
     }
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2014, 02:14     Найти номер наименьшего положительного числа в заданной последовательности. Если в ней отсутствуют положительные числа, ответом должно быть -1
Посмотрите здесь:

C++ 11.196. Дан массив целых чисел. Найти номер первого элемента, кратного числу 13. Если таких элементов в массиве нет, то должно быть напечатано соответ
C++ Даны целые числа a1, a2, ., an. Получить те положительные числа из этой последовательности, которые являются полными квадратами
C++ Найти количество различных чисел в последовательности. Число действий должно быть порядка n*log(n)
C++ Определить номер наименьшего числа последовательности (программа работает но не правильно)
Дано 10 вещественных чисел. Найти порядковый номер второго положительного числа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kventin_zhuk
БНТУ ФИТР
 Аватар для kventin_zhuk
214 / 154 / 15
Регистрация: 26.12.2012
Сообщений: 382
02.01.2014, 03:04     Найти номер наименьшего положительного числа в заданной последовательности. Если в ней отсутствуют положительные числа, ответом должно быть -1 #2
Anwer,

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
#include<iostream>
#include<math.h>
 
using namespace std;
int main ()
{
    setlocale(0, "rus");
    int n;
    cout << "Введите количество елементов: ";
    cin >> n;
    double a [100];
    double min = 0, max = 0;
    for (int i = 0; i < n; i++)
    {
        cout << "Введите а["<< i+1 <<"]: ";
        cin >> a[i];
    }
 
    for (int i = 0; i < n; i++)
    {
        if ((a[i] < min || min == 0) && a[i] > 0)
        {
            min = a[i];
        }
    }
    max = a[0];
    for (int i = 0; i < n; i++)
    {
        if (a[i] > max)
        {
            max = a[i];
        }
    }
 
    if (min != 0)
        cout << "Найменьшее положительное числo: " << min << endl;
    else
        cout << "Найменьшее положительное числo:  -1" << endl;
 
     while (max <= 0)
     {
        cout << "Ответ: -1" << endl;
        break;
     }
    system("pause");
    return 0;
}
Изначально инициализируем значением 0 min

В цикле делаем условие

C++
1
if ((a[i] < min || min == 0) && a[i] > 0)
Если i-ый элемент массива меньше минимального значения или минимальное значение == 0 (изначально) и одновременно i-ый элемент массива положительный - задаем новое значение минимума.

А дальше смотрим - если после цикла было задано какое-нибудь значение минимуму - значит минимум найден. Если значение переменной осталось == 0 - значит не было положительных элементов и выводим -1
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
02.01.2014, 03:39     Найти номер наименьшего положительного числа в заданной последовательности. Если в ней отсутствуют положительные числа, ответом должно быть -1 #3
Цитата Сообщение от Anwer Посмотреть сообщение
Найти номер наименьшего положительного числа в заданной последовательности. Если в ней отсутствуют положительные числа, ответом должно быть значение -1.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int j = 0;
while((j < n) && (a[j] <= 0)) 
  ++j;
 
cout << "Номер наименьшего положительного числа: ";
if(j < n) {        
  for(int i = j + 1; i < n; i++)        
    if((a[i] > 0) && (a[i] < a[j]))
      j = i;        
  cout << j + 1 << endl;
}
else 
  cout << "-1" << endl;
Anwer
 Аватар для Anwer
0 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 49
02.01.2014, 17:24  [ТС]     Найти номер наименьшего положительного числа в заданной последовательности. Если в ней отсутствуют положительные числа, ответом должно быть -1 #4
Спасибо большое!
Yandex
Объявления
02.01.2014, 17:24     Найти номер наименьшего положительного числа в заданной последовательности. Если в ней отсутствуют положительные числа, ответом должно быть -1
Ответ Создать тему
Опции темы

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