Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Manifik
8 / 8 / 1
Регистрация: 13.05.2009
Сообщений: 31
#1

Массивы - C++

13.05.2009, 07:17. Просмотров 631. Ответов 7
Метки нет (Все метки)

Вариант 7. В одномерном массиве, состоящем из n вещественных элементов,
вычислить:

1) номер максимального элемента массива;

2)произведение элементов массива, расположенных между первым и вторым
нулевыми элементами.

Преобразовать массив таким образом, чтобы в первой половине
располагались элементы, состоящие в нечетных позициях, а во второй половине -
элементы, состоящие в четных позициях.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2009, 07:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массивы (C++):

Массивы. Циклические алгоритмы (Заполнить массивы случайными числами, лежащими в интервале 0 до 100) - C++
Доброго дня, уважаемые форумчане, помогите пожалуйста решить задание. Заполнить массивы случайными числами, лежащими в интервале 0 до...

Указатели и массивы. Индексация с помощью указателей. Передача массивов в функции. Динамические массивы (обработка матриц) - C++
Для каждого элемента , bij, i= 1,...,n , j=1,...,n определяется свой многоугольник местонахождением соответствующего элемента aij (см....

Попадание точки. Массивы чисел. Массивы записей. - C++
Всем привет. По языкам задали три контрольные на си. Я сам си не знаю, даже не представляю, поэтому очень нужна ваша помощь. ...

Многомерные массивы, как перебирать внутренние массивы - C++
Здравствуйте. Такой учебный код и плохо понимаю как перебираются внутренние массивы, может кто пояснит подоходчивее. Именно внутренний...

индексные массивы и адресные массивы - C++
погитите решить задачу c массивами двумя способами {индексные и адресные} { Вычислить суммы элементов каждой строки матрицы Х(20х20),...

массивы указателей,указатели на массивы - C++
Понимаю что тема эта изжевана, но я ещё жую.Хочу, чтобы усвоилось. допустим есть QStringList a; a.append("мамa"); ...

7
XuTPbIu_MuHTAu
Эксперт С++
2226 / 741 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
13.05.2009, 08:43 #2
1.
Код
int max_index(double * arr,int n) {
     int k=0;
     for(i=1;i<n;i++) 
          if(arr[i]>arr[k]) k=i;
    return k;
};
1
Rififi
2360 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
13.05.2009, 08:51 #3
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
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <locale>
#include <algorithm>
#include <numeric>
#include <iterator>
#include <iostream>
#include <stdexcept>
 
// номер максимального элемента массива
template <typename T, const size_t N>
typename std::iterator_traits<T>::difference_type
max_index(const T (&arr)[N])
{
    return std::distance(arr, std::max_element(arr, arr+N));
}
 
/* произведение элементов массива, расположенных между первым и вторым
нулевыми элементами 
*/
template <typename T, const size_t N>
long mul(const T (&arr)[N])
{
    if (std::count(arr, arr+N, T(0)) < 2)
        throw std::runtime_error("Маловато нулей, насяльника!");
    const int* first = std::find(arr, arr+N, 0);
    const int* second = std::find(first+1, arr+N, 0);
    return std::accumulate(first+1, second, T(1), std::multiplies<T>());
}
 
template <typename T>
struct position : public std::unary_function<T, bool>
{
    position() : pos_(0) {}
    bool operator()(const T&) { return pos_ ++ & 1; }
    typename std::iterator_traits<T>::distance_type pos_;
};
 
/* Преобразовать массив таким образом, чтобы в первой половине
располагались элементы, состоящие в нечетных позициях, а во второй половине - элементы, состоящие в четных позициях.
*/
template <typename T, const size_t N>
T (&reorder(T (&arr)[N]))[N]
{
    std::stable_partition(arr, arr+N, position<T>());
    return arr;
}
 
template <typename T, const size_t N,
    typename _E, typename _Tr,
    template <typename, typename> class OS>
static OS<_E, _Tr>& operator << (OS<_E, _Tr>& os, const T (&arr)[N])
{
    const _E sep[] = { _E(' '), 0 };
    std::copy(arr, arr+N, std::ostream_iterator<T>(os, sep));
    return os;
}
 
int main()
{
    int arr[] = { 1, 0, 3, -1, 8, -6, 0, 2, 5};
 
    setlocale (LC_ALL, ".1251");
 
    std::cout << "Исходный массив: " << arr << std::endl;
    std::cout << "Номер максимального элемента: " << max_index(arr) << std::endl;
    std::cout << "Произведение элементов: " << mul(arr) << std::endl;
    std::cout << "Преобразованный массив: " << reorder(arr) << std::endl;
 
    return 0;
}
Вывод:
Исходный массив: 1 0 3 -1 8 -6 0 2 5
Номер максимального элемента: 4
Произведение элементов: 144
Преобразованный массив: 0 -1 -6 2 1 3 8 0 5
1
Manifik
8 / 8 / 1
Регистрация: 13.05.2009
Сообщений: 31
13.05.2009, 09:29  [ТС] #4
ого, как сложно все, ладно разберусь =) хотелось бы конечно через printf, scanf, а не cout и cin >> <<
просто такую заумную не примут, да и из библиотек мы проходили только <stdio.h> <iostream.h> <conio.h> <math.h> <stdlib.h> <dos.h> ((


И всё же очень благодарно, спасибо огромное =)
0
Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
13.05.2009, 09:42 #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 #include <iostream> using namespace std; int main() { const int N=8; //размер массива float A[N]={1.1f,1.2f,0.0f,1.3f,1.4f,0.0f,2.7f,1.5f}; //собственно он сам /*---(1)---*/ int ID_MAX=0; //номер максимального по значению элемента. for (int I=1; I<N; I++){if(A[i]>A[ID_MAX]){ID_MAX=I;};}; //курим массив cout<<"ID_MAX = "<<ID_MAX<<endl; //выдыхаем /*---(2)---*/ int ID1=0; //номера первого нуля for(int I=ID1; I<N; I++){if(A[i]==0.0f){ID1=I; break;};} //ищем первый ноль int ID2=ID1+1; //номера второго нуля for(int I=ID2; I<N; I++){if(A[i]==0.0f){ID2=I; break;};} //ищем второй ноль float Factum=1; //произведение... for(int I=ID1+1; I<ID2; I++){Factum*=A[i];}; //Мйасо! cout<<"Factum = "<<Factum<<endl; //едим /*---(3)---*/ float B[N]; //новый "собственно он сам" int C=0; //ам... число! for(int I=0; I<N; I=I+2){B[c]=A[i]; C++;}; //курим в сторонке... слева for(int I=1; I<N; I=I+2){B[c]=A[i]; C++;}; //теперь справа cout<<B[0]; for(int I=1; I<N; I++){cout<<", "<<B[i];}; //тушим окурок. cin.get(); //нажми ENTER }
Добавлено через 3 минуты 30 секунд
Rififi
А с шаблонами и правда короче
1
Manifik
8 / 8 / 1
Регистрация: 13.05.2009
Сообщений: 31
13.05.2009, 09:47  [ТС] #6
я не курю =)
0
Rififi
2360 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
13.05.2009, 09:54 #7
я не курю =)
тогда накати
1
Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
13.05.2009, 10:08 #8
я тоже ...
пускай ком курит...
0
13.05.2009, 10:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2009, 10:08
Привет! Вот еще темы с ответами:

массивы указателей,указатели на массивы - C++
Понимаю что тема эта изжевана, но я ещё жую.Хочу, чтобы усвоилось. допустим есть QStringList a; a.append(&quot;мамa&quot;); ...

Массивы структур, массивы векторов - C++
Разработайте тип данных «Вектор в трехмерном пространстве» в виде структуры, поля которой — координаты вектора. Напишите следующие функции:...

Массивы структур и массивы строк - C++
Здравствуйте. Возникла проблема с одной работой: Постановка задачи: 1. Сформировать динамический массив из элементов структурного типа....

Массивы структур и массивы строк - C++
1. Сформировать динамический массив из элементов структурного типа. Структурный тип определен в варианте. 2. Распечатать...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru