|
|
|
| В одномерном массиве состоящем из n вещественных эл-тов, вычислить:
1) номер максимального по модулю эл-та массива;
2) сумму эл-тов массива, расположенных после первого положительного эл-та.
Преобразовать массив таким образом, чтобу сначала распологались все эл-ты, целая часть которых лежит в интервале [a,b], а потом - все остальныею | |
|
|
|
|
|
|
|
для: Krasnodar
(27.12.2006 в 22:56)
| | STL использовать можно или это должен быть полноценный массив? | |
|
|
|
|
|
|
|
для: Krasnodar
(27.12.2006 в 22:56)
| | Если можно использовать STL, то первую задачу можно решить следующим образом
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool absLess(int elem1, int elem2)
{
return abs(elem1) < abs(elem2);
}
int main()
{
// Коллекция
vector<int> coll;
// Итератор
vector<int>::iterator pos;
try
{
coll.push_back(1);
coll.push_back(2);
coll.push_back(3);
coll.push_back(4);
coll.push_back(-10);
// Находим максимальный элемент
pos = max_element(coll.begin(), coll.end(), absLess);
// Вычисляем номер элемента в массиве
cout << distance(coll.begin(), pos) << endl;
}
catch(bad_alloc)
{
cout << "Не удалось выделить память под коллекцию\n";
}
return 0;
} |
| |
|
|
|
|
|
|
|
для: Krasnodar
(27.12.2006 в 22:56)
| | Вторую задачу можно было бы решить следующим образом
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
// Коллекция
vector<int> coll;
// Итератор
vector<int>::iterator pos;
try
{
coll.push_back(-10);
coll.push_back(-9);
coll.push_back(-8);
coll.push_back(-7);
coll.push_back(-6);
coll.push_back(1);
coll.push_back(2);
coll.push_back(3);
coll.push_back(4);
// Находим первый положительный элемент
pos = find_if(coll.begin(), coll.end(), bind2nd(greater<int>(),0));
// Вычисляем сумму элементов, после первого
// положительного элемента
int summ = 0;
for(; pos != coll.end(); ++pos) summ += *pos;
// Выводим результат
cout << summ << endl;
}
catch(bad_alloc)
{
cout << "Не удалось выделить память под коллекцию\n";
}
return 0;
} |
| |
|
|
|
|
|
|
|
для: cheops
(28.12.2006 в 13:38)
| | а если нельзя?
вы меня конечно извините, просто я учусь заочно и мне дали такое задание... есть только книге по С++ из серии для чайников (в эл. виде)... | |
|
|
|
|
|
|
|
для: Krasnodar
(28.12.2006 в 20:31)
| | Да, вполне может быть, что нельзя... кроме того, в учебных примерах сильно усердствовать не следует, а то преподаватель расстроится и начнёт на экзамене что-нибудь не то спрашивать :))). Если обходиться без STL (в реальной практике этого лучше избегать) то первую задачу можно решить следующим образом
#include <iostream>
#include <math>
using namespace std;
int main()
{
int arr[] = {-10, -9, -8, -7, -6, 1, 2, 3, 4, 11};
int max = abs(arr[0]);
int index = 0;
for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)
{
if(abs(max) <= abs(arr[i]))
{
max = abs(arr[i]);
index = i;
}
}
cout << "Макс. значение - " << max << endl;
cout << "Индекс макс. значения - " << index << endl;
return 0;
} |
| |
|
|
|
|
|
|
|
для: Krasnodar
(28.12.2006 в 20:31)
| | Вторая задача, соответственно, может быть решена следующим образом
#include <iostream>
using namespace std;
int main()
{
int arr[] = {-10, -9, -8, -7, -6, 1, 2, 3, 4};
bool positive = false;
int summ = 0;
for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)
{
if(arr[i] >= 0) positive = true;
if(positive) summ += arr[i];
}
cout << "Сумма элементов массива - " << summ << endl;
return 0;
} |
| |
|
|
|
|
|
|
|
для: cheops
(28.12.2006 в 21:20)
| | почему-то в строке
выдает ошибку и в первом и во втором случае | |
|
|
|
|
|
|
|
для: Krasnodar
(28.12.2006 в 21:54)
| | В какой среде программируете? | |
|
|
|
|
|
|
|
для: cheops
(28.12.2006 в 21:58)
| | Borland C++ 5.02
Там правда проблема с кодировкой, рсский язык не воспринимает.... как ее можно решить???? подскажите пожалйста | |
|
|
|
|
|
|
|
для: Krasnodar
(28.12.2006 в 22:07)
| | Хм... а он какого года выпуска? Попробуйте убрать строку
Что происходит? | |
|
|
|
|
|
|
|
для: cheops
(28.12.2006 в 22:10)
| | запускается... работает...
насчет года не знаю, я его в институте взял..... | |
|
|
|
|
|
|
|
для: Krasnodar
(28.12.2006 в 22:18)
| | Ну скорее всего, этот компилятор не поддерживает стандарт C++ полностью, просто убирайте из моих листингов объявление стандартного пространства имён
| |
|
|
|
|
|
|
|
для: cheops
(28.12.2006 в 22:39)
| | Раз пойду на рынок, так возьму сразу и Borland... какая сейчас стабильная, хорошая версия и какую лучше брать C++ Builder? | |
|
|
|
|
|
|
|
для: Krasnodar
(28.12.2006 в 22:54)
| | Сейчас распространение получает C++ BuilderX 1.0 Enterprise, но я сам лично не пробывал, всё ещё на C++ Builder 6.0 работаю (поэтому и помочь могу больше всех с этой версией :). Если будете брать DVD-диск на нём скорее всего обе версии окажутся. | |
|
|
|
|
автор: abaza (19.11.2009 в 23:34) |
|
|
для: cheops
(28.12.2006 в 21:20)
| | cheops, вторая задача неправильная, она считает сумму начиная с первого положительного элемента, а должна считать после | |
|
|
|