0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 19
|
|
1 | |
Найти максимальный элемент среди отрицательных26.12.2010, 00:35. Показов 5554. Ответов 17
Метки нет (Все метки)
Здравствуйте! Будьте добры, помогите разобраться с этим: нужно написать программу, (используя массивы), которая будет искать максимальный елемент среди отрицательных и минимальный среди тех, что больше ноля. Вроде бы стандартная задача... но что-то неправильно получается... неправильно ищет эти еллементы, и, к тому же, еслив водить массив вручную - вообще не исполняет поиск... В чем ошибка?
[CPP] #include<iostream> #include<stdlib.h> #include <time.h> using namespace std; int size; int a[10]; void selection() { cout<<"Choose:"<<endl; cout<<"Press 1 to input massive"<<endl; cout<<"Press 2 to generate massive"<<endl; int answer; cin>>answer; if( answer==1) { int size; int a[10]; cout<<"Enter the size of the massive:"; cin>>size; for(int i = 0; i < size; ++i) { cout<<"a["<<i<<"]="; cin >> a[i]; } } else if ( answer==2) { cout<<"Enter the size of the massive:"<<endl; cin>>size; srand((unsigned)(time(NULL))); for(int i=0;i<size;i++) { a[i]=rand()%30-15; cout<<a[i]<<endl; } } else { cout<<"Uncorrect variant.Try again"<<endl; } } void func() { int max = 0; int min = 0; int i; for (i = 0; i < size; i++) { if (a[i] < 0) { max = a[i]; if (max < a[i])max = a[i]; cout<<"Max="<<max<<endl; } else if (a[i] > 0) // v[i] > 0 { min = a[i]; if (min > a[i]) min = a[i]; cout<<"Min="<<min<<endl; } } } void main() { selection(); func(); system("Pause"); }
0
|
26.12.2010, 00:35 | |
Ответы с готовыми решениями:
17
Найти максимальный элемент среди отрицательных чисел Найти максимальный элемент среди отрицательных элементов массива Найти среди отрицательных элементов максимальный элемент и его индекс Найти максимальный элемент и его номер среди отрицательных элементов. |
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
|
||||||
26.12.2010, 00:44 | 2 | |||||
0
|
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 19
|
|
26.12.2010, 01:15 [ТС] | 3 |
Спасибо большое, но мне бы больше хотелось именно исправить ошибки в моем коде, а не абсолютно другой код... И, к тому же, нужно, чтобы можно было как и генерировать автоматически массив, так и вводить пользователю каждый еллемент вручную.
0
|
1 / 1 / 0
Регистрация: 24.06.2010
Сообщений: 16
|
||||||
26.12.2010, 02:19 | 4 | |||||
Старался не трогать код) все дело в начальных значениях.. ты пытаешься найти значения приближенные к нулю. а мин и макс у тебя = 0 .
0
|
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 19
|
|
26.12.2010, 02:34 [ТС] | 5 |
Огромное спасибо! Действительно, все просто! Но... вот интересно, а как сделать так, чтобы можно было брать еллемент массива не ограниченный конкретно числами 15 и -15 или любыми другими, а были просто типа int? Что, так и писать
int max = -2147483648; int min = 2147483648; или есть какой-то другой способ?)
0
|
13 / 13 / 6
Регистрация: 16.11.2010
Сообщений: 32
|
|||||||||||
26.12.2010, 03:54 | 6 | ||||||||||
Надо здесь
Chanelly, а что должна программа выводить если в массиве нет отрицательных(положительных) элементов?
0
|
1 / 1 / 0
Регистрация: 20.12.2010
Сообщений: 62
|
|
26.12.2010, 08:17 | 7 |
По-моему чтобы не морочиться крайними положениями надо сначала жестко присвоить первый элемент массива переменным min и max, а потом начинать перебор.
Добавлено через 7 минут Кстати, почему-то никто не делал замечания, а ведь массив то статический, а пользователь его размеры вводит. Надо либо отказаться от этого, либо массив с динамическим выделением памяти. Или я не прав?
0
|
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 19
|
|
26.12.2010, 12:11 [ТС] | 8 |
Да, вот как раз над этим и думаю - как сообщить пользователю, что в данном массиве нет положительных/отрицательных елементов?Если бы изначально присваивать max=0 и min=0, то потом можно было бы написать
if (max==0) { cout << "array does't contain negative elements" << endl; } но как в этом коде такое написать?..
0
|
1 / 1 / 0
Регистрация: 20.12.2010
Сообщений: 62
|
||||||
26.12.2010, 12:20 | 9 | |||||
Если так
0
|
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 19
|
|
26.12.2010, 12:29 [ТС] | 10 |
А что такое checkPosit и checkNegat? Как оно проверяет, есть ли положительные/отрицательные елементы? Мне не совсем понятна эта строка
if (!checkNegat) получается, что "Если не checkNegat, то ..." То есть если правда, то... А что - правда? Как они связанны - checkNegat и max?
0
|
4 / 4 / 1
Регистрация: 03.06.2010
Сообщений: 55
|
|
26.12.2010, 12:36 | 11 |
if(checkNegat==0)
0
|
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 19
|
|
26.12.2010, 13:00 [ТС] | 12 |
Как может переменная типа булеан біть равной нулю? И все равно, непонятно, как же все-таки связанны CheckNegat и max ???
0
|
1 / 1 / 0
Регистрация: 20.12.2010
Сообщений: 62
|
||||||
26.12.2010, 13:22 | 13 | |||||
Chanelly, добавил коменты
0
|
13 / 13 / 6
Регистрация: 16.11.2010
Сообщений: 32
|
|||||||||||
26.12.2010, 13:37 | 14 | ||||||||||
Да, на самом деле, немного нехорошо решать относительно крайних значений, но ведь Chanelly просил найти ошибки в его коде
А вот этот код мне не нравится совсем
я бы наверное завёл переменные k1 и k2 изначально равные нулю а потом бы использовал их как счётчики отрицательных и положительных соответственно.
0
|
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 19
|
|
26.12.2010, 14:05 [ТС] | 15 |
Но почему тогда задача выполняется неправильно, если добавить checkNeegat и checkPozit? Тогда программа почему-то выводит одинаковые max и min в случае автоматической генерации массива и вообще не ищет максимального и минимального элемента, если пользователь вводит эллементы вручную???
Добавлено через 17 минут Тогда если нет,к примеру, отрицательных элементов, то программа выводит max=0. Но ведь 0 не является ни положительным,ни отрицательным. Нужно, чтобы в случае отсутствия положительных или отрицательных элементов, программа выводила, что их не существует.
0
|
13 / 13 / 6
Регистрация: 16.11.2010
Сообщений: 32
|
||||||
26.12.2010, 14:14 | 16 | |||||
тогда так:
0
|
1 / 1 / 0
Регистрация: 20.12.2010
Сообщений: 62
|
||||||
26.12.2010, 14:28 | 17 | |||||
Вот таком виде все заработало, но я все же настаиваю что надо делать динамику для работы с размерами массива которые задает пользователь
0
|
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 19
|
|
26.12.2010, 15:18 [ТС] | 18 |
Спасибо огромное за то, что помогли разобраться!!!
0
|
26.12.2010, 15:18 | |
26.12.2010, 15:18 | |
Помогаю со студенческими работами здесь
18
В вещественном массиве найти максимальный элемент среди его отрицательных элементов Массивы: найти среди отрицательных элементов максимальный элемент и его индекс Циклы. Найти минимальный (максимальный) элемент среди положительных (отрицательных) чисел Найти максимальный элемент среди отрицательных элементов матрицы, расположенных над побочной диагональю Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |